Lingo中怎么定义多值变量啊?比如说定义三值变量x等于0,1或1.5。 只知道定义二值变量是@bin。。。 10

 我来答
evolmath
2014-07-27 · TA获得超过2745个赞
知道小有建树答主
回答量:413
采纳率:100%
帮助的人:231万
展开全部
定义(离散可列)多值变量,可以借助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
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式