1. 线性规划的对偶问题
1.1 对偶变量的含义与约束
- 原始问题的每个主约束都对应一个对偶变量,每个对偶变量表示其对应的主约束RHS系数每增加一个单位,原始问题最优值的变化量。因此对偶变量反映了原始问题对主约束参数的灵敏度。
在建立对偶问题时,需要给对偶变量添加范围约束。对偶变量的符号也就代表了最优值变化量的正负,例如对于最小化问题,“ ≤ \leq ≤”约束的RHS系数增大是放松约束,最优值会更小或不变,因此其对偶变量的约束为“ ≤ 0 \leq 0 ≤0”。每种情况下对偶变量 v i v_i vi的范围约束如下所示:
原始模型 | 约束方向是“ ≤ \leq ≤” | 约束方向是“ ≥ \geq ≥” | 约束方向是“ = = =” |
---|---|---|---|
放松 | 缩紧 | ||
最小化问题 | v i ≤ 0 v_i\leq 0 vi≤0 | v i ≥ 0 v_i\geq 0 vi≥0 | 无约束 |
最大化问题 | v i ≥ 0 v_i\geq 0 vi≥0 | v i ≤ 0 v_i\leq 0 vi≤0 | 无约束 |
- 紧约束条件下的对偶变量给出了原始模型中的资源边际价格或隐含价值。
解释:在最小化成本的问题中,提高需求约束“ ≥ \geq ≥”紧约束的RHS系数,对偶变量指示成本的增加量,即最后这一个单位需求的价格;提高供给约束“ ≤ \leq ≤”紧约束的RHS系数,对偶变量指示成本的减少量,即这最后一个单位供给量的隐含价值。
1.2 主对偶约束
对最小化线性规划问题,即目标为成本最小,中的每个非负变量 x j x_j xj,存在一个主对偶约束 ∑ i a i , j v i ≤ c j \sum_i a_{i,j}v_i\leq c_j ∑iai,jvi≤cj,限制一个活动的净边际收益小于等于既定成本;对于最大化问题的非负变量,主对偶约束 ∑ i a i , j v i ≥ c j \sum_i a_{i,j}v_i\geq c_j ∑iai,jvi≥cj,限制一个活动的净边际成本不小于既定利润。
其中, a i , j a_{i,j} ai,j是约束矩阵中的系数, c j c_j cj表示目标函数中变量 x j x_j xj的系数。
用对偶变量代表资源的边际价格这一关系来理解主对偶约束。
对于最大化问题,参考((5 封私信 / 3 条消息) 为什么我们要考虑线性规划的对偶问题? - 知乎 (zhihu.com))。
对于最小化问题的对偶问题的物理含义待补充。。。
1.3 对偶问题
基于上述对偶变量和主对偶约束的条件,最小化问题的原问题与对偶问题对应关系如下:
min
c
T
x
max
b
T
v
s
.
t
.
A
x
{
≤
≥
=
}
b
⇒
s
.
t
.
∑
i
a
i
j
v
i
{
≤
≥
=
}
c
j
x
j
{
≥
0
≤
0
无约束
}
v
{
≤
0
≥
0
无约束
}
\begin{align*} \min &\quad\mathbf{c}^T\mathbf{x}\qquad\qquad\qquad \max\quad\mathbf{b}^T\mathbf{v}\\ s.t. &\quad\mathbf{Ax}\left\{\begin{matrix} \leq \\ \geq \\ =\end{matrix}\right\}\mathbf{b}~\Rightarrow \quad s.t. \quad \sum_i a_{ij} {v_i}\left\{\begin{matrix} \leq \\ \geq \\ =\end{matrix}\right\} {c_j}\\ &\quad x_j\left\{\begin{matrix} \geq {0} \\ \leq {0} \\ 无约束\end{matrix}\right\} \qquad\qquad\mathbf{v}\left\{\begin{matrix} \leq \mathbf{0} \\ \geq \mathbf{0} \\ 无约束\end{matrix}\right\} \end{align*}
mins.t.cTxmaxbTvAx⎩
⎨
⎧≤≥=⎭
⎬
⎫b ⇒s.t.i∑aijvi⎩
⎨
⎧≤≥=⎭
⎬
⎫cjxj⎩
⎨
⎧≥0≤0无约束⎭
⎬
⎫v⎩
⎨
⎧≤0≥0无约束⎭
⎬
⎫
最小化问题中对偶变量的符号方向与其对应的约束方向相同,主对偶约束的符号与原问题变量的符号方向相反。
对应的,最大化问题的原问题与对偶问题的对应关系如下:
max
c
T
x
min
b
T
v
s
.
t
.
A
x
{
≤
≥
=
}
b
⇒
s
.
t
.
∑
i
a
i
j
v
i
{
≥
≤
=
}
c
j
x
j
{
≥
0
≤
0
无约束
}
v
{
≥
0
≤
0
无约束
}
\begin{align*} \max &\quad\mathbf{c}^T\mathbf{x}\qquad\qquad\qquad \min\quad\mathbf{b}^T\mathbf{v}\\ s.t. &\quad\mathbf{Ax}\left\{\begin{matrix} \leq \\ \geq \\ =\end{matrix}\right\}\mathbf{b}~\Rightarrow \quad s.t. \quad\sum_i a_{ij} {v_i}\left\{\begin{matrix} \geq \\ \leq \\ =\end{matrix}\right\} {c_j}\\ &\quad {x_j}\left\{\begin{matrix} \geq \mathbf{0} \\ \leq \mathbf{0} \\ 无约束\end{matrix}\right\} \qquad\qquad\qquad\qquad\mathbf{v}\left\{\begin{matrix} \geq \mathbf{0} \\ \leq \mathbf{0} \\ 无约束\end{matrix}\right\} \end{align*}
maxs.t.cTxminbTvAx⎩
⎨
⎧≤≥=⎭
⎬
⎫b ⇒s.t.i∑aijvi⎩
⎨
⎧≥≤=⎭
⎬
⎫cjxj⎩
⎨
⎧≥0≤0无约束⎭
⎬
⎫v⎩
⎨
⎧≥0≤0无约束⎭
⎬
⎫
最大化问题中对偶变量的符号方向与其对应的约束方向相反,主对偶约束的符号与原问题变量的符号方向相同。
- 弱对偶性:最小化问题的目标函数的值总是 ≥ \geq ≥其对偶问题的目标函数值,最大化问题反之,因此对偶问题给出了原始问题目标值的一个界;
- 强对偶性:在最优解处,原始问题与对偶问题的目标函数值相等;
- 若原始问题或对偶问题无界,那么其对应的对偶问题或原始问题必然无解。
1.4 互补松弛性与KKT条件
互补松弛:在最优解的情况下,非紧约束所对应的对偶变量为0.
考虑如下标准型:
min
c
T
x
max
b
T
v
s
.
t
.
A
x
=
b
⇒
s
.
t
.
A
T
v
≤
c
x
≥
0
v
无约束
\begin{align*} \min &\quad\mathbf{c}^T\mathbf{x}\qquad\qquad\max\quad\mathbf{b}^T\mathbf{v}\\ s.t. &\quad\mathbf{Ax}=\mathbf{b}~\Rightarrow \quad s.t. \quad \mathbf{A}^T\mathbf{v}\leq \mathbf{c}\\ &\quad \mathbf{x\geq 0} \qquad\qquad\qquad\mathbf{v}无约束 \end{align*}
mins.t.cTxmaxbTvAx=b ⇒s.t.ATv≤cx≥0v无约束
其KKT条件为:
原问题约束:
A
x
=
b
,
x
≥
0
对偶问题约束:
A
T
v
≤
c
互补松弛:
(
c
−
A
T
v
)
T
x
=
0
\begin{align*} 原问题约束:&\mathbf{Ax}=\mathbf{b}, \mathbf{x\geq 0}\\ 对偶问题约束:&\mathbf{A}^T\mathbf{v}\leq \mathbf{c}\\ 互补松弛:&(\mathbf{c}-\mathbf{A}^T\mathbf{v})^T\mathbf{x}=\mathbf{0} \end{align*}
原问题约束:对偶问题约束:互补松弛:Ax=b,x≥0ATv≤c(c−ATv)Tx=0
KKT条件是线性规划达到最优的充分必要条件。
1.5 原始单纯形法与KKT条件的关系
原始单纯形法是保持原始问题可行性和互补松弛性,寻找使得对偶问题可行的解。
解释:线性规划标准型可以根据基变量和非基变量分块,原问题和对偶问题如下:
min
(
c
B
)
T
x
B
+
(
c
N
)
T
x
N
max
b
T
v
s
.
t
.
B
x
B
+
N
x
N
=
b
⇒
s
.
t
.
B
T
v
≤
c
B
N
T
v
≤
c
N
x
B
≥
0
,
x
N
≥
0
v
无约束
\begin{align*} \min &\quad(\mathbf{c}^{B})^T\mathbf{x}^B+(\mathbf{c}^{N})^T\mathbf{x}^N\quad\max\quad\mathbf{b}^T\mathbf{v}\\ s.t. &\quad\mathbf{Bx}^B+\mathbf{Nx}^N=\mathbf{b}~\Rightarrow \quad s.t. \quad \mathbf{B}^T\mathbf{v}\leq \mathbf{c}^B\\ &\qquad\qquad\qquad\qquad\qquad\qquad\qquad \mathbf{N}^T\mathbf{v}\leq \mathbf{c}^N\\ &\quad \mathbf{x}^B\geq \mathbf{0}, \mathbf{x}^N\geq \mathbf{0} \qquad\qquad\qquad\mathbf{v}无约束 \end{align*}
mins.t.(cB)TxB+(cN)TxNmaxbTvBxB+NxN=b ⇒s.t.BTv≤cBNTv≤cNxB≥0,xN≥0v无约束
则KKT条件可以写成:
原问题约束:
B
x
B
+
N
x
N
=
b
,
x
B
≥
0
,
x
N
≥
0
对偶问题约束:
B
T
v
≤
c
B
,
N
T
v
≤
c
N
互补松弛:
(
c
B
−
B
T
v
)
T
x
B
=
0
(
c
N
−
N
T
v
)
T
x
N
=
0
\begin{align} 原问题约束:&\mathbf{Bx}^B+\mathbf{Nx}^N=\mathbf{b}, \\ &\mathbf{x}^B\geq \mathbf{0}, \mathbf{x}^N\geq \mathbf{0} \\ 对偶问题约束:&\mathbf{B}^T\mathbf{v}\leq \mathbf{c}^B, \\ &\mathbf{N}^T\mathbf{v}\leq \mathbf{c}^N\\ 互补松弛:&(\mathbf{c}^B-\mathbf{B}^T\mathbf{v})^T\mathbf{x}^B=\mathbf{0}\\ &(\mathbf{c}^N-\mathbf{N}^T\mathbf{v})^T\mathbf{x}^N=\mathbf{0} \end{align}
原问题约束:对偶问题约束:互补松弛:BxB+NxN=b,xB≥0,xN≥0BTv≤cB,NTv≤cN(cB−BTv)TxB=0(cN−NTv)TxN=0
首先回顾单纯形的求解过程。
- 在单纯形求解时,一个基本可行解中非基变量 x N = 0 \mathbf{x}^N=\mathbf{0} xN=0,根据原问题可行性(1)可得基变量的值为 x B = B − 1 b \mathbf{x}^B=\mathbf{B}^{-1}\mathbf{b} xB=B−1b,目标函数值为 ( c B ) T B − 1 b (\mathbf{c}^{B})^T\mathbf{B}^{-1}\mathbf{b} (cB)TB−1b。这里保证了原问题可行性不变。
- 接着计算单纯形方向。令一个非基变量 x j = 1 x_j=1 xj=1, a j a_j aj是其约束系数向量,有 a j + B Δ x B = 0 a_j+\mathbf{B}\Delta\mathbf{x}^B=0 aj+BΔxB=0,解出基变量的方向为 Δ x B = − B − 1 a j \Delta\mathbf{x}^B=-\mathbf{B}^{-1}a_j ΔxB=−B−1aj。
- 然后考察目标值的变化情况。 Δ f = c T Δ x = c j + ( c B ) T Δ x B = c j − ( c B ) T B − 1 a j \Delta f=\mathbf{c}^T\Delta\mathbf{x}=c_j+(\mathbf{c}^B)^T\Delta\mathbf{x}^B=c_j-(\mathbf{c}^B)^T\mathbf{B}^{-1}a_j Δf=cTΔx=cj+(cB)TΔxB=cj−(cB)TB−1aj。对于最小化(最大化)问题,要找到使得 Δ f < 0 ( Δ f > 0 ) \Delta f<0(\Delta f>0) Δf<0(Δf>0)的非基变量。换句话说,如果最小化(最大化)问题中对所有非基变量有 Δ f ≥ 0 ( Δ f ≤ 0 ) \Delta f\geq0(\Delta f\leq0) Δf≥0(Δf≤0),则说明目标值不能继续改进,已找到最优解。
上述求解过程中原问题可行性显而易见,现在我们考察对偶可行性和互补松弛性的体现。在互补松弛性中, x N = 0 \mathbf{x}^N=\mathbf{0} xN=0使得(6)自然满足,在(5)中,由于 x B ≠ 0 \mathbf{x}^B\neq\mathbf{0} xB=0,因此令 c B − B T v = 0 \mathbf{c}^B-\mathbf{B}^T\mathbf{v}=\mathbf{0} cB−BTv=0可得 v = ( B T ) − 1 c B \mathbf{v}= (\mathbf{B}^T)^{-1}\mathbf{c}^B v=(BT)−1cB,这时对偶可行性(3)自然满足。将其代入 Δ f \Delta f Δf可得 Δ f = c j − v T a j \Delta f=c_j-\mathbf{v}^Ta_j Δf=cj−vTaj,进行向量堆叠可以发现与对偶可行性约束的形式相同: c N − N T v \mathbf{c}^N-\mathbf{N}^T\mathbf{v} cN−NTv。因此原始单纯形考察目标函数的改进,实际上就是考察对偶可行性,因为如果当前基本解对偶可行,即最小化问题中满足 c N − N T v ≥ 0 \mathbf{c}^N-\mathbf{N}^T\mathbf{v}\geq\mathbf{0} cN−NTv≥0,那么说明达到最优解,否则还可以继续迭代!
上述推导过程中, v = ( B T ) − 1 c B \mathbf{v}= (\mathbf{B}^T)^{-1}\mathbf{c}^B v=(BT)−1cB称为系数矩阵 B \mathbf{B} B的对偶基本解。
2. 对偶单纯形法
基本思想:
- 从对偶可行解开始搜索并始终保持对偶可行;
- 每个对偶解都对应满足互补松弛性的原始基本解;
- 当检测到对偶无界或当前解原始可行时终止,前者说明原始问题无解,后者说明达到最优。
优势:1. 对偶变量往往少于原始变量,2. 在原问题标准形式下,对偶变量无符号约束。
迭代步骤:
- 初始化。将原始问题标准化并写出对偶问题,找到一组对偶可行基,写出基矩阵 B \mathbf{B} B和非基矩阵 N \mathbf{N} N,非基变量 x N = 0 \mathbf{x}^N=\mathbf{0} xN=0,通过原始可行性 B x B = b \mathbf{Bx}^B=\mathbf{b} BxB=b解出基变量 x B = B − 1 b \mathbf{x}^B=\mathbf{B}^{-1}\mathbf{b} xB=B−1b(注意这里不要求基变量满足原始问题可行性中的符号约束,也就是存在基变量 < 0 <0 <0),并根据互补松弛性得到对偶基本解 v = ( B T ) − 1 c B \mathbf{v}= (\mathbf{B}^T)^{-1}\mathbf{c}^B v=(BT)−1cB;
- 检验最优性。如果满足 x B ≥ 0 \mathbf{x}^B\geq\mathbf{0} xB≥0,说明原问题可行,达到最优解,此时 c T x = b T v \mathbf{c}^T\mathbf{x}=\mathbf{b}^T\mathbf{v} cTx=bTv。否则选择最小的 < 0 <0 <0的基变量 x r x_r xr出基,在列向量 x \mathbf{x} x中对应的行号是 r r r。
- 对偶单纯形变化方向。记
r
T
\mathbf{r}^T
rT为
B
−
1
\mathbf{B}^{-1}
B−1的第
r
r
r行,那么对偶变量的变化方向为
Δ
v
=
±
r
\Delta\mathbf{v}=\pm\mathbf{r}
Δv=±r(最大化原始问题为
+
+
+,最小化原始问题为
−
-
−)。
以最小化原始问题为例,对偶问题的目标值变化为 b T Δ v = − b T r = − r T b = − x r > 0 \mathbf{b}^T\Delta\mathbf{v}=-\mathbf{b}^T\mathbf{r}=-\mathbf{r}^T\mathbf{b}=-x_r>0 bTΔv=−bTr=−rTb=−xr>0,因此 − r -\mathbf{r} −r是对偶问题目标优化的方向。 - 步长大小。接着确定步长
β
\beta
β,新的对偶变量为
v
^
=
v
ˉ
+
β
Δ
v
\hat{\mathbf{v}}=\bar{\mathbf{v}}+\beta\Delta\mathbf{v}
v^=vˉ+βΔv。因为要保证对偶可行性,所以考察式(3)(4)。
同样以标准型为例,对(3), z ^ B = c B − B T v ^ = − β B T Δ v = β B T r \hat{\mathbf{z}}^B=\mathbf{c}^B-\mathbf{B}^T\hat{\mathbf{v}}=-\beta\mathbf{B}^T\Delta\mathbf{v}=\beta\mathbf{B}^T\mathbf{r} z^B=cB−BTv^=−βBTΔv=βBTr,根据 r T \mathbf{r}^T rT为 B − 1 \mathbf{B}^{-1} B−1的第 r r r行可知 z ^ B ≥ 0 \hat{\mathbf{z}}^B\geq \mathbf{0} z^B≥0,满足条件;
对(4), z ^ N = c N − N T v ^ = z ˉ N − β N T Δ v \hat{\mathbf{z}}^N=\mathbf{c}^N-\mathbf{N}^T\hat{\mathbf{v}}=\bar{\mathbf{z}}^N-\beta\mathbf{N}^T\Delta\mathbf{v} z^N=cN−NTv^=zˉN−βNTΔv,记 Δ c N = N T Δ v \Delta\mathbf{c}^N=\mathbf{N}^T\Delta\mathbf{v} ΔcN=NTΔv。
若 Δ c N ≤ 0 \Delta\mathbf{c}^N\leq \mathbf{0} ΔcN≤0,即 z ^ N ≥ 0 \hat{\mathbf{z}}^N\geq \mathbf{0} z^N≥0始终成立,那么无论 β \beta β怎么变化,对偶可行始终成立,也就是说对偶目标可以一直被优化,对偶变量无界,说明原问题无解;
若 Δ c N \Delta\mathbf{c}^N ΔcN有元素为正数,那么可以计算步长 β = min { z ˉ p N / ( − Δ c p N ) , Δ c p N > 0 } \beta=\min\{\bar{z}_p^N/(-\Delta {c}_p^N),\Delta {c}_p^N>0\} β=min{zˉpN/(−ΔcpN),ΔcpN>0}。 - 最后更新基变量和解。
参考文献
- 本文为运筹学(原书第2版)阅读笔记
- 对偶单纯形法的部分解释参考华为云博客