用Octave计算运输问题
广告
{{v.name}}
运输问题是运筹学中线性规划的经典特例,核心解决单一物资从多个产地到多个销地的最优调运问题,目标是在满足产地产量约束和销地销量约束的前提下,使总运输费用最小(也可拓展为总利润最大)。
运输问题本质是最小费用流问题的简化版(源点为产地、汇点为销地,无中间节点),相比通用线性规划,其系数矩阵具有特殊结构,可通过表上作业法(手工计算)、匈牙利法(特殊场景)或软件编程(大规模问题)高效求解,无需求解复杂的线性规划方程组。
一、运输问题的核心要素与模型
1. 基本假设
- 单一物资调运,产地/销地的产量、销量、单位运费均为已知确定值;
- 运输费用与运输量成正比(线性费用);
- 物资运输无损耗,调运路径直达(无中间转运)。
2. 核心要素
设共有 \(m\) 个产地,编号为 \(A_1,A_2,...,A_m\),第 \(i\) 个产地的产量为 \(a_i\)(\(i=1,2,...,m\));
共有 \(n\) 个销地,编号为 \(B_1,B_2,...,B_n\),第 \(j\) 个销地的销量为 \(b_j\)(\(j=1,2,...,n\));
从产地 \(A_i\) 到销地 \(B_j\) 的单位运输费用为 \(c_{ij}\),调运量为 \(x_{ij}\)(决策变量)。
3. 数学模型
(1)平衡运输问题(最常用)
总供应量 = 总需求量,即 \(\sum_{i=1}^m a_i = \sum_{j=1}^n b_j\),模型为:
\( \begin{cases} \min Z = \sum_{i=1}^m \sum_{j=1}^n c_{ij} x_{ij} \quad \text{(目标:总运费最小)} \\ \sum_{j=1}^n x_{ij} = a_i \quad (i=1,2,...,m) \quad \text{(产地产量约束:调运量≤产量,平衡时等于)} \\ \sum_{i=1}^m x_{ij} = b_j \quad (j=1,2,...,n) \quad \text{(销地销量约束:调运量≥销量,平衡时等于)} \\ x_{ij} \ge 0 \quad \text{(非负约束)} \end{cases} \)
(2)不平衡运输问题
- 供过于求:\(\sum_{i=1}^m a_i > \sum_{j=1}^n b_j\),引入虚拟销地\(B_{n+1}\),销量为总供应量-总需求量,单位运费 \(c_{i,n+1}=0\)(未调运的物资就地储存,无运费),转化为平衡问题;
- 供不应求:\(\sum_{i=1}^m a_i < \sum_{j=1}^n b_j\),引入虚拟产地\(A_{m+1}\),产量为总需求量-总供应量,单位运费 \(c_{m+1,j}=0\)(未满足的销量无运费),转化为平衡问题。
4. 运输表(核心计算载体)
将所有要素整理为运输表,是表上作业法的基础,结构如下(行=产地,列=销地,单元格=单位运费\(c_{ij}\),右侧=产量\(a_i\),底部=销量\(b_j\)):
| 产地\销地 | \(B_1\)(\(b_1\)) | \(B_2\)(\(b_2\)) | ... | \(B_n\)(\(b_n\)) | 产量\(a_i\) |
|----------|-------------|-------------|-----|-------------|-----------|
| \(A_1\) | \(c_{11}\) | \(c_{12}\) | ... | \(c_{1n}\) | \(a_1\) |
| \(A_2\) | \(c_{21}\) | \(c_{22}\) | ... | \(c_{2n}\) | \(a_2\) |
| ... | ... | ... | ... | ... | ... |
| \(A_m\) | \(c_{m1}\) | \(c_{m2}\) | ... | \(c_{mn}\) | \(a_m\) |
| 销量\(b_j\) | \(b_1\) | \(b_2\) | ... | \(b_n\) | 总供需 |
友链