拉格朗日乘子法以及KKT条件

拉格朗日乘子法以及KKT条件

拉格朗日乘子法是一种优化算法,主要用来解决约束优化问题。他的主要思想是通过引入拉格朗日乘子来将含有n个变量和k个约束条件的约束优化问题转化为含有n+k个变量的无约束优化问题。

其中,利用拉格朗日乘子法主要解决的问题为:

等式的约束条件和不等式的条件约束。

 

拉格朗日乘子的背后的数学意义是其为约束方程梯度线性组合中每个向量的系数。

等约束条件的解决方法不在赘述。

对于非等约束条件的求解,需要满足KKT条件才能进行求解。下面对于KKT条件进行分析。

不等式约束优化问题:

<span>拉格朗日乘子法以及KKT条件</span>

得到拉格朗日乘子法的求解方程:

<span>拉格朗日乘子法以及KKT条件</span>

给出KKT条件:

<span>拉格朗日乘子法以及KKT条件</span>

 

实际上,为什么要给出KKT条件?这里涉及到对偶问题。

我们引入拉格朗日函数L(x,α,β)将有约束的优化问题转换为无约束的优化问题,然后对原问题的参数求导,获得使拉格朗日函数最小的拉格朗日对偶函数g(α,β),最后使得对偶函数最大的问题则成为原问题的对偶问题。(对偶函数给出了主问题最优解的下界。那么下界最大是什么,这就是主问题的对偶问题)

因此对于上面拉格朗日乘子法问题的描述表达为:

<span>拉格朗日乘子法以及KKT条件</span>

但其实是仍然个很难解决的问题,因为我们要先解决不等式约束的max问题,然后再在x上求最小值。怎么办呢?如果能把顺序换一下,先解决关于x的最小值,在解决关于α、β的不等式约束问题就好了。即,

<span>拉格朗日乘子法以及KKT条件</span>

假设原问题为p,对偶问题为d,事实上,p和d并不完全相等,此处含有一个性质:弱对偶性

即:

<span>拉格朗日乘子法以及KKT条件</span>

而他两个的差即为对偶间隙

解释:大家想一下,函数L中最大值中最小的一个总比最小值中最大的那一个要大,也就是对偶问题提供了原问题最优值的一个下界。

但是大家想,我们是想通过对偶问题求解原问题的最优解,所以只有当二者相等时才可能将原问题转化成对偶问题进行求解。当然,当满足一定条件的情况下,便有p=d。而这个条件便是 slater条件和KTT条件

在凸优化理论中,有一个Slater定理,当这个定理满足,结合KKT条件,那么对偶间隙就会消失,就是强对偶性成立。

<span>拉格朗日乘子法以及KKT条件</span>

 

其中对于KKT条件的KKT因子为什么需要大于等于0不太好理解。

 

 <span>拉格朗日乘子法以及KKT条件</span>

我的理解:如上,只有当大于等于0的时候,L的取值才能有最大值,即:

<span>拉格朗日乘子法以及KKT条件</span>这一步才有值。

当然这个只是我个人的理解吧,理论上详细的证明参考《数值优化》-Jorge Nocedal  第12章

当然它上面的公式:

<span>拉格朗日乘子法以及KKT条件</span>

<span>拉格朗日乘子法以及KKT条件</span>

都是基于

<span>拉格朗日乘子法以及KKT条件</span>

这样一个假设,不过我们一般假设的约束条件是小于等于0,所以看上去形式有点不一样,其实道理都一样的。

 

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/119460.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • ya系列圆振动筛_L型厨房设计好不好

    ya系列圆振动筛_L型厨房设计好不好‘资料下载链接’:https://download.csdn.net/download/dwf1354046363/21778034YAH2460型圆振动筛设计摘要目前我国各种选煤厂使用的设备中,振动筛(筛分机)是问题较多、维修量较大的设备之一。这些问题突出表现在筛箱断梁、裂帮、稀油润滑的箱式振动器漏油、齿轮打齿、轴承温升过高、噪声过大等问题,同时伴有传动带跳带、断带等故障。这类问题直接影响了振动筛(筛分机)的使用寿命,严重影响了生产。YAH—2460型圆振动筛可以很好的解决此类问题,因此本

    2022年10月2日
    2
  • 1.23 lseek函数

    1.23 lseek函数参考:牛客网C++高薪求职项目《Linux高并发服务器开发》1.22read、write函数专属优惠链接:https://www.nowcoder.com/courses/cover/live/504?coupon=AvTPnSG

    2022年6月24日
    26
  • ubuntu 主题

    ubuntu 主题ubuntu的Mac主题——[链接地址]

    2022年9月23日
    2
  • linux 中的 nohup 命令(设置后台进程): nohup: ignoring input and appending output to ‘nohup.out’[通俗易懂]

    linux 中的 nohup 命令(设置后台进程): nohup: ignoring input and appending output to ‘nohup.out’[通俗易懂]一、Linux下使用nohupUnix/Linux下一般比如想让某个程序在后台运行,很多都是使用&amp;在程序结尾来让程序自动运行。比如我们要运行weblogic在后台:./startWebLogic.sh&amp;但是加入我们很多程序并不象weblogic一样做成守护进程,可能我们的程序只是普通程序而已,一般这种程序使用&amp;结尾。但是如果终端关闭,那么程序也…

    2022年5月31日
    1.8K
  • linux tar压缩文件命令,tar打包压缩文件命令

    linux tar压缩文件命令,tar打包压缩文件命令tar命令tar命令用于将多个文件合成1个文件,wiki中把这个命令和cpio、shar等一起叫做archive文件,个人理解是归档,合成一个文件,后就可以用gzip、bz2、xz等工具进行压缩,同时也能方便在各个计算机间传输,有点类似windows下共享的zip文件。wiki上这个图比较形象,tar把零散的文件合拢,gzip把合拢的文件压缩。一、命令语法tar[选项…][FILE]…..

    2022年5月22日
    47
  • redis实现 spring-redis-data初学习

    redis实现 spring-redis-data初学习

    2021年9月9日
    55

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号