lingo 怎么表示 xij=0或1
来源:学生作业帮助网 编辑:作业帮 时间:2024/11/18 19:04:20
加一个0-1变量就可以了@for(supply(j):@sum(demand(i):x(i,j))=4+b);@bin(b);再问:牛╮(╯▽╰)╭,好吧,可是如果是045咋办其实我要做的是045再答
规划问题中大于就是大于等于因为最优值一定取在边界上@bnd(0,a,1);或者a
有现成的0-1限制@bin(x);
可以让x1+x2=c;然后限制c为0-1变量@bin(c);你最好说清楚具体的问题我看有没有更好的办法再问:我没说清楚,x1+x2=0或1,x3+x4=0或1,x5+x6=0或1,这几个同时满足呢??
@if(条件,正确返回值,错误返回值);@for(fuwupingtai(i):@sum(links(i,j):x(i,j)))=@if(@for(links(i,j)|i#eq#j:x(i,j)=0
变量定界函数可以对变量的取值范围附加限制,Lingo中有一下四个变量限界函数:@BND(L,X,U):限制L@BIN(X):限制X为0或1.@FREE(X):取消对X的符号限制(即可取负数,0或正数)
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整数规划。当Xi=1的时候Xj才能等于1再答:那你想想写xj
@bin函数再问:嗯嗯,知道了还有个gin是吧
你这里面是用了集了吗如果用集就大概是这样的但是具体的你要自己写sets:s/1..5/:x,y,z;endsets@sum(s(i):x(i)+y(i)+z(i)=1);@for(s(i):@bin(
@ACOS(X)Returnstheinversecosine,orarccosine,ofX,whereXisanangleinradians.@ACOSH(X)Returnstheinverseh
既然是分段函数总要有分段的区间吧你不写区间没法表示出来分段函数一般用@if表示用多项式来表示(x-a)*(x-b)=0;或者用一个0-1变量y来表示x=a+y*(b-a);@bin(y);
可以这样设:k(1,1)+k(1,3)=x(1);@bin(x(1));
给个例子好了@bin(k(1,1));@bin(k(1,3));这是0-1变量的表示方法.
你这句写的没问题啊就这样@for(roads(i,j):rd(i,j)=rd(j,i));
data:enddata
先定义集然后再做下面的再问:您好可以详细说一下吗?我定义集之后总是出现无效的setname请问是怎么回事?,谢谢
好多年没用lingo了,书写格式已经记不太清了.至于你的补充问题,x>=10||y=0max(x-10,100-y)是关于(x,y)的凸函数,即为g(x,y)上式就是g(x,y)>=0明显的这十个an
sets:s/1..7/:x;endsetsmin=@sum(s(i):x(i));再问:我运行那个目标函数的时候,出现错误了再答:运行哪个目标函数把你写的发上来行不你们怎么都这样光说有错误也不把出错
@gin(x)整数@bin(x)整数0或1@free(x)取消x非负限制,即可取所有实数因为lingo中的数是默认非负的@bnd(m,x,l)x是属于m=