优化问题的拉格朗日Lagrange对偶法原理

2023-11-20 16:10

本文主要是介绍优化问题的拉格朗日Lagrange对偶法原理,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

首先我们定义一般形式的求解x的优化问题:

\\ \text{ Minimize }\ f_o(x) \\ f_i(x)\leq 0, i=1,...,m \\ h_j(x)= 0, j=1,...n \\

  • f_o(x)表示优化的目标函数,上述为最小优化,实际上最大优化可以改写为-f_o(x)的形式
  • f_i(x)\leq 0表示第i个不等式约束
  • h_j(x)=0表示等式约束

1. Lagrange对偶问题

上述优化问题的拉格朗日Lagrange对偶法求解,是将上述带约束的目标优化问题改写为如下无约束的Lagrange函数式子。

L(x,\lambda ,\nu )=f_o(x) + \sum_i^m \lambda_i f_i(x) + \sum_j^n \nu_j h_j(x)

上述Lagrange函数式子存在如下对偶函数,其是Lagrange函数关于x取最小值,即:

g(\lambda ,\nu) = \underset{x}{inf}(L(x,\lambda ,\nu ))=\underset{x}{inf}(f(x) + \sum_i^m \lambda_i f_i(x) + \sum_j^n \nu_j h_j(x))

对偶函数是关于\lambda ,\nu的函数,很显然其是原来Lagrange函数式子的下界,假设优化问题存在最优解x^*,当\lambda_i\geq 0时,此时存在最优目标大于对偶函数。

f_o(x^*)>L(x^*,\lambda ,\nu )=f_o(x^*) + \sum_i^m \lambda_i f_i(x^*) + \sum_j^n \nu_j h_j(x^*)>=g(\lambda ,\nu)

Lagrange对偶法即是通过最大化原问题Lagrange对偶函数,从而逼近原问题的下界来求解原问题最优解,因为\lambda ,\nu的参数远小于原问题的求解参数,因此转换为对偶问题后,求解更为简单。

\\ \text{ Maximize }\ g(\lambda, \nu) \\ \lambda_i \geq 0, i=1,...,m

2. 强弱对偶性

接下来的问题是通过对偶函数得到下界d^*同原问题的最优解p^*之间的差距是多少?当对偶函数得到下界同原问题的最优解相等时,称之为强对偶性,反之称为弱对偶性。而这个差值称之为最优对偶间距

Slater约束准则给出为强对偶性成立的条件:

  • 原问题f_o(x)是凸问题
  • 存在内点使得所有的不等式约束严格成立即f_i(x) < 0,如果f_i(x)是仿射不等式时取等于也是可行的。

3. 如何转换为对偶函数

因为对偶函数g(\lambda ,\nu )是Lagrange函数关于x取最小值,假设L(x,\lambda ,\nu )是关于x的凸函数,且存在关于x的最小值,此时存在\hat{x}使得关于x的偏导数为0,则存在对偶函数为g(\lambda, \nu)=L(\hat{x},\lambda, \nu)

\frac{\partial }{\partial x}L(\hat{x},\lambda, \nu)=0

假设为对偶函数为g(\lambda, \nu)=L(\hat{x},\lambda, \nu)也是关于\lambda, \nu可导,此时最优值\lambda^*, \nu^*存在

\\ \frac{\partial }{\partial \lambda_i}g(\lambda^*, \nu^*)=f_i(\hat{x}) \leq 0 \\ \frac{\partial }{\partial \nu_j}g(\lambda^*, \nu^*)=h_j(\hat{x})=0

此外最优值\lambda^*, \nu^*要使对偶函数g(\lambda, \nu)存在最大值,由于\lambda_i\geq 0,因此:

\lambda_if_i(\hat{x})=0

上述五个条件构成了在Slater约束准则下求解优化问题最优解\hat{x}存在的KKT条件:

\begin{cases} \frac{\partial }{\partial x}L(\hat{x},\lambda, \nu)=0 \\ \frac{\partial }{\partial \lambda_i}g(\lambda^*, \nu^*)=f_i(\hat{x}) \leq 0 \\ \frac{\partial }{\partial \nu_j}g(\lambda^*, \nu^*)=h_j(\hat{x})=0 \\ \lambda_if_i(\hat{x})=0 \\ \lambda_i\geq 0 \end{cases}

例子1:线性规划问题

首先我们定义一个一般性的线性规划问题,其中x是表示求解向量[x_1,x_2,...,x_n],该问题可解是指存在唯一解。

\\ \text{ Minimize }\ c^T\cdot x \\ \text{subject: }A\cdot x \leq b

Lagrange函数式子表示为:

L(x,\lambda )=c^Tx + \lambda(Ax-b)=-\lambda b + (c^T + \lambda A)x

Lagrange函数仅当c^T + \lambda A=0时,才是有界的,此时对偶函数为g(\lambda )=-\lambda b,否则为负无穷,因此原问题可以转换为求解对偶问题g(\lambda )=-\lambda b的最大值,此时Slater约束准则,对偶问题的解也是原问题的最优解。

\\ \text{ Maximize }\ -\lambda b \\ \text{subject: }c^T + \lambda A=0 ,\ \lambda \geq 0

例子2:最小二乘法

考虑以下问题:

\\ \text{ Minimize }\ x^T\cdot x \\ \text{subject: }A\cdot x = b

Lagrange函数式子表示为:

L(x,\nu)=x^Tx + \nu^T(Ax-b)=-b\nu^T + x^Tx + \nu^T Ax

Lagrange函数关于x是二阶可导的凸函数,存在最小值的解\hat{x}

\frac{\partial }{\partial x}L(\hat{x},\lambda, \nu)=2\hat{x}+A^T\nu =0\rightarrow \hat{x}=-\frac{1}{2}A^T\nu

此时对偶函数为下式,此时原问题被转换为一个无约束的对偶问题的求解。

g(\nu)=L(\hat{x}, \nu)=\hat{x}^T \hat{x} + \nu^T A\hat{x}-b^T\nu =-\frac{1}{4}\nu^T AA^T\nu-b^T\nu

4. 最优问题的转换

接下来我们考虑更为通用的优化问题形式,之前讨论了不等式约束中的大于和小于可以通过变换符号进行调整,实际上我们可以通过新增求解变量x_i^s将不等式约束转换为等式约束:

\\ \text{ Minimize }\ f_o(x) \\ f_i(x) + x_i^s = 0, i=1,...,m \\ h_j(x)= 0, j=1,...n \\ x_i^s\geq 0

结合上述对偶问题的转换,我们可以将通用的优化问题形式转换为等式约束问题,甚至无约束的问题,下一篇我们将介绍等式约束优化问题和无约束优化问题的通用求解方法。

这篇关于优化问题的拉格朗日Lagrange对偶法原理的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/395845

相关文章

Golang HashMap实现原理解析

《GolangHashMap实现原理解析》HashMap是一种基于哈希表实现的键值对存储结构,它通过哈希函数将键映射到数组的索引位置,支持高效的插入、查找和删除操作,:本文主要介绍GolangH... 目录HashMap是一种基于哈希表实现的键值对存储结构,它通过哈希函数将键映射到数组的索引位置,支持

Spring Boot中JSON数值溢出问题从报错到优雅解决办法

《SpringBoot中JSON数值溢出问题从报错到优雅解决办法》:本文主要介绍SpringBoot中JSON数值溢出问题从报错到优雅的解决办法,通过修改字段类型为Long、添加全局异常处理和... 目录一、问题背景:为什么我的接口突然报错了?二、为什么会发生这个错误?1. Java 数据类型的“容量”限制

关于MongoDB图片URL存储异常问题以及解决

《关于MongoDB图片URL存储异常问题以及解决》:本文主要介绍关于MongoDB图片URL存储异常问题以及解决方案,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐... 目录MongoDB图片URL存储异常问题项目场景问题描述原因分析解决方案预防措施js总结MongoDB图

SpringBoot项目中报错The field screenShot exceeds its maximum permitted size of 1048576 bytes.的问题及解决

《SpringBoot项目中报错ThefieldscreenShotexceedsitsmaximumpermittedsizeof1048576bytes.的问题及解决》这篇文章... 目录项目场景问题描述原因分析解决方案总结项目场景javascript提示:项目相关背景:项目场景:基于Spring

解决Maven项目idea找不到本地仓库jar包问题以及使用mvn install:install-file

《解决Maven项目idea找不到本地仓库jar包问题以及使用mvninstall:install-file》:本文主要介绍解决Maven项目idea找不到本地仓库jar包问题以及使用mvnin... 目录Maven项目idea找不到本地仓库jar包以及使用mvn install:install-file基

usb接口驱动异常问题常用解决方案

《usb接口驱动异常问题常用解决方案》当遇到USB接口驱动异常时,可以通过多种方法来解决,其中主要就包括重装USB控制器、禁用USB选择性暂停设置、更新或安装新的主板驱动等... usb接口驱动异常怎么办,USB接口驱动异常是常见问题,通常由驱动损坏、系统更新冲突、硬件故障或电源管理设置导致。以下是常用解决

Mysql如何解决死锁问题

《Mysql如何解决死锁问题》:本文主要介绍Mysql如何解决死锁问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录【一】mysql中锁分类和加锁情况【1】按锁的粒度分类全局锁表级锁行级锁【2】按锁的模式分类【二】加锁方式的影响因素【三】Mysql的死锁情况【1

SpringBoot内嵌Tomcat临时目录问题及解决

《SpringBoot内嵌Tomcat临时目录问题及解决》:本文主要介绍SpringBoot内嵌Tomcat临时目录问题及解决,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,... 目录SprinjavascriptgBoot内嵌Tomcat临时目录问题1.背景2.方案3.代码中配置t

SpringBoot使用GZIP压缩反回数据问题

《SpringBoot使用GZIP压缩反回数据问题》:本文主要介绍SpringBoot使用GZIP压缩反回数据问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录SpringBoot使用GZIP压缩反回数据1、初识gzip2、gzip是什么,可以干什么?3、Spr

MySQL索引的优化之LIKE模糊查询功能实现

《MySQL索引的优化之LIKE模糊查询功能实现》:本文主要介绍MySQL索引的优化之LIKE模糊查询功能实现,本文通过示例代码给大家介绍的非常详细,感兴趣的朋友一起看看吧... 目录一、前缀匹配优化二、后缀匹配优化三、中间匹配优化四、覆盖索引优化五、减少查询范围六、避免通配符开头七、使用外部搜索引擎八、分