拉格朗日乘子法和KKT条件

拉格朗日乘子法

要解决的问题

拉格朗日乘子法要解决的就是有等式限制条件的凸优化问题。形式如下:

求解方式

例如:


令导数为0,得到:

拉格朗日乘子法和KKT条件_第1张图片

求解出x, y, z即为最优解,同时也会求出λ,但是没什么用。

直观理解

关于拉格朗日乘子法的直观理解网上已经有很多解释了,此处仅简要描述。如下图中的f和g,虚线为f的等高线,g限制条件,可以看出,f一定是在和g相切的地方取到最大(小)值,所以两者在此处的梯度方向相同,仅相差一个比例因子(即公式中的λ)。

注意g(x)=0是一条曲线,如果有多个限制条件则有多条曲线,此时将g(x)看做一个函数,则g(x)=0是g的一个等高线,函数与等高线垂直的方向一定是增加最快的方向,即梯度方向。f和g梯度方向一样,所以有:

然后再外加一个所求的点一定在曲线g上的方程(即F(x)对λ的导数为0),以上公式和拉格朗日乘子法得出的公式是等价的。

拉格朗日乘子法和KKT条件_第2张图片

理论证明

拉格朗日乘子法和KKT条件_第3张图片
证明来自于参考文献1

KKT条件

要解决的问题

拉格朗日乘子法仅适用于等式约束条件,那如果约束条件为不等式怎么办呢?
答: 当约束条件为不等式时候,结合KKT条件,依然可以用拉格朗日乘子法求解,实际上KKT条件可以把不等式约束转化为等式约束。即,KKT条件求解的问题的形式为:

求解方法

待续。。。

参考文献

  1. 拉格朗日乘子法理论证明

  2. https://www.cnblogs.com/mo-wang/p/4775548.html

你可能感兴趣的:(拉格朗日乘子法和KKT条件)