由于在面试中有被问及QP的原理,所以重点来总结一波QP的原理。
二次规划问题(Quadratic Programming,QP)是一种非线性规划问题,它的目标函数为二次函数,约束条件和线性规划问题的约束条件一样,都是线性等式或线性不等式,即
min
1
2
x
⊤
G
x
+
h
⊤
x
s
.
t
.
a
i
⊤
x
⩽
b
i
,
i
∈
I
=
{
1
⋯
m
}
.
a
i
⊤
x
=
b
i
,
i
∈
ϵ
=
{
m
+
1
,
…
m
+
l
}
.
(1)
\tag{1}
一般二次规划问题可以分成以下几类:
二次规划应用广泛,常见的例如有:求最小二乘法,点到多面体的距离,模型预测控制的求解等。
下面我们分别介绍等式约束和不等式约束下的二次规划的求解。
等式约束的二次规划问题一般形式如下:
min
1
2
x
⊤
G
x
+
h
⊤
x
s
.
t
.
A
⊤
x
=
b
(2)
\tag{2}
其中
b
∈
R
m
,
A
∈
R
n
×
m
,
rank
(
A
)
=
m
,
n
>
m
b \in R^{m}, A \in R^{n \times m}, \operatorname{rank}(A)=m, n>m
b∈Rm,A∈Rn×m,rank(A)=m,n>m
变量消去法思路很简单,就是初中时候学过的消元法(当然,抽象之后还是挺高级的)。例如举个小栗子,假设要求解下面这个二次规划问题:
min
x
1
2
+
x
2
2
+
x
1
+
x
2
s.t.
x
1
+
x
2
=
1
消除一个变量
x
2
x_2
x2,这样就可以很简单的求解出来:
min
x
1
2
+
(
1
−
x
1
)
2
+
1
−
x
1
+
x
1
\min \mathrm{x}_{1}^{2}+\left(1-\mathrm{x}_{1}\right)^{2}+1-\mathrm{x}_{1}+ \mathrm{x}_{1}
minx12+(1−x1)2+1−x1+x1
当然我们还可以用拉格朗日法,推导出KKT条件(后面会讲):
min
x
1
2
+
x
2
2
+
x
1
+
x
2
+
λ
(
x
1
+
x
2
−
1
)
\min \mathrm{x}_{1}^{2}+\mathrm{x}_{2}^{2}+\mathrm{x}_{1}+\mathrm{x}_{2}+\lambda\left(\mathrm{x}_{1}+\mathrm{x}_{2}-1\right)
minx12+x22+x1+x2+λ(x1+x2−1)
应用变量消去法求解包括以下3个步骤:
具体来说:
将
A
A
A 分块,使其包含一个
m
×
m
m \times m
m×m 非奇异矩阵
A
B
,
x
,
h
A_{B} , x , h
AB,x,h 做对应的分块
x
=
(
x
B
x
N
)
,
A
=
(
A
B
A
N
)
,
G
=
(
G
B
B
G
B
N
G
N
B
G
N
N
)
,
h
=
(
h
B
h
N
)
(3)
\tag{3} x=\left(
所以等式约束
A
⊤
x
=
b
A^{\top}x=b
A⊤x=b就转化为:
(
A
B
A
N
)
⊤
(
x
B
x
N
)
=
b
(4)
\tag{4} \left(
将等式(4)写开得
A
B
x
B
+
A
N
x
N
=
b
(5)
\tag{5}
将基本变量用非基本变量表示出来
x
B
=
A
B
−
1
b
−
A
B
−
1
A
N
x
N
(6)
\tag{6} x_{B}=A_{B}^{-1}b-A_{B}^{-1}A_{N}x_{N}
xB=AB−1b−AB−1ANxN(6)
这样原变量就可以写成:
x
=
(
x
B
x
N
)
=
(
A
B
−
1
b
−
A
B
−
1
A
N
x
N
x
N
)
=
(
A
B
−
1
b
0
)
+
(
−
A
B
−
1
A
N
I
)
x
N
=
x
0
+
Z
x
N
(7)
\tag{7}
即写成了一个类似于
x
=
x
0
+
Z
x
N
x=x_0+Zx_{N}
x=x0+ZxN 的形式,这样我们将其代入目标函数,消去基本变量,把问题化为一个关于非基本变量的无约束最优化问题,最后求解无约束最优化问题的方法就能解出答案。
我们将
x
=
x
0
+
Z
x
N
x=x_0+Zx_{N}
x=x0+ZxN 带入到目标函数中得:
min
f
(
x
)
=
1
2
x
T
G
x
+
h
T
x
=
1
2
(
x
0
+
Z
x
N
)
T
G
(
x
0
+
Z
x
N
)
+
h
T
(
x
0
+
Z
x
N
)
(8)
\tag{8}
除了
x
N
x_N
xN,其他都是已知的常数项 ,由于常数项不影响优化结果,所以优化过程中省略常数项,得如下形式:
min
f
(
x
)
=
1
2
x
N
T
(
Z
T
G
Z
)
x
N
+
h
T
Z
x
N
(9)
\tag{9}
对其求导等于零:
(
Z
T
G
Z
)
x
N
+
h
T
Z
=
0
(10)
\tag{10} \left(Z^TGZ\right)x_N+h^TZ=0
(ZTGZ)xN+hTZ=0(10)
如果想要其有唯一最优解,也就必须要满足
Z
T
G
Z
Z^TGZ
ZTGZ 为正定。
等式约束二次规划的Lagrange函数为
L
(
x
,
λ
)
=
1
2
x
T
G
x
+
h
T
x
+
λ
(
A
T
x
−
b
)
(11)
\tag{11} L(x, \lambda)=\frac{1}{2} x^{T} G x+h^{T} x+\lambda\left(A^{T} x-b\right)
L(x,λ)=21xTGx+hTx+λ(ATx−b)(11)
其中
λ
\lambda
λ称为Lagrange乘数,正负皆有可能。Lagrange乘数法将原本的约束优化问题转换成等价的无约束优化问题
min
x
,
λ
L
(
x
,
λ
)
(12)
\tag{12} \min _{x, \lambda} L(x, \lambda)
x,λminL(x,λ)(12)
计算
L
L
L 对
x
x
x 与
λ
\lambda
λ 的偏导数并设为零,可得最优解的必要条件:
{
∂
L
∂
x
=
G
x
+
h
+
λ
A
=
0
——定常方程式
∂
L
∂
λ
=
A
T
x
−
b
=
0
——约束条件
(13)
\tag{13} \left\{
表示为方程组:
[
G
A
A
T
0
]
[
x
λ
]
=
[
−
h
b
]
(14)
\tag{14} \left[
这样将这个方程组求解之后就可以求得最优解。
根据等式(10)和(14)的维度关系,变量消去法其实是转化成了一个 n − m n-m n−m维的问题,也就是说求解 n − m n-m n−m个方程组就能解决这个问题。而 Lagrange法是将其转化成一个 n + m n+m n+m维的问题,即 n n n个变量, m m m个乘子。
如果建模建出来的问题就只需要求解一次等式二次规划问题,那么哪一个其实都可以求解,如果维数太大,建议用变量消去法。
变量消去法很直观,使用非基变量表示基变量,但是由于需要计算 A B A_B AB的逆,当 A B A_B AB接近奇异时会导致误差很大.
本节主要来自参考资料4.
先考虑只有不等式约束的一般形式:
min
f
(
x
)
s.t.
g
(
x
)
≤
0.
约束不等式
g
(
x
)
≤
0
g(\mathbf{x}) \leq 0
g(x)≤0 称为原始可行性(primal feasibility),据此我们定义可行域(feasible region)
K = { x ∈ R n ∣ g ( x ) ≤ 0 } K=\{\mathbf{x} \in \mathbb{R}^{n} \mid g(\mathbf{x}) \leq 0\} K={x∈Rn∣g(x)≤0}
假设 x ⋆ \mathbf{x}^{\star} x⋆ 为满足约束条件的最佳解,分开两种情况讨论:
这两种情况的最佳解具有不同的必要条件。
- 内部解: 在约束条件无效的情形下, g ( x ) g(\mathbf{x}) g(x) 不起作用,约束优化问题退化为无约束优化问题, 因此驻点 x ⋆ \mathbf{x}^{\star} x⋆ 满足 ∇ f = 0 \nabla f=\mathbf{0} ∇f=0 且 λ = 0 \lambda=0 λ=0 。
- 边界解:在约束条件有效的情形下,约束不等式变成等式 g ( x ) = 0 g(\mathbf{x})=0 g(x)=0 ,这与前述Lagrange乘数法的情况相同。 我们可以证明驻点 x ⋆ \mathbf{x}^{\star} x⋆ 发生于 ∇ f ∈ span ∇ g \nabla f \in \operatorname{span}\nabla g ∇f∈span∇g (span是生成子空间),换句话说,存在 λ \lambda λ 使得 ∇ f = − λ ∇ g \nabla f=-\lambda \nabla g ∇f=−λ∇g ,但这里 λ \lambda λ 的正负号是有其意义的。因为我们希望最小化 f f f ,梯度 ∇ f \nabla f ∇f (函数 f f f 在点 x \mathbf{x} x 的最陡上升方向)应该指向可行域 K K K 的内部(因为你的最优解最小值是在边界取得的),但 ∇ g \nabla g ∇g 指向 K K K 的外部(即 g ( x ) > 0 g(\mathbf{x})>0 g(x)>0 的区域,因为你的约束是小于等于 0 ),因此 λ ≥ 0 \lambda \geq 0 λ≥0,称为对偶可行性(dual feasibility)。
因此,不论是内部解或边界解,
λ
g
(
x
)
=
0
\lambda g(\mathbf{x})=0
λg(x)=0 恒成立,称为互补松弛性(complementary slackness)。整合上述两种情况,最佳解的必要条件包括Lagrangian函数
L
(
x
,
λ
)
L(\mathbf{x}, \lambda)
L(x,λ) 的定常方程式、原始可行性、对偶可行性,以及互补松弛性:
{
∇
x
L
=
∇
f
+
λ
∇
g
=
0
g
(
x
)
≤
0
λ
≥
0
λ
g
(
x
)
=
0.
\left\{
这些条件合称为Karush-Kuhn-Tucker (KKT)条件。如果我们要最大化
f
(
x
)
f(\mathbf{x})
f(x) 且受限于
g
(
x
)
≤
0
g(\mathbf{x}) \leq 0
g(x)≤0 ,那么对偶可行性要改成
λ
≤
0
\lambda \leq 0
λ≤0 。
考虑标准约束优化问题(或称非线性规划):
min
f
(
x
)
s.t.
g
j
(
x
)
=
0
,
j
=
1
,
…
,
m
,
h
k
(
x
)
≤
0
,
k
=
1
,
…
,
p
.
定义Lagrangian 函数
L
(
x
,
{
λ
j
}
,
{
μ
k
}
)
=
f
(
x
)
+
∑
j
=
1
m
λ
j
g
j
(
x
)
+
∑
k
=
1
p
μ
k
h
k
(
x
)
L\left(\mathbf{x},\left\{\lambda_{j}\right\},\left\{\mu_{k}\right\}\right)=f(\mathbf{x})+\sum_{j=1}^{m} \lambda_{j} g_{j}(\mathbf{x})+\sum_{k=1}^{p} \mu_{k} h_{k}(\mathbf{x})
L(x,{λj},{μk})=f(x)+j=1∑mλjgj(x)+k=1∑pμkhk(x)
其中
λ
j
\lambda_{j}
λj 是对应
g
j
(
x
)
=
0
g_{j}(\mathbf{x})=0
gj(x)=0 的Lagrange乘数,
μ
k
\mu_{k}
μk 是对应
h
k
(
x
)
≤
0
h_{k}(\mathbf{x}) \leq 0
hk(x)≤0 的Lagrange乘数(或称 KKT乘数)。KKT条件包括定常方程式、原始可行性、对偶可行性,以及互补松弛性,如下所示:
{
∇
x
L
=
0
g
j
(
x
)
=
0
,
j
=
1
,
…
,
m
,
h
k
(
x
)
≤
0
,
μ
k
≥
0
,
μ
k
h
k
(
x
)
=
0
,
k
=
1
,
…
,
p
.
\left\{
考虑这个问题
{
min
x
1
2
+
x
2
2
s.t.
x
1
+
x
2
=
1
x
2
≤
α
\left\{
其中
(
x
1
,
x
2
)
∈
R
2
,
α
\left(x_{1}, x_{2}\right) \in \mathbb{R}^{2}, \alpha
(x1,x2)∈R2,α 为实数。写出Lagrangigan函数
L
(
x
1
,
x
2
,
λ
,
μ
)
=
x
1
2
+
x
2
2
+
λ
(
1
−
x
1
−
x
2
)
+
μ
(
x
2
−
α
)
L\left(x_{1}, x_{2}, \lambda, \mu\right)=x_{1}^{2}+x_{2}^{2}+\lambda\left(1-x_{1}-x_{2}\right)+\mu\left(x_{2}-\alpha\right)
L(x1,x2,λ,μ)=x12+x22+λ(1−x1−x2)+μ(x2−α)
KKT 方程组如下:
{
∂
L
∂
x
i
=
0
,
i
=
1
,
2
x
1
+
x
2
=
1
x
2
−
α
≤
0
μ
≥
0
μ
(
x
2
−
α
)
=
0
\left\{
求偏导可得
{
∂
L
∂
x
1
=
2
x
1
−
λ
=
0
∂
L
∂
x
2
=
2
x
2
−
λ
+
μ
=
0
\left\{
分别解出
{
x
1
=
λ
2
x
2
=
λ
2
−
μ
2
\left\{
代入约束等式
x
1
+
x
2
=
λ
−
μ
2
=
1
x_{1}+x_{2}=\lambda-\frac{\mu}{2}=1
x1+x2=λ−2μ=1
合并上面结果,
{
x
1
=
μ
4
+
1
2
x
2
=
−
μ
4
+
1
2
\left\{
最后再加入约束不等式
−
μ
4
+
1
2
≤
α
-\frac{\mu}{4}+\frac{1}{2} \leq \alpha
−4μ+21≤α
即
μ
≥
2
−
4
α
\mu \geq 2-4 \alpha
μ≥2−4α
底下分开三种情况讨论。
分割线,下面待更新
内点法引入障碍函数将约束条件转化为目标函数,生成等价于原模型的优化问题。