线性规划技巧: 如何写对偶问题

给定线性规划的原始问题, 本文介绍写如何方便地写出其对偶问题.

基本公式

我们先给出互为对偶问题的两种基本形式, 作为后续写对偶问题的基础.

1. 原问题的约束是不等式

2. 原问题的约束是等式

总结

  1. 原问题的一个约束对应一个对偶变量.
  2. 对偶变量乘以原问题约束的右端()得到对偶问题的目标.
  3. 原问题目标的系数对应对偶问题约束的右端.
  4. 最小化对应最大化(反之亦然).
  5. 如果原问题有等式约束, 对偶变量没有非负要求.

方法

1. 定义对偶变量

对原问题的每一个约束, 定义一个对偶变量. 如果一个约束是等式, 其对偶变量无非负限制.

2. 对偶变量乘约束

把对偶变量乘以原问题的约束. 约束右端即为对偶问题的目标.

3. 计算的系数

上一步把对偶变量乘以原问题的约束之后, 接着计算原问题约束中决策变量的系数, 从而得到对偶问题的约束 (假设原问题是最小化问题).

例子

1. 矩阵形式

原问题

定义对偶变量, , 分别对应原问题的约束和.

  • 用乘以, 然后求和得到对偶目标:
  • 用 乘以然后求和得到约束:
  • 对应等式约束, 因此不要求非负

对偶问题

2. 非矩阵形式

原问题

\begin{aligned} \min ~ & \sum_{i=1}^n \sum_{j=1}^n l_{i,j} x_{i,j} \\ \text{s.t. } & \sum_{j=1}^n x_{i,j} - \sum_{j=1}^n x_{j,i} = 0, \quad \forall i\neq 1, n \quad & \rightarrow \quad y_i \\ & \sum_{j=1}^n x_{1,j} - \sum_{j=1}^n x_{j,1} = 1 & \rightarrow \quad y_1 \\ & \sum_{j=1}^n x_{n,j} - \sum_{j=1}^n x_{j,n} = -1 & \rightarrow \quad y_n \\ & x_{i,j} \geq 0, \quad \forall i, j \end{aligned}

如上面所示, 我们定义对偶变量, . 原问题的约束是等式约束, 因此不要求非负. 用乘以每个等式, 得到对偶问题的目标: . 下面计算对偶问题的约束:

  1. 给定, 计算原问题约束中的 系数之和, 记作.
  2. 得到对偶问题的约束:

为了方便描述, 我们使用新的下标, 并计算的系数. 详细的计算过程如下:

  1. 第一组约束:
    . 注意.
  • 当时, 的系数是,
  • 当时, 的系数是,
  • 的系数之和是. 注意: .
  • 得到对偶问题的约束: ,
  1. 第二组和第三组约束:

  • 当时, 的系数之和为 (参考)
  • 当时, 的系数之和为 (参考)
  • 当, 时, 的系数之和为 (参考)
  • 当时, 的系数之和为 (参考)
  • 当时, 的系数之和为 (参考)
  • 当时, 的系数之和为 (参考)

综合上面所有对偶问题的约束, 我们得到:

对偶问题

练习

Ex1

原问题

\begin{aligned} \min ~ & \sum_{i=1}^m \sum_{j=1}^n c_{i,j} x_{i,j} + \sum_{i=1}^m f_i y_i \\ \text{ s.t. } & \sum_{i=1}^m x_{i, j} = 1,\quad \forall j & \rightarrow \quad \alpha_j \\ & x_{i, j} \leq y_i, \quad \forall i, j & \rightarrow \quad \beta_{ i, j} \\ & x_{i, j} \geq 0, y_i \geq 0, \quad \forall i, j \end{aligned}

对偶问题

\begin{aligned} \max ~ & \sum_{j=1}^n \alpha_j \\ \text{ s.t. } & \alpha_j - \beta_{i,j} \leq c_{i,j}, \quad \forall i,j \\ & \beta_{i, j} \leq f_i, \quad \forall i, j \\ & \beta_{i, j} \geq 0, \quad \forall i, j \end{aligned}

Ex2

原问题

对偶问题

你可能感兴趣的:(线性规划技巧: 如何写对偶问题)