赞
踩
m
i
n
f
(
x
)
=
1
2
x
T
H
x
+
c
T
x
minf(x)=\frac{1}{2}x^THx+c^Tx
minf(x)=21xTHx+cTx
s
.
t
.
B
x
≤
d
s.t. \qquad Bx\le d
s.t.Bx≤d
其中H为对称正定阵,x是要优化的变量。
二次型优化问题分为等式约束和不等式约束,核心思路是利用拉格朗日乘子把等式约束化为无条件约束极值问题,不等式约束问题化为等式约束问题
只考虑有等式约束的情况,那么原问题简化为:
m
i
n
f
(
x
)
=
1
2
x
T
H
x
+
c
T
x
minf(x)=\frac{1}{2}x^THx+c^Tx
minf(x)=21xTHx+cTx
s
.
t
.
B
x
=
d
s.t. \qquad Bx= d
s.t.Bx=d
引入拉格朗日乘子,得到拉格朗日函数:
L
(
x
,
λ
)
=
1
2
x
T
H
x
+
c
T
x
+
λ
T
(
B
x
−
d
)
L(x,\lambda )=\frac{1}{2}x^THx+c^Tx+\lambda^T(Bx-d)
L(x,λ)=21xTHx+cTx+λT(Bx−d)
拉格朗日函数是x和
λ
\lambda
λ的函数,分别对两个变量求偏导,这里涉及到矩阵求导的问题(注意一下)
H
x
+
c
+
B
T
λ
=
0
Hx+c+B^T\lambda=0
Hx+c+BTλ=0
B
x
−
d
=
0
Bx-d=0
Bx−d=0
在求解最优变量x过程中,因为对
λ
\lambda
λ求偏导时已经包含了等式约束,所以就将等式约束问题变成了含有两个参数
(
x
λ
)
(x \quad\lambda)
(xλ)的无条件极值问题。
(
x
λ
)
(x \quad\lambda)
(xλ)由方程求解:
[
H
B
T
B
0
]
[
x
λ
]
=
[
−
c
d
]
\left[
先引入一个概念:
有效集(active set),对于一个可行解,它必定满足所有约束,其中满足等式约束的称为有效约束,所有有效约束构成的集合称为有效集,记作 Ω ( x ) \Omega(x) Ω(x)。
可以简单理解成,能约束当前可行解的等式约束构成的集合。
例如:对于可行解x(0)=[2 0]T和约束条件:
−
x
1
+
2
x
2
≤
2
(
C
1
)
-x_1+2x_2\le2\quad(C1)
−x1+2x2≤2(C1)
x
1
+
2
x
2
≤
6
(
C
2
)
x_1+2x_2\le6\qquad(C2)
x1+2x2≤6(C2)
x
1
−
2
x
2
≤
2
(
C
3
)
x_1-2x_2\le2\qquad(C3)
x1−2x2≤2(C3)
−
x
2
≤
0
(
C
4
)
-x_2\le0\qquad\qquad(C4)
−x2≤0(C4)
其中C3和C4就是属于有效集,而C1和C2已经自动满足了,不属于有效集。
不等式约束问题通过求解有效集对应的等式约束问题来求解
m
i
n
f
(
x
)
=
1
2
x
T
H
x
+
c
T
x
minf(x)=\frac{1}{2}x^THx+c^Tx
minf(x)=21xTHx+cTx
s
.
t
.
b
i
x
=
d
i
,
i
∈
Ω
(
x
)
s.t. \qquad b_ix= d_i,i\in\Omega(x)
s.t.bix=di,i∈Ω(x)
可以进一步改进可行解 直到求出最优解。
现在从一个可行解
x
∗
x^*
x∗出发,该可行解对应的有效集为
Ω
∗
(
x
∗
)
\Omega^*(x^*)
Ω∗(x∗),即
b
i
x
∗
=
d
i
,
i
∈
Ω
∗
(
x
∗
)
b_ix^*=d_i,i\in\Omega^*(x^*)
bix∗=di,i∈Ω∗(x∗)
从当前可行解出发,增加一个增量,把
x
∗
x^*
x∗变成
x
∗
+
δ
x^*+\delta
x∗+δ,则构成等式约束:
m
i
n
f
(
x
∗
+
δ
)
=
1
2
(
x
∗
+
δ
)
T
H
(
x
∗
+
δ
)
+
c
T
(
x
∗
+
δ
)
minf(x^*+\delta)=\frac{1}{2}(x^*+\delta)^T H (x^*+\delta)+c^T(x^*+\delta)
minf(x∗+δ)=21(x∗+δ)TH(x∗+δ)+cT(x∗+δ)
s
.
t
.
b
i
δ
=
0
,
i
∈
Ω
∗
(
x
∗
)
s.t. \qquad b_i\delta= 0,i\in\Omega^*(x^*)
s.t.biδ=0,i∈Ω∗(x∗)
\qquad
(
x
∗
x^*
x∗与
x
∗
+
δ
x^*+\delta
x∗+δ约束之差)
x
∗
x^*
x∗是已知的可行解,上述问题可以改写成:
m
i
n
f
(
δ
)
=
1
2
δ
T
H
δ
+
(
x
∗
T
H
+
c
T
)
δ
minf(\delta)=\frac{1}{2}\delta^TH\delta+(x^{*T}H+c^T)\delta
minf(δ)=21δTHδ+(x∗TH+cT)δ
s
.
t
.
b
i
x
=
0
,
i
∈
Ω
(
x
)
s.t. \qquad b_ix= 0,i\in\Omega(x)
s.t.bix=0,i∈Ω(x)
这就简化成了等式约束问题,可以用拉格朗日方法求解最优解
δ
∗
\delta^*
δ∗、
λ
∗
\lambda^*
λ∗
按照下面的规则判断最优解和调整有效集
说明几点:
这个算法是基于element-by-element的搜索方法,不用对矩阵求逆。
1、
δ
\delta
δ用来判断是否达到最优解,如果
δ
\delta
δ等于零,说明在当前约束条件下无法再改进,对于x的增量已经到头了。如果
λ
\lambda
λ非负,那说明即使离开当前有效集,也无法再得到改进。而如果
λ
\lambda
λ小于零,说明当前的约束限制了改进,用通俗的话讲就是搜索的路线错了,如果换另一条搜索(有效集)还可以进一步优化。
2、如果
δ
\delta
δ不等于零,说明当前找到了一个可以改进的增量,若把这个增量加上形成新了的可行解,然后等式约束求解过程。(相当于做一次迭代)对应第3种情况。
3、如果这个增量加上以后,没有满足所有的约束条件,也就是不可行。那么说明这个迭代的结果(步长)过大,那适当减小步长,继续等式约束。对应第4种情况
4、思考题:为什么
λ
\lambda
λ的正负号可以用来判断是达到了最优解还是因为有效约束的限制无法继续改进。
主要来自 席裕庚《预测控制》
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。