lingo中控制X(i)和X(i 1)的关系
来源:学生作业帮助网 编辑:作业帮 时间:2024/05/24 17:10:42
generalinterger一般整数与0-1这种二元整数对应
定义一个派生集link如下,其中x即可表示为一个矩阵sets:r/1..5/:;c/1..5/:;h/1..5/:;link(r,c,h):x;endsets
@if(z(i,j)=2,@bin(x(i,j)),0)再问:lingo里语法好像不允许,报错了再答:给具体点,不然我也没有办法写,我就表示那个意思。
集合x中的元素要嘛大于等于2要嘛等于0x≥2或x=0为真,即其中至少有一个为真
有现成的0-1限制@bin(x);
改了一点,在逻辑上没有问题,但是就不是线性模型了,用全局最优器解.你看看吧!MODEL:data:M=7;enddatasets:demand/1..m/:p,a,d,x,y;ob/1..m/:w;l
@FOR(product(J):SUM(WORKER(I):X(I,J))=@if(W(J)#gt#0,1,SUM(WORKER(I):X(I,J)));这样试试
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)
从代码看是没错,具体还得看你的集合定义
如果都是0-1变量,那么可以写成约束条件y(i)>x(i,j)
如果x>0,则为00,否则为0
改成这样min=x;1312.5*x-y7.79;
@abs(x-2)
具体问题是什么如果x不是离散的单单不等于0是没用的必须要不小于一个非负的数整数情况的话写大于等于1就完了
建议你看一下lingo教程重点看集的部分其实很容易的要我帮你也可以请拿个完整的题来我不知道你说的矩阵为什么会只有一个指标
@mod(x,5)=0;可能需要lingo10以上版本也可以再定义一个yx=5*y;@gin(y);这个用起来比较方便所有版本应该都可以
sets里面是无关已知未知的只要是要定义在集里面的量都可以写上未知的话你可以再定义一个集写数据然后在calc里面赋值再问:calc是什么啊?再答:calc段你自己到lingo的help里面查一下吧不行
有个疑问x=0和x>=9的情况是什么会在其它条件中给出吗?如果确定了x的范围不会超过你给的那下面的就行f=@if(x#lt#3,2*x+3,@if(x#lt#6,3*x,5*x-12));
@if函数结果是一个数值如果x(i,j)>=x(i-1,j)那么就是0否则就是x(i-1,j)-x(i,j)
对不起,刚才敲错了,那是不是应该是A+ε=B查看原帖