KKT条件

Karush-Kuhn-Tucker (KKT)条件是非线性规划(nonlinear programming)最佳解的必要条件。KKT条件将Lagrange乘数法(Lagrange multipliers)所处理涉及等式的约束优化问题推广至不等式。在实际应用上,KKT条件(方程组)一般不存在代数解,许多优化算法可供数值计算选用。这篇短文从Lagrange乘数法推导KKT条件并举一个简单的例子说明解法。

1. 等式约束优化问题

给定一个目标函数f:RnR ,我们希望找到xR,在满足约束条件g(x)=0的前提下,使得L(x,λ)=f(x)+λg(x)有最小值。这个约束优化问题记为

minf(x)s.t.g(x)=0

为方便分析,假设fg是连续可导函数。我们在高等数学中学过的Lagrange乘数法是等式约束优化问题的典型解法。

定义Lagrangian函数

L(x,λ)=f(x)+λg(x)

其中λ 称为Lagrange乘数。Lagrange乘数法将原本的约束优化问题转换成等价的无约束优化问题

minx,λ L(x,λ)

计算Lxλ的偏导数并令其为0,可得最优解的必要条件: \(\nabla_{x}L = \frac{\partial L}{\partial x} = \nabla f + \lambda \nabla g = 0\)

λL=Lλ=g(x)=0

其中第一式为定常方程式(stationary equation),第二式为约束条件。解开上面n+1个方程式可得L(x,λ)的stationary pointx以及λ的值(正负数皆可能)。

2. 不等式约束优化问题

接下来我们将约束等式g(x)=0推广为不等式g(x)0 。考虑这个问题

minf(x)s.t.g(x)0

假设x为满足约束条件的最佳解,分开两种情况讨论:

(1) g(x)<0, 最佳解位于可行域K的内部,称为内部解(interior solution),这时约束条件是无效的(inactive);

(2) g(x)=0, 最佳解落在可行域K的边界,称为边界解(boundary solution),此时约束条件是有效的(active)。

这两种情况的最佳解具有不同的必要条件。

(1)内部解:在约束条件无效的情形下,g(x)=0不起作用,约束优化问题退化为无约束优化问题,因此驻点x满足f=0λ=0

(2)边界解:在约束条件有效的情形下,约束不等式变成等式g(x)=0,这与前述Lagrange乘数法的情况相同。我们可以证明驻点x发生于fspang,换句话说,存在λ使得f=λg,但这里λ的正负号是有其意义的。因为我们希望最小化f,梯度f (函数f在点x的最陡上升方向)应该指向可行域K的内部(因为最优解最小值是在边界取得的),但g指向K的外部(即g(x)>0的区域,因为约束是小于等于0),因此λ0,称为对偶可行性(dual feasibility)。

因此,不论是内部解或边界解,λg(x)=0恒成立,称为互补松弛性(complementary slackness)。整合上述两种情况,最佳解的必要条件包括Lagrangian函数L(x,λ)的定常方程式、原始可行性、对偶可行性,以及互补松弛性:

xL=f+λg=0g(x)0λ0λg(x)=0

这些条件合称为Karush-Kuhn-Tucker (KKT)条件。如果我们要最大化f(x)且受限于g(x)0,那么对偶可行性要改成λ0

上面结果可推广至多个约束等式与约束不等式的情况。考虑标准约束优化问题(或称非线性规划):

minf(x)s.t.gj(x)=0,j=1,,m,hk(x)0,k=1,,p.

定义Lagrangian 函数

L(x,{λj},{μk})=f(x)+mj=1λjgj(x)+pk=1μkhk(x)

其中λj是对应gj(x)=0的Lagrange乘数,μk是对应hk(x)0的Lagrange乘数(或称KKT乘数)。

KKT条件包括

xL=0gj(x)=0,j=1,,m,hk(x)0,μk0,μkhk(x)=0,k=1,,p.

3. 一个例子

minx21+x22,s.t.x1+x2=1x2α,

其中(x1,x2)R2α为实数. 写出Lagrangigan函数

L(x1,x2,λ,μ)=x21+x22+λ(1x1x2)+μ(x2α)

KKT方程组如下:

Lxi=0,i=1,2x1+x2=1x2α0μ0μ(x2α)=0

求偏导可得Lx1=2x1λ=0 , Lx2=2x2λ+μ=0 , 分别解出x1=λ2x2=λ2μ2. 代入约束等式x1+x2=1, 得x1=μ4+12, x2=μ4+12

最后再加入约束不等式,μ4+12α,即μ24α. 下面分三种情况讨论

(1) α>12 : 不难验证μ=0>24α 满足所有的KKT条件,约束不等式是无效的,x1=x2=12是内部解,目标函数的最小值是12.

(2) α=12 : 如同1,μ=0=24α,满足所有的KKT条件,x1=x2=12是边界解

(3) α<12 : 这时约束不等式是有效的,μ=24α>0,则x1=1αx2=α,目标函数的极小值是(1α)2+α2.

打赏一个呗

取消

感谢您的支持,我会继续努力的!

扫码支持
扫码支持
扫码打赏,你说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦