Lingo中怎么定义多值变量啊?比如说定义三值变量x等于0,1或1.5。 只知道定义二值变量是@bin。。。 10
1个回答
展开全部
定义(离散可列)多值变量,可以借助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
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询