Lingo中怎么定义多值变量啊?比如说定义三值变量x等于0,1或1.5。 只知道定义二值变量是@bin。。。
答案:2 悬赏:80 手机版
解决时间 2021-04-09 10:47
- 提问者网友:战皆罪
- 2021-04-09 05:37
Lingo中怎么定义多值变量啊?比如说定义三值变量x等于0,1或1.5。 只知道定义二值变量是@bin。。。
最佳答案
- 五星知识达人网友:雾月
- 2021-04-09 07:06
定义(离散可列)多值变量,可以借助0-1变量扩充其取值范围.
1. 在原有范围扩充1个变量
比如,要定义变量x,x的取值分别为0,1,1.5(可认为在0,1基础上扩充取值1.5)
可先分别定义0-1变量a与u,并令b=1.5
则x=a*u+b*(1-u)
优化样例1:
max=k*(x^2+x+1);
k>=2;
k<=7;
b=1.5;
x=a*u+b*(1-u);
@bin(a);
@bin(u);
Global optimal solution found.
Objective value: 7.000000
Variable Value Reduced Cost
K 7.000000 0.000000
X 1.500000 0.000000
B 1.500000 0.000000
A 0.000000 0.000000
U 0.000000 15.75002
2. 在原有范围扩充2个变量
比如,要定义变量x,x的取值分别为0,1,1.5,6(可认为在0,1基础上扩充取值1.5和6)
可先分别定义0-1变量a,u与v,并令b=1.5+4.5*v,可知b的取值为1.5或6
则x=a*u+b*(1-u)
优化样例2:
max=k*(x^2+x+1);
k>=2;
k<=7;
b=1.5+4.5*v;
x=a*u+b*(1-u);
@bin(a);
@bin(u);
@bin(v);
Global optimal solution found.
Objective value: 301.0000
Variable Value Reduced Cost
K 7.000000 0.000000
X 6.000000 0.000000
B 6.000000 0.000000
V 1.000000 -409.5001
A 0.000000 0.000000
U 0.000000 546.0001
对多个取值的添加可类似处理.
注:特别地,若取值中含有(或间接含有)多个连续的整数时,也可优先使用整数命令@gin
比如,要定义变量x,x的取值分别为0,1,1.6,1.7,1.8,1.9
(可认为在0,1基础上扩充取值1.6,1.7,1.8,1.9)
只须定义v>=16,v<=19,@gin(v),b=v/10;
优化样例3:
max=k*(x^2+x+1);
k>=2;
k<=7;
v>=16;
v<=19;
b=v/10;
x=a*u+b*(1-u);
@bin(a);
@bin(u);
@gin(v);
Global optimal solution found.
Objective value: 45.57000
Variable Value Reduced Cost
K 7.000000 0.000000
X 1.900000 0.000000
V 19.00000 0.000000
B 1.900000 0.000000
A 0.000000 0.000000
U 0.000000 63.84003
1. 在原有范围扩充1个变量
比如,要定义变量x,x的取值分别为0,1,1.5(可认为在0,1基础上扩充取值1.5)
可先分别定义0-1变量a与u,并令b=1.5
则x=a*u+b*(1-u)
优化样例1:
max=k*(x^2+x+1);
k>=2;
k<=7;
b=1.5;
x=a*u+b*(1-u);
@bin(a);
@bin(u);
Global optimal solution found.
Objective value: 7.000000
Variable Value Reduced Cost
K 7.000000 0.000000
X 1.500000 0.000000
B 1.500000 0.000000
A 0.000000 0.000000
U 0.000000 15.75002
2. 在原有范围扩充2个变量
比如,要定义变量x,x的取值分别为0,1,1.5,6(可认为在0,1基础上扩充取值1.5和6)
可先分别定义0-1变量a,u与v,并令b=1.5+4.5*v,可知b的取值为1.5或6
则x=a*u+b*(1-u)
优化样例2:
max=k*(x^2+x+1);
k>=2;
k<=7;
b=1.5+4.5*v;
x=a*u+b*(1-u);
@bin(a);
@bin(u);
@bin(v);
Global optimal solution found.
Objective value: 301.0000
Variable Value Reduced Cost
K 7.000000 0.000000
X 6.000000 0.000000
B 6.000000 0.000000
V 1.000000 -409.5001
A 0.000000 0.000000
U 0.000000 546.0001
对多个取值的添加可类似处理.
注:特别地,若取值中含有(或间接含有)多个连续的整数时,也可优先使用整数命令@gin
比如,要定义变量x,x的取值分别为0,1,1.6,1.7,1.8,1.9
(可认为在0,1基础上扩充取值1.6,1.7,1.8,1.9)
只须定义v>=16,v<=19,@gin(v),b=v/10;
优化样例3:
max=k*(x^2+x+1);
k>=2;
k<=7;
v>=16;
v<=19;
b=v/10;
x=a*u+b*(1-u);
@bin(a);
@bin(u);
@gin(v);
Global optimal solution found.
Objective value: 45.57000
Variable Value Reduced Cost
K 7.000000 0.000000
X 1.900000 0.000000
V 19.00000 0.000000
B 1.900000 0.000000
A 0.000000 0.000000
U 0.000000 63.84003
全部回答
- 1楼网友:像个废品
- 2021-04-09 07:12
可以将x表示为一个集合中的五个元素吧
比如:
sets:
a/1..5/:x;
endsets
data:
x=0,1,1.5,2,4;
enddata
集是lingo的特色,也是lingo在解决规划问题的时候最大的优势,所以集的定义和应用是一定要弄清楚的。
因为不清楚原题,所以不能做出准确的解答,希望对你有帮助。
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯