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