数学建模社区-数学中国

标题: lingo一个很简单的线性优化问题,求大神检查问题在哪? [打印本页]

作者: gleam    时间: 2013-4-14 21:21
标题: 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
还有这个啊?
作者: 泰迪    时间: 2013-4-14 21:31
完全不会呀...
作者: gleam    时间: 2013-4-14 21:35
泰迪 发表于 2013-4-14 21:31
还有这个啊?

0.0   这个应该是最基础的吧
作者: smilecao    时间: 2013-4-14 23:51
不知道哎!
作者: madio    时间: 2013-4-15 00:01
我算出来的和你一样,既然显示是全局最优解就不会有错,我估计模型不一样
作者: zzpals    时间: 2013-4-15 17:22
问题可能在于你用的是lingo 11,我之前也用11,也是这样。如果加上一个条件
  1. @for(link(i):x(i)>1);
复制代码
倒是可以在lingo 11中算出最优解,不过这种在日常使用中随机加条件很不现实。
使用lingo 9可以直接用你的代码算出最优解,不过,lingo 9在处理部分问题时也会出现算不出最优解的情况。
作者: gleam    时间: 2013-4-15 18:57
madio 发表于 2013-4-15 00:01
我算出来的和你一样,既然显示是全局最优解就不会有错,我估计模型不一样

就是整数规划啊,既然有更优的解为什么我的LINGO解出来不是 ...
作者: gleam    时间: 2013-4-15 18:58
zzpals 发表于 2013-4-15 17:22
问题可能在于你用的是lingo 11,我之前也用11,也是这样。如果加上一个条件倒是可以在lingo 11中算出最优解 ...

我去下载个LINGO 9试试~




欢迎光临 数学建模社区-数学中国 (http://www.madio.net/) Powered by Discuz! X2.5