数学建模社区-数学中国

标题: lingo一个奇怪的问题_跪求帮忙修改代码 [打印本页]

作者: Catnan    时间: 2013-8-22 14:56
标题: lingo一个奇怪的问题_跪求帮忙修改代码
求高手帮忙修改代码,能让他正常运行
错误好像主要在@FOR(ZHILU(I):FR(I)=(FI(I)-FX(I))/FX(I));这句话附近
显示的错误如下:
Error 72
unable to solve for fixed variable
FR(ZHILU1)

in constraint
20

loosening  the variable's bounds may help
谢谢耐心解答
  1. MODEL:
  2. SETS:
  3. JIZHU/JIZHU1..JIZHU8/:GI0,GI1,V;
  4. DUAN/DUAN1..DUAN10/:D;
  5. ZHILU/ZHILU1..ZHILU6/:CC,FI,FX,FD,FR;
  6. LINKS(JIZHU,DUAN):DJ,DR;
  7. LINK(ZHILU,JIZHU):C;
  8. ENDSETS
  9. DATA:
  10. GI0=120,73,180,80,125,125,81.1,90;
  11. V=2.2,1,3.2,1.3,1.8,2,1.4,1.8;
  12. CC=1.111224786317819   1.318676323930283  -1.096597047551148   0.783854251638765   1.338126254232463   1.220559749861743;
  13. FX=165     150      160     155     132     162;
  14. FD= 186.4500  177.0000  174.4000  172.0500  151.8000  184.6800;
  15. DR=
  16. 70  0   50  0   0   30  0   0   0 40
  17. 30  0   20  8   15  6   2   0   0   8
  18. 110 0   40  0   30  0   20  40  0   40
  19. 55  5   10  10  10  10  15  0   0   1
  20. 75  5   15  0   15  15  0   10  10  10
  21. 95  0   10  20  0   15  10  20  0   10
  22. 50  15  5   15  10  10  5   10  3   2
  23. 70  0   20  0   20  0   20  10  15  5;
  24. DJ=
  25. -505    0   124 168 210 252 312 330 363 489
  26. -560    0   182 203 245 300 320 360 410 495
  27. -610    0   152 189 233 258 308 356 415 500
  28. -500    150 170 200 255 302 325 380 435 800
  29. -590    0   116 146 188 215 250 310 396 510
  30. -607    0   159 173 205 252 305 380 405 520
  31. -500    120 180 251 260 306 315 335 348 548
  32. -800    153 183 233 253 283 303 318 400 800;

  33. C= 0.0814    0.0482    0.0523    0.1197   -0.0277    0.1187    0.1259   -0.0021
  34.    -0.0550    0.1264   -0.0009    0.0331    0.0860   -0.1149   -0.0170    0.0988
  35.    -0.0680    0.0627   -0.1565   -0.0099    0.1258    0.0040   -0.0039   -0.1994
  36.    -0.0355   -0.1046    0.2048   -0.0207   -0.0140    0.0042    0.1472    0.0743
  37.     0.0003    0.2408   -0.0662   -0.0414   -0.0662    0.0689   -0.0021   -0.0104
  38.     0.2349   -0.0619   -0.0790    0.0930    0.0447   -0.0028    0.1677   -0.0011;
  39. ENDDATA
  40. MIN=@SUM(ZHILU(I):(FI(I)-FX(I))/FX(I));

  41. @FOR(JIZHU(I):GI1(I)<=GI0(I)+GI0(I)*V(I));
  42. @FOR(JIZHU(I):GI1(I)<=@SUM(DUAN(J):DR(I,J)));
  43. @FOR(JIZHU(I):GI1(I)>=GI0(I)-GI0(I)*V(I));
  44. @SUM(JIZHU(I):GI1(I))=1052.8;

  45. @FOR(ZHILU(I):FI(I)=@SUM(JIZHU(J):C(I,J)*GI1(J)+CC(I)));
  46. @FOR(ZHILU(I):FI(I)=@ABS(FI(I)));
  47. @FOR(ZHILU(I):FI(I)<=FD(I));
  48. !@FOR(ZHILU(I):FR(I)=(FI(I)-FX(I))/FX(I));

  49. END
复制代码

作者: madio    时间: 2013-8-22 15:16
FR这个集的属性没有赋值,最后一个约束是判断FR(I)=(FI(I)-FX(I))/FX(I))一个等式是否成立,没有值也无法判断相等,这显然不符合要求。
作者: Catnan    时间: 2013-8-22 15:25
madio 发表于 2013-8-22 15:16
FR这个集的属性没有赋值,最后一个约束是判断FR(I)=(FI(I)-FX(I))/FX(I))一个等式是否成立,没有值也无法判 ...

FR(I)=(FI(I)-FX(I))/FX(I))这个地方我想表达的是:由自变量gi1得到变量fi   然后再通过FI得到FR。想单纯表达这么一个计算的过程  所以FR肯定没有值,FI也肯定没有值都是要通过lingo要求出的,所以我应该怎么写这种单纯的计算过程的式子呢?
作者: lingogo    时间: 2013-8-22 19:04
你这个问题根据错误提示,应该是约束条件里面设定了固定变量约束了,仔细分析一下,应该是第46行,@SUM(JIZHU(I):GI1(I))=1052.8;这里,删除这个约束即可得到最优值 -5.687719
Global optimal solution found.
  Objective value:                             -5.687719
  Objective bound:                             -5.687719
  Infeasibilities:                              0.000000
  Extended solver steps:                               0
  Total solver iterations:                             7


作者: lingogo    时间: 2013-8-22 19:29
进一步分析,如果,@SUM(JIZHU(I):GI1(I))=1052.8这个约束是必须的话,那么可以尝试,将这个条件换成,@SUM(JIZHU(I):GI1(I))>=1052.8和,@SUM(JIZHU(I):GI1(I))<=1052.8两个条件分别计算,,@SUM(JIZHU(I):GI1(I))>=1052.8这个条件依然报错,而@SUM(JIZHU(I):GI1(I))<=1052.8时,可以得到最优解,而且和删除@SUM(JIZHU(I):GI1(I))=1052.8约束得到的最优解一样,可以初步认定在@SUM(JIZHU(I):GI1(I))=1052.8约束下无法得到最优解,以上是我的一个简单分析,对此问题有更好处理的可以进一步交流
作者: wujianjack2    时间: 2013-8-22 19:48
lingogo 发表于 2013-8-22 19:29
进一步分析,如果,@SUM(JIZHU(I):GI1(I))=1052.8这个约束是必须的话,那么可以尝试,将这个条件换成,@SUM(JIZH ...

lingogo,你好!很感谢你的积极发言讨论,此题我已和楼主私聊,后来楼主自己发现了错误并改正,得到了自己想要的结果,欢迎以后继续积极发言讨论,视情况我将给你奖励!




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