lingo中x1=0或1,怎么表示
来源:学生作业帮助网 编辑:作业帮 时间:2024/11/10 23:14:52
lingo取整有几种形式:@floor(x):对x向下取整@bin(x):只取0或1@gin(x):限制x只能取整数
@bin
@bin(y);当然对集操作也一样@for(set:@bin(y));这种形式有问题再问我这个可能性不大除非你们做出是无可行解的情况
@if(z(i,j)=2,@bin(x(i,j)),0)再问:lingo里语法好像不允许,报错了再答:给具体点,不然我也没有办法写,我就表示那个意思。
规划问题中大于就是大于等于因为最优值一定取在边界上@bnd(0,a,1);或者a
max=5*x1+2*x2^2+x3^2;x1+4*x2+3*x3=6;上面两句就行了非负是默认的
有现成的0-1限制@bin(x);
可以让x1+x2=c;然后限制c为0-1变量@bin(c);你最好说清楚具体的问题我看有没有更好的办法再问:我没说清楚,x1+x2=0或1,x3+x4=0或1,x5+x6=0或1,这几个同时满足呢??
你要知道lingo里面都是约束既然你要写这个约束直接写了就行了你最后一句基本上都写出来了啊再问:最后一句运行不对,如o,p都为0,q为1的话,运行得v不是w的1.5倍,求高手解答再答:你后面的a和b都
x=zeros(1,n);%产生一个n维的零向量x(m)=1;%给其中一个赋值1,m取你需要赋值的那个变量再问:我的意思是实现0-1整数规划;比如说minm1*x1+m2*x2+......+m12*
model:min=45/(x1+x2);x1+x2>=1;x1
你这里面是用了集了吗如果用集就大概是这样的但是具体的你要自己写sets:s/1..5/:x,y,z;endsets@sum(s(i):x(i)+y(i)+z(i)=1);@for(s(i):@bin(
model:sets:diqu/1..8/:b,c,x;endsetsdata:c=25,46,60,53,55,17,16,22;b=150,180,300,200,300,100,80,120;e
后面是x5吧这个条件请仔细的表达一下因为这个用lingo表达可能有些困难说实话如果这个问题像这样的离散的情况很多的话用lingo计算效果也不会很好
可以这样设:k(1,1)+k(1,3)=x(1);@bin(x(1));
max=3*x1*x1-x1^3+5*x2*x2-x2^3;x1+2*x2再问:动态规划问题擅长不?再答:不擅长
给个例子好了@bin(k(1,1));@bin(k(1,3));这是0-1变量的表示方法.
@gin(x)整数@bin(x)整数0或1@free(x)取消x非负限制,即可取所有实数因为lingo中的数是默认非负的@bnd(m,x,l)x是属于m=
@free(x1);x1
x1,x2,x3有限制没有呢?还有@sin(x),x是弧度,不是角度.