lingo中怎么表示当i=2时j不等于5
来源:学生作业帮助网 编辑:作业帮 时间:2024/05/28 14:16:11
定义一个派生集link如下,其中x即可表示为一个矩阵sets:r/1..5/:;c/1..5/:;h/1..5/:;link(r,c,h):x;endsets
sets:setname/1..7/:x,t;endsets@for(setname(i):@for(setname(j)|i#ne#j:(x(i)+t(i)#le#x(j))#or#(x(j)+t(
@if(z(i,j)=2,@bin(x(i,j)),0)再问:lingo里语法好像不允许,报错了再答:给具体点,不然我也没有办法写,我就表示那个意思。
首先你要会定义集比如集定义是sets:s/1..3/:k;endsets那么k是0-1变量就用@for(s:@bin(k));表示
规划问题中大于就是大于等于因为最优值一定取在边界上@bnd(0,a,1);或者a
k,i是变量还是集合下标呢?以下是变量的情况:@bnd(1,k,3);!1再问:谢谢,k,i又当下标,又当变量(作为指数)再答:要看具体情况吧,你把代码或数学模型贴出来看看吧再问:太感谢了,你有邮箱吗
如果是下标就用集定义自己找教程看看变量用@gin(i);i
可以让x1+x2=c;然后限制c为0-1变量@bin(c);你最好说清楚具体的问题我看有没有更好的办法再问:我没说清楚,x1+x2=0或1,x3+x4=0或1,x5+x6=0或1,这几个同时满足呢??
如果有积分,lingo是处理不了的.建议到matlab工具箱中运行求解吧,积分可以利用数值积分的方法.
c=@if(x#eq#0,0.1*Q,1+0.5*X+0.1*Q);再问:Model:Title;Sets:yuefen/1..4/:c,x,e,d,s;endsetsdata:c=5555;d=40
如果都是0-1变量,那么可以写成约束条件y(i)>x(i,j)
你这个最好有别的条件看能不能写成线性的条件乱写的话算出来会有问题的再问:我想表达的意思是0-1整数规划。当Xi=1的时候Xj才能等于1再答:那你想想写xj
最后自己看下教程,集的概念和sum,for函数,以下仅是部分情况示例sets:r/1..5/:x;c/1..5/:;link(r,c):y;endsetss1=@sum(r:x);s2=@sum(li
你写错了吧应该是|x1-x2|=5@abs(x1-x2)=5;
@ACOS(X)Returnstheinversecosine,orarccosine,ofX,whereXisanangleinradians.@ACOSH(X)Returnstheinverseh
data:enddata
使用循环语句@for(AZ(i,j):t(i,j)=k(j,i));互换i,j位置,即置换.例子:MODEL:sets:row/1..5/;col/1..5/;AZ(row,col):k,t;ends
@gin(x)整数@bin(x)整数0或1@free(x)取消x非负限制,即可取所有实数因为lingo中的数是默认非负的@bnd(m,x,l)x是属于m=
可以找个中间的变量z=@if(y#gt#1,1,0);然后x>=z;
@free(x1);x1