非线性优化问题处理技术(二) Karush–Kuhn–Tucker条件

article/2025/9/14 0:38:31

对于只有等式约束的非线性优化问题,拉格朗日定理是可以适用的,但是当存在不等式约束时就不适用了,此时Karush–Kuhn–Tucker(KKT)条件是更为通用的处理技术,拉格朗日定理其实只是KKT条件定理的特殊情况。 KKT条件一开始称为Kuhn–Tucker条件, 因为在1951年Harold W. Kuhn 和 Albert W. Tucker发表了该定理的论文,不过人们之后又发现早在1939年一个名为William Karush的学者就在他的硕士论文中涉及了该理论,所以又把他的名字加入到了该定理的命名中。该定理名字里的"条件"的意思是这个定理描述的是最优解的必要条件,也就是是说如果一个解是优化问题的最优解,那么这个解一定满足KKT条件所叙述的各种关系;按照逻辑学的理论,原命题与逆否命题等价,那么如果一个解它不满足KKT条件,那么它肯定不是最优问题的最优解;当然,如果一个解满足KKT条件,我们不能直接说它就是最优解。

二元单约束的KKT条件

先通过一个最简单的二元单个约束的优化问题来得到它的KKT条件,然后给出扩展的一般性定理;二元单个约束方面图像描述,便于理解。问题的描述:
m a x i m i z e f ( x 1 , x 2 ) s u b j e c t t o g ( x 1 , x 2 ) ≤ b \begin{aligned} maximize\quad& f(x_1,x_2)\\ subject\ to\quad& g(x_1,x_2)\leq b\\ \end{aligned} maximizesubject tof(x1,x2)g(x1,x2)b
如果约束是等式,可以直接应用拉格朗日定理来处理;但现在约束是不等式,无法直接应用拉格朗日定理,按照拉格朗日定理的描述,最优解是约束边界曲线与目标函数等值线的切点,但现在最优解可能出现在约束边界之内;这时我们可以这样考虑,最优解要么出现在约束区域的边界上,要么出现在边界之内,所以我们就分两种情况来分析:

情况一

先考虑最优解出现在约束边界上,那么这时原始问题就等价于:
m a x i m i z e f ( x 1 , x 2 ) s u b j e c t t o g ( x 1 , x 2 ) = b \begin{aligned} maximize\quad& f(x_1,x_2)\\ subject\ to\quad& g(x_1,x_2)= b\\ \end{aligned} maximizesubject tof(x1,x2)g(x1,x2)=b
就是只有等式约束的优化问题,自然这个问题可以直接应用拉格朗日定理来处理
D L ( x 1 ∗ , x 2 ∗ ) = D ( f ( x 1 ∗ , x 2 ∗ ) − λ g ( x 1 ∗ , x 2 ∗ ) ) = D f ( x 1 ∗ , x 2 ∗ ) − λ D g ( x 1 ∗ , x 2 ∗ ) = ( 0 , 0 ) \begin{aligned} DL(x_1^*,x_2^*)=D(f(x_1^*,x_2^*)-\lambda g(x_1^*,x_2^*))=Df(x_1^*,x_2^*)-\lambda Dg(x_1^*,x_2^*)=(0,0) \end{aligned} DL(x1,x2)=D(f(x1,x2)λg(x1,x2))=Df(x1,x2)λDg(x1,x2)=(0,0)
可以想象其二维的图形分布如下图所示,其最优解出现在约束曲线与目标函数等值线相切的点

在这里插入图片描述

但是这时我们需要额外考虑的是 λ \lambda λ的正负性,当原始问题是等式约束时是不需要考虑 λ \lambda λ的正负的,但当原始问题是不等式约束时则必须要考虑。梯度的一个重要意义是它的方向是指向函数增长(正)最快的方向,对于上图中处于约束边界上的最优解的点,它在约束函数 g ( x 1 , x 2 ) − b g(x_1,x_2)-b g(x1,x2)b上的梯度 D g ( x 1 ∗ , x 2 ∗ ) Dg(x_1^*,x_2^*) Dg(x1,x2)应该是指向约束边界外围,因为在约束边界上 g ( x 1 ∗ , x 2 ∗ ) − b = 0 g(x_1^*,x_2^*)-b=0 g(x1,x2)b=0,而约束外围则是 g ( x 1 ∗ , x 2 ∗ ) − b > 0 g(x_1^*,x_2^*)-b>0 g(x1,x2)b>0,函数值是增大的:
在这里插入图片描述

再来考虑目标函数上的梯度 D f ( x 1 ∗ , x 2 ∗ ) Df(x_1^*,x_2^*) Df(x1,x2),它应该指向约束区域内部还是外部呢? 如果它指向约束内部,那么就意味着我们可以在约束内部找到一个更好的解,因为在约束内部的解是满足原始问题的约束的,同时它处于目标函数的梯度方向上,它的目标值也更大,这个结论将与我们的假设前提相悖;所以目标函数的梯度 D f ( x 1 ∗ , x 2 ∗ ) Df(x_1^*,x_2^*) Df(x1,x2)必须也是指向约束区域外部的;所以 D f ( x 1 ∗ , x 2 ∗ ) Df(x_1^*,x_2^*) Df(x1,x2) D g ( x 1 ∗ , x 2 ∗ ) Dg(x_1^*,x_2^*) Dg(x1,x2)应该是同向的,同向也就意味着 λ \lambda λ必定是大于等于零的。
在这里插入图片描述
总结一下,当最优解出现在约束边界上时,最优解的必要条件是:
∂ L ∂ x 1 ∗ = ∂ f ∂ x 1 ∗ − λ ∂ g ∂ x 1 ∗ = 0 ∂ L ∂ x 2 ∗ = ∂ f ∂ x 2 ∗ − λ ∂ g ∂ x 2 ∗ = 0 g ( x 1 ∗ , x 2 ∗ ) = b λ ≥ 0 \begin{aligned} \frac{\partial L}{\partial x_1^*}=\frac{\partial f}{\partial x_1^*}-\lambda\frac{\partial g}{\partial x_1^*}=0\\ \frac{\partial L}{\partial x_2^*}=\frac{\partial f}{\partial x_2^*}-\lambda\frac{\partial g}{\partial x_2^*}=0\\ g(x_1^*,x_2^*)=b\\ \lambda \geq 0 \end{aligned} x1L=x1fλx1g=0x2L=x2fλx2g=0g(x1,x2)=bλ0

情况二

再来考虑最优解出现在约束边界内即 g ( x 1 , x 2 ) < b g(x_1,x_2)< b g(x1,x2)<b的情况。在这里插入图片描述
当我们假设最优解就是出现在约束边界之内时,这个约束加不加其实不影响结果,原始问题就等价于无约束优化问题,它们的最终解是一样的:
m a x i m i z e f ( x 1 , x 2 ) s u b j e c t t o g ( x 1 , x 2 ) < b ⟺ m a x i m i z e f ( x 1 , x 2 ) \begin{aligned} maximize\quad& f(x_1,x_2)\\ subject\ to\quad& g(x_1,x_2)< b\\ \end{aligned} \Longleftrightarrow \begin{aligned} maximize\quad& f(x_1,x_2)\\ \end{aligned} maximizesubject tof(x1,x2)g(x1,x2)<bmaximizef(x1,x2)
因为最优解就是无约束时的目标函数最优值,那么必然满足
D f ( x 1 ∗ , x 2 ∗ ) = ( 0 , 0 ) ⟺ ∂ f ∂ x 1 ∗ = 0 ∂ f ∂ x 2 ∗ = 0 Df(x_1^*,x_2^*)=(0,0) \Longleftrightarrow \begin{aligned} \frac{\partial f}{\partial x_1^*}=0\\ \frac{\partial f}{\partial x_2^*}=0 \end{aligned} Df(x1,x2)=(0,0)x1f=0x2f=0
那这时 λ \lambda λ的值是如何呢? 它应该等于零,这个结论老实说我不太清楚严格的数学证明是如何的,我是这样简单理解的:因为无约束优化问题其实也可以写成等式约束形式,不过约束的系数是零:
m a x i m i z e f ( x 1 , x 2 ) s u b j e c t t o g ′ ( x 1 , x 2 ) = 0 ∗ g ( x 1 , x 2 ) = 0 \begin{aligned} maximize\quad& f(x_1,x_2)\\ subject\ to\quad& g'(x_1,x_2)=0*g(x_1,x_2)= 0\\ \end{aligned} maximizesubject tof(x1,x2)g(x1,x2)=0g(x1,x2)=0
把它化成拉格朗日函数:
L ( x 1 , x 2 , λ ′ ) = f ( x 1 , x 2 ) − λ ′ g ′ ( x 1 , x 2 ) = f ( x 1 , x 2 ) − ( λ ′ ∗ 0 ) g ( x 1 , x 2 ) L(x_1,x_2,\lambda ')=f(x_1,x_2)-\lambda 'g'(x_1,x_2)=f(x_1,x_2)-(\lambda '* 0)g(x_1,x_2) L(x1,x2,λ)=f(x1,x2)λg(x1,x2)=f(x1,x2)(λ0)g(x1,x2)
它也就是原问题(指的是约束只有 < < <号的问题模型)的拉格朗日函数,所以原问题的 λ \lambda λ就等于零,并且原问题对应的拉格朗日函数也满足:
D L ( x 1 ∗ , x 2 ∗ ) = D ( f ( x 1 ∗ , x 2 ∗ ) − λ g ( x 1 ∗ , x 2 ∗ ) ) = D f ( x 1 ∗ , x 2 ∗ ) = ( 0 , 0 ) \begin{aligned} DL(x_1^*,x_2^*)=D(f(x_1^*,x_2^*)-\lambda g(x_1^*,x_2^*))=Df(x_1^*,x_2^*)=(0,0) \end{aligned} DL(x1,x2)=D(f(x1,x2)λg(x1,x2))=Df(x1,x2)=(0,0)
总结一下,当最优解出现在约束边界之内时,满足:
∂ L ∂ x 1 ∗ = ∂ f ∂ x 1 ∗ − λ ∂ g ∂ x 1 ∗ = 0 ∂ L ∂ x 2 ∗ = ∂ f ∂ x 2 ∗ − λ ∂ g ∂ x 2 ∗ = 0 g ( x 1 ∗ , x 2 ∗ ) < b λ = 0 \begin{aligned} \frac{\partial L}{\partial x_1^*}=\frac{\partial f}{\partial x_1^*}-\lambda\frac{\partial g}{\partial x_1^*}=0\\ \frac{\partial L}{\partial x_2^*}=\frac{\partial f}{\partial x_2^*}-\lambda\frac{\partial g}{\partial x_2^*}=0\\ g(x_1^*,x_2^*)<b\\ \lambda = 0 \end{aligned} x1L=x1fλx1g=0x2L=x2fλx2g=0g(x1,x2)<bλ=0

汇总

两种情况的结论其实差异之处就在于要么是 g ( x 1 ∗ , x 2 ∗ ) = b g(x_1^*,x_2^*)=b g(x1,x2)=b,要么是 λ = 0 \lambda=0 λ=0,可以用一个等式来描述:
λ [ g ( x 1 , x 2 ) − b ] = 0 \lambda [g(x_1,x_2)-b]=0 λ[g(x1,x2)b]=0
这个等式一般称之为互补松弛条件(complementary slackness condition)

现在,我们可以给出二元单约束情况下的KKT条件:

  • 假设 f f f g g g都是 C 1 C^1 C1(一阶可导)函数, ( x 1 ∗ , x 2 ∗ ) (x_1^*,x_2^*) (x1,x2)是函数 f f f在约束集 { ( x 1 , x 2 ) ∈ R 2 : g ( x 1 , x 2 ) ≤ b } \{(x_1,x_2)\in \mathbb{R}^2: g(x_1,x_2)\leq b\} {(x1,x2)R2:g(x1,x2)b}下的最优解,并且满足 ∂ g ∂ x 1 ∗ ≠ 0 o r ∂ g ∂ x 2 ∗ ≠ 0 \frac{\partial g}{\partial x_1^*}\neq0\ or\ \frac{\partial g}{\partial x_2^*}\neq0 x1g=0 or x2g=0 , 那么一定存在 λ ∗ \lambda^* λ使得以下关系成立:
    D f ( x 1 ∗ , x 2 ∗ ) − λ ∗ D g ( x 1 ∗ , x 2 ∗ ) = ( 0 , 0 ) λ ∗ ≥ 0 λ ∗ [ g ( x 1 ∗ , x 2 ∗ ) − b ] = 0 \begin{aligned} Df(x_1^*,x_2^*)-\lambda^*Dg(x_1^*,x_2^*)&=(0,0) \\ \lambda^*&\geq 0\\ \lambda^*[g(x_1^*,x_2^*)-b]&=0 \end{aligned} Df(x1,x2)λDg(x1,x2)λλ[g(x1,x2)b]=(0,0)0=0

一般性的KKT条件

完整的KKT条件我直接从资料中摘录,当然证明过程就忽略,只记录下结论。为了定理的叙述,先明确一些定义:

  • 定义一般性的优化问题为:
    m a x x { f ( x : x ∈ U ) } w h e r e : U = { x ∈ R n : g 1 ( x ) ≤ b 1 , . . . , g k ( x ) ≤ b k } \begin{aligned} &max_\mathtt{x}\{f(\mathtt{x}:\mathtt{x}\in U)\} \\ where:&U=\{\mathtt{x}\in \mathbb{R}^n : g_1({\mathtt{x}})\leq b_1,...,g_k({\mathtt{x}})\leq b_k \} \\ \end{aligned} where:maxx{f(x:xU)}U={xRn:g1(x)b1,...,gk(x)bk}
  • 对于某一个不等式约束 g i ( x ) ≤ b i g_i(\mathtt{x})\leq b_i gi(x)bi,如果一个可行解 x ′ \mathtt{x}' x 正好满足 g i ( x ) = b i g_i(\mathtt{x})= b_i gi(x)=bi时称该约束是激活的(binding),反之称之为未激活(not binding)
  • 引入乘子 λ 1 , λ 2 , . . . , λ k \lambda_1,\lambda_2,...,\lambda_k λ1,λ2,...,λk,构成拉格朗日函数:
    L ( x , λ ) = f ( x ) − λ 1 [ g 1 ( x ) − b 1 ] − . . . − λ k [ g k ( x ) − b k ] L(\mathtt{x},\mathtt{\lambda})=f(\mathtt{x})-\lambda_1[g_1(\mathtt{x})-b_1]-...-\lambda_k[g_k(\mathtt{x})-b_k] L(x,λ)=f(x)λ1[g1(x)b1]...λk[gk(x)bk]
  • 对于某个可行解 x ′ \mathtt{x}' x,我们假设前面 e e e个约束对于它是激活的,剩余的 k − e k-e ke个约束是未激活的;这 e e e个激活约束可以构成一个雅可比矩阵:
    D g e ( x ) = [ ∂ g 1 ∂ x 1 ⋯ ∂ g 1 ∂ x n ⋮ ⋱ ⋮ ∂ g e ∂ x 1 ⋯ ∂ g e ∂ x n ] D\mathtt{g}_e(\mathtt{x})= \begin{bmatrix} \frac{\partial g_1}{\partial x_1}&\cdots&\frac{\partial g_1}{\partial x_n}\\ \vdots&\ddots&\vdots\\ \frac{\partial g_e}{\partial x_1}&\cdots&\frac{\partial g_e}{\partial x_n}\\ \end{bmatrix} Dge(x)=x1g1x1gexng1xnge
    如果 D g e ( x ′ ) D\mathtt{g}_e(\mathtt{x}') Dge(x)是满秩矩阵(秩等于 e e e),那么称该可行解 x ′ \mathtt{x}' x满足NDCQ条件

然后我们有完整的KKT条件定理:

  • f , g 1 , . . . , g k f,g_1,...,g_k f,g1,...,gk C 1 C^1 C1函数(一阶偏导),如果 x ∗ \mathtt{x}^* x是优化问题的最优解,并且满足NDCQ条件,那么一定存在乘子 λ 1 , λ 2 , . . . , λ k \lambda_1,\lambda_2,...,\lambda_k λ1,λ2,...,λk使得下面的关系成立:
    D f ( x ∗ ) − ∑ i = 1 k λ i ∗ D g i ( x ∗ ) = ( 0 , . . . , 0 ) λ 1 ∗ ≥ 0 , . . . , λ k ∗ ≥ 0 λ 1 ∗ [ g 1 ( x ∗ ) − b 1 ] = 0 , . . . , λ k ∗ [ g k ( x ∗ ) − b k ] = 0 \begin{aligned} Df(\mathtt{x}^*)-\sum_{i=1}^{k}\lambda_i^*Dg_i(\mathtt{x}^*)=(0,...,0) \\ \lambda_1^*\geq 0,...,\lambda_k^*\geq 0\\ \lambda_1^*[g_1(\mathtt{x}^*)-b_1]=0,...,\lambda_k^*[g_k(\mathtt{x}^*)-b_k]=0 \end{aligned} Df(x)i=1kλiDgi(x)=(0,...,0)λ10,...,λk0λ1[g1(x)b1]=0,...,λk[gk(x)bk]=0

http://chatgpt.dhexx.cn/article/mmtmIyrG.shtml

相关文章

支持向量机SVM(二)

6 拉格朗日对偶&#xff08;Lagrange duality&#xff09; 先抛开上面的二次规划问题&#xff0c;先来看看存在等式约束的极值问题求法&#xff0c;比如下面的最优化问题&#xff1a; 目标函数是f(w)&#xff0c;下面是等式约束。通常解法是引入拉格朗日算子&#xff0c;这里使…

2012年全国卷导数题与含约束的多元函数极值问题(KKT条件)

这道题目编的比较好&#xff0c;第一问就构造的特别巧妙 &#xff08;1&#xff09; f(x) f‘(1)e^(x-1) - f(0) x f(1) f(1) - f(0) 1, f(0)1 f(x) f(1)e^(x-1) - f(0)x 1/2x^2 …

运筹学教学|动态规划例题分析(一)

例题1&#xff1a; 问题描述 假设桌子上有n根火柴&#xff0c;我先手取1&#xff0c;2,…,k(k<n)根火柴&#xff0c;之后我的对手也必须取1&#xff0c;2&#xff0c;…k根火柴。双方轮换重复直到最后一根火柴被捡起来。最后一个捡起来火柴的人是输家&#xff0c;那么&…

对约束条件优化问题的理解

以二维空间 R^2 举例 无约束的优化问题注意我在图里画了等高线。此时 在局部极小值点 处的梯度必然为0&#xff0c;比较容易理解。这个梯度为零的条件是局部极小值点的必要条件。这样&#xff0c;优化问题的求解变成了对该必要条件解方程组。 2.带等式约束的优化问题, 与无约束…

数学建模 非线性规划

一.非线性规划模型 1.概念: 如果目标函数或约束条件中包含非线性函数,就称该规划问题为非线性规划问题.一般来说,求解非线性规划问题要比求解线性规划问题困难得多,也不像线性规划问题那样有单纯形法这一通用方法,各个方法都有自己的适用范围 注意:如果线性规划的最优解存在,则…

博弈论中的Stackelberg模型和库恩塔克条件如何通过Matlab求解或者数值分析?

博弈论中的Stackelberg模型和库恩塔克条件如何通过Matlab求解或者数值分析&#xff1f; 下面是两个供应链成员的利润函数&#xff0c;其中p_c和p_b为决策变量&#xff0c;其余参数均在[0,1]之间。此外&#xff0c;b为领导者&#xff0c;c为跟随者。按照逆向归纳法求解可以得到…

拉格朗日乘子库恩塔克条件

拉格朗日乘子法的证明 在学习支持向量机的时候&#xff0c;计算对偶问题时用到了拉格朗日乘子法((Lagrange multiplier method))&#xff0c;回想起高中时使用拉格朗日乘子法求不等式约束条件下的最优化问题时的困惑&#xff0c;虽然一直知道用&#xff0c;但是却不知道为什么…

库恩塔克条件

KKT条件主要涉及凸优化问题&#xff0c;学习SVM的时候求解拉格朗日函数的对偶问题时&#xff0c;需要使用KKT条件来得到最终的。 1、对于无约束问题(unconstrained minimization): 1) 一阶必要条件为&#xff1a; 2) 二阶必要条件为&#xff1a; 即Hessian半正定 2、等式约束问…

卡罗需-库恩-塔克条件

卡罗需&#xff0d;库恩&#xff0d;塔克条件 维基百科&#xff0c;自由的百科全书 在数学中&#xff0c;卡罗需-库恩-塔克条件&#xff08;英文原名: Karush-Kuhn-Tucker Conditions常见别名: Kuhn-Tucker&#xff0c;KKT条件&#xff0c;Karush-Kuhn-Tucker最优化条件&#x…

直观理解KKT条件

直观理解KKT条件 等高线 从等高线讲起。如果我们要优化 f ( x , y ) x 2 y f(x,y)x^2y f(x,y)x2y这个函数&#xff0c;给定约束为&#xff0c; x 2 y 2 1 x^2y^21 x2y21&#xff0c;我们希望在满足约束的情况下使得f最大。也就是说&#xff0c;我们希望找到一个最“上方”…

机器学习中的数学基础 5

优化问题简介 最优化定义 最优化&#xff0c;是应用数学的一个分支。主要研究在特定情况下最大化或最小化某一特定函数或变量。 数学表示&#xff1a; Y Y Y 是 随机变量 X X X 的函数&#xff0c;求 y ^ f θ ( X ) \widehat{y} f_{\theta}(X) y ​fθ​(X) &#xff0…

微信小程序真机测试 Provisional headers are shown 问题解决办法

微信开发工具请求正常&#xff0c;真机调试出现 Provisional headers are shown 图片源自&#xff1a;https://blog.csdn.net/xyphf/article/details/90045286 网上大部分原因为ssl证书问题&#xff0c;使用以下2个ssl证书检测工具 1.https://www.myssl.cn/tools/check-serve…

JS提示框效果

提示框 js事件 //提示确认删除 <a href"javascript:if(confirm(确实要删除该内容吗?))locationhttp://www.google.com">弹出窗口</a> function tusi(txt, fun) {   $(.tusi).remove();    var div $(<div style"background: url(/images/…

图图片

示例图片啊

Sturts

Sturts是什么&#xff1f; Sturts是JSP模式2(MVC)基础上突出实现的一个框架&#xff0c;是使用JSPServlet组成&#xff1b; Sturts框架提供&#xff1a; 标记库&#xff1a;也没黑色记者可以控制&#xff1b;支持国际化处理如:JSP显示为中文&#xff0c;可以转换为英文等...;…

tupian

转载于:https://www.cnblogs.com/yanyiyi/p/8295315.html