LINGO中x_i≥0 ,i=1,⋯,4 怎么表示
来源:学生作业帮助网 编辑:作业帮 时间:2024/05/24 11:37:09
@bin
你要说具体问题不知道你这个i是干什么的再问:条件中:7Σxij=yj+zj (j=1...21,j≠9,11,17)i=1像这样的,谢了再答:@for(set2(j)|j#ne#9#and#j#ne#
找不到可行解,请自行检查模型model:sets:si/1..6/;sj/1..7/;st/1..5/:l;sij(si,sj):c,x,s;stj(st,sj):a;sit(si,st):k;end
sets:r/1..5/:x;c/1..5/:;k/1..5/:;link(r,c):y;links(r,c,k):z;endsets@bin(b);!单变量;@for(r:@bin(x));!一维;
@if(z(i,j)=2,@bin(x(i,j)),0)再问:lingo里语法好像不允许,报错了再答:给具体点,不然我也没有办法写,我就表示那个意思。
集合x中的元素要嘛大于等于2要嘛等于0x≥2或x=0为真,即其中至少有一个为真
@for(link1(i,j):v(i,j)=@if(c(i)#gt#A(j),1,0));c(i)和A(j)至少要有一个为已知确定值
有现成的0-1限制@bin(x);
你在@for里面就写了个逻辑表达式请问你的约束条件呢?你需要这个逻辑表达式怎么样?再问:哦,谢谢,我已经知道了,把#AND#改成分号就可以了
sets:a/1..10/:;b/1..45/:;link(a,b):x;endsets@for(a(i):@for(b(j):x(i,j)+x(i,j+1)
如果是下标就用集定义自己找教程看看变量用@gin(i);i
可以让x1+x2=c;然后限制c为0-1变量@bin(c);你最好说清楚具体的问题我看有没有更好的办法再问:我没说清楚,x1+x2=0或1,x3+x4=0或1,x5+x6=0或1,这几个同时满足呢??
从代码看是没错,具体还得看你的集合定义
看一下你怎么写的应该是没有可行解吧
如果都是0-1变量,那么可以写成约束条件y(i)>x(i,j)
你要知道lingo里面都是约束既然你要写这个约束直接写了就行了你最后一句基本上都写出来了啊再问:最后一句运行不对,如o,p都为0,q为1的话,运行得v不是w的1.5倍,求高手解答再答:你后面的a和b都
你这里面是用了集了吗如果用集就大概是这样的但是具体的你要自己写sets:s/1..5/:x,y,z;endsets@sum(s(i):x(i)+y(i)+z(i)=1);@for(s(i):@bin(
整数@gin01规划@bin函数
@if函数结果是一个数值如果x(i,j)>=x(i-1,j)那么就是0否则就是x(i-1,j)-x(i,j)