拉格朗日KKT条件极值求解
拉格朗日乘数法(等式约束条件极值)
基础用法
设,若 x , y x,y x,y满足 x + 3 y = 5 x y x+3y=5xy x+3y=5xy,求 3 x + 4 y 3x+4y 3x+4y的最小值:
构建拉格朗日函数:
L ( x , y , λ ) = 3 x + 4 y + λ ( x + 3 y − 5 x y ) L(x,y,\lambda)=3x+4y+\lambda(x+3y-5xy) L(x,y,λ)=3x+4y+λ(x+3y−5xy)
分别对 L ( x , y , λ ) L(x,y,\lambda) L(x,y,λ)中的 x , y , λ x,y,\lambda x,y,λ求导,并令偏导数等于0,用于求出拉格朗日函数的驻点.
注意:驻点不一定就是极值点
则得到一下方程组
{ L x ′ = 3 + λ ( 1 − 5 y ) = 0 ( 1 ) L y ′ = 4 + λ ( 3 − 5 x ) = 0 ( 2 ) L λ ′ = x + 3 y + 5 x y = 0 ( 3 ) \begin{cases} L'_x=3 + \lambda(1-5y)=0 &&& (1)\\ L'_y=4 + \lambda(3-5x)=0 &&& (2)\\ L'_\lambda=x+3y+5xy=0 &&& (3)\\ \end{cases} ⎩⎪⎨⎪⎧Lx′=3+λ(1−5y)=0Ly′=4+λ(3−5x)=0Lλ′=x+3y+5xy=0(1)(2)(3)
由上式 ( 1 ) ( 2 ) (1)(2) (1)(2)消去 λ \lambda λ,可求得:
3 x − 1 = 4 y ( 4 ) 3x-1=4y \kern{2em} (4) 3x−1=4y(4)
将 ( 4 ) (4) (4)式带入到 ( 3 ) (3) (3)中求得:
{ x = 1 y = 1 2 或 { x = 1 5 y = − 1 10 \begin{cases} x=1\\ \kern{2em}\\ y=\dfrac{1}{2} \end{cases} \kern{2em} 或 \kern{2em} \begin{cases} x=\dfrac{1}{5}\\ \kern{2em}\\ y=-\dfrac{1}{10}\\ \end{cases} ⎩⎪⎪⎨⎪⎪⎧x=1y=21或⎩⎪⎪⎪⎨⎪⎪⎪⎧x=51y=−101
分别将两组解(也是拉格朗日函数的驻点)带入到 3 x + 4 y 3x+4y 3x+4y中,分别得到:
3 ∗ 1 + 4 ∗ 1 2 = 5 或 3 ∗ 1 5 + 4 ∗ ( − 1 10 ) = 1 5 3*1 + 4 * \dfrac{1}{2}=5\\ 或\\ 3*\dfrac{1}{5} + 4*(-\dfrac{1}{10})=\dfrac{1}{5} 3∗1+4∗21=5或3∗51+4∗(−101)=51
所以最小值为: 1 5 \dfrac{1}{5} 51
多条件情况
例如:在满足条件 g ( x , y ) = 0 ψ ( x , y ) = 0 g(x,y)=0 \kern{1em} \psi(x,y)=0 g(x,y)=0ψ(x,y)=0的条件下,求 f ( x , y ) f(x,y) f(x,y)的极值,可以构建拉格朗日函数:
L ( x , y , λ , η ) = f ( x , y ) + λ g ( x , y ) + η ψ ( x , y ) L(x,y,\lambda,\eta)=f(x,y)+\lambda{g(x,y)}+\eta{\psi(x,y)} L(x,y,λ,η)=f(x,y)+λg(x,y)+ηψ(x,y)
在分别求 x , y , λ , η x,y,\lambda,\eta x,y,λ,η的偏导数,并令其等于0,最终求解方程组,得到 f ( x , y ) f(x,y) f(x,y)的驻点,再带入原方程得到极值
拉格朗日乘数法通用公式定义
等式约束优化一般形式,其中 h k ( x 1 , x 2 , x 3 . . . , x n ) h_k(x_1,x_2,x_3...,x_n) hk(x1,x2,x3...,xn)是一个集合,标示不同的约束条件,也就是上述 L ( x , y , λ , η ) = f ( x , y ) + λ g ( x , y ) + η ψ ( x , y ) L(x,y,\lambda,\eta)=f(x,y)+\lambda{g(x,y)}+\eta{\psi(x,y)} L(x,y,λ,η)=f(x,y)+λg(x,y)+ηψ(x,y)中的函数 g ( x , y ) g(x,y) g(x,y)和 ψ ( x , y ) \psi(x,y) ψ(x,y):
m i n f ( x 1 , x 2 , x 3 . . . , x n ) s . t . h k ( x 1 , x 2 , x 3 . . . , x n ) = 0 k ∈ ( 1 , 2 , 3 , . . . , l ) minf(x_1,x_2,x_3...,x_n)\\ s.t.h_k(x_1,x_2,x_3...,x_n)=0 \kern{2em} k\isin(1,2,3,...,l) minf(x1,x2,x3...,xn)s.t.hk(x1,x2,x3...,xn)=0k∈(1,2,3,...,l)
构造拉格朗日函数,其中 λ k \lambda_k λk标示不同条件的乘子,也就式上述 L ( x , y , λ , η ) = f ( x , y ) + λ g ( x , y ) + η ψ ( x , y ) L(x,y,\lambda,\eta)=f(x,y)+\lambda{g(x,y)}+\eta{\psi(x,y)} L(x,y,λ,η)=f(x,y)+λg(x,y)+ηψ(x,y)中的 λ \lambda λ和 η \eta η:
L ( x 1 , x 2 , x 3 . . . , x n , λ 0 , λ 1 , λ 2 , . . . , λ k ) = f ( x 1 , x 2 , x 3 . . . , x n ) + λ k ∑ k = 0 l h k ( x 1 , x 2 , x 3 . . . , x n ) L(x_1,x_2,x_3...,x_n,\lambda_0,\lambda_1,\lambda_2,...,\lambda_k) = f(x_1,x_2,x_3...,x_n) + \lambda_k\sum_{k=0}^lh_k(x_1,x_2,x_3...,x_n) L(x1,x2,x3...,xn,λ0,λ1,λ2,...,λk)=f(x1,x2,x3...,xn)+λkk=0∑lhk(x1,x2,x3...,xn)
将 x 1 , x 2 , x 3 . . . , x n x_1,x_2,x_3...,x_n x1,x2,x3...,xn用 x i i ∈ ( 1 , 2 , 3 , . . . , n ) x_i \kern{1em} i\isin(1,2,3,...,n) xii∈(1,2,3,...,n), λ 1 , λ 2 , . . . , λ k \lambda_1,\lambda_2,...,\lambda_k λ1,λ2,...,λk用 λ k k ∈ ( 0 , 1 , 2 , . . . , l ) \lambda_k \kern{1em} k\isin(0,1,2,...,l) λkk∈(0,1,2,...,l)标示,上式可以写为:
L ( x i , λ k ) = f ( x i ) + λ k ∑ k = 0 l h k ( x i ) i ∈ ( 1 , 2 , 3 , . . . , n ) k ∈ ( 0 , 1 , 2 , . . . , l ) L(x_i,\lambda_k)=f(x_i)+\lambda_k\sum_{k=0}^lh_k(x_i) \kern{2em} i\isin(1,2,3,...,n) \kern{1em} k\isin(0,1,2,...,l) L(xi,λk)=f(xi)+λkk=0∑lhk(xi)i∈(1,2,3,...,n)k∈(0,1,2,...,l)
建立方程组:
{ Δ L Δ x i = 0 i ∈ ( 1 , 2 , 3 , . . . , n ) Δ L Δ λ k = 0 k ∈ ( 1 , 2 , 3 , . . . , l ) \begin{cases} \dfrac{\varDelta L}{\varDelta x_i}=0 \kern{2em} i\isin(1,2,3,...,n)\\ \\ \dfrac{\varDelta L}{\varDelta \lambda_k}=0 \kern{2em} k\isin(1,2,3,...,l) \end{cases} ⎩⎪⎪⎪⎨⎪⎪⎪⎧ΔxiΔL=0i∈(1,2,3,...,n)ΔλkΔL=0k∈(1,2,3,...,l)
根据上诉方程组,求出驻点,并带入到原函数 f ( x ) f(x) f(x)当中验证,并最终得到极值点.
KKT(不等式约束条件极值)
不等式条件极值求解的思路是将不等式约束转换为等式约束,如有一下求解问题:
m i n f ( x i ) i ∈ ( 0 , 1 , 2 , . . . , n ) s . t . g k ( x i ) ≤ 0 i ∈ ( 0 , 1 , 2 , . . . , n ) k ∈ ( 0 , 1 , 2 , . . . , l ) minf(x_i) \kern{1em} i\isin(0,1,2,...,n)\\ s.t.g_k(x_i)\le0 \kern{1em} i\isin(0,1,2,...,n) \kern{1em} k\isin(0,1,2,...,l) minf(xi)i∈(0,1,2,...,n)s.t.gk(xi)≤0i∈(0,1,2,...,n)k∈(0,1,2,...,l)
将上式的不等式约束添加一个松弛变量,让不等式变成等式,由于 g k ( x i ) ≤ 0 g_k(x_i)\le0 gk(xi)≤0,需要在不等式左边加上一个非负数,因此松弛变量为 a k 2 a_k^2 ak2,这样就不需要在引入新的约束 a k ≥ 0 a_k \ge0 ak≥0:
h k ( x i , a k ) = g k ( x i ) + a k 2 = 0 h_k(x_i,a_k) = g_k(x_i)+a_k^2=0 hk(xi,ak)=gk(xi)+ak2=0
则,转换后,原来的不等式约束可以写成:
m i n f ( x i ) i ∈ ( 0 , 1 , 2 , . . . , n ) s . t . h k ( x i , a k ) = g k ( x i ) + a k 2 = 0 i ∈ ( 0 , 1 , 2 , . . . , n ) k ∈ ( 0 , 1 , 2 , . . . , l ) minf(x_i) \kern{1em} i\isin(0,1,2,...,n)\\ s.t.h_k(x_i,a_k)=g_k(x_i)+a_k^2=0 \kern{1em} i\isin(0,1,2,...,n) \kern{1em} k\isin(0,1,2,...,l) minf(xi)i∈(0,1,2,...,n)s.t.hk(xi,ak)=gk(xi)+ak2=0i∈(0,1,2,...,n)k∈(0,1,2,...,l)
根据等式约束条件极值的求法,可以写出拉格朗日函数为:
L ( x i , λ k , a k ) = f ( x i ) + λ k ∑ k = 0 l [ g k ( x i ) + a k 2 ] L(x_i,\lambda_k,a_k)=f(x_i)+\lambda_k\sum_{k=0}^l[g_k(x_i)+a_k^2] L(xi,λk,ak)=f(xi)+λkk=0∑l[gk(xi)+ak2]
建立方程组:
{ Δ L Δ x i = 0 i ∈ ( 0 , 1 , 2 , . . . , n ) Δ L Δ λ k = 0 k ∈ ( 0 , 1 , 2 , . . . , l ) Δ L Δ a k = 0 k ∈ ( 0 , 1 , 2 , . . . , l ) \begin{cases} \dfrac{\varDelta L}{\varDelta x_i}=0 \kern{1em} i\isin(0,1,2,...,n)\\ \\ \dfrac{\varDelta L}{\varDelta\lambda_k}=0 \kern{1em} k\isin(0,1,2,...,l)\\ \\ \dfrac{\varDelta L}{\varDelta a_k}=0 \kern{1em} k\isin(0,1,2,...,l) \end{cases} ⎩⎪⎪⎪⎪⎪⎪⎪⎪⎪⎨⎪⎪⎪⎪⎪⎪⎪⎪⎪⎧ΔxiΔL=0i∈(0,1,2,...,n)ΔλkΔL=0k∈(0,1,2,...,l)ΔakΔL=0k∈(0,1,2,...,l)
根据上述方程组最终求解得到极值点
等式约束&条件约束极值
条件极值问题可写为:
m i n f ( x i ) i ∈ ( 0 , 1 , 2 , . . . , n ) s . t . h k ( x i ) = 0 i ∈ ( 0 , 1 , 2 , . . . , n ) k ∈ ( 1 , 2 , 3 , . . . , l ) s . t . g m ( x i ) ≤ 0 i ∈ ( 0 , 1 , 2 , . . . , n ) m ∈ ( 0 , 1 , 2 , . . . , z ) minf(x_i) \kern{1em} i\isin(0,1,2,...,n)\\ s.t.h_k(x_i)=0 \kern{2em} \kern{1em} i\isin(0,1,2,...,n) \kern{1em} k\isin(1,2,3,...,l)\\ s.t.g_m(x_i)\le0 \kern{1em} i\isin(0,1,2,...,n) \kern{1em} m\isin(0,1,2,...,z) minf(xi)i∈(0,1,2,...,n)s.t.hk(xi)=0i∈(0,1,2,...,n)k∈(1,2,3,...,l)s.t.gm(xi)≤0i∈(0,1,2,...,n)m∈(0,1,2,...,z)
可转换为:
m i n f ( x i ) i ∈ ( 0 , 1 , 2 , . . . , n ) s . t . h k ( x i ) = 0 i ∈ ( 0 , 1 , 2 , . . . , n ) k ∈ ( 1 , 2 , 3 , . . . , l ) s . t . ψ ( x i , a m ) = g m ( x i ) + a m 2 = 0 i ∈ ( 0 , 1 , 2 , . . . , n ) m ∈ ( 0 , 1 , 2 , . . . , z ) minf(x_i) \kern{1em} i\isin(0,1,2,...,n)\\ s.t.h_k(x_i)=0 \kern{2em} \kern{1em} i\isin(0,1,2,...,n) \kern{1em} k\isin(1,2,3,...,l)\\ s.t.\psi(x_i,a_m)=g_m(x_i)+a_m^2 = 0 \kern{1em} i\isin(0,1,2,...,n) \kern{1em} m\isin(0,1,2,...,z) minf(xi)i∈(0,1,2,...,n)s.t.hk(xi)=0i∈(0,1,2,...,n)k∈(1,2,3,...,l)s.t.ψ(xi,am)=gm(xi)+am2=0i∈(0,1,2,...,n)m∈(0,1,2,...,z)
拉格朗日函数:
L ( x i , λ k , η m , a m ) = f ( x i ) + λ k ∑ k − 0 l h k ( x i ) + η m ∑ m = 0 z [ g m ( x i ) + a m 2 ] i ∈ ( 0 , 1 , 2 , . . . , n ) k ∈ ( 1 , 2 , 3 , . . . , l ) m ∈ ( 0 , 1 , 2 , . . . , z ) L(x_i,\lambda_k,\eta_m,a_m)=f(x_i)+\lambda_k\sum_{k-0}^lh_k(x_i)+\eta_m\sum_{m=0}^z[g_m(x_i)+a_m^2]\\ \kern{1em} i\isin(0,1,2,...,n) \kern{1em} k\isin(1,2,3,...,l) \kern{1em} m\isin(0,1,2,...,z) L(xi,λk,ηm,am)=f(xi)+λkk−0∑lhk(xi)+ηmm=0∑z[gm(xi)+am2]i∈(0,1,2,...,n)k∈(1,2,3,...,l)m∈(0,1,2,...,z)
建立方程组:
{ Δ L Δ x i = 0 i ∈ ( 0 , 1 , 2 , . . . , n ) Δ L Δ λ k = 0 k ∈ ( 0 , 1 , 2 , . . . , l ) Δ L Δ η m = 0 m ∈ ( 0 , 1 , 2 , . . . , z ) Δ L Δ a m = 0 m ∈ ( 0 , 1 , 2 , . . . , z ) \begin{cases} \dfrac{\varDelta L}{\varDelta x_i}=0 \kern{1em} i\isin(0,1,2,...,n)\\ \\ \dfrac{\varDelta L}{\varDelta \lambda_k}=0 \kern{1em} k\isin(0,1,2,...,l)\\ \\ \dfrac{\varDelta L}{\varDelta \eta_m}=0 \kern{1em} m\isin(0,1,2,...,z)\\ \\ \dfrac{\varDelta L}{\varDelta a_m}=0 \kern{1em} m\isin(0,1,2,...,z)\\ \end{cases} ⎩⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎨⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎧ΔxiΔL=0i∈(0,1,2,...,n)ΔλkΔL=0k∈(0,1,2,...,l)ΔηmΔL=0m∈(0,1,2,...,z)ΔamΔL=0m∈(0,1,2,...,z)
求解方程组,得到极值点
拉格朗日KKT条件极值求解相关推荐
- 多元函数微分学条件极值(拉格朗日乘数法)求解技巧总结
看到多元函数条件极值的题目,常用拉格朗日乘数法对号入座.但有时候如坐针毡,因为这种看似万能的方法计算量太大了.解方程解的生无可恋是常态.所以我总结了一些解条件极值的小技巧,希望对大家有所帮助. 总的来 ...
- 内点惩罚函数法matlab_拉格朗日乘数法求解多元条件极值问题
点击蓝字,关注废柴姐姐 拉格朗日乘数法 " 一种不直接依赖消元法而求解条件极值问题的有效方法 二元函数入手 我们从 皆为二元函数这一简单情况人手. 欲求函数 的极值,其中受条件 的限制. ...
- 拉格朗日乘数法求解技巧2
lagrange乘数法的求解其实是有技巧的. 一般就是两个办法来求解.第一个就是,首先我们用前面的三个表达式,来看出他们之间是不是存在比例关系.这样的话就已经把未知数化简了非常多了.然后还有一个就是可 ...
- 二次规划问题的KKT 条件求解方法
专栏文章汇总 文章结构如下: 1: 等式约束优化问题 2: 不等式约束优化问题 3: 一个例子 注:本文来自台湾周志成老师<线性代数>及其博客 Karush-Kuhn-Tucker (KK ...
- 判断kkt条件的例题_kkt条件例题求解
◎ Karush-Kuhn-Tucker条件, KKT条件/KKT点 ◎称 为对... 2 1 的KKT条件,求出最优解及其相应的Lagrange乘子. (b) (6分) 写出求解(a)中问题的任意两 ...
- 个人总结 :SVM 与 拉格朗日函数、对偶问题 和 KKT条件 以及 SMO算法
提到SVM,可能首先想到的是令人头大的公式推导,通过确定思想,公式等式转化,拉格朗日函数,求梯度,约束变换,KKT.SMO...最后终于得到我们的最优解.而在这其中,不免作为核心的就是拉格朗日函数以及 ...
- 数值分析-拉格朗日插值公式的定义与求解
目录 一.引言 二.插值问题 三.拉格朗日插值公式 1. 拉格朗日插值多项式的定义 2. 拉格朗日插值多项式的求解 3. 拉格朗日插值多项式的误差分析 四.应用举例 1. 插值函数的构造 2. 插值函 ...
- 拉格朗日松弛求解整数规划浅析(附Python代码实例)
运筹优化博士,只做原创博文.更多关于运筹学,优化理论,数据科学领域的内容,欢迎关注我的知乎账号:https://www.zhihu.com/people/wen-yu-zhi-37 拉格朗日松弛是一种 ...
- 【数学基础】运筹学:拉格朗日乘子法和KKT条件(上)
引言 在求解最优化问题中,拉格朗日乘子法(Lagrange Multiplier)和KKT(Karush Kuhn Tucker)条件是两种最常用的方法.通常,对于等式约束问题,采用拉格朗日乘子法.对 ...
最新文章
- python批量重命名指定目录下所有文件的后缀名
- python爬虫学习(二) 简易网页爬取
- nagios系列(七)nagios通过自定义脚本的方式监控mysql主从同步
- 『数据库』 E-R图(实体联系图)你都不会,你设计什么数据库?
- Shell编程—企业生产案例
- 解决TypeError: string indices must be integers, not str
- preg使用。还是一样,只是个人记录,不放博客园首页
- java 元祖_在java中对元组列表进行排序的有效方法
- 解决zabbix图形乱码
- exfat最佳单元大小_2020年Window系统重装最佳方式
- winform通过restsharp调用api接口登录及其它接口
- 深度学习 | MATLAB卷积神经网络原理描述
- SSD测试专题(二)
- 【世界最佳旅游win7主题】
- 学历真的是衡量一个人的首要条件吗?
- lua -- class
- Unable to apply any optimisations to advised method 信息解析
- MCNP5 粒子输运 常见问题汇总与踩坑记录(导火索:死循环)
- oracle ins ctx.mk,(原创)RHEL/CentOS 6.x 64位安装Oracle11gR2 64位出现ins_ctx.mk报错解决...
- Direct3D(D3D)简介