转运问题
所谓转运问题实质上是运输问题的一种,其区别就
在于不是将工厂生产出的产品直接送到客户手中,
而是要经过某些中间环节,如仓库、配送中心等。
图 2 工厂、3 仓库、4 顾客的转运问题
B4
B3
B2
顾客
B1
M3
M2
M1
A2
A1
工厂 仓库
问题描述
设有 个工厂、 个客户和 个仓库,
示第 个工
厂的产量, 表示第k个顾客的需求量, 表示第i个
工厂到第
m n l ia i
kb
1
ijc
j个仓库的运费单价, 表示第2jkc j个仓库到
第 个顾客的运费单价,k 1ijx 表示第i个工厂到第 j个仓
库的运输量, 2jkx 表示第 j个仓库到第 个顾客的运输
量,求总运费最小的运输
以及总运费。
k
数学表达式
1 1 2 2
1 1 1 1
1
1
1 2
1 1
2
1
1 2
min
. . ( 1,2, , )
( 1,2, , )
( 1,2, , )
0, 0
( 1,2, , ; 1,2, , ; 1,2, , )
m l l n
ij ij ij ij
i j j k
l
ij i
j
m n
ij jk
i k
l
ij k
j
ij jk
c x c x
s t x a i m
x x j l
x b k n
x x
i m j l k
n
例
设有两个工厂A, B, 产量分别为 9, 8个单位. 四个顾
客 1, 2, 3, 4, 需求量分别为 3, 5,4, 5. 和三个仓库 x, y,
z. 其中工厂到仓库、仓库到顾客的运费单价分别由
下表所示.试求总运费最少的运输方案以及总运费.
A B 1 2 3 4
x 1 3 5 7 - -
y 2 1 9 6 7 -
z - 2 - 6 7 4
LINGO 求解程序
model:
sets:
supply/A, B/: a;
middle/x, y, z/;
demand/1..4/:b;
LinkI (supply, middle): c1, x1;
LinkII (middle,demand): c2, x2;
endsets
data:
a = 9, 8;
b = 3, 5, 4, 5;
c1 = 1, 2, 100,
3, 1, 2;
c2 = 5, 7, 100, 100,
9, 6, 7, 100,
100, 8, 7, 4;
enddata
min = @sum(LinkI: c1 * x1) + @sum(LinkII: c2 * x2);
@for(supply(i):
@sum( middle(j): x1(i,j)) <= a(i));
@for( middle(j):
@sum(supply(i): x1(i,j))=@sum(demand(k):
x2(j,k)));
@for( demand(k):
@sum( middle(j): x2(j,k)) = b(k));
end
结果