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
谢谢耐心解答MODEL:
SETS:
JIZHU/JIZHU1..JIZHU8/:GI0,GI1,V;
DUAN/DUAN1..DUAN10/:D;
ZHILU/ZHILU1..ZHILU6/:CC,FI,FX,FD,FR;
LINKS(JIZHU,DUAN):DJ,DR;
LINK(ZHILU,JIZHU):C;
ENDSETS
DATA:
GI0=120,73,180,80,125,125,81.1,90;
V=2.2,1,3.2,1.3,1.8,2,1.4,1.8;
CC=1.111224786317819 1.318676323930283 -1.096597047551148 0.783854251638765 1.338126254232463 1.220559749861743;
FX=165 150 160 155 132 162;
FD= 186.4500 177.0000 174.4000 172.0500 151.8000 184.6800;
DR=
70 0 50 0 0 30 0 0 0 40
30 0 20 8 15 6 2 0 0 8
110 0 40 0 30 0 20 40 0 40
55 5 10 10 10 10 15 0 0 1
75 5 15 0 15 15 0 10 10 10
95 0 10 20 0 15 10 20 0 10
50 15 5 15 10 10 5 10 3 2
70 0 20 0 20 0 20 10 15 5;
DJ=
-505 0 124 168 210 252 312 330 363 489
-560 0 182 203 245 300 320 360 410 495
-610 0 152 189 233 258 308 356 415 500
-500 150 170 200 255 302 325 380 435 800
-590 0 116 146 188 215 250 310 396 510
-607 0 159 173 205 252 305 380 405 520
-500 120 180 251 260 306 315 335 348 548
-800 153 183 233 253 283 303 318 400 800;
C= 0.0814 0.0482 0.0523 0.1197 -0.0277 0.1187 0.1259 -0.0021
-0.0550 0.1264 -0.0009 0.0331 0.0860 -0.1149 -0.0170 0.0988
-0.0680 0.0627 -0.1565 -0.0099 0.1258 0.0040 -0.0039 -0.1994
-0.0355 -0.1046 0.2048 -0.0207 -0.0140 0.0042 0.1472 0.0743
0.0003 0.2408 -0.0662 -0.0414 -0.0662 0.0689 -0.0021 -0.0104
0.2349 -0.0619 -0.0790 0.0930 0.0447 -0.0028 0.1677 -0.0011;
ENDDATA
MIN=@SUM(ZHILU(I):(FI(I)-FX(I))/FX(I));
@FOR(JIZHU(I):GI1(I)<=GI0(I)+GI0(I)*V(I));
@FOR(JIZHU(I):GI1(I)<=@SUM(DUAN(J):DR(I,J)));
@FOR(JIZHU(I):GI1(I)>=GI0(I)-GI0(I)*V(I));
@SUM(JIZHU(I):GI1(I))=1052.8;
@FOR(ZHILU(I):FI(I)=@SUM(JIZHU(J):C(I,J)*GI1(J)+CC(I)));
@FOR(ZHILU(I):FI(I)=@ABS(FI(I)));
@FOR(ZHILU(I):FI(I)<=FD(I));
!@FOR(ZHILU(I):FR(I)=(FI(I)-FX(I))/FX(I));
END FR这个集的属性没有赋值,最后一个约束是判断FR(I)=(FI(I)-FX(I))/FX(I))一个等式是否成立,没有值也无法判断相等,这显然不符合要求。 madio 发表于 2013-8-22 15:16 static/image/common/back.gif
FR这个集的属性没有赋值,最后一个约束是判断FR(I)=(FI(I)-FX(I))/FX(I))一个等式是否成立,没有值也无法判 ...
FR(I)=(FI(I)-FX(I))/FX(I))这个地方我想表达的是:由自变量gi1得到变量fi 然后再通过FI得到FR。想单纯表达这么一个计算的过程 所以FR肯定没有值,FI也肯定没有值都是要通过lingo要求出的,所以我应该怎么写这种单纯的计算过程的式子呢? 你这个问题根据错误提示,应该是约束条件里面设定了固定变量约束了,仔细分析一下,应该是第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
进一步分析,如果,@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约束下无法得到最优解,以上是我的一个简单分析,对此问题有更好处理的可以进一步交流 lingogo 发表于 2013-8-22 19:29 static/image/common/back.gif
进一步分析,如果,@SUM(JIZHU(I):GI1(I))=1052.8这个约束是必须的话,那么可以尝试,将这个条件换成,@SUM(JIZH ...
lingogo,你好!很感谢你的积极发言讨论,此题我已和楼主私聊,后来楼主自己发现了错误并改正,得到了自己想要的结果,欢迎以后继续积极发言讨论,视情况我将给你奖励!
页:
[1]