MCM1988 问题B_lingo_装货问题
两辆平板车的装货问题有七种规格的包装箱要装到两辆铁路平板车上去包装箱的宽和高是一样的但厚度(t,以厘米计)及重量(,以公斤计)是不同的.下表给出了每种包装箱的厚度重量以及数量每辆平板车有10.2 米长的地方可用来装包装箱像面包片那样载重为40吨由于当地货运的限制对C5 ,C6 ,C7 类的包装箱的总数有一个特别的限制这类箱子所占的空间厚度不能超过302.7厘米试反包装箱见下表装到平板车上去使得浪费的空间最小.
t (厘米) 48.7 52.0 61.3 72.0 48.7 52.0 64.0
W(公斤) 2000 3000 1000 500 4000 2000 1000
件数 8 7 9 6 6 4 8
解:
假设表示在第j辆车上所装的i类货物的个数(i=1,2,…,7;j=1,2);
表示第i类货物的厚度(i=1,2,…,7);
表示第i类货物的质量(i=1,2,…,7);
表示第i类货物的数量(i=1,2,…,7);
则建立模型如下:
Lingo运行代码及结果:
model:
sets:
row/1..7/:t,w,n;
col/1..2/:cl;
matrix(row,col):x;
endsets
data:
t=48.7,52,61.3,72,48.7,52,64;
w=2000,3000,1000,500,4000,2000,1000;
n=8,7,9,6,6,4,8;
cl=1020,1020;
enddata
max=@sum(row(i):t(i)*(x(i,1)+x(i,2)));
@for(row(i):@sum(col(j):x(i,j))<=n(i));
@for(col(j):@sum(row(i):t(i)*x(i,j))<=cl(j));
@for(col(j):@sum(row(i):w(i)*x(i,j))<=40000);
@sum(row(i)|i#GE#5:t(i)*(x(i,1)+x(i,2)))<=302.7;
@for(row(i):@for(col(j):@gin(x(i,j))));
End
运行结果:
Global optimal solution found.
Objective value: 2039.400
Objective bound: 2039.400
Infeasibilities: 0.000000
Extended solver steps: 44712
Total solver iterations: 114375
Variable Value Reduced Cost
T( 1) 48.70000 0.000000
T( 2) 52.00000 0.000000
T( 3) 61.30000 0.000000
T( 4) 72.00000 0.000000
T( 5) 48.70000 0.000000
T( 6) 52.00000 0.000000
T( 7) 64.00000 0.000000
W( 1) 2000.000 0.000000
W( 2) 3000.000 0.000000
W( 3) 1000.000 0.000000
W( 4) 500.0000 0.000000
W( 5) 4000.000 0.000000
W( 6) 2000.000 0.000000
W( 7) 1000.000 0.000000
N( 1) 8.000000 0.000000
N( 2) 7.000000 0.000000
N( 3) 9.000000 0.000000
N( 4) 6.000000 0.000000
N( 5) 6.000000 0.000000
N( 6) 4.000000 0.000000
N( 7) 8.000000 0.000000
CL( 1) 1020.000 0.000000
CL( 2) 1020.000 0.000000
X( 1, 1) 5.000000 -48.70000
X( 1, 2) 3.000000 -48.70000
X( 2, 1) 0.000000 -52.00000
X( 2, 2) 7.000000 -52.00000
X( 3, 1) 9.000000 -61.30000
X( 3, 2) 0.000000 -61.30000
X( 4, 1) 1.000000 -72.00000
X( 4, 2) 5.000000 -72.00000
X( 5, 1) 1.000000 -48.70000
X( 5, 2) 2.000000 -48.70000
X( 6, 1) 2.000000 -52.00000
X( 6, 2) 1.000000 -52.00000
X( 7, 1) 0.000000 -64.00000
X( 7, 2) 0.000000 -64.00000
Row Slack or Surplus Dual Price
1 2039.400 1.000000
2 0.000000 0.000000
3 0.000000 0.000000
4 0.000000 0.000000
5 0.000000 0.000000
6 3.000000 0.000000
7 1.000000 0.000000
8 8.000000 0.000000
9 0.1000000 0.000000
10 0.5000000 0.000000
11 12500.00 0.000000
12 500.0000 0.000000
13 0.6000000 0.000000