KKT条件介绍
KKT是非线性规划领域的重要成果,它是判断某点是极值点的必要条件。对于凸规划,KKT条件就是充要条件了,只要满足就是一定是极值点,且一定得到是全局最优解。
问题模型
“等式约束+不等式约束” 优化问题。
设目标函数f(x),不等式约束为g(x)和h(x),此时的约束优化问题描述如下:
我们定义不等式约束下的拉格朗日函数L, 则L表达式为:
其中f(x)是目标函数,是第j个等式约束条件, 是对应的约束系数, 是不等式约束,是对应的约束系数(松弛变量)。
一点铺垫
实质上,KKT条件描述的是:这个点已经是可行域的边界了,再走一点就不满足约束条件了。显然,最优解一定在可行域的边界上的。如下图例子所示:
这张图的紫色区域就是四个不等式约束限定的可行域,如果求z=x+2y的最大值,结果当然是红星店取得最大值,总之极值点应该在可行域的边界,这在自变量多的高维可行域空间同样适用。
KKT到底是什么
KKT条件就是说:如果一个点x是满足所有约束的极值点,那么该点x就要满足一下所有条件,即KKT条件:
举例
带有不等式约束的最优化问题通常可以表述为如下形式:
给出一个具体的例子:
写出拉格朗日函数
λ是拉格朗日乘子(KKT乘子),它的目的是能够将不等式约束变为等式约束,主要 λ>=0。等式约束的拉格朗日乘子是不等于0即可的。
求偏导
然后对该式子三个未知量分别求偏导,且令导数函数为0:
计算
根据上面式子可以得出存在两种可能的情况:
第一种情况:
当lamda不等于0的时候,根据上面的式子可以得出 ,根据其他的式子可以得到 ,然后无论 d2 = +2/-2,λ都不满足大于等于0的条件。因此不存在的。
第二种情况:
当λ等0的时候,根据上面的式子可以得出 。因此该式子是正确的。
各种情况下的KKT条件
等式约束下的KKT条件
题目描述:
拉格朗日函数:
L(x,v)=x^{T}x+λ(Ax-b)
KKT条件:
拉格朗日乘子在等式约束下等于0
等式约束条件
不等式约束下的KKT条件
题目描述:
等价于:要保证是min f(x)以及不等式约束要小于等于0
拉格朗日函数:
KKT条件:
不等式约束条件
不等式约束条件
不等式约束条件
不等式约束条件
拉格朗日乘子在不等式约束下大于等于0
拉格朗日乘子在等式约束下大于等于0
等式约束和不等式约束结合的KKT条件
题目描述:
拉格朗日函数:
KKT条件:
对x求导等于0