请教下大侠们lingo最优解的问题
MODEL:
TITLE 宾馆数目;
SETS:
ROOM/1..32/:price,c,double,x1,x2;
HOTEL/1..10/:chose;
LINKS(HOTEL,ROOM):e;
!HOTEL(ROOM,ROOM)/1,2,3,4 5,6,7,8 9,10,11 12,13 14,15,16 17,18,19,20 21,22,23 24,25,26 27,28,29,30 31,32/;
ENDSETS
DATA:
price=180 220 180 220 140 160 180 200 150 180 150 140 200 140 160 200 160 170 180 220 150 160 300 180 160 180 260 260 280 280 260 280;
c=50 30 30 20 50 35 30 35 50 24 27 50 45 35 35 40 40 40 30 30 50 40 30 40 40 45 30 30 30 30 55 45;
double=1,1,0,0,1,1,1,1,1,1,0,1,1,1,1,1,0,1,0,1,1,0,0,1,1,0,1,0,1,0,1,1;
e=1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
0,0,0,0,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
0,0,0,0,0,0,0,0,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
0,0,0,0,0,0,0,0,0,0,0,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,0,0,0,0,0,0,0,0,0
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,0,0,0,0,0,0
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,0,0
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1;
ENDDATA
MIN=@SUM(HOTEL:chose);
@FOR(LINKS:@BIN(e));
@FOR(ROOM:@GIN(x1);@GIN(x2));
@FOR(ROOM:c>=x1+x2*double);
@SUM(ROOM|price#GT#120 #and# price#LT#160:x1)>=146;
@SUM(ROOM|price#GT#161 #and# price#LT#200:x1)>=85;
@SUM(ROOM|price#GT#201 #and# price#LT#300:x1)>=53;
@SUM(ROOM|price#GT#120 #and# price#LT#160:x2*double*2)>=203;
@SUM(ROOM|price#GT#161 #and# price#LT#200:x2*double*2)>=133;
@SUM(ROOM|price#GT#201 #and# price#LT#300:x2*double*2)>=43;
@FOR(HOTEL(K):chose=@IF(@SUM(ROOM(I):e(K,I)*(x1(I)+double(I)*x2(I)))#GE#1,1,0));
hotelsum=@SUM(HOTEL:chose);
costall=@SUM(ROOM(i):((x1(i)+x2(i)*double(i))*price(i)));
END
为什么这个得到的结果反而比这个还差?
MODEL:
TITLE 宾馆数目;
SETS:
ROOM/1..32/:price,c,double,x1,x2;
HOTEL/1..10/:chose;
LINKS(HOTEL,ROOM):e;
!HOTEL(ROOM,ROOM)/1,2,3,4 5,6,7,8 9,10,11 12,13 14,15,16 17,18,19,20 21,22,23 24,25,26 27,28,29,30 31,32/;
ENDSETS
DATA:
price=180 220 180 220 140 160 180 200 150 180 150 140 200 140 160 200 160 170 180 220 150 160 300 180 160 180 260 260 280 280 260 280;
c=50 30 30 20 50 35 30 35 50 24 27 50 45 35 35 40 40 40 30 30 50 40 30 40 40 45 30 30 30 30 55 45;
double=1,1,0,0,1,1,1,1,1,1,0,1,1,1,1,1,0,1,0,1,1,0,0,1,1,0,1,0,1,0,1,1;
e=1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
0,0,0,0,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
0,0,0,0,0,0,0,0,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
0,0,0,0,0,0,0,0,0,0,0,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,0,0,0,0,0,0,0,0,0
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,0,0,0,0,0,0
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,0,0
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1;
ENDDATA
MIN=@SUM(ROOM(i):((x1(i)+x2(i)*double(i))*price(i)));
@FOR(LINKS:@BIN(e));
@FOR(ROOM:@GIN(x1);@GIN(x2));
@FOR(ROOM:c>=x1+x2*double);
@SUM(ROOM|price#GT#120 #and# price#LT#160:x1)>=146;
@SUM(ROOM|price#GT#161 #and# price#LT#200:x1)>=85;
@SUM(ROOM|price#GT#201 #and# price#LT#300:x1)>=53;
@SUM(ROOM|price#GT#120 #and# price#LT#160:x2*double*2)>=203;
@SUM(ROOM|price#GT#161 #and# price#LT#200:x2*double*2)>=133;
@SUM(ROOM|price#GT#201 #and# price#LT#300:x2*double*2)>=43;
@FOR(HOTEL(K):chose=@IF(@SUM(ROOM(I):e(K,I)*(x1(I)+double(I)*x2(I)))#GE#1,1,0));
hotelsum=@SUM(HOTEL:chose);
costall=@SUM(ROOM(i):((x1(i)+x2(i)*double(i))*price(i)));
END
这个Lingo代码 好长呀…………拷回去看看………… 最好是 把算法思想 顺便写一下,这样方便别人 充分理解代码…………
页:
[1]