有约束优化问题-拉格朗日乘子法

经典拉格朗日乘子法(约束条件为等式)

m i n x f ( x ) s.t.    g ( x ) = 0 \mathop{min}\limits_{x}f_{(\mathbf{x})}\text{\quad s.t.}\;g_{(\mathbf{x})}=0
此处 x \mathbf{x} 是一个向量。
如下图,以二元函数举例:
在这里插入图片描述由图可以看出,只需要使 f ( x , y ) = d f_{(x, y)}=d g ( x , y ) = 0 g_{(x, y)}=0 相切即可,也就是使这两条线的梯度方向(法线方向)共线。
即:
{ f ( x ) = λ g ( x ) g ( x ) = 0 \begin{cases} \bigtriangledown f_{(\mathbf{x})}=\lambda \bigtriangledown g_{(\mathbf{x})}\\ g_{(\mathbf{x})}=0 \end{cases}
这时引入拉格朗日函数:
L ( x , λ ) = f ( x ) λ g ( x ) L_{(\mathbf{x}, \lambda)}=f_{(\mathbf{x})}-\lambda g_{(\mathbf{x})}
可以发现,对拉格朗日函数求偏导可以得到以上方程组。

约束条件不为等式

m i n x f ( x ) s.t.    g ( x ) 0 \mathop{min}\limits_{x}f_{(\mathbf{x})}\text{\quad s.t.}\;g_{(\mathbf{x})}\leq0
在这里插入图片描述
与经典拉格朗日乘子法相同,最优点仍需要满足
f ( x , y ) = λ g ( x , y ) \bigtriangledown f_{(x^{*},y^{*})}=\lambda \bigtriangledown g_{(x^{*},y^{*})}
引入 K K T KKT 条件:
λ g ( x , y ) = 0 \lambda g_{(x^{*},y^{*})}=0
那么,如果 g ( x , y ) < 0 g_{(x^{*},y^{*})}<0 ,则 λ = 0 \lambda=0 。这说明,若 g ( x , y ) g_{(x^{*},y^{*})} 一定小于0,则这个约束条件并不起作用,故 λ = 0 \lambda=0
x \mathbf{x} 代替 ( x , y ) (x,y) ,并引入拉格朗日函数:
L ( x , λ ) = f ( x ) λ g ( x ) L_{(\mathbf{x}, \lambda)}=f_{(\mathbf{x})}-\lambda g_{(\mathbf{x})}
同样对 x \mathbf{x} 求偏导并令其为0得到 f ( x ) = λ g ( x ) \bigtriangledown f_{(\mathbf{x})}=\lambda \bigtriangledown g_{(\mathbf{x})} ,但不对 λ \lambda 求偏导,而是直接带入 K K T KKT 条件。得到:
{ f ( x ) = λ g ( x ) λ g ( x ) = 0 \begin{cases} \bigtriangledown f_{(\mathbf{x})}=\lambda \bigtriangledown g_{(\mathbf{x})}\\ \lambda g_{(\mathbf{x})}=0 \end{cases}
对于多约束条件的情况,即:

{ m i n x f ( x ) g i ( x ) 0 ( i = 1 , 2 , n ) \begin{cases} \mathop{min}\limits_{x}f_{(\mathbf{x})}\\ g_{i(\mathbf{x})}\geq0\quad (i=1,2……,n) \end{cases}
L ( x , λ 1 , λ 2 , λ n ) = f ( x ) i = 1 n λ i g i ( x ) L_{(\mathbf{x},\lambda_{1},\lambda_{2}……,\lambda_{n})}=f_{\mathbf{(x)}}-\sum_{i=1}^{n}{\lambda_{i}g_{i(x)}}
则需满足:
{ f ( x ) = i = 1 n λ i g i ( x ) λ i g i ( x ) = 0 ( K K T ) \begin{cases} \bigtriangledown f_{(\mathbf{x})}=\sum_{i=1}^{n}{\lambda_{i}\bigtriangledown g_{i(x)}}\\ \lambda_{i} g_{i(\mathbf{x})}=0\quad (KKT条件) \end{cases}
为保证两条相切直线梯度是相反的方向,需要满足 λ i 0 \lambda_{i}\geq0
例题:

在这里插入图片描述
求得
{ x 1 = 1 x 2 = 2 γ 1 = 1 γ 2 = 0 \begin{cases} x_{1}=1\\ x_{2}=2\\ \gamma_{1}=1\\ \gamma_{2}=0 \end{cases}
这说明第二个约束条件在此问题中不起作用,将 ( 1 , 2 ) (1,2) 带入两个约束条件知第一个约束条件正好取等号,而第二个约束条件是一定满足的。

发布了36 篇原创文章 · 获赞 1 · 访问量 569

猜你喜欢

转载自blog.csdn.net/qq_36758914/article/details/103324074