KKT条件

KKT条件是解决最优化问题的时用到的一种方法。最优化问题通常是指对于给定的某一函数,求其在指定作用域上的全局最小值

  一般情况下,最优化问题会碰到一下三种情况:

(1)无约束条件

    这是最简单的情况,解决方法通常是函数对变量求导,令求导函数等于0的点可能是极值点。将结果带回原函数进行验证即可。

(2)等式约束条件

     设目标函数为f(x),约束条件为hk(x),形如下:

则解决方法是消元法或者拉格朗日法。消元法比较简单不在赘述,拉格朗日法这里在提一下,因为后面提到的KKT条件是对拉格朗日乘子法的一种泛化。

首先, 定义拉格朗日函数F(x),

     其中,λk是各个约束条件的待定系数。                                                          

 然后,解变量的偏导方程:

      ......,

如果有i个约束条件,就应该有i+1个方程。求出的方程组的解就可能是最优化值(高等数学中提到的极值),将结果带回原方程验证就可得到解。

     至于为什么这么做可以求解最优化?维基百科上给出了一个比较好的直观解释。

(3)不等式约束条件

设目标函数f(x),不等式约束为g(x),有的教程还会添加上等式约束条件h(x)。此时的约束优化问题描述如下:


      则我们定义不等式约束下的拉格朗日函数L,则L表达式为:


      其中f(x)是原目标函数,hj(x)是第j个等式约束条件,λj是对应的约束系数,gk是不等式约束,uk是对应的约束系数。

      此时若要求解上述优化问题,必须满足下述条件(也是我们的求解条件):


      这些求解条件就是KKT条件。(1)是对拉格朗日函数取极值时候带来的一个必要条件,(2)是拉格朗日系数约束(同等式情况),(3)是不等式约束情况,(4)是互补松弛条件,(5)、(6)是原约束条件。

      对于一般的任意问题而言,KKT条件是使一组解成为最优解的必要条件,当原问题是凸问题的时候,KKT条件也是充分条件。

       关于条件(3),后面一篇博客中给出的解释是:我们构造L(x,λ,u)函数,是希望L(x,λ,u)<=f(x)的(min表示求最小值)。在L(x,λ,u)表达式中第二项为0,若使得第三项小于等于0就必须使得系数u>=0,这也就是条件(3)。

       关于条件(4),直观的解释可以这么看:要求得L(x,λ,u)的最小值一定是三个公式项中取得最小值,此时第三项最小就是等于0值的时候。稍微正式一点的解释,是由松弛变量推导而来。

为方便表示,举个简单的例子:

现有如下不等式约束优化问题:


此时引入松弛变量可以将不等式约束变成等式约束。设a1和b1为两个松弛变量,则上述的不等式约束可写为:



则该问题的拉格朗日函数为:


根据拉格朗日乘子法,求解方程组:



同样 u2b1=0,来分析g2(x)起作用和不起作用约束。

于是推出条件:



KKT条件介绍完毕。









则该问题的拉格朗日函数为:


根据拉格朗日乘子法,求解方程组:



同样 u2b1=0,来分析g2(x)起作用和不起作用约束。

于是推出条件:



KKT条件介绍完毕。

  • 2
    点赞
  • 53
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值