有约束优化之拉格朗日乘子法求解

本文深入探讨了有约束优化问题中的拉格朗日乘子法,详细讲解了等式约束与不等式约束下的优化求解过程,通过构建拉格朗日函数,求解梯度方程组,实现最优化目标。

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

有约束优化之拉格朗日乘子法求解

本篇文章将详解带有约束条件的最优化问题,约束条件分为等式约束与不等式约束,对于等式约束的优化问题,可以直接应用拉格朗日乘子法去求取最优值;对于含有不等式约束的优化问题,可以转化为在满足 KKT 约束条件下应用拉格朗日乘子法求解。

拉格朗日求得的并不一定是最优解,只有在凸优化的情况下,才能保证得到的是最优解,所以本文称拉格朗日乘子法得到的为可行解,其实就是局部极小值。

等式约束

min⁡xf(x)\min\limits_x f(x)xminf(x)
s.t.  g(x)=0s.t. ~~g(x)=0s.t.  g(x)=0

拉格朗日乘子法思路:
首先假设解为x∗x_*x,则有:
1)g(x∗)=0g(x_*)=0g(x)=0,且g(x)=0g(x)=0g(x)=0在点x∗x_*x的法向量∇g(x∗)\nabla g(x_*)g(x)必然正交于该约束曲面。
2)f(x)f(x)f(x)在点x∗x_*x的梯度∇f(x∗)\nabla f(x_*)f(x)正交于该约束曲面。
则梯度向量同方向必有∇f(x∗)+λ∇g(x∗)=0\nabla f(x_*)+\lambda \nabla g(x_*)=0f(x)+λg(x)=0,且λ≠0\lambda\neq0λ̸=0
总的求解条件就是:
{∇f(x∗)+λ∇g(x∗)=0g(x∗)=0                             (1)λ≠0\left\{ \begin{array}{l} \nabla f(x_*)+\lambda \nabla g(x_*)=0 \\ g(x_*)=0~~~~~~~~~~~~~~~~~~~~~~~~~~~~~(1)\\ \lambda\neq0 \end{array}\right. f(x)+λg(x)=0g(x)=0                             (1)λ̸=0
如果构造拉格朗日函数:L(x,λ)=f(x)+λg(x)L(x,\lambda)=f(x)+\lambda g(x)L(x,λ)=f(x)+λg(x),则原等式约束问题等价于如下优化问题:
min⁡x,λL(x,λ)\min\limits_{x,\lambda}L(x,\lambda)x,λminL(x,λ)
s.t. λ≠0s.t.~\lambda\neq0s.t. λ̸=0
求解:
∂L∂x=0\frac{\partial L}{\partial x}=0xL=0
∂L∂λ=0\frac{\partial L}{\partial \lambda}=0λL=0
可到求解条件(1).

不等式约束

min⁡xf(x)\min\limits_x f(x)xminf(x)
s.t.  g(x)≤0s.t. ~~g(x)\leq0s.t.  g(x)0

拉格朗日乘子法思路:
首先假设解为x∗x_*x,则有:
1)如果解在约束边界上,即g(x∗)=0g(x_*)=0g(x)=0,则g(x)=0g(x)=0g(x)=0在点x∗x_*x的法向量∇g(x∗)\nabla g(x_*)g(x)必然正交于该约束曲面,且f(x)f(x)f(x)在点x∗x_*x的梯度∇f(x∗)\nabla f(x_*)f(x)正交于该约束曲面。且梯度方向相反,否则解将移动到约束边界内。所以有:
{g(x∗)=0∇f(x∗)+λ∇g(x∗)=0                   (2)λ>0\left\{ \begin{array}{l} g(x_*)=0\\ \nabla f(x_*)+\lambda \nabla g(x_*)=0 ~~~~~~~~~~~~~~~~~~~(2)\\ \lambda>0 \end{array}\right. g(x)=0f(x)+λg(x)=0                   (2)λ>0
2)如果解在约束边界内,即g(x∗)&lt;0g(x_*)&lt;0g(x)<0,则约束条件不起作用,有∇f(x∗)=0\nabla f(x_*)=0f(x)=0。所以有:
{g(x∗)&lt;0∇f(x∗)=0\left\{ \begin{array}{l} g(x_*)&lt;0\\ \nabla f(x_*)=0\\ \end{array}\right. {g(x)<0f(x)=0
或者(为了合并)
{g(x∗)&lt;0∇f(x∗)+λ∇g(x∗)=0                 (3)λ=0\left\{ \begin{array}{l} g(x_*)&lt;0\\ \nabla f(x_*)+\lambda \nabla g(x_*)=0 ~~~~~~~~~~~~~~~~~ (3)\\ \lambda=0 \end{array}\right. g(x)<0f(x)+λg(x)=0                 (3)λ=0
则合并(2)(3)总的求解条件(KKT)就是:
{g(x∗)≤0∇f(x∗)+λ∇g(x∗)=0                 (4)λ≥0λg(x∗)=0\left\{ \begin{array}{l} g(x_*)\leq0\\ \nabla f(x_*)+\lambda \nabla g(x_*)=0 ~~~~~~~~~~~~~~~~~ (4)\\ \lambda\geq0\\ \lambda g(x_*)=0 \end{array}\right. g(x)0f(x)+λg(x)=0                 (4)λ0λg(x)=0
如果构造拉格朗日函数:L(x,λ)=f(x)+λg(x)L(x,\lambda)=f(x)+\lambda g(x)L(x,λ)=f(x)+λg(x),则原不等式约束问题等价于如下优化问题:

min⁡x,λL(x,λ)s.t.  {g(x)≤0λ≥0λg(x)=0\min\limits_{x,\lambda}L(x,\lambda)\\ s.t. ~~\left\{ \begin{array}{l} g(x)\leq0\\ \lambda\geq0\\ \lambda g(x)=0 \end{array}\right. x,λminL(x,λ)s.t.  g(x)0λ0λg(x)=0
求解:
∂L∂x=0\frac{\partial L}{\partial x}=0xL=0
∂L∂λ=0\frac{\partial L}{\partial \lambda}=0λL=0
可到求解条件(4).

对于不等式约束,只要满足一定的条件,依然可以使用拉格朗日乘子法解决,这里的条件便是 KKT 条件

注意梯度,法向量,切线,导数区别。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值