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

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

基本公式

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

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

2. 原问题的约束是等式

总结

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

方法

1. 定义对偶变量

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

2. 对偶变量乘约束

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

3. 计算 x x 的系数

上一步把对偶变量乘以原问题的约束之后, 接着计算原问题约束中决策变量 x x 的系数 f ( y ) = A T y f(y) = A^Ty , 从而得到对偶问题的约束 f ( y ) c f(y) \leq c (假设原问题是最小化问题).

例子

#####1. 矩阵形式

原问题
min   c T x s.t.  A x b α B x = d β x 0 \begin{aligned} \min ~ & c^Tx \\ \text{s.t. } & Ax \geq b & \rightarrow \quad \alpha \\ & Bx = d & \quad \rightarrow \quad \beta \\ & x \geq 0 \end{aligned}

定义对偶变量 α \alpha , β \beta , 分别对应原问题的约束 A x b Ax\geq b B x = d Bx=d .

  • b T , d T b^T, d^T 乘以 α \alpha , β \beta 然后求和得到对偶目标: b T α + d T β b^T\alpha + d^T\beta
  • A T , B T A^T, B^T 乘以 α , β \alpha, \beta 然后求和得到约束: A T α + B T β c A^T \alpha + B^T\beta \leq c
  • β \beta 对应等式约束, 因此不要求非负

对偶问题
min   b T α + d T β s.t.  A T α + B T β c α 0 \begin{aligned} \min~& b^T \alpha + d^T \beta \\ \text{s.t. } & A^T \alpha + B^T \beta \leq c \\ & \alpha \geq 0 \end{aligned}

2. 非矩阵形式

原问题

min   i = 1 n j = 1 n l i , j x i , j s.t.  j = 1 n x i , j j = 1 n x j , i = 0 , i 1 , n y i j = 1 n x 1 , j j = 1 n x j , 1 = 1 y 1 j = 1 n x n , j j = 1 n x j , n = 1 y n x i , j 0 , i , j \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}

如上面所示, 我们定义对偶变量 y i y_i , i = 1 , 2 , . . . , n i=1, 2, ..., n . 原问题的约束是等式约束, 因此不要求 y i y_i 非负. 用 y i y_i 乘以每个等式, 得到对偶问题的目标: ( 1 , 0 , . . . , 0 , 1 ) y = y 1 y n (1, 0, ..., 0, -1) \cdot y = y_1 - y_n . 下面计算对偶问题的约束:

  1. 给定 i , j i,j , 计算原问题约束中 x i , j x_{i,j} 系数之和, 记作 f i j ( y ) f_{ij}(y) .
  2. 得到对偶问题的约束: f i j ( y ) l i j f_{ij}(y) \leq l_{ij}

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

  1. 第一组约束:
    ( a ) : j = 1 n y i x i , j j = 1 n y i x j , i = 0 (a): \sum_{j=1}^n y_i \cdot x_{i,j} - \sum_{j=1}^n y_ i \cdot x_{j,i} = 0 . 注意 i = 2 , 3 , . . . , n 1 i=2, 3, ..., n-1 .
  • i = s i=s 时, x s , j x_{s, j} 的系数是 y s y_s , j \forall j
  • i = t i=t 时, x j , t x_{j, t} 的系数是 y t -y_t , j \forall j
  • x s , t x_{s,t} 的系数之和是 y s y t y_s-y_t . 注意: s , t 1 , n s, t \neq 1, n .
  • 得到对偶问题的约束: x s , t l s , t x_{s, t} \leq l_{s,t} , s , t 1 , n \forall s, t \neq 1, n
  1. 第二组和第三组约束:
    ( b ) : j = 1 n y 1 x 1 , j j = 1 n y 1 x j , 1 = y 1 (b): \sum_{j=1}^n y_1 \cdot x_{1,j} - \sum_{j=1}^n y_1 \cdot x_{j,1} = y_1
    ( c ) : j = 1 n y n x n , j j = 1 n y n x j , n = y n (c): \sum_{j=1}^n y_n \cdot x_{n,j} - \sum_{j=1}^n y_n \cdot x_{j,n} = -y_n
  • s = 1 , t = n s=1, t=n 时, x 1 , n x_{1, n} 的系数之和为 y 1 y n y_1-y_n (参考 ( b ) , ( c ) (b), (c) )
  • s = 1 , t = 1 s=1, t=1 时, x 1 , 1 x_{1,1} 的系数之和为 y 1 y 1 = 0 y_1-y_1=0 (参考 ( b ) (b) )
  • s = 1 s=1 , t = 2 , . . . , n 1 t=2, ..., n-1 时, x 1 , t x_{1,t} 的系数之和为 y 1 y t y_1 - y_t (参考 ( b ) , ( a ) (b), (a) )
  • s = n , t = 1 s=n, t=1 时, x n , 1 x_{n, 1} 的系数之和为 y n y 1 y_n - y_1 (参考 ( b ) , ( c ) (b), (c) )
  • s = n , t = n s=n, t=n 时, x n , n x_{n, n} 的系数之和为 y n y n y_n - y_n (参考 ( c ) (c) )
  • s = n , t = 2 , . . . , n 1 s=n, t=2, ..., n-1 时, x n , t x_{n, t} 的系数之和为 y n y t y_n - y_t (参考 ( c ) , ( a ) (c), (a) )

综合上面所有对偶问题的约束, 我们得到:
y s y t l s , t , s , t = 1 , 2 , . . . , n . y_s - y_t \leq l_{s,t}, \quad \forall s, t = 1,2, ..., n.

对偶问题
max   y 1 y n s.t.  y i y j l i , j , i , j = 1 , 2 , . . . , n . \begin{aligned} \max ~ & y_1 - y_n \\ \text{s.t. } & y_i - y_j \leq l_{ i, j}, \quad \forall i, j = 1, 2, ... ,n. \end{aligned}

练习

Ex1

原问题

min   i = 1 m j = 1 n c i , j x i , j + i = 1 m f i y i  s.t.  i = 1 m x i , j = 1 , j α j x i , j y i , i , j β i , j x i , j 0 , y i 0 , i , j \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}

对偶问题

max   j = 1 n α j  s.t.  α j β i , j c i , j , i , j β i , j f i , i , j β i , j 0 , i , j \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

原问题
max   e E w e x e  s.t.  e v x e = 1 , v V y v x e 0 \begin{aligned} \max ~ & \sum_{e \in E} w_e x_e \\ \text{ s.t. } & \sum_{e\ni v} x_e = 1, \quad \forall v\in V \quad \rightarrow y_v \\ & x_e \geq 0 \end{aligned}

对偶问题

min   v V y v  s.t.  y u + y v w e , e E ,   e = ( u , v ) \begin{aligned} \min ~ & \sum_{ v \in V } y_v \\ \text{ s.t. } & y_u + y_v \geq w_e, \quad \forall e \in E, ~ e=(u,v) \end{aligned}

发布了21 篇原创文章 · 获赞 1 · 访问量 133

猜你喜欢

转载自blog.csdn.net/qx3501332/article/details/104978878