看了不少大佬的博客,对拉格朗日乘子法和kkt条件有一点点认识,记录一下
拉格朗日乘子法
数学上我们经常遇到很多地方求极值问题,在没有约束条件下,相对比较容易。但有约束条件下就不太好解决。
(1)无约束
m
i
n
f
(
x
)
minf(x)
minf(x)
(2)等式约束
m
i
n
f
(
x
)
minf(x)
minf(x)
s
.
t
.
g
(
x
)
=
=
0
s.t. g(x)==0
s.t.g(x)==0
此类问题,就可以直接应用拉格朗日乘子法,引入系数变量λ,构造新的函数
F
(
x
,
λ
)
=
f
(
x
)
+
∑
i
=
1
k
λ
i
g
i
(
x
)
F(x,λ)=f(x)+\sum_{i=1}^{k}λ_{i}g_{i}(x)
F(x,λ)=f(x)+i=1∑kλigi(x)
对各个系数求导,并且令导数为0,
∂
F
∂
x
=
f
′
(
x
)
+
∑
i
=
1
k
λ
i
g
i
′
(
x
)
=
0
\frac{\partial F}{\partial x}=f^{'} (x)+\sum_{i=1}^{k}λ_{i}g_{i}^{'}(x)=0
∂x∂F=f′(x)+i=1∑kλigi′(x)=0
∂
F
∂
λ
i
=
g
i
(
x
)
=
0
\frac{\partial F}{\partial \lambda_{i}}=g_{i}(x)=0
∂λi∂F=gi(x)=0
可以看到极值的时候要满足的条件是,gi(x)=0,原来的约束条件体现在这,并且F(x)取极值的时候与f(x)相等,F(x)的极值也等于f(x)的极值。因此拉格朗日乘子法可以将等式约束问题转成无约束问题。
看经典的图来直观解释一下,假设在三维坐标上,令z=f(x,y),我们要求z的极值,约束条件是g(x,y)=0,在xoy平面上,将函数f(x,y)的等高线投影到xoy平面上,交点满足约束条件,并且是f(x,y)的一个值,如果相交的话,一定存在更大或者更小的等高线,那么在相切的位置才可能取到极值。
(3) 不等式约束
m
i
n
f
(
x
)
minf(x)
minf(x)
s
.
t
.
g
(
x
)
=
=
0
,
h
(
x
)
<
=
0
s.t. g(x)==0,h(x)<=0
s.t.g(x)==0,h(x)<=0
构造函数
F
(
x
,
λ
)
=
f
(
x
)
+
∑
i
=
1
k
λ
i
g
i
(
x
)
+
∑
i
=
1
k
μ
i
h
i
(
x
)
F(x,λ)=f(x)+\sum_{i=1}^{k}λ_{i}g_{i}(x)+\sum_{i=1}^{k}\mu_{i}h_{i}(x)
F(x,λ)=f(x)+i=1∑kλigi(x)+i=1∑kμihi(x)
kkt条件:
- μ i h i ( x ) = 0 \mu_{i}h_{i}(x)=0 μihi(x)=0
- μ i > = 0 \mu_{i}>=0 μi>=0
- h i ( x ) < = 0 h_{i}(x)<=0 hi(x)<=0
- f ′ ( x ) + ∑ i = 1 k λ i g i ′ ( x ) + ∑ i = 1 k μ i h i ′ ( x ) = 0 f^{'} (x)+\sum_{i=1}^{k}λ_{i}g_{i}^{'}(x)+\sum_{i=1}^{k}\mu_{i}h_{i}^{'}(x)=0 f′(x)+i=1∑kλigi′(x)+i=1∑kμihi′(x)=0
要满足kkt条件,然后应用拉格朗日乘子法求解。
谈谈我对这些条件的认识:
前面已经讲到过在等式约束的时候,F取极值的时候一定也是f的极值,那么2,3条件可以得到
μ
i
g
i
(
x
)
<
=
0
\mu_{i}g_{i}(x)<=0
μigi(x)<=0
可以得到
m
a
x
F
(
x
)
=
f
(
x
)
,
只
有
μ
i
h
i
(
x
)
=
0
,
才
能
取
到
极
小
值
,
那
么
m
i
n
x
f
(
x
)
=
m
i
n
x
m
a
x
μ
,
λ
F
(
x
)
maxF(x)=f(x),只有\mu_{i}h_{i}(x)=0,才能取到极小值,那么min_{x}f(x)=min_{x} max_{\mu , \lambda}F(x)
maxF(x)=f(x),只有μihi(x)=0,才能取到极小值,那么minxf(x)=minxmaxμ,λF(x)
转
化
为
对
偶
问
题
,
m
i
n
x
f
(
x
)
=
m
a
x
μ
,
λ
m
i
n
x
F
(
x
)
,
假
设
x
0
处
取
得
极
小
值
.
转化为对偶问题,min_{x}f(x)=max_{\mu , \lambda} min_{x}F(x),假设x_{0}处取得极小值.
转化为对偶问题,minxf(x)=maxμ,λminxF(x),假设x0处取得极小值.
m
i
n
x
f
(
x
)
=
f
(
x
0
)
=
m
a
x
μ
,
λ
(
f
(
x
0
)
+
∑
i
=
1
k
λ
i
g
i
(
x
0
)
+
∑
i
=
1
k
μ
i
h
i
(
x
0
)
)
=
f
(
x
0
)
min_{x}f(x)=f(x_{0})=max_{\mu , \lambda} (f(x_{0})+\sum_{i=1}^{k}λ_{i}g_{i}(x_{0})+\sum_{i=1}^{k}\mu_{i}h_{i}(x_{0}))=f(x_{0})
minxf(x)=f(x0)=maxμ,λ(f(x0)+i=1∑kλigi(x0)+i=1∑kμihi(x0))=f(x0)
再来看条件1:
满足条件1的时候:
- μ i = 0 , 此 时 约 束 条 件 不 起 作 用 , 不 出 现 在 函 数 F 中 , 极 值 应 该 是 落 在 可 行 域 内 \mu_{i}=0,此时约束条件不起作用,不出现在函数F中,极值应该是落在可行域内 μi=0,此时约束条件不起作用,不出现在函数F中,极值应该是落在可行域内
- g i ( x ) = 0 , 此 时 约 束 条 件 起 作 用 , 极 值 应 该 是 落 在 g i ( x ) = 0 上 , 不 等 式 约 束 变 成 等 式 约 束 g_{i}(x)=0,此时约束条件起作用,极值应该是落在g_{i}(x)=0上,不等式约束变成等式约束 gi(x)=0,此时约束条件起作用,极值应该是落在gi(x)=0上,不等式约束变成等式约束
看图理解一下
如有错误请麻烦指正