lingo算P-中值选址规划,模型跟这个差不多,但是lingo运行了1s后报错,用的是lingo9,请高手找错,谢谢

sets:
demand/1..115/:a,b,d;
supply/1..66/:x,y,n;
link(demand,supply):t,m;
endsets
data:
a=@ole('E:\michael\shizhantwo.xls',a);
b=@ole('E:\michael\shizhantwo.xls',b);
x=@ole('E:\michael\shizhantwo.xls',x);
y=@ole('E:\michael\shizhantwo.xls',y);
d=@ole('E:\michael\shizhantwo.xls',d);
enddata
min=@sum(link(i,j):(30*@if(a(i)#ge#x(j),a(i)-x(j),x(j)-a(i))+20*@if(b(i)#ge#y(j),b(i)-y(j),y(j)-b(i)))*d(i)*m(i,j));
@for(supply(j):@bin(n(j)));
@for(link(i,j):@bin(m(i,j)));
@for(demand(i):@sum(supply(j):m(i,j)=1););
@sum(supply(j):n(j)=2);
@for(link(i,j):m(i,j)-x(j)<0);

“x1+x2+*x3+*x4+*x5+*x6=4;”你起码要把这个条件写清楚一点的吧!我把‘+*’全部看成是‘*’!
model:
min=dn_+dn+dc_+dc+do_+do+ddmax_+ddmax+ddav_+ddav+dtmax_+dtmax+dtav_+dtav;
0.1486*x1+0.2086*x2+0.2829*x3+0.0717*x4+0.0805*x5+0.2078*x6+dn_-dn=1;
1200*x1+880*x2+780*x3+900*x4+1100*x5+950*x6+dc_-dc=4000;
130*x1+90*x2+80*x3+95*x4+120*x5+85*x6+do_-do=440;
1143.6*x1+1117.5*x2+1030.0*x3+1115.0*x4+1068.1*x5+1266.1*x6+ddmax_-ddmax=0;
838.5*x1+873.3*x2+760.7*x3+808.3*x4+800.9*x5+962.7*x6+ddav_-ddav=0;
843*x1+822*x2+784*x3+801*x4+876*x5+1056*x6+dtmax_-dtmax=0;
589*x1+582*x2+538*x3+562*x4+v*x5+813*x6+dtav_-dtav=0;
x1+x2*x3*x4*x5*x6=4;
end
其实这样在lingo里基本上都可以计算得出来了!
以下是运算结果:
DN_ 0.4056000 0.000000
DN 0.000000 2.000000
DC_ 0.000000 2.000000
DC 800.0000 0.000000
DO_ 0.000000 2.000000
DO 80.00000 0.000000
DDMAX_ 0.000000 2.000000
DDMAX 4574.400 0.000000
DDAV_ 0.000000 2.000000
DDAV 3354.000 0.000000
DTMAX_ 0.000000 2.000000
DTMAX 3372.000 0.000000
DTAV_ 0.000000 2.000000
DTAV 2356.000 0.000000
X1 4.000000 0.000000
X2 0.000000 4364.591
X3 0.000000 3972.417
X4 0.000000 4281.228
X5 0.000000 3967.423
X6 0.000000 5132.592
V 2.503625 0.000000
不知道合不合你要求,你应该写清楚你的条件,不要出现“+*”,才好判断希望可以帮到你.!
温馨提示:答案为网友推荐,仅供参考
第1个回答  2011-07-16
改成这样 自己注意括号位置

sets:
demand/1..115/:a,b,d;
supply/1..66/:x,y,n;
link(demand,supply):t,m;
endsets
data:
a=@ole('E:\michael\shizhantwo.xls',a);
b=@ole('E:\michael\shizhantwo.xls',b);
x=@ole('E:\michael\shizhantwo.xls',x);
y=@ole('E:\michael\shizhantwo.xls',y);
d=@ole('E:\michael\shizhantwo.xls',d);
enddata
min=@sum(link(i,j):(30*@if(a(i)#ge#x(j),a(i)-x(j),x(j)-a(i))+20*@if(b(i)#ge#y(j),b(i)-y(j),y(j)-b(i)))*d(i)*m(i,j));
@for(supply(j):@bin(n(j)));
@for(link(i,j):@bin(m(i,j)));
@for(demand(i):@sum(supply(j):m(i,j))=1);
@sum(supply(j):n(j))=2;
@for(link(i,j):m(i,j)-x(j)<0);追问

恩~太感谢了~不过我修改后能运行了,但是迭代次数为0,01变量取前两个为1就停止了,你看是怎么回事呢~谢谢啦·

追答

那这样不是最优解吗 最优解应该是多少

追问

我也不知道答案,感觉迭代0次...也比较不可信吧...

追答

那只是感觉 你要说可信不可信要拿出具体的说法来 要不你自己写算法

本回答被网友采纳