拉格朗日 & KKT条件

来源:互联网 发布:d3.js可视化 编辑:程序博客网 时间:2024/06/02 07:11

有什么用

拉格朗日乘子法(Lagrange Multiplier)和KKT(Karush-Kuhn-Tucker)条件是求解约束优化问题的重要方法,在有等式约束时使用拉格朗日乘子法,在有不等约束时使用KKT条件。(前提:只有当目标函数为凸函数时,使用这两种方法才保证求得的是最优解。)

拉格朗日乘子法

如上所述,拉格朗日乘子法可以将等式约束优化问题转换为无约束优化问题,即将问题:

minf(x)s.t. hi(x)=0, i=1,2,...n

转化为:

minf(x)+i=1nλihi(x)

其中,λi0,称为拉格朗日乘子。(关于为什么成立可以参考维基百科,或者这篇博文)

KKT条件

当遇到不等式约束的时候怎么办呢?这个时候就需要用到KKT条件,KKT条件是拉格朗日乘子法的泛化,使其可扩展到了不等式约束的优化问题的求解。他就是将问题:

minf(x)s.t. gk(x)0, k=1,2,...q

转化为一个极大极小问题:
L(x,u)=f(x)+k=1qukgk(x), uk0maxuminxL(x,u)

不明白为什么?没关系,下面先看两个证明(两个方向),

1、证明 minxf(x)=minxmaxuL(x,u)

因为,

uk0gk(x)0}ug(x)0

所以,
maxuL(x,u)=f(x)

于是,
minxf(x)=minxmaxuL(x,u)

2、证明 minxf(x)=maxuminxL(x,u)

maxuminxL(x,u)=maxu[minxf(x)+minxug(x)]=maxuminxf(x)+maxuminxug(x)=minxf(x)+maxuminxug(x)

上述式子中,maxuminxf(x)因为f(x)u无关,所以maxuminxf(x)=minxf(x)。我们着重考察下后面个式子,因为

uk0gk(x)0}minxug(x)={0,u=0g(x)=0,u>0  g(x)<0

所以,
maxuminxug(x)=0,u=0g(x)=0

也就是说,
maxuminxL(x,u)=maxu[minxf(x)+minxug(x)]=maxuminxf(x)+maxuminxug(x)=minxf(x)+maxuminxug(x)=minxf(x)

上面两个证明,什么意思呢?也就是原始问题(不等式约束)转化为了两个等价的问题(无约束):

minxf(x)=minxmaxuL(x,u)=maxuminxL(x,u)

我们将maxuminxL(x,u)称为原问题minxmaxuL(x,u)的对偶问题。

有了KKT条件我们的原始问题如下求得

L(x,u)=f(x)+k=1qukgk(x)uk0gk(x)0minxf(x)ukgk(x)=0L(x,u)x|x=x=0=minxmaxuL(x,u)=maxuminxL(x,u)

同时,KKT条件是拉格朗日乘子法的泛化,如果我们把等式约束和不等式约束一并纳入进来则表现为:
这里写图片描述

参考

拉格朗日乘子法和KKT条件

原创粉丝点击