拉格朗日乘子法、对偶、KTT

本文介绍了拉格朗日乘子法解决约束优化问题,包括无约束、等式约束和混合约束情况。通过构造拉格朗日函数,求解偏导数为0的解,找到目标函数在约束条件下的极值点。对偶问题与原始问题的关系,以及KKT条件在保证强对偶性时的应用,为解决凸优化问题提供了理论基础。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

拉格朗日乘子法、对偶、KTT

一般情况下,最优化问题分为三类

一、 无约束条件下的最优化问题

这种最优化问题比较简单,直接求导为0就可以得到。

二、 等式约束下的最优化问题

即除了目标函数之外,还有一些约束条件。假设目标函数为 f ( x ) f(x) f(x),约束条件为 h k ( x ) h_k(x) hk(x),这里的 k k k用来表示有 k k k个约束条件。
m i n f ( x ) minf(x) minf(x)

s . t . h k ( x ) = 0 k = 1 , 2 , 3.. s.t. h_k(x) = 0 \quad k = 1,2,3.. s.t.hk(x)=0k=1,2,3..

求这样的最优化问题有两种方法:
一种是使用消元法来解,但是这种方法有的时候很难求解,甚至无解。
另一种方法便是使用拉格朗日乘子法,其求解步骤分为三步:

  • 构造拉格朗日函数
  • 求解变量的偏导方程
  • 代入目标函数

具体步骤如下:

  1. 首先构造一个拉格朗日函数,我们令
    F ( x , λ , l ) = f ( x ) + ∑ k = 1 l λ k h k ( x ) F(x,λ,l) = f(x) + \sum_{k=1}^lλ_kh_k(x) F(x,λ,l)=f(x)+k=1lλkhk(x)

其中 λ k \lambda_k λk是第k个约束条件系数,又叫拉格朗日乘子。注意这里的 F ( x , λ , l ) F(x,\lambda,l) F(x,λ,l)是对 x , λ , l x,\lambda,l x,λ,l三个变量的函数。

  1. 于是我们分别对 x , λ , l x,\lambda,l x,λ,l变量求偏导数为0的解,得出来的解代入目标函数便是函数在等式约束条件。

为什么这样求解得到的便是我们想要得到的约束极值呢?我们可以用图来直观的解释一下:
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-b9HKIdxz-1602603252995)(https://raw.githubusercontent.com/Sunwzh/image_repository/master/1552132449743.png)]
图中的圆圈表示目标函数与 , f ( x , y ) ,f(x,y) f(xy)投影在平面上的等值线,每个全圆圈上的值相等,黑丝的曲线表示约束条件 h ( x ) = 0 h(x)=0 h(x)=0的函数图像。等值线与曲线相交的点,便是满足约束的点,于是我们所需要的极值点只有等值线与黑线相切的地方取到。

  为什么只有相切的地方才可能是极值点,而相交的地方不是呢?假设相交的点是极值点的话,那么沿着 f ( x ) f(x) f(x)的曲线向两边走,一定还有其他的点和他相交,这就意味着 f ( x , y ) f(x,y) f(x,y)的值还能变大和变小(极值点的两侧是同时变大或者同时变小的),明显与我们的假设相悖,所以交点不是极值点。

  而对于切点来说,沿着 h ( x ) h(x) h(x)曲线两边走, f ( x , y ) f(x,y) f(x,y)的值只能同时变大或者同时变小,这就符合了极值点的定义。

  既然极值点在切点上,那么这两个函数在这一点的梯度应该在同一条直线上,方向可以相同或者相反(梯度的方向与等高线的切线是垂直,这个定理的相关推导可以自行百度)。

  所以,满足条件的极值点一定满足: ∇ f ( x , y ) = λ ∇ h ( x , y ) ∇f(x,y)=λ∇h(x,y) f(x,y)=λh(x,y)(其中λ可以取0,取0表示目标函数的极值点刚好也在这一点),于是我们只用和原方程 h ( x , y ) = 0 h(x,y)=0 h(x,y)=0联立,然后只要解出这个方程组,就可以得到最优解,当然,这个方程可能存在解不出来的情况.

  于是我们就可以把原来的优化问题写成 f ( x , y ) + λ h ( x , y ) f(x,y)+λh(x,y) f(x,y)+λh(x,y) 的形式,然后分别的对 x , y , λ x,y,λ x,y,λ求导,然后令偏导数为0就可以得到上面推来的式子了。这种方法就是拉格朗日乘子法。即:
∇ f ( x , y ) = ( ∂ f ∂ y , ∂ f ∂ x ) ∇f(x,y)=(\frac{\partial{f}}{\partial{y}},\frac{\partial{f}}{\partial{x}}) f(x,y)=(yf,xf)

λ ∇ h ( x , y ) = ( λ ∂ h ∂ y , λ ∂ h ∂ x ) λ∇h(x,y)=(λ\frac{\partial{h}}{\partial{y}},λ\frac{\partial{h}}{\partial{x}}) λh(x,y)=(λyh,λxh)

由于 ∇ f ( x , y ) = λ ∇ h ( x , y ) ∇f(x,y)=λ∇h(x,y) f(x,y)=λh(x,y),则
∂ f ∂ y = λ ∂ h ∂ y \frac{\partial{f}}{\partial{y}}=λ\frac{\partial{h}}{\partial{y}} yf=λyh

∂ f ∂ x = λ ∂ h ∂ x \frac{\partial{f}}{\partial{x}}=λ\frac{\partial{h}}{\partial{x}} xf=λxh

f ( x , y ) + λ h ( x , y ) f(x,y)+λh(x,y) f(x,y)+λh(x,y),分别对 x , y , λ x,y,λ x,y,λ求偏导:

对x求偏导:
∂ f ∂ x + λ ∂ h ∂ x + h ( x , y ) = 0 \frac{\partial{f}}{\partial{x}} + λ\frac{\partial{h}}{\partial{x}} + h(x,y)=0 xf+λxh+h(x,y)=0
对y求偏导:
∂ f ∂ y + λ ∂ h ∂ y + h ( x , y ) = 0 \frac{\partial{f}}{\partial{y}} + λ\frac{\partial{h}}{\partial{y}} + h(x,y)=0 yf+λyh+h(x,y)=0
对λ求偏导:
h ( x , y ) = 0 h(x,y)=0 h(x,y)=0
根据这三个式子化简后,可以看到公式 f ( x , y ) + λ h ( x , y ) f(x,y)+λh(x,y) f(x,y)+λh(x,y),分别对 x , y , λ x,y,λ x,y,λ求偏导和 ∇ f ( x , y ) = λ ∇ h ( x , y ) ∇f(x,y)=λ∇h(x,y) f(x,y)=λh(x

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值