lingoerror50,for语句出错
model:
sets:
wh/w1..w6/:ai;
vd/v1..v8/:dj;
links(wh,vd):c,x;
end sets
data:
ai=60,55,51,43,41,52;
dj=25,37,22,32,41,32,43,38;
c=6,2,6,7,4,2,5,9 4,9,5,3,8,5,8,2 5,2,1,9,7,4,3,3 7,6,7,3,9,2,7,1 2,3,9,5,7,2,6,5 5,5,2,2,8,1,4,3;
end data
min=@sum(links(i,j):c(i,j)*x(i,j);
@for(wh(i): @sum(vd(j):x(i,j))<=ai(i));
@for(vd(j): @sum(wh(i):x(i,j))=dj(j));end说倒数第三行的for语句语法错误,但是我找不出来,请大侠指教。
一点点小错误,略作修改。见附件。
运行结果得到一个局部最优值,但可能无意义,它要求所有的X都为0,恐怕不是你想要的结果:
Local optimal solution found.
Objective value: 107.0500
Objective bound: 107.0500
Infeasibilities: 0.000000
Extended solver steps: 8
Total solver iterations: 287
Model Class: MINLP
Total variables: 115
Nonlinear variables: 100
Integer variables: 40
Total constraints: 26
Nonlinear constraints: 22
Total nonzeros: 265
Nonlinear nonzeros: 240
Variable Value
M1 0.000000
M2 0.000000
M3 0.000000
M4 0.000000
M5 107.0500
S( 1) 8.000000
S( 2) 9.000000
S( 3) 7.000000
K( 1) 0.000000
K( 2) 0.000000
K( 3) 0.000000
F( 1) 27.50000
F( 2) 20.00000
F( 3) 43.70000
F( 4) 35.00000
F( 5) 30.00000
CA( 1) 8.000000
CA( 2) 7.000000
CA( 3) 8.000000
CA( 4) 9.000000
CA( 5) 9.000000
GW( 1) 280.3398
GW( 2) 269.3336
GW( 3) 283.4336
GW( 4) 283.7961
GW( 5) 290.2219
XA( 1) 0.000000
XA( 2) 0.000000
XA( 3) 0.000000
XA( 4) 0.000000
XA( 5) 0.000000
PW( 1) 0.1000000
PW( 2) 0.1500000
PW( 3) 0.2500000
PW( 4) 0.2200000
PW( 5) 0.1600000
X( 1) 0.000000
X( 2) 0.000000
X( 3) 0.000000
X( 4) 0.000000
X( 5) 0.000000
C( 1) 0.000000
C( 2) 0.000000
C( 3) 0.000000
C( 4) 0.000000
C( 5) 0.000000
C( 6) 0.000000
C( 7) 0.000000
R( 1) 2.050000
R( 2) 3.350000
R( 3) 3.200000
R( 4) 2.450000
R( 5) 2.600000
R( 6) 3.760000
R( 7) 4.000000
SETS:
S/S1..S4/:SI;
D/D1..D4/:DJ,R,Y,W;
LINK(S,D):C,A,U,X;
ENDSETS
DATA:
SI=80,50,20,100;
DJ=70,70,90,20;
C=0,60,50,0
40,0,30,200
0,100,0,80
0,180,240,0;
R=220,160,180,250;
A=0,1,1,0
1,0,1,1
0,1,0,1
0,1,1,0;
U=0,50,50,0
20,0,30,220
0,100,0,90
0,180,250,0;
ENDDATA
MIN=@SUM(LINK(I,J):C(I,J)*X(I,J)+@SUM(D(J):R(J)*Y(J)));
@FOR(S(I):@SUM(D(J):X(I,J)*A(I,J))<=SI(I));
@FOR(D(J):@SUM(S(I):X(I,J)*A(I,J))+W(J)=DJ(J));
@FOR(LINK(I,J):X(I,J)<=U(I,J));
没语法错误了