KKT条件--约束问题最优化方法

来源:互联网 发布:c语言字符串字符个数 编辑:程序博客网 时间:2024/05/22 03:03

  KKT条件在约束条件下求解非线性规划问题很有用,是确定某点为最优点的一阶必要条件。而对于凸规划问题而言,KKT条件是局部极小点的一阶必要条件,同时也是充分条件,而且局部极小点就是全局极小点。考虑以下数学模型:

min f(x)s. t. hi(x)=0 (i=1,2,...,m)gj(x)0 (j=1,2,...,l)(1)

定理:
  x为可行域中的一点,I(x)={i|gi(x)=0,1il},f(x)gi(x)(iI(x))在点x处可微,gi(x)在点x处连续,hj(x)(j=1,2,...,m)在点x处连续可微,且向量集
{gi(x),hj(x)|iI(x),j=1,2,...,m}

线性无关。若x是上述数学模型的局部最优解,则存在γ=(γ1,γ2,...,γl)T和向量λ=(λ1,λ2,...,λm)T,是下述条件成立:
f(x)lj=1γjgj(x)mi=1λihi(x)=0γjgj(x)=0(j=1,2,...,l)γj0(j=1,2,...,l)(2)

第一种理解思路:

辅助概念:
  1. 0不等式约束,如上面的gj(x):可行点x处的可行下降方向d与该点处目标函数的负梯度方向的夹角为锐角,与该点起作用约束函数的梯度方向的夹角也为锐角。
  2. 0不等式约束:可行点x处的可行下降方向d与该点处目标函数的负梯度方向的夹角为锐角,与该点起作用约束函数的梯度方向的夹角也为钝角。
  3. 等式约束,如上面的hi(x):可行点x处的可行下降方向d与该点处目标函数的负梯度方向的夹角为锐角,与该点处的约束函数的梯度方向向量的内积为0。

  由(2)中第二个向量方程可知,当不等式约束gj(x)0x处为不起作用约束时,γj必为0。这样,第一个向量方程其实就是可行点x处的目标函数梯度方向,与该点处不等式约束的起作用约束函数的梯度方向,以及等式约束函数的梯度方向的线性组合。
假设存在可行下降方向d,第一个向量方程两边同乘以d,则可得到

f(x)Tdj=1lγjgj(x)Tdi=1mλihi(x)Td=0

  由上面的辅助概念1可知,f(x)Td<0, gj(x)Td>0
  由上面的辅助概念3可知,λihi(x)Td=0
  由此可知,等式不成立,即假设不成立,d不存在,此时点x为局部最优解。
通常称f(x)lj=1γjgj(x)mi=1λihi(x)为问题(1)的广义拉格朗日函数。当该非线性规划问题只包含等式约束时,此KKT条件便具有以下形式:
f(x)i=1mλihi(x)=0(3)

(3)式即为狭义拉格朗日函数关于x求导形式。

第二种理解思路:

其实可以从原问题的广义拉格朗日函数的最小最大问题出发。

L(x,γj,λi)=f(x)j=1lγjgj(x)i=1mλihi(x)g(γj,λi)=maxγj>=0,λiL(x,γj,λi)={,f(x),xminxmaxγj>=0,λiL(x,γj,λi)

于是求极值先对γj,λi求导:
gj(x)=0γj>=0hi(x)=0

再对x求导:
f(x)j=1lγjgj(x)i=1mλihi(x)=0

但是直接求不太好求,会通过求对偶问题:
p(x)=minxL(x,γj,λi)

但是p(x)<=L(x,γj,λi)<=g(γj,λi),什么时候p(x)的最优解就是原问题的最优解呢?
g(γj,λi)的最优解为γj,λi,p(x)的最优解为x。当满足KKT条件时,x是原问题的最优解。证明:
g(γj,λi)=minxL(x,γj,λi)=L(x,γj,λi)=f(x)j=1lγjgj(x)i=1mλihi(x)=f(x)

最后一步由KKT条件中的第二个和第三个条件得到。

第三种理解思路:

参考网上的资料,整理了一下从几何意义方面理解KKT条件。
- 以下二维决策变量情况的讨论参考自此
- 等式约束情况
考虑这个决策变量是二维平面内点(x,y)的优化问题:
max \ f(x,y)\\s.\ t.\ g(x,y)=c

max f(x,y)s. t. g(x,y)=c

我们在二维平面内画出两个函数的图像。由于缺少第三维,我们使用等高线来表示目标函数f(x,y)的函数值。如下图:
这里写图片描述
图中画出了两条f(x,y)的等高线,蓝色箭头则是等高线上的梯度f(x,y)。从梯度的方向上来看,显然有d1<d2。绿色的线是约束,也就是说,只要正好落在这条绿线上的点才可能是满足要求的点。如果没有这条约束,f(x,y)的最大值应该会落在最小那圈等高线内部的某一点上。而现在加上了约束,最大值点应该在哪里呢?显然应该是在f(x,y)的等高线正好和约束线相切的位置。如果我们对约束也求梯度g(x,y),则其梯度如图中绿色箭头所示。很容易看出来,要想让目标函数f(x,y)的等高线和约束相切,则他们切点的梯度一定在一条直线上,即:
f(x,y)=υg(x,y)

其中υ可以是任何实数。
因此,我们通过观察可以得到优化取到最大值的条件:
{g(x,y)=cf(x,y)υg(x,y)=0

- 不等约束的情况
上面仅仅考虑了等式约束的情况。那么含有不等式的约束情况下,λ乘子又有什么意义呢?
我们还是考虑一个和上面问题类似的问题:
maxf(x,y)s.t.g1(x,y)c,g2(x,y)d

我们同样在平面内画下这个问题的图像:
这里写图片描述
这个和之前的图不同之处在于:约束决定的可行区域由一条直线变成了一段带状区域。这个带状区域由两条边界g1(x,y)=cg2(x,y)=d来决定。
大家立刻可以从图中发现,这个问题的最优解和之前的等式约束情况下没有任何区别。也就是依然满足条件:
g1(x,y)=cf(x,y)υg1(x,y)=0υ0

- 以下三维决策变量情况的讨论参考自此
考虑以下问题模型:
minf(x1,x2,x3)s.t.c1(x1,x2,x3)=0(S1)c2(x1,x2,x3)=0(S2)

这里写图片描述
如上图,x局部最优解,那么其必在S1与S2的交线D(及可行域)上,并且目标函数与约束函数的梯度c1(x)c2(x)共面。如果不共面,那么f(x)梯度向可行域D上的投影不为零。于是沿着这个投影移动,可使得目标函数下降,也就不是最优解。
根据共面的条件,我们可以推出:
f(x)=i=1lλici(x)

也就是三维空间的最优性条件。
三维决策变量的不等式约束情况和高维情况(共体)可以此类推。

0 0