1. 运输模型例子(Wireless widgets example)
Posted by haifeng on 2018-03-27 10:03:14 last update 2018-03-27 12:00:35 | Answers (0) | 收藏
假设 Wireless Widget 公司(简称 WW 公司)有六个仓库给八个供应商供货.
- 每个仓库有库存量限制, 也就是说存放的 widgets 不能超过一定的量.
- 每个供应商(vendor)有基本的widgets需求量, WW公司必须保证提供的.
WW 公司希望能确定每个仓库到每个供应商的供货数量, 以最小化总的运输费用.
以下数据是仓库的存储能力以及供应商的最低保证供货量, 以及每个widget的运输费用表:
Warehouse(仓库) | Widgets On Hand |
---|---|
1 | 60 |
2 | 55 |
3 | 51 |
4 | 43 |
5 | 41 |
6 | 52 |
Vendor | Widget Demand |
---|---|
1 | 35 |
2 | 37 |
3 | 22 |
4 | 32 |
5 | 41 |
6 | 32 |
7 | 43 |
8 | 38 |
V1 | V2 | V3 | V4 | V5 | V6 | V7 | V8 | |
---|---|---|---|---|---|---|---|---|
WH1 | 6 | 2 | 6 | 7 | 4 | 2 | 5 | 9 |
WH2 | 4 | 9 | 5 | 3 | 8 | 5 | 8 | 2 |
WH3 | 5 | 2 | 1 | 9 | 7 | 4 | 3 | 3 |
WH4 | 7 | 6 | 7 | 3 | 9 | 2 | 7 | 1 |
WH5 | 2 | 3 | 9 | 5 | 7 | 2 | 6 | 5 |
WH6 | 5 | 5 | 2 | 2 | 8 | 1 | 4 | 3 |
[Solution]
由于每个仓库可以将widgets运输给每个供应商, 因此总共有 $6\times 8=48$ 种可能的运输路径. 我们需要 48 个变量来分别表示这些运输路径上运输widgets的量.
建立模型的第一步是构建目标函数. 如上面提到的, WW公司希望能最小化运输成本. 我们记 VOLUME_I_J 为从仓库 I 到供应商 J 的运输widgets的数量. 于是, 如果我们要精确写出目标函数的话, 则我们需写成:
MIN = 6 * VOLUME_1_1 + 2 * VOLUME_1_2 +
6 * VOLUME_1_3 + 7 * VOLUME_1_4 +
4 * VOLUME_1_5 +
.
.
.
8 * VOLUME_6_5 + VOLUME_6_6 + 4 * VOLUME_6_7 +
3 * VOLUME_6_8;
我们看到, 输入如此长的公式, 显然是繁琐且容易出错的.
如果你熟悉数学符号, 可以将上面的冗长公式表示为紧凑的方式
\[
\mathrm{Minimize}\ \sum_{i,j}\mathrm{COST}_{i,j}\cdot\mathrm{VOLUME}_{i,j}
\]
类似的, LINGO 的模型语言允许你将目标函数表示为如下更为简短, 容易键入, 容易理解的形式:
MIN = @SUM( LINKS(I,J): COST(I,J) * VOLUME(I,J));
换句话说,
References:
LINGO 14 Online Users Manual. [A Sample Transportation Model]