基于线性规划的“最优传输问题”建模与求解示例
我们先从问题背景开始。最优传输问题(Optimal Transport, OT)是运筹学、概率论和计算机视觉等领域的一个重要问题。它研究的是:给定两个概率分布(比如两堆沙子),如何以最小的“搬运成本”将第一个分布变成第二个分布。这里的成本通常用每单位质量从一个位置移动到另一个位置的距离(或更一般地,任意成本)来衡量。
1. 问题描述
我们考虑一个离散形式的最优传输问题,也称为“Earth Mover‘s Distance”或“运输问题”。
假设有 \(m\) 个供应商(供应点),第 \(i\) 个供应商拥有 \(a_i>0\) 单位的某种商品(比如沙子)。
同时有 \(n\) 个消费者(需求点),第 \(j\) 个消费者需要 \(b_j>0\) 单位的该商品。
我们假设总供应等于总需求:\(\sum_{i=1}^{m} a_i = \sum_{j=1}^{n} b_j\)。
从供应商 \(i\) 运输一单位商品到消费者 \(j\) 的成本是 \(c_{ij} \geq 0\)。
我们的目标是找到一个运输计划(一个矩阵 \(X=[x_{ij}]_{m \times n}\)),使得:
- 所有供应商的商品都被运出(供应满足)。
- 所有消费者的需求都被满足(需求满足)。
- 总运输成本最小。
其中,\(x_{ij} \geq 0\) 表示从供应商 \(i\) 运往消费者 \(j\) 的商品数量。
2. 建立线性规划模型
这是一个典型的线性规划问题。我们可以将其形式化地写为:
目标函数(总成本最小化):
\[\min \sum_{i=1}^{m} \sum_{j=1}^{n} c_{ij} x_{ij} \]
约束条件:
- 供应约束:从每个供应商 \(i\) 运出的总量等于其供应量 \(a_i\)。
\[ \sum_{j=1}^{n} x_{ij} = a_i, \quad \forall i = 1, \dots, m \]
- 需求约束:运到每个消费者 \(j\) 的总量等于其需求量 \(b_j\)。
\[ \sum_{i=1}^{m} x_{ij} = b_j, \quad \forall j = 1, \dots, n \]
- 非负约束:运输量不能为负。
\[ x_{ij} \geq 0, \quad \forall i, j \]
3. 一个具体的数值例子
假设有2个供应商(\(m=2\))和3个消费者(\(n=3\))。
供应量:\(a_1 = 35, a_2 = 25\) 单位。
需求量:\(b_1 = 20, b_2 = 15, b_3 = 25\) 单位。总和为60,供需平衡。
单位运输成本矩阵 \(C = [c_{ij}]\) 如下(从供应商i到消费者j):
\[C = \begin{bmatrix} 8 & 4 & 6 \\ 5 & 7 & 3 \end{bmatrix} \]
例如,从供应商1运到消费者2的成本是4。
4. 求解过程:运用单纯形法思想循序渐进
第一步:列出完整的线性规划模型
决策变量:\(x_{11}, x_{12}, x_{13}, x_{21}, x_{22}, x_{23}\)。
目标函数:
\[\min Z = 8x_{11} + 4x_{12} + 6x_{13} + 5x_{21} + 7x_{22} + 3x_{23} \]
约束条件:
- \(x_{11} + x_{12} + x_{13} = 35\)
- \(x_{21} + x_{22} + x_{23} = 25\)
- \(x_{11} + x_{21} = 20\)
- \(x_{12} + x_{22} = 15\)
- \(x_{13} + x_{23} = 25\)
- 所有 \(x_{ij} \geq 0\)
第二步:观察与寻找初始可行解
这是一个平衡的运输问题,是线性规划的一种特殊结构。我们可以用更直观的“最小成本法”来找到一个较好的初始基本可行解,这本质上对应了单纯形法的第一阶段。
最小成本法步骤:
- 在所有未分配的格子(变量)中,找到单位成本 \(c_{ij}\) 最小的那个。这里,最小值是3,对应变量 \(x_{23}\)。
- 尽可能多地分配给它。供应方2有25单位,需求方3需要25单位。所以,令 \(x_{23} = 25\)。这样,供应商2的供应已满足(方程2:\(x_{21}+x_{22}+25=25 \Rightarrow x_{21}=x_{22}=0\)),消费者3的需求也满足(方程5:\(x_{13}+25=25 \Rightarrow x_{13}=0\))。将第2行和第3列从后续考虑中划去。
- 在剩余格子中(第1行和第1、2列),找最小成本。成本为 \(c_{11}=8, c_{12}=4\),最小是4,对应 \(x_{12}\)。
- 分配。供应商1还剩35单位,消费者2需要15单位。所以,令 \(x_{12} = 15\)。消费者2需求满足,划去第2列。供应商1剩余20单位。
- 只剩第1行和第1列。将供应商1剩余的20单位全部分配给消费者1。令 \(x_{11} = 20\)。
于是,我们得到初始基本可行解:
\[x_{11}=20, \quad x_{12}=15, \quad x_{13}=0, \quad x_{21}=0, \quad x_{22}=0, \quad x_{23}=25 \]
其他变量为0。
检查所有约束:
- 行1: 20+15+0=35 ✔
- 行2: 0+0+25=25 ✔
- 列1: 20+0=20 ✔
- 列2: 15+0=15 ✔
- 列3: 0+25=25 ✔
第三步:检验最优性(计算检验数)
在单纯形法中,我们需要计算非基变量的检验数(Reduced Cost)\(\bar{c}_{ij} = c_{ij} - u_i - v_j\),其中 \(u_i\) 和 \(v_j\) 是对偶变量(位势),可以通过基变量满足 \(c_{ij} = u_i + v_j\) 来求解。
当前基变量是 \(x_{11}, x_{12}, x_{23}\)。
- 令对偶变量 \(u_1 = 0\)(通常设定一个起始值)。
- 对于基变量 \(x_{11}\): \(c_{11}=8 = u_1 + v_1 \Rightarrow 0 + v_1 = 8 \Rightarrow v_1 = 8\)
- 对于基变量 \(x_{12}\): \(c_{12}=4 = u_1 + v_2 \Rightarrow 0 + v_2 = 4 \Rightarrow v_2 = 4\)
- 对于基变量 \(x_{23}\): \(c_{23}=3 = u_2 + v_3\)。我们还没有 \(u_2\) 和 \(v_3\)。我们需要另一个方程。实际上,由于我们划去了行和列,我们需要利用所有基变量。但这里我们只有三个方程,却有四个未知数(\(u_1, u_2, v_1, v_2, v_3\),但设了\(u_1=0\))。等等,我们有三行两列,应该有 \(m+n-1=2+3-1=4\) 个基变量。我们只列出了三个。这是因为在运输问题中,当用最小成本法得到一个解时,它可能是一个“退化的”基本可行解(基变量个数少于 m+n-1)。我们需要引入一个“人工基变量”值为0来补足。这里,实际上 \(x_{13}=0\) 也是一个基变量(退化基变量)。所以基变量是 \(\{x_{11}, x_{12}, x_{13}, x_{23}\}\),其中 \(x_{13}=0\)。
重新计算位势:
- 设 \(u_1 = 0\)
- \(x_{11}\): \(8 = u_1 + v_1 \Rightarrow v_1 = 8\)
- \(x_{12}\): \(4 = u_1 + v_2 \Rightarrow v_2 = 4\)
- \(x_{13}\): \(6 = u_1 + v_3 \Rightarrow v_3 = 6\)
- \(x_{23}\): \(3 = u_2 + v_3 = u_2 + 6 \Rightarrow u_2 = -3\)
现在计算非基变量(\(x_{21}, x_{22}\))的检验数:
- \(\bar{c}_{21} = c_{21} - u_2 - v_1 = 5 - (-3) - 8 = 0\)
- \(\bar{c}_{22} = c_{22} - u_2 - v_2 = 7 - (-3) - 4 = 6\)
在最小化问题中,如果所有非基变量的检验数都 \(\geq 0\),则当前解最优。这里 \(\bar{c}_{21}=0 \geq 0\),\(\bar{c}_{22}=6 \geq 0\)。所以当前解已经是最优解之一(因为有一个非基变量的检验数为0,可能存在多个最优解)。
第四步:计算最优目标函数值
将最优解代入目标函数:
\[Z^* = 8(20) + 4(15) + 6(0) + 5(0) + 7(0) + 3(25) = 160 + 60 + 0 + 0 + 0 + 75 = 295 \]
5. 结果解释与扩展
我们得到了最优运输计划:
- 从供应商1运输20单位到消费者1,运输15单位到消费者2,不运到消费者3。
- 从供应商2运输25单位到消费者3,不运到消费者1和2。
总最小成本为295。
总结与要点:
- 建模核心:最优传输问题(离散形式)可以自然地建模为一个线性规划,其决策变量是运输量,目标是最小化总成本,约束是供应与需求的严格平衡。
- 求解特点:虽然可以用通用单纯形法求解,但其特殊的“网络流”结构使得“运输单纯形法”或“位势法”更高效,它通过在表格上操作来寻找改进回路和计算检验数。
- 对偶问题:该问题的对偶问题是 \(\max \sum_{i} a_i u_i + \sum_{j} b_j v_j\),约束为 \(u_i + v_j \leq c_{ij}\)。对偶变量 \(u_i\) 和 \(v_j\) 可以解释为供应商 \(i\) 和消费者 \(j\) 的“影子价格”。我们求解过程中计算的 \(u_i, v_j\) 正是对偶问题的一个可行解。
- 应用广泛:除了物流,最优传输问题在图像处理(比较颜色直方图)、统计学(比较概率分布)、机器学习(生成模型)等领域都有重要应用。其连续形式定义了概率分布间的“距离”(Wasserstein距离)。