lingo一个很简单的线性优化问题,求大神检查问题在哪?
sets:link/1..8/:t,r,z,x;
endsets
max=@sum(link(i):r(i)*x(i));
@sum(link(i):t(i)*x(i))<150000;
@for(link(i):t(i)*x(i)<z(i));
@for(link(i):@gin(x));
data:
t=6700 6600 4850 5500 5800 4200 4600 4500;
r=1139 1056 727.5 1265 1160 714 1840 1575;
z=34000 27000 30000 22000 30000 23000 25000 23000;
enddata
max=1139*n1+1056*n2+727.5*n3+1265*n4+1160*n5+714*n6+1840*n7+1575*n8;
6700*n1<=34000;
6600*n2<=27000;
4850*n3<=30000;
5500*n4<=22000;
5800*n5<=30000;
4200*n6<=23000;
4600*n7<=25000;
4500*n8<=23000;
6700*n1+6600*n2+4850*n3+5500*n4+5800*n5+4200*n6+4600*n7+4500*n8<=150000;
@gin(n1);
@gin(n2);
@gin(n3);
@gin(n4);
@gin(n5);
@gin(n6);
@gin(n7);
@gin(n8);
上面两个程序是一样的吧,出来的结果都是:
Global optimal solution found.
Objective value: 36798.00
Objective bound: 36798.00
Infeasibilities: 0.000000
Extended solver steps: 0
Total solver iterations: 0
Variable Value Reduced Cost
N1 5.000000 -1139.000
N2 3.000000 -1056.000
N3 0.000000 -727.5000
N4 4.000000 -1265.000
N5 5.000000 -1160.000
N6 0.000000 -714.0000
N7 5.000000 -1840.000
N8 5.000000 -1575.000
Row Slack or Surplus Dual Price
1 36798.00 1.000000
2 500.0000 0.000000
3 7200.000 0.000000
4 30000.00 0.000000
5 0.000000 0.000000
6 1000.000 0.000000
7 23000.00 0.000000
8 2000.000 0.000000
9 500.0000 0.000000
10 200.0000 0.000000
但是别人也是做出来有更优的解:
投资项目Ai A1 A2 A3 A4 A5 A6 A7 A8
投资份数xi 5 1 1 4 5 2 5 5
最大利润:36841.5万元
也是一样的程序 , 为什么我的LINGO算不出来最有的解啊
PS: 我是新手 ,还是今天才接触LINGO的
还有这个啊? 完全不会呀... 泰迪 发表于 2013-4-14 21:31 static/image/common/back.gif
还有这个啊?
0.0 这个应该是最基础的吧 不知道哎! 我算出来的和你一样,既然显示是全局最优解就不会有错,我估计模型不一样 问题可能在于你用的是lingo 11,我之前也用11,也是这样。如果加上一个条件@for(link(i):x(i)>1);倒是可以在lingo 11中算出最优解,不过这种在日常使用中随机加条件很不现实。
使用lingo 9可以直接用你的代码算出最优解,不过,lingo 9在处理部分问题时也会出现算不出最优解的情况。 madio 发表于 2013-4-15 00:01 static/image/common/back.gif
我算出来的和你一样,既然显示是全局最优解就不会有错,我估计模型不一样
就是整数规划啊,既然有更优的解为什么我的LINGO解出来不是 ...:L zzpals 发表于 2013-4-15 17:22 static/image/common/back.gif
问题可能在于你用的是lingo 11,我之前也用11,也是这样。如果加上一个条件倒是可以在lingo 11中算出最优解 ...
我去下载个LINGO 9试试~
页:
[1]