关于一道求解n-center的问题
我刚刚开始接触linggo,下面代码是我写的一个求解n-center问题的代码。但是运行时,总说我end行错误,这是为什么呢?多谢指点!!MODEL:
!2-center Problem
SETS:
Marcket/ M1.. M12/:Wi, Hi, WDst, Dvy;
!Hi is the fixed operation cost at each marcket.
Wi is Cij* #of load, where Cij is unit cost per distance;
Center /C1.. C12/ ;
LINKS (Marcket, Center): Dist, Xij, Sij,Connection;
CloDist(Marcket,LINKS) : Dis21Cent ;
ENDSETS
DATA:
Hi = 200 210 220 300 310 260 150 180 220 305 160 270;
Wi = 2 3 1 5 4 3 4 5 8 2 1 4;
Dist = 0 15 7 54 45 28 18 37 44 38 27 50
15 0 8 55 46 13 19 38 45 39 28 51
7 8 0 47 38 21 11 30 37 31 20 43
54 55 47 0 9 68 36 17 24 38 27 30
45 46 38 9 0 59 27 8 15 29 18 21
28 13 21 68 59 0 32 51 58 52 41 64
18 19 11 36 27 32 0 19 26 20 9 33
37 38 30 17 8 51 19 0 7 21 10 13
44 45 37 24 15 58 26 7 0 28 17 20
38 39 31 28 29 52 20 21 28 0 11 34
27 28 20 27 18 41 9 10 17 11 0 23
50 51 43 30 21 64 33 13 20 34 23 0;
Connection = 0 0 1 0 0 0 0 0 0 0 0 0
0 0 1 0 0 1 0 0 0 0 0 0
1 1 0 0 0 0 1 0 0 0 0 0
0 0 0 0 1 0 0 0 0 0 0 0
0 0 0 1 0 0 0 1 0 0 0 0
0 1 0 0 0 0 0 0 0 0 0 0
0 0 1 0 0 0 0 0 0 0 1 0
0 0 0 0 1 0 0 0 1 0 1 1
0 0 0 0 0 0 0 1 0 0 0 0
0 0 0 0 0 0 0 0 0 0 1 0
0 0 0 0 0 0 1 1 0 1 0 0
0 0 0 0 0 0 0 1 0 0 0 0;
ENDDATA
!Sij<= Dist, Sij is the distance of the center from the lower vertix;
@FOR (LINKS (I,J):
Sij(I,J) <= Connection (I,J)*Dist (I,J));
!Xij is the arc that the center is located in. it can only happen in a arc belonging to connection;
@for (LINKS (I,J): Xij(I,J) <= Connection(I,J));
!we need 2 center;
@FOR( LINKS (I,J):
@SUM(LINKS(I,J): Xij )= 2);
@for (CloDist (K,I,J): Dis21Cent (K,I,J)=@if( Xij(I,J) #eq# 1,@smin(Dist(K,I)+Sij(I,J),Dist(K,J)+Dist(I,J)-Sij(I,J) ),99999999);
@for (Marcket (K): Dvy(K) = @min(CloDist(K,I,J): Dis21Cent(K,I,J)));
@for (Marcket(K): WDst(K)= Hi(K)+Wi(K)*Dvy(K));
MaxWDst = @Max (Marcket: WDst);
MaxWDst<=Z;
!Objective function;
MIN = Z;
!Xij, is binery, it has value 1 only when a center is located between i and j;
@FOR (LINKS: @bin (Xij));
END
页:
[1]