Typesetting math: 100%

非线性规划——库恩塔克KTT条件(五)

库恩塔克条件(Kuhn-Tucker conditions)是非线性规划领域里最重要的理论成果之一,是确定某点为极值点的必要条件。如果所讨论的规划是凸规划,那么库恩-塔克条件也是充分条件。本文不对数学公式进行详细推导,而是从直观上对KT条件进行理解。

一、带有不等式约束的模型

minf(X) s.t. gi(X)0,i=1,,mm 个不等式约束 hj(X)=0,j=1,,nn 个等式约束 minf(X) s.t. gi(X)0,i=1,,mm  hj(X)=0,j=1,,nn  

!!!注意:这里模型不等式约束是小于等于,与清华运筹学标准型相差一个符号,这是为了和软件处理相匹配。

二、库恩塔克条件

KTT条件(Karush–Kuhn–Tucker conditions)是最优化(特别是非线性规划)领域最重要的成果之一,是判断某点是极值点的必要条件。虽然该理论的数学公式看似复杂,但其实它的数学思想极其简单。
对应地,定义的拉格朗日函数为:

L(X,{λi},{μj})=f(X)+mi=1λigi(X)+nj=1μjhj(Y)L(X,{λi},{μj})=f(X)+mi=1λigi(X)+nj=1μjhj(Y)

其中,λiλi指的是一系列的λ(有mm个),同理{μjμj}也是。

该最优化问题的KTT条件为:

f(X)+mi=1λigi(X)+nj=1μjhj(X)=0(1)λigi(X)=0,i=1,,m(2)hj(X)=0,j=1,,n(3)λi0,i=1,,m(4)gi(X)0,i=1,,m(5)f(X)+mi=1λigi(X)+nj=1μjhj(X)=0(1)λigi(X)=0,i=1,,m(2)hj(X)=0,j=1,,n(3)λi0,i=1,,m(4)gi(X)0,i=1,,m(5)

解题思路与之前叙述类似,就是用几个等式计算最优值,用不等式验证这些值,不满足则排除。即,利用式(1)(2)(3)求最优XXλiλi,然后通过式(4)和(5)验证这些解是否可行,“可行”指的是这些解是否能让(4)和(5)的不等号成立,不成立则排除。注意,μjμj是可以取任意值的,不受限制,因为它们是等式约束的乘子,不是不等式约束的乘子。

2.1 仅有一个不等式约束的情形

minf(X)minf(X) maxf(X)maxf(X)
g(X)0g(X)0
g(X)0g(X)0

上图画出了3条f(X)f(X)函数的等值线(图中虚线),由上述分析和上图可知,在最优解XX处,f(X)f(X)g(X)g(X)的梯度方向共线且方向相反。向量共线且方向相反在数学上的写法就是:

f(X)=λg(X)f(X)+λg(X)=0f(X)=λg(X)f(X)+λg(X)=0

对于最大化问题,f(X)f(X)g(X)g(X)的梯度方向相同,有:

f(X)=λg(X)f(X)λg(X)=0f(X)+λg(X)=0, 且 λ<0f(X)=λg(X)f(X)λg(X)=0f(X)+λg(X)=0,  λ<0

2.2 多个约束的情形

假设有起作用约束g1(X)g1(X)和起作用约束g2(X)g2(X)共同影响目标函数f(X)f(X)的梯度,又是怎么样的图形呢?

ff函数的负梯度可以表示成g1g1函数和g2g2函数梯度的线性组合。则有如下公式:

f(X)=λ1g1(X)+λ2g2(X)f(X)+λ1g1(X)+λ2g2(X)=0f(X)=λ1g1(X)+λ2g2(X)f(X)+λ1g1(X)+λ2g2(X)=0

三、实例

例1:验证点 (1+172,1172)T(1+172,1172)T(0,3)T(0,3)T 是否是规划问题

minf(x)=x21+x2 s.t. x21+x229x1x2+10minf(x)=x21+x2 s.t. x21+x229x1x2+10

的 K-T 点。对 K-T 点写出相应的 Lagrange 乘子。
解:将规划问题标准化

minf(x)=x21+x2 s.t. g1(X)=x21+x2290g2(X)=x1+x210minf(x)=x21+x2 s.t. g1(X)=x21+x2290g2(X)=x1+x210

f(X)=(2x11),g1(X)=(2x12x2),g2(X)=(11)f(X)=(2x11),g1(X)=(2x12x2),g2(X)=(11)

 记 X(1)=(1+1721172)X(2)=(03)  X(1)=1+1721172X(2)=(03)
(1)下面验证正则点:

g1(X(1))=(1+17117),g2(X(1))=(11)g1(X(1))=(1+17117),g2(X(1))=(11)

显然 g1(X(1))g1(X(1))g2(X(1))g2(X(1)) 线性无关, 于是 (1+172,1172)T(1+172,1172)T 为正则点。

g1(X(2))=(06),g2(X(2))=(11)g1(X(2))=(06),g2(X(2))=(11)

同样 g1(X(2))g1(X(2))g2(X(2))g2(X(2)) 线性无关, 于是 (0,3)T(0,3)T 也是正则点。
(2)下面验证是否满足 Kuhn-Tucker 条件:

f(X(1))+2j=1γjgj(X(1))=(1+171)+γ1(1+17117)+γ2(11)=(00)f(X(1))+2j=1γjgj(X(1))=(1+171)+γ1(1+17117)+γ2(11)=(00)

γ1=12<0,γ2=1+172<0γ1=12<0,γ2=1+172<0, 故 (1+172,1172)T(1+172,1172)T 不满足 Kuhn-Tucker 条 件。

f(X(2))+2j=1γjgj(X(2))=(01)+γ1(06)+γ2(11)=(00)f(X(2))+2j=1γjgj(X(2))=(01)+γ1(06)+γ2(11)=(00)

γ1=16>0,γ2=0γ1=16>0,γ2=0, 故 (0,3)T(0,3)T 满足 Kuhn-Tucker 条件。

例2:考虑非线性规划问题:

minf(x1,x2)=(x11)2+(x22)2 s.t. {x1+x2=1x1+x22x1,x20minf(x1,x2)=(x11)2+(x22)2 s.t. x1+x2=1x1+x22x1,x20

利用Kuhn-Tucker条件求其全局最优解。
解: 构造 Lagrange 函数如下:

L(x,λ)=(x11)2+(x22)2+λ1(x1+x21)+λ2(x1+x22)L(x,λ)=(x11)2+(x22)2+λ1(x1+x21)+λ2(x1+x22)

根据 Kuhn-Tucker 条件,存在 x=(x1,x2)Tx=(x1,x2)Tλ1R,λ20λ1R,λ20,使得
(1)

x1+x2=1x1+x22x1+x2=1x1+x22

(2) λ2(x1+x22)=0λ2(x1+x22)=0

(3)

Lx1=2(x11)λ1+λ2=0Lx2=2(x22)+λ1+λ2=0Lx1=2(x11)λ1+λ2=0Lx2=2(x22)+λ1+λ2=0

x1+x2=2x1+x2=2,根据条件(1),我们可求出 x1=12,x2=32x1=12,x2=32,将它们代入(3),有:

2(121)λ1+λ2=02(322)+λ1+λ2=02(121)λ1+λ2=02(322)+λ1+λ2=0

由此可得 λ1=0,λ2=1λ1=0,λ2=1, 由于点 x=(12,32)x=(12,32) 满足条件 (1) - (3), 它是 Kuhn -Tucker 点。容易验证, 目标函数 f(x)f(x) 是凸函数, 两个约束函数也都是凸函数,知点 x=(12,32)x=(12,32) 是全局最优解, ˉf=12¯f=12 是全局最小值。

例3:想建造一个体积至少为64立方英寸的盒子。我们想尽量减少所使用的材料的总量。我们可以将最优化问题表述为:

minx,y,z2xy+2yz+2xzs.t.xyz64x>0,y>0,z>0minx,y,z2xy+2yz+2xzs.t.xyz64x>0,y>0,z>0(1)(2)(3)

主条件:

L(x,y,z,λ)=2xy+2yz+2xz+λ(64xyz)xL(x,y,z,λ)=(2y+2zλyz,2x+2zλxz,2y+2xλxy)=0L(x,y,z,λ)=2xy+2yz+2xz+λ(64xyz)xL(x,y,z,λ)=(2y+2zλyz,2x+2zλxz,2y+2xλxy)=0

互补条件:

λ(64xyz)=0λ(64xyz)=0

解1: λ=0λ=0。那么有x=y=z=0x=y=z=0,该点并不满足原问题可行性
解2: λ>0λ>0xyz=64xyz=64。根据第一个等式,就有

λ=2(1x+1y)=2(1x+1z)=2(1z+1y)λ=2(1x+1y)=2(1x+1z)=2(1z+1y)

因此,x=y=z=4x=y=z=4是KKT条件的唯一解。

例4:考虑下述问题

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

其中 (x1,x2)R2,α(x1,x2)R2,α 为实数。写出Lagrange函数

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

KTT 方程组如下:

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

求偏导可得 Lx1=2x1λ=0Lx1=2x1λ=0Lx2=2x2λ+μ=0Lx2=2x2λ+μ=0 ,分别解出 x1=λ2x1=λ2x2=λ2μ2x2=λ2μ2 。代入约束等式 x1+x2=λμ2=1x1+x2=λμ2=1λ=μ2+1λ=μ2+1 。合并上面结果,

x1=μ4+12,x2=μ4+12x1=μ4+12,x2=μ4+12

最后再加入约束不等式 μ4+12αμ4+12αμ24αμ24α 。底下分开三种情况讨论。
(1) α>12α>12 : 不难验证 μ=0>24αμ=0>24α 满足所有的KKT条件,约束不等式是无效的, x1=x2=12x1=x2=12 是内部解,目标函数的极小值是 1212
(2) α=12:α=12: 如同 1μ=0=24α1μ=0=24α 满足所有的KKT条件, x1=x2=12x1=x2=12 是边界解,因为 x2=αx2=α
(3) α<12α<12 : 这时约束不等式是有效的, μ=24α>0μ=24α>0 ,则 x1=1αx1=1αx2=αx2=α ,目标函数的极小值是 (1α)2+α2(1α)2+α2

例5:求解下面问题

库恩-塔克条件通常用于解决具有约束条件的优化问题,特别是当问题不能简单地通过拉格朗日乘数法解决时。

min f(x)=(x4)2subject to g1(x)=x10g2(x)=6x0min f(x)=(x4)2subject to g1(x)=x10g2(x)=6x0

我们注意到目标函数是一个二次函数,且二次项系数为负,这意味着它是一个下开口的抛物线,因此我们实际上是在寻找该抛物线的最低点。

  • 构造拉格朗日函数 (L(x,λ1,λ2)=(x4)2+λ1(x1)+λ2(6x)(L(x,λ1,λ2)=(x4)2+λ1(x1)+λ2(6x)

  • 求偏导数 并令它们等于零来找到xx的值:

    Lx=2(x4)+λ1λ2=0Lx=2(x4)+λ1λ2=0

  • 约束条件

    g1(x)=x10x1g2(x)=6x0x6g1(x)=x10x1g2(x)=6x0x6

  • 应用库恩-塔克条件

    λ10λ20λ1(x1)=0λ2(6x)=0λ10λ20λ1(x1)=0λ2(6x)=0

  • 解方程组
    λ1(x1)=0λ1(x1)=0λ2(6x)=0λ2(6x)=0 我们可以看出,如果 x=1x=1,则 λ1=0λ1=0;如果 x=6x=6,则 λ2=0λ2=0

  • 检查边界条件
    x=1x=1 时,g1(x)=0g1(x)=0g2(x)=5>0g2(x)=5>0,满足 g1(x)0g1(x)0g2(x)0g2(x)0;在x=6x=6 时,g2(x)=0g2(x)=0g1(x)=5>0g1(x)=5>0,满足约束条件。

  • 确定最优解
    x=1x=1 时,f(x)=(14)2=9f(x)=(14)2=9;在x=6x=6 时,f(x)=(64)2=4f(x)=(64)2=4

由于我们的目标是最小化 f(x)f(x),因此 x=1x=1 时的-9是一个比x=6x=6 时的-4更优的解。所以最优解是x=1x=1,此时λ2=0λ2=0λ1λ1可以是任何非负数,并且目标函数的最小值为f(x)=9f(x)=9

KKT条件是判断某点是极值点的必要条件,不是充分条件。换句话说,最优解一定满足KKT条件,但KKT条件的解不一定是最优解。对于凸规划,KKT条件就是充要条件了,只要满足KKT条件,则一定是极值点,且得到的一定还是全局最优解。

参考文献

  1. KKT条件,原来如此简单 (上) | 理论部分
  2. KKT条件:不等式约束(五)
  3. Karush-Kuhn-Tucker (KKT)条件
posted @   郝hai  阅读(6661)  评论(2编辑  收藏  举报
相关博文:
阅读排行:
· DeepSeek “源神”启动!「GitHub 热点速览」
· 我与微信审核的“相爱相杀”看个人小程序副业
· 微软正式发布.NET 10 Preview 1:开启下一代开发框架新篇章
· 如何使用 Uni-app 实现视频聊天(源码,支持安卓、iOS)
· C# 集成 DeepSeek 模型实现 AI 私有化(本地部署与 API 调用教程)
点击右上角即可分享
微信分享提示