请高手帮忙看看我的程序有木有问题,Lingo,运行不出来,或者能不能改成Matlab的程序,万分感谢!!!

2025-04-22 20:05:33
推荐回答(1个)
回答1:

MODEl:
sets:
ren/1..13/;
banci/1..28/:d;
links(ren,banci):x;
endsets
data:
d=3,3,3,3,3,2,2,3,3,3,3,3,2,2,3,3,3,3,3,2,2,1,1,1,1,1,1,1;
enddata
@for(ren(i)|i#NE#10:@sum(banci(j):x(i,j))=5);
@for(ren(i)|i#EQ#10:@sum(banci(j):x(i,j))=4);
@for(banci(j)|j#LE#8:@sum(ren(i)|i#LE#10:x(i,j))=d(j));
@for(banci(j)|j#GT#8:@sum(ren(i):x(i,j))=d(j));
@for(links(i,j):@bin(x(i,j)));
@for(ren(i):x(i,1)+x(i,2)+x(i,3)+x(i,4)<=1);
@for(ren(i):x(i,5)+x(i,6)+x(i,7)+x(i,8)<=1);
@for(ren(i):x(i,9)+x(i,10)+x(i,11)+x(i,12)<=1);
@for(ren(i):x(i,13)+x(i,14)+x(i,15)+x(i,16)<=1);
@for(ren(i):x(i,17)+x(i,18)+x(i,19)+x(i,20)<=1);
@for(ren(i):x(i,21)+x(i,22)+x(i,23)+x(i,24)<=1);
@for(ren(i):x(i,25)+x(i,26)+x(i,27)+x(i,28)<=1);
@for(ren(i):x(i,4)+x(i,8)+x(i,12)+x(i,16)+x(i,20)+x(i,24)+x(i,28)<=3);
@for(ren(i):x(i,4)+x(i,8)+x(i,12)<=2);
@for(ren(i):x(i,8)+x(i,12)+x(i,16)<=2);
@for(ren(i):x(i,12)+x(i,16)+x(i,20)<=2);
@for(ren(i):x(i,16)+x(i,20)+x(i,24)<=2);
@for(ren(i):x(i,20)+x(i,24)+x(i,28)<=2);
@for(ren(i):x(i,24)+x(i,28)+x(i,4)<=2);
@for(ren(i):x(i,28)+x(i,4)+x(i,8)<=2);
END

最后没有可行解 你自己检查吧 肯定是某几个约束矛盾了