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;

min=a1+a2+a3+a4+a5+a6+a7+a8+a9+a10; a1+a3+a5+a8>=1; a2+a4+a9>=1; a1+a4+a9>=1; a6+a7=0; 如果要限制某个变量为0和1就用@bin 比如@bin(x);就是限制x为0或者1 大概就这样 最基本的lingo教程里面都有 自己看看就知道

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);

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