拉格朗日乘子法(lagrange multiplier)和kkt(karush-kuhn-tucker)條件是求解約束優化問題的重要方法,在有等式約束時使用拉格朗日乘子法,在有不等約束時使用kkt條件。前提是:只有當目標函式為凸函式時,使用這兩種方法才保證求得的是最優解。
對於無約束最優化問題,有很多經典的求解方法,參見無約束最優化方法。
先來看拉格朗日乘子法是什麼,再講為什麼。
minf(x
)s.t
.hi(
x)=0
i=1,
2...,n
這個問題轉換為mi
n[f(
x)+n
∑i=1
λihi
(x)]
其中λi≠0
,稱為拉格朗日乘子。
下面看一下wikipedia上是如何解釋拉格朗日乘子法的合理性的。
現有乙個二維的優化問題:
minf(x
,y)s
.t.g
(x,y
)=c
我們可以畫圖來輔助思考。
綠線標出的是約束g(x
,y)=
c的點的軌跡。藍線是f(x
,y)的等高線。箭頭表示斜率,和等高線的法線平行。
從圖上可以直觀地看到在最優解處,f和g的法線方向剛好相反(或者說叫梯度共線),即▽[
f(x,
y)+λ
(g(x
,y)−
c)]=
0λ≠0
而滿足3
的點同時又是4
的解。 mi
nf(x
,y)=
f(x,
y)+λ
(g(x
,y)−
c)
所以2和4
等價。新方程f(x
,y)在達到極值時與f(x
,y)相等,因為f(x
,y)達到極值時g(x
,y)−
c總等於零。
先看kkt條件是什麼,再講為什麼。le
tl(x
,μ)=
f(x)
+q∑k
=1μk
gk(x
) 其中μk≥0
,gk(
x)≤0
∵μk≥0gk
(x)≤
0}=>μg(
x)≤0
∴maxμl(
x,μ)
=f(x
) ∴
minxf(
x)=min
xmaxμl
(x,μ
) 上面的推導到此中斷一下,我們看另外乙個式子。
maxμ
minxl(
x,μ)
=maxμ[
minxf(
x)+minxμ
g(x)
]=maxμ
minxf(
x)+max
μminxμ
g(x)
=minxf
(x)+
maxμ
minxμg
(x)這裡的u
和g都就向量,所以去掉了下標k
。另外一些博友不明白上式中max
μminxf
(x)=
minxf(
x)是怎麼推出來的,其實很簡單,因為f(x
)與變數u
無關,所以這個等式就是成立的。 又∵
μk≥0
gk(x
)≤0}
=>minxμ
g(x)
==>min
xmaxμl
(x,μ
)=maxμ
minxl(
x,μ)
=minxf
(x)
我們把max
μminxl
(x,μ
)稱為原問題min
xmaxμl
(x,μ
)的對偶問題,上式表明當滿足一定條件時原問題、對偶的解、以及minxf
(x)是相同的,且在最優解x∗處μ
=0or
g(x∗
)=0。把x
∗代入(6)
得maxμl
(x∗,
μ)=f
(x∗)
,由(8)
得max
μminxl
(x,μ
)=f(
x∗),所以l(x
∗,μ)
=minxl
(x,μ
),這說明x
∗也是l(x
,μ)的極值點,即∂l(
x,μ)
∂x|x
=x∗=
0。最後總結一下:l(
x,μ)
=f(x
)+∑q
k=1μ
kgk(
x)μk
≥0gk
(x)≤
0}=>
=>{
minx
maxμl(
x,λ,
μ)=max
μminxl
(x,λ
,μ)=
minxf(
x)=f
(x∗)
μkgk
(x∗)
=0∂l
(x,λ
,μ)∂
x|x=
x∗=0
注:x,λ
,μ都是向量。∂l
(x,λ
,μ)∂
x|x=
x∗=0
表明f(x)
在極值點x
∗處的梯度是各個hi(
x∗)和g
k(x∗
)梯度的線性組合。
拉格朗日乘子法和KKT條件
深入理解拉格朗日乘子法 lagrange multiplier 和kkt條件 在求取有約束條件的優化問題時,拉格朗日乘子法 lagrange multiplier 和kkt 條件是非常重要的兩個求取方法,對於等式約束的優化問題,可以應用拉格朗日乘子法去求取最優值 如果含有不等式約束,可以應用 kkt...
拉格朗日乘子法和KKT條件
拉格朗日乘子法 lagrange multiplier 和kkt karush kuhn tucker 條件是求解約束優化問題的重要方法,在有等式約束時使用拉格朗日乘子法,在有不等約束時使用kkt條件。前提是 只有當目標函式為凸函式時,使用這兩種方法才保證求得的是最優解。對於無約束最優化問題,有很多...
拉格朗日乘子法和KKT條件
拉格朗日乘子法 lagrange multiplier 和kkt karush kuhn tucker 條件是求解約束優化問題的重要方法,在有等式約束時使用拉格朗日乘子法,在有不等約束時使用kkt條件。前提是 只有當目標函式為凸函式時,使用這兩種方法才保證求得的是最優解。對於無約束最優化問題,有很多...