是因为数组的规模不匹配造成的,我修改了一下,但是我的lingo没有注册所以不能计算大规模问题,没有得到结果,63的错误没有了! MODEL: TITLE:模型; SETS: CANG/1..9/:A,TT;   AI/1..5/:B;   ICI/1..45/:; LINK1(PAI,CANG):WEIGHT,WATER,QY,SHAOSUN; LINK2(PICI,CANG):WEI,WAT,QY1,SHA,PW,PB,T,REMAIN,CHANGE; ENDSETS DATA: WEIGHT=20 30 90 50 70 20 60 50 10 70 60 70 30 90 20 70 10 20 50 20 10 90 70 40 30 30 40 40 90 50 30 80 50 80 20 50 60 20 60 70 40 20 90 50 60; WATER= 8.7000 8.3000 8.3000 8.4000 8.3000 8.6000 8.1000 8.8000 8.1000 8.5000 8.5000 8.8000 8.5000 8.4000 8.3000 8.7000 8.5000 8.2000 8.4000 8.2000 8.3000 8.6000 8.2000 8.6000 8.2000 8.8000 8.3000 8.2000 8.5000 8.7000 8.5000 8.4000 8.5000 8.7000 8.9000 8.2000 8.5000 8.2000 8.7000 8.5000 8.2000 8.3000 8.6000 8.4000 8.8000; QY= 68.1100 67.9400 68.1600 68.1600 66.9400 68.0500 67.8900 65.0600 68.1600 68.1100 67.8600 65.2000 68.1100 66.4600 68.1100 67.9100 65.2000 68.1600 67.7000 68.3000 66.1000 67.6000 66.2000 68.0800 68.2800 65.1800 68.2800 68.6000 66.9000 67.1000 66.4000 66.7000 65.1000 65.2000 66.7000 67.9000 67.8000 67.4000 68.7000 65.2000 65.18000 68.2000 66.3000 67.4000 68.8000; SHAOSUN=3.0300 3.0300 3.0300 3.0300 3.0300 3.0300 3.0300 3.0300 3.0300 3.0300 3.0300 3.0300 3.0300 3.0300 3.0300 3.0300 3.0300 3.0300 3.0300 3.0300 3.0300 3.0300 3.0300 3.0300 3.0300 3.0300 3.0300 3.0300 3.0300 3.0300 3.0300 3.0300 3.0300 3.0300 3.0300 3.0300 3.0300 3.0300 3.0300 3.0300 3.0300 3.0300 3.0300 3.0300 3.0300; ENDDATA B(K,J)*T(K,J)*50/100">MAX=@SUM(LINK2(K,J) B(K,J)*T(K,J)*50/100); !目标函数; @FOR(LINK2(K,J) BND(0,PB(K,J),50)); !范围限制; @FOR(LINK2(K,J) BND(65.2,PW(K,J),65.4)); !范围限制; @FOR(LINK2(K,J) BND(0,T(K,J),240));!T时间为分范围限制;
@FOR(CANG(J):WEI(1,J)=WEIGHT(1,J)); !初始化weight; @FOR(CANG(J):WAT(1,J)=WATER(1,J)); !初始化water; @FOR(CANG(J) Y1(1,J)=QY(1,J)); !初始品位qy; @FOR(CANG(J):SHA(1,J)=SHAOSUN(1,J)); !初始化shaosun; @FOR(CANG(J):CHANGE(1,J)=1); !定义变化的初始值为5; @FOR(LINK2(K,J)|K #GT# 1:REMAIN(K,J)=WEI(K-1,J)-(PB(K,J)*50/100)*T(K,J));
@FOR(LINK2(K,J)|K #GT# 1:WEI(K,J)=@IF((WEI(K-1,J)-(PB(K-1,J)*50/100)*T(K,J)) #EQ# 0,WEIGHT(CHANGE(1,J),J),WEI(K-1,J)-(PB(K-1,J)*50/100)*T(K-1,J))); !每一次实验的初始化数据; @FOR(LINK2(K,J)|K #GT# 1:WAT(K,J)=@IF((WEI(K-1,J)-(PB(K-1,J)*50/100)*T(K,J)) #EQ# 0,WATER(CHANGE(1,J),J),WAT(K-1,J))); !每一次实验的初始化数据; @FOR(LINK2(K,J)|K #GT# 1 Y1(K,J)=@IF((WEI(K-1,J)-(PB(K-1,J)*50/100)*T(K,J)) #EQ# 0,QY(CHANGE(1,J),J),QY1(K-1,J))); !每一次实验的初始化数据; @FOR(LINK2(K,J)|K #GT# 1:SHA(K,J)=@IF((WEI(K-1,J)-(PB(K-1,J)*50/100)*T(K,J)) #EQ# 0,SHAOSUN(CHANGE(1,J),J),SHA(K-1,J))); !每一次实验的初始化数据; @FOR(PICI(K) SUM(CANG(J) B(K,J))=100);
@FOR(LINK2(K,J):CHANGE(K,J)<45); !每一次实验初始化的根据; @FOR(LINK2(K,J)|K #GT# 1:CHANGE(K,J)=@IF((WEI(K-1,J)-(PB(K-1,J)*50/100)*T(K,J)) #EQ# 0,CHANGE(K-1,J)+1,CHANGE(K-1,J))); @FOR(LINK2(K,J):T(K,J)=WEI(K,J)/(50*PB(K,J)/100)); !每一次实验的时间计算; !pw的计算; @FOR(LINK2(K,J) W(K,J)=@SUM(LINK2(K,J) B(K,J)*QY1(K,J)*(100-WAT(K,J))*0.0001)/@SUM(LINK2(K,J) B(K,J)*(100-WAT(K,J))*(100+SHA(K,J))*0.0001*100));
END
|