KKT

Posted by ZhengYang on 2016-08-02

Lagrange Multipilers

g(x)与f(x)的所有交点都是满足约束的可行解,但极大值点一定在切点处。
而切点处,f(x)和g(x)的梯度是共线

这也是构造L函数的原因。

KKT( Karush–Kuhn–Tucker conditions )

全部Lambda>=0,但构造函数L时,lambda前的符号需要注意。

g(x) f(x) L
g(x)>=0 f(x)极大 L=f(x)+lambda*g(x)
g(x)>=0 f(x)极小 L=f(x)-lambda*g(x)
g(x)<=0 f(x)极大 L=f(x)-lambda*g(x)
g(x)<=0 f(x)极小 L=f(x)+lambda*g(x)

约束g(x)>=0

现在求f(x)的极大值

  1. 当极大值在约束g(x)>0以内时,则约束条件g(x)>0是inactive的,此时,令lambda=0,直接求f(x)的极大值,便可求得f(x*)。
  2. 当极大值在约束g(x)>0以外时,不等式约束退化为等式约束,转化为Lagrange Multipilers。需要注意的是,此时,在相切处,g的梯度指向g(x)>0内,而f的梯度指向g(x)>0外,两个梯度反向,L构造中lambda前为正号,所以lambda>0。

所以约束为:

  • g(x)>=0
  • lambda>=0
  • lambda*g(x)=0

现在求f(x)的极小值

L函数中的负lambda是为了使lambda>=0。

  1. 当极小值在约束g(x)>0以内时,则约束条件g(x)>0是inactive的,此时,令lambda=0,直接求f(x)的极大值,便可求得f(x*)。
  2. 当极小值在约束g(x)>0以外时,不等式约束退化为等式约束,转化为Lagrange Multipilers。需要注意的是,此时,在相切处,g的梯度指向g(x)>0内,而f的梯度也指向g(x)>0内,两个梯度方向相同,L构造是lambda前有负号,所以lamda>0。

所以约束为:

  • g(x)>=0
  • lambda>=0
  • lambda*g(x)=0

约束g(x)<=0

现在求f(x)的极大值

L函数中的负lambda是为了使lambda>=0。

  1. 当极大值在约束g(x)<0以内时,则约束条件g(x)<0是inactive的,此时,令lambda=0,直接求f(x)的极大值,便可求得f(x*)。
  2. 当极大值在约束g(x)<0以外时,不等式约束退化为等式约束,转化为lagrange multipilers。需要注意的是,此时,在相切处,g的梯度指向g(x)<0外,而f的梯度也指向g(x)<0外,两个梯度同向,l构造是lambda前有负号,所以lambda="">0。

所以约束为:

  • G(x)<=0
  • Lambda>=0
  • Lambda*g(x)=0

现在求f(x)的极小值

  1. 当极小值在约束g(x)<0以内时,则约束条件g(x)<0是inactive的,此时,令lambda=0,直接求f(x)的极小值,便可求得f(x*)。
  2. 当极小值在约束g(x)<0以外时,不等式约束退化为等式约束,转化为lagrange multipilers。需要注意的是,此时,在相切处,g的梯度指向g(x)<0外,而f的梯度也指向g(x)="">0内,两个梯度方向相同,所以lamda>0。

所以约束为:

  • G(x)<=0
  • Lambda>=0
  • Lambda*g(x)=0