等式约束最优化

可以写为:

拉格朗日函数优化

引入拉格朗日乘子(拉格朗日函数优化)把问题转换成拉格朗日函数


拉格朗日函数优化

因为对于任何可行解,有拉格朗日函数优化,所以有

拉格朗日函数优化,也就是,拉格朗日函数优化

 

求解。对拉格朗日函数优化分别求拉格朗日函数优化的偏导数为零,得到方程组求解极值点,然后从极值点挑出最值点。

 

拉格朗日函数优化

拉格朗日函数优化的偏导为零,使得目标函数和约束函数的法向量共线(梯度共线)。为什么梯度共线能求到极值?

 

拉格朗日函数优化

绿线标出的是约束拉格朗日函数优化的点的轨迹。蓝线是拉格朗日函数优化的等高线,箭头是各个点的梯度。

 

从图上可以看到,蓝线(拉格朗日函数优化)与绿线相交,意味着肯定还存在其它的等高线(拉格朗日函数优化)在该条等高线的内部或者外部,使得新的等高线与目标函数的交点的值更大或者更小。所以当取到极值时,蓝线与绿线相切,而切点的梯度共线。

不等式约束最优化

可以写为:

拉格朗日函数优化

引入拉格朗日乘子(拉格朗日函数优化),定义上述问题的拉格朗日量(Lagrangian)如下

拉格朗日函数优化

同时定义拉格朗日对偶函数(Lagrange dual function) 如下:

拉格朗日函数优化

一般情况下,拉格朗日函数优化是能取到最小值的,所以拉格朗日函数优化

求解。当强对偶性成立时,通过KKT条件求解极值点,然后从极值点挑出最值点。

 

 

拉格朗日函数优化

第一个条件使得目标函数和约束函数的法向量共线(梯度共线)。

 

 

最后一个条件称为互补松弛条件(Complementary Slackness Condition)。通过引入这个条件,增加了m个等式约束,使得等式的数量跟变量一样。


更一般地,我们把等式约束也加进来,优化问题可以写为:

 

拉格朗日函数优化

KKT条件为

拉格朗日函数优化

 

如果没有“不等式”约束条件,即 拉格朗日函数优化,KKT条件就是拉格朗日乘数法中极值点满足的方程组。所以KKT条件是拉格朗日乘数法的推广,拉格朗日乘数法是KKT条件的特例。

注意到:

  1. KKT条件是强对偶性的必要条件,强对偶性下KKT条件才成立
  2. 一般仅用KKT条件来验证找到的解
  3. 当目标函数和约束都是线性时,优化问题为我们熟悉的线性规划(LP)
  4. 在线性规划里,拉格朗日函数优化表示的是对应约束的影子价格

 

4,KKT与强对偶性

这里讨论只有不等式约束,并且强对偶性的情况

拉格朗日函数优化

由强对偶性,有拉格朗日函数优化,也就是,拉格朗日函数优化

 

原问题目标函数为拉格朗日函数优化,对应的对偶函数为拉格朗日函数优化

由强对偶性,我们有拉格朗日函数优化,也就是拉格朗日函数优化

为什么强对偶下可以得到KKT条件?

首先看梯度共线。

拉格朗日函数优化表示原问题取得最优值的解,也就是拉格朗日函数优化。由强对偶性,可得拉格朗日函数优化。也就是说,拉格朗日函数优化拉格朗日函数优化处取得极值,也就是,偏导数为零。

然后看互补松弛条件。

 

拉格朗日函数优化时,有拉格朗日函数优化

也就是,拉格朗日函数优化,也就是拉格朗日函数优化

5,拉格朗日函数与对偶性

对于不等式约束,

拉格朗日函数优化

一般的,由拉格朗日函数优化,有拉格朗日函数优化。所以拉格朗日函数优化

而根据拉格朗日对偶函数,有对偶问题为拉格朗日函数优化。由因为对偶问题是凸优化(Slater条件也满足),根据对偶问题的强对偶性,有拉格朗日函数优化

 

所以,有拉格朗日函数优化。这就是原问题的对偶性。

当原问题有强对偶性时,由拉格朗日函数优化,有拉格朗日函数优化

 

6,参考

无约束最优化方法 - Orisun - 博客园 

拉格朗日乘子法和KKT条件 - Orisun - 博客园
【整理】深入理解拉格朗日乘子法(Lagrange Multiplier) 和KKT条件
KKT conditions深入理解拉格朗日乘子法(Lagrange Multiplier) 和KKT条件优化问题中的对偶性理论

相关文章: