非线性规划——库恩塔克KTT条件(五)
库恩塔克条件(Kuhn-Tucker conditions)是非线性规划领域里最重要的理论成果之一,是确定某点为极值点的必要条件。如果所讨论的规划是凸规划,那么库恩-塔克条件也是充分条件。本文不对数学公式进行详细推导,而是从直观上对KT条件进行理解。
一、带有不等式约束的模型
!!!注意:这里模型不等式约束是小于等于,与清华运筹学标准型相差一个符号,这是为了和软件处理相匹配。
二、库恩塔克条件
KTT条件(Karush–Kuhn–Tucker conditions)是最优化(特别是非线性规划)领域最重要的成果之一,是判断某点是极值点的必要条件。虽然该理论的数学公式看似复杂,但其实它的数学思想极其简单。
对应地,定义的拉格朗日函数为:
其中,λiλi指的是一系列的λ(有mm个),同理{μjμj}也是。
该最优化问题的KTT条件为:
解题思路与之前叙述类似,就是用几个等式计算最优值,用不等式验证这些值,不满足则排除。即,利用式(1)(2)(3)求最优X∗X∗和λ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)函数的等值线(图中虚线),由上述分析和上图可知,在最优解X∗X∗处,f(X∗)f(X∗)和g(X∗)g(X∗)的梯度方向共线且方向相反。向量共线且方向相反在数学上的写法就是:
对于最大化问题,f(X∗)f(X∗)与g(X∗)g(X∗)的梯度方向相同,有:
2.2 多个约束的情形
假设有起作用约束g1(X)g1(X)和起作用约束g2(X)g2(X)共同影响目标函数f(X)f(X)的梯度,又是怎么样的图形呢?
ff函数的负梯度可以表示成g1g1函数和g2g2函数梯度的线性组合。则有如下公式:
三、实例
例1:验证点 (1+√172,1−√172)T(1+√172,1−√172)T 与 (0,−3)T(0,−3)T 是否是规划问题
的 K-T 点。对 K-T 点写出相应的 Lagrange 乘子。
解:将规划问题标准化
记 X(1)=(1+√1721−√172), X(2)=(0−3) 记 X(1)=⎛⎝1+√1721−√172⎞⎠, X(2)=(0−3)
(1)下面验证正则点:
显然 ∇g1(X(1))∇g1(X(1)) 与 ∇g2(X(1))∇g2(X(1)) 线性无关, 于是 (1+√172,1−√172)T(1+√172,1−√172)T 为正则点。
同样 ∇g1(X(2))∇g1(X(2)) 与 ∇g2(X(2))∇g2(X(2)) 线性无关, 于是 (0,−3)T(0,−3)T 也是正则点。
(2)下面验证是否满足 Kuhn-Tucker 条件:
得 γ1=−12<0,γ2=−1+√172<0γ1=−12<0,γ2=−1+√172<0, 故 (1+√172,1−√172)T(1+√172,1−√172)T 不满足 Kuhn-Tucker 条 件。
得 γ1=16>0,γ2=0γ1=16>0,γ2=0, 故 (0,−3)T(0,−3)T 满足 Kuhn-Tucker 条件。
例2:考虑非线性规划问题:
利用Kuhn-Tucker条件求其全局最优解。
解: 构造 Lagrange 函数如下:
根据 Kuhn-Tucker 条件,存在 x∗=(x∗1,x∗2)Tx∗=(x∗1,x∗2)T 和 λ∗1∈R,λ∗2≥0λ∗1∈R,λ∗2≥0,使得
(1)
(2) λ∗2(x∗1+x∗2−2)=0λ∗2(x∗1+x∗2−2)=0
(3)
设 x1+x2=2x1+x2=2,根据条件(1),我们可求出 x∗1=12,x∗2=32x∗1=12,x∗2=32,将它们代入(3),有:
由此可得 λ∗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立方英寸的盒子。我们想尽量减少所使用的材料的总量。我们可以将最优化问题表述为:
主条件:
互补条件:
解1: λ=0λ=0。那么有x=y=z=0x=y=z=0,该点并不满足原问题可行性
解2: λ>0λ>0和xyz=64xyz=64。根据第一个等式,就有
因此,x=y=z=4x=y=z=4是KKT条件的唯一解。
例4:考虑下述问题
其中 (x1,x2)∈R2,α(x1,x2)∈R2,α 为实数。写出Lagrange函数
KTT 方程组如下:
求偏导可得 ∂L∂x1=2x1−λ=0∂L∂x1=2x1−λ=0 且 ∂L∂x2=2x2−λ+μ=0∂L∂x2=2x2−λ+μ=0 ,分别解出 x1=λ2x1=λ2 且 x2=λ2−μ2x2=λ2−μ2 。代入约束等式 x1+x2=λ−μ2=1x1+x2=λ−μ2=1 或 λ=μ2+1λ=μ2+1 。合并上面结果,
最后再加入约束不等式 −μ4+12≤α−μ4+12≤α 或 μ≥2−4αμ≥2−4α 。底下分开三种情况讨论。
(1) α>12α>12 : 不难验证 μ=0>2−4αμ=0>2−4α 满足所有的KKT条件,约束不等式是无效的, x⋆1=x⋆2=12x⋆1=x⋆2=12 是内部解,目标函数的极小值是 1212 。
(2) α=12:α=12: 如同 1,μ=0=2−4α1,μ=0=2−4α 满足所有的KKT条件, x⋆1=x⋆2=12x⋆1=x⋆2=12 是边界解,因为 x⋆2=αx⋆2=α 。
(3) α<12α<12 : 这时约束不等式是有效的, μ=2−4α>0μ=2−4α>0 ,则 x⋆1=1−αx⋆1=1−α 且 x⋆2=αx⋆2=α ,目标函数的极小值是 (1−α)2+α2(1−α)2+α2 。
例5:求解下面问题
库恩-塔克条件通常用于解决具有约束条件的优化问题,特别是当问题不能简单地通过拉格朗日乘数法解决时。
我们注意到目标函数是一个二次函数,且二次项系数为负,这意味着它是一个下开口的抛物线,因此我们实际上是在寻找该抛物线的最低点。
-
构造拉格朗日函数 (L(x,λ1,λ2)=−(x−4)2+λ1(x−1)+λ2(6−x)(L(x,λ1,λ2)=−(x−4)2+λ1(x−1)+λ2(6−x)
-
求偏导数 并令它们等于零来找到xx的值:
∂L∂x=−2(x−4)+λ1−λ2=0∂L∂x=−2(x−4)+λ1−λ2=0 -
约束条件:
g1(x)=x−1≥0⇒x≥1g2(x)=6−x≥0⇒x≤6g1(x)=x−1≥0⇒x≥1g2(x)=6−x≥0⇒x≤6 -
应用库恩-塔克条件:
λ1≥0λ2≥0λ1(x−1)=0λ2(6−x)=0λ1≥0λ2≥0λ1(x−1)=0λ2(6−x)=0 -
解方程组:
从 λ1(x−1)=0λ1(x−1)=0 和 λ2(6−x)=0λ2(6−x)=0 我们可以看出,如果 x=1x=1,则 λ1=0λ1=0;如果 x=6x=6,则 λ2=0λ2=0。 -
检查边界条件:
在 x=1x=1 时,g1(x)=0g1(x)=0 且 g2(x)=5>0g2(x)=5>0,满足 g1(x)≥0g1(x)≥0 和 g2(x)≥0g2(x)≥0;在x=6x=6 时,g2(x)=0g2(x)=0 且 g1(x)=5>0g1(x)=5>0,满足约束条件。 -
确定最优解:
在x=1x=1 时,f(x)=−(1−4)2=−9f(x)=−(1−4)2=−9;在x=6x=6 时,f(x)=−(6−4)2=−4f(x)=−(6−4)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条件,则一定是极值点,且得到的一定还是全局最优解。
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· DeepSeek “源神”启动!「GitHub 热点速览」
· 我与微信审核的“相爱相杀”看个人小程序副业
· 微软正式发布.NET 10 Preview 1:开启下一代开发框架新篇章
· 如何使用 Uni-app 实现视频聊天(源码,支持安卓、iOS)
· C# 集成 DeepSeek 模型实现 AI 私有化(本地部署与 API 调用教程)