1. 对偶问题简介
1.1 一般定义
考虑一般性优化问题:
min
x
∣
c
(
x
)
≥
0
f
(
x
)
\min_{x|c(x)\ge 0} f(x)
minx∣c(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))
minx∣c(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λ≥0minx∣c(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
Ax≥b
我们按照上面的步骤,原问题等价于
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))
minx∣Ax≥bmaxy≥0(cx−y(Ax−b)),翻转得到:
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))
maxy≥0minx∣Ax≥b(cx−y(Ax−b))
由KKT条件,我们有
c
−
y
A
=
0
c-yA=0
c−yA=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
y≥0
下面是一个例子:
牢记对偶问题推导过程,快速写出对偶问题:左边的问题等价于
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(15−5x1...)+...+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)+...
miny≥0maxx(15y1+...)+x1(4−5y1...+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
4−5y1...+y6=0,等价于
4
−
5
y
1
.
.
.
≤
0
4-5y_1...\le0
4−5y1...≤0(这里是重点,注意
y
6
y_6
y6的符号)
…
y
i
≥
0
y_i\ge0
yi≥0
对偶问题的形式多样,关键几点如下:
- 目标函数->约束rhs:max和min互换,c和b互换。注意max问题以rhs为准,min问题以lhs为准。
- 变量约束->约束符号:变量和约束的乘积要求>=0,比方上面的例子中,原问题变量约束>=0,对应对偶约束符号>=0;假若原问题变量无约束,对应对偶约束符号=0;
- 约束符号->变量约束:其实还是要求变量和约束的残差的乘积要求>=0,只不过因为目标函数是max问题,因此需要从约束rhs的角度来看的,所以约束符号也需要从rhs角度来看,所以在上面的例子中,原问题约束条件虽然时<=,但是从rhs的角度来看是>=,因此对应对偶变量>=0;假若原问题约束条件为=,从rhs角度看还是=,因此对应对偶变量无约束。
总结一下:
max
A
1
x
≤
b
1
,
A
2
x
=
b
2
,
x
≥
0
c
x
\max_{A_1x\le b_1,A_2x= b_2,x\ge 0}cx
maxA1x≤b1,A2x=b2,x≥0cx的对偶问题为
min
A
′
y
≥
c
,
y
1
≥
0
b
1
y
1
+
b
2
y
2
\min_{A'y\ge c,y_1\ge 0}b_1y_1+b_2y_2
minA′y≥c,y1≥0b1y1+b2y2
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 x∈zp,y∈zd,则对于最小化问题,有 c T x ≤ b T y c^Tx\le b^T y cTx≤bTy。等号当且仅当 x , y x,y x,y都是各自问题的最优解时取得。
- 强对偶定理:若原问题有有限最优解,那么对偶问题也有有限最优解,且最优解相等。
- 互补松弛定理:若 x ∈ z p , y ∈ z d x\in z_p,y\in z_d x∈zp,y∈zd,则下面两者等价:(a) x , y x,y x,y都是各自问题的最优解;(b) y T ( A x − b ) = 0 y^T(Ax-b)=0 yT(Ax−b)=0并且 ( y T A − c T ) x = 0 (y^TA-c^T)x=0 (yTA−cT)x=0
3. 对偶单纯形法
对偶单纯形法和单纯形法完全可以转置过来看待。直观来看,原问题是保持
b
≥
0
b\ge 0
b≥0,pivoting使得
c
≥
0
c\ge 0
c≥0;而对偶问题是保持
c
≥
0
c\ge 0
c≥0,pivoting使得
b
≥
0
b\ge 0
b≥0。由于原问题一般约束比变量少,所以对偶问题很容易给出初始可行解,不需要使用两阶段法。
对于MILP问题,商用求解器也默认使用对偶单纯形法求解其松弛线性规划问题。变量分支后,左右两个节点和父节点的差别在于多了一个约束条件,两个节点可以从父节点的最优解出发去求解,能很大程度提高求解速度。我们来推导一下:
假设原问题是:
min
c
T
x
\min c^Tx
mincTx
A
x
=
b
Ax=b
Ax=b
x
≥
0
x\ge 0
x≥0
x
i
∈
Z
,
∀
i
∈
I
x_i\in Z,\forall i\in I
xi∈Z,∀i∈I
假设父节点的基为
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。两者的对比如下: