运筹系列26:对偶问题和对偶单纯形法

1. 对偶问题简介

1.1 一般定义

考虑一般性优化问题: min ⁡ x ∣ c ( x ) ≥ 0 f ( x ) \min_{x|c(x)\ge 0} f(x) minxc(x)0f(x)
拉格朗日法可以将原问题变换为: min ⁡ x ∣ c ( x ) ≥ 0 max ⁡ λ ≥ 0 ( f ( x ) − λ c ( x ) ) \min_{x|c(x)\ge 0}\max_{\lambda\ge 0}(f(x)-\lambda c(x)) minxc(x)0maxλ0(f(x)λc(x))
将min和max做一个翻转,称做原问题的对偶问题
max ⁡ λ ≥ 0 min ⁡ x ∣ c ( x ) ≥ 0 ( f ( x ) − λ c ( x ) ) \max_{\lambda\ge 0}\min_{x|c(x)\ge 0}(f(x)-\lambda c(x)) maxλ0minxc(x)0(f(x)λc(x))
其中 λ \lambda λ称作对偶变量。

1.2 线性规划的对偶问题

原问题 min ⁡ z = c x \min z=cx minz=cx
s.t. A x ≥ b Ax\ge b Axb

我们按照上面的步骤,原问题等价于 min ⁡ x ∣ A x ≥ b max ⁡ y ≥ 0 ( c x − y ( A x − b ) ) \min_{x|Ax\ge b}\max_{y\ge 0}(cx-y (Ax-b)) minxAxbmaxy0(cxy(Axb)),翻转得到: max ⁡ y ≥ 0 min ⁡ x ∣ A x ≥ b ( c x − y ( A x − b ) ) \max_{y\ge 0}\min_{x|Ax\ge b}(cx-y (Ax-b)) maxy0minxAxb(cxy(Axb))
由KKT条件,我们有 c − y A = 0 c-yA=0 cyA=0,得到对偶问题:
max ⁡ b T y \max b^Ty maxbTy
s.t. A T y = c T A^Ty= c^T ATy=cT
y ≥ 0 y\ge 0 y0

下面是一个例子:
在这里插入图片描述
牢记对偶问题推导过程,快速写出对偶问题:左边的问题等价于
max ⁡ x min ⁡ y ( 4 x 1 . . . ) + y 1 ( 15 − 5 x 1 . . . ) + . . . + y 6 x 1 + . . . \max_x\min_y(4x_1...)+y_1(15-5x_1...)+...+y_6x_1+... maxxminy(4x1...)+y1(155x1...)+...+y6x1+...
等价于
min ⁡ y ≥ 0 max ⁡ x ( 15 y 1 + . . . ) + x 1 ( 4 − 5 y 1 . . . + y 6 ) + . . . \min_{y\ge0}\max_x(15y_1+...)+x_1(4-5y_1...+y_6)+... miny0maxx(15y1+...)+x1(45y1...+y6)+...
等价于
min ⁡ y 15 y 1 + . . . \min_y 15y_1+... miny15y1+...
s.t.
4 − 5 y 1 . . . + y 6 = 0 4-5y_1...+y_6=0 45y1...+y6=0,等价于 4 − 5 y 1 . . . ≤ 0 4-5y_1...\le0 45y1...0(这里是重点,注意 y 6 y_6 y6的符号)

y i ≥ 0 y_i\ge0 yi0

2. 对偶问题的性质

  1. 对称性:对偶问题的对偶问题是原问题
  2. 弱对偶定理:原问题(primal)和对偶问题(dual)的可行域记作 z p z_p zp z d z_d zd,若 x ∈ z p , y ∈ z d x\in z_p,y\in z_d xzp,yzd,则对于最小化问题,有 c T x ≤ b T y c^Tx\le b^T y cTxbTy。等号当且仅当 x , y x,y x,y都是各自问题的最优解时取得。
  3. 强对偶定理:若原问题有有限最优解,那么对偶问题也有有限最优解,且最优解相等。
  4. 互补松弛定理:若 x ∈ z p , y ∈ z d x\in z_p,y\in z_d xzp,yzd,则下面两者等价:(a) x , y x,y x,y都是各自问题的最优解;(b) y T ( A x − b ) = 0 y^T(Ax-b)=0 yT(Axb)=0并且 ( y T A − c T ) x = 0 (y^TA-c^T)x=0 (yTAcT)x=0

3. 对偶单纯形法

对偶单纯形法和单纯形法完全可以转置过来看待。直观来看,原问题是保持 b ≥ 0 b\ge 0 b0,pivoting使得 c ≥ 0 c\ge 0 c0;而对偶问题是保持 c ≥ 0 c\ge 0 c0,pivoting使得 b ≥ 0 b\ge 0 b0。由于原问题一般约束比变量少,所以对偶问题很容易给出初始可行解,不需要使用两阶段法。
对于MILP问题,商用求解器也默认使用对偶单纯形法求解其松弛线性规划问题。变量分支后,左右两个节点和父节点的差别在于多了一个约束条件,两个节点可以从父节点的最优解出发去求解,能很大程度提高求解速度。我们来推导一下:
假设原问题是:
min ⁡ c T x \min c^Tx mincTx
A x = b Ax=b Ax=b
x ≥ 0 x\ge 0 x0
x i ∈ Z , ∀ i ∈ I x_i\in Z,\forall i\in I xiZ,iI
假设父节点的基为 B B B,进行分支的变量为 x j = β j x_j=\beta_j xj=βj,先看左节点,添加的约束条件为:
x j + s = ⌊ β j ⌋ x_j+s = \lfloor \beta_j\rfloor xj+s=βj ( x B , s ) (x_B,s) (xB,s)构成了一组基变量,并且 s = ⌊ β j ⌋ − β j < 0 s = \lfloor \beta_j\rfloor-\beta_j<0 s=βjβj<0,这组基对于原问题是不可行的,但是对偶问题是可行的~因此可以用对偶单纯形法去求解分支问题。

我们来看一个例子做对比:
在这里插入图片描述
化为标准型:
在这里插入图片描述
没有直观的初始可行解,因此使用两阶段法,添加人工变量后进行求解;
对偶单纯形法则不需要使用两阶段法,由于对偶后 y y y变为无约束变量,因此很容易求得初始解为 y 1 = y 2 = 0 y_1=y_2=0 y1=y2=0。两者的对比如下:
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/kittyzc/article/details/90230924
今日推荐