xcxd.net
当前位置:首页 >> lingo处理0%1整数问题 >>

lingo处理0%1整数问题

程序语法错误,略作更改就可以运行:model:sets:warehouses /wh1..wh1000/: Y;vendors /v1..v100/: W;links(warehouses,vendors):A,X;endsetsmax=@sum(links:A*X);@for(warehouses(I):@sum(vendors(J):X(I,J))=3*Y(I));@for(vendors(J):@sum(

model:!集合定义;sets:factory/p1..p6/:p;!chanpin/s1,s2/;warhouse/w1..w4/:a,f,g;customer/c1..c6/:d;tr/tr1..tr4/:z;link1(factory,warhouse):c,w;link2(warhouse,customer):h,x;endsets!给出已知数据;data:p=40000 50000 60000 70000 60000 40000;

sets:C/1..10/:a;!定义变量a有10个; S/1..4/;!定义约束有4个式子; ST(S,C):b;!定义0-1变量是a的系数.; endsets @for(S(I)|I#lt#4:@sum(C(J):b(I,J)*a(J))>1);!对于每个式子,对应的b*a的和<=1,lingo大于即为大于等于; @sum(C(J):b(4,

model:sets: p/1..6/:f; r(p,p)/1,2 1,3 2,3 2,4 3,4 3,5 4,5 4,6 5,6/: d;Endsetsdata:d=7 9 1 7 6 6 2 7 6;Enddataf(@size(p))=0;@for(p(i)|i#lt# (@size(p):f(i)=@min(r(i,j):d(i,j)+f(j)));end

min后面要有等号 另外你的end要写到最后 建议你找个教程严格按照lingo的语法写 你这个又像lingo又像lindo的

这样就不要用@bin限制变量为0-1变量了,而是要限制变量的上下界,用@bnd(0,x,1),表示限制变量x满足在区间[0,1]之内;

这是个泊松过程的模拟吧 有个函数@pps(a,x)产生均值为a 的Poisson 分布的累积分布函数.当x 不是整数时,采用线性插值进行计算..至于模拟你自己做就可以了

这个是根据题目来判断.没有绝对的标准.举个例子来说,如果楼主希望表示一个相斥的情况,即A情况发生则B情况不发生就可以设置0-1变量.A情况发生设为X1,B情况发生设为X2,那么X1+X2=1;@BIN(X1);@BIN(X2);表示将X1,X2设为0-1变量.

一般的指派问题就是0-1规划问题了sets:r/1..3/:;c/1..5/:;link(r,c):score,x;endsetsdata:score=72 76 85 65 0 81 0 78 84 0 0 75 84 86 85;enddatamax=@sum(link:x*score);@for(link:@bin(x));@for(r(i):@sum(c(j):x(i,j))=1);@for(c(j):@sum(r(i):x(i,j))<=1);

min=y1+y2+y3+y4+y5; y1+y2>=1; y1+y2+y3>=1; y2+y3+y4>=1; y3+y4>=1; y5>=1;@gin(y1);@gin(y2);@gin(y3);@gin(y4);@gin(y5);

相关文档
yhkn.net | lyhk.net | bnds.net | qyhf.net | tuchengsm.com | 网站首页 | 网站地图
All rights reserved Powered by www.xcxd.net
copyright ©right 2010-2021。
内容来自网络,如有侵犯请联系客服。zhit325@qq.com