拉格朗日乘子法和KKT条件

求解最优化问题中,拉格朗日乘子法和KKT条件是两种最常用的方法。在有等式约束时使用拉格朗日乘子法,在有不等式约束时使用KKT条件。这个最优化问题指某一函数在作用域上的全局最小值(最小值与最大值可以相互转换)。

 

最优化问题通常有三种情况(这里说两种):

 

1. 无约束条件

求解办法是求导等于0得到极值点。将结果带回原函数验证。

 

2. 等式约束条件

设目标函数f(x),约束条件hk(x),

min f(x)  s.t.      hk(x)=0   (k = 1,2...l)

l表示有l个约束条件。

该类问题解决办法是消元法或拉格朗日法。消元法简单,这里讲拉格朗日法,后面提到的KKT条件是对拉格朗日乘子法的泛化。

 

例子:

椭球内接长方体的最大体积,即求 f(x,y,z) = 8xyz 的最大值。

方法1:消元法

根据条件消去z,然后带入函数转化为无条件极值问题。(有时这种方法麻烦,甚至解不出来)

方法2:拉格朗日乘法

思想:通过引入拉格朗日乘子将含有n个变量和k个约束条件的约束优化问题转化为含有(n+k)个变量的无约束优化问题。

首先定义拉格朗日函数F(x),f(x)为目标函数,h(x)为约束条件:

(λk是各个约束条件的待定系数)

对各个变量求偏导:

方程组的解就可能是最优化值,将结果带回原方程验证。

上面的函数,通过拉格朗日乘数法将问题转化为:

对 F(x,y,z,λ) 求偏导得到

联立前面3个方程得到 bx = ay 和 az = cx,带入第4个方程:

带入原函数得到最大体积:

 

为什么这么做是最优解?

举个例子:min f(x,y)  s.t.  g(x,y) = c 

画出 z = f(x,y)的等高线

绿线是约束g(x,y) = c的轨迹。蓝线是f(x,y)的等高线。箭头表示斜率,和等高线的发现平行。从梯度的方向看,d1>d2(梯度下降法越接近目标,步长越小,前进越慢)。

在没有约束条件,f(x,y)的最小值是落在最里面等高线内部的某一点。加上约束条件的 f(x,y) 最小值是 f(x,y)的等高线和约束线相切的位置,因为如果只是相交意味着还存在其它的等高线在该等高线的内部或外部,使新的等高线与目标函数的交点值更大或更小,只有等高线与目标函数的曲线相切时,取到最优值。

 

从图看出,想让目标函数 f(x,y) 的等高线和约束 g(x,y) 相切,则他们切点的梯度在一条直线上( f 和 g 斜率平行)。

即在最优解的时候:∇f(x,y)=λ(∇g(x,y)-C)  (∇为梯度算子,即:f(x)的梯度 = λ*g(x)的梯度,λ是非0常数)

即:[f(x,y)+λ(g(x,y)c)]=0  (λ≠0)

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值