"LINGO 软件在运输问题解决中的应用"
一、实验目的
本实验的目的是使用 LINGO 软件来解决运输问题,掌握使用 LINGO 软件的步骤和方法,并对结果进行分析。
二、实验内容
本实验的内容是解决一个运输问题,已知某企业有三个分厂生产一种产品,其产量分别为 7、9、7 个单位,需运往四个门市部,各门市部需要量分别为 3、5、7、8 个单位。已知单位运价如下表所示:
| | A | B | C | D |
| --- | --- | --- | --- | --- |
| 甲 | 12 | 13 | 10 | 11 |
| 乙 | 10 | 12 | 14 | 10 |
| 丙 | 14 | 11 | 15 | 12 |
现在需要确定一个运输计划,使总运费最少。另外,还需要解决一个工作分配的问题,即在五个工人中确定四个人来分别完成四项工作中的一项工作。
三、模型建立
本实验的问题可以建立为一个数学模型,即:
max Z = ∑(ij × xij)
s.t. ∑xij ≤ ai, ∀i
∑xij ≥ bj, ∀j
xij ≥ 0, ∀i, j
其中,xij 代表从第 i 个产地运往第 j 个销地的数量,ai 代表第 i 个产地的产量,bj 代表第 j 个销地的销量,cij 代表从第 i 个产地运往第 j 个销地的单位产品运输费用。
四、模型求解
使用 LINGO 软件可以求解该数学模型,编写的程序如下:
```lingo
sets:
warehouses / wh1..wh3 / : capacity;
vendors / v1..v4 / : demand;
links(warehouses, vendors): cost, volume;
data:
capacity = [7, 9, 7];
demand = [3, 5, 7, 8];
cost = [
[12, 13, 10, 11],
[10, 12, 14, 10],
[14, 11, 15, 12]
];
min = @sum(links(I, J) : cost(I, J) * volume(I, J));
@for(vendors(J) :
@sum(warehouses(I) : volume(I, J)) = demand(J));
@for(warehouses(I) :
@sum(vendors(J) : volume(I, J)) <= capacity(I));
```
五、结论
通过使用 LINGO 软件,可以快速解决运输问题,并获得最优的运输计划。该实验可以帮助学生掌握使用 LINGO 软件的步骤和方法,并对结果进行分析。