关于拉格朗日对偶问题中对偶性的理解
2016-07-01 23:04
405 查看
首先说明本文讨论用的符号,拉格朗日函数:
L(x,λ,ν)=f0(x)+∑λifi(x)+∑νihi(x)
这个理解来自于斯坦福的课程——凸优化:
“我们注意到标准形式线性规划和不等式形式线性规划以及它们的对偶问题之间的有趣的对称性:标准形式线性规划的对偶问题是只含有不等式约束的线性规划问题,反之亦然。”
为了完整性,下面列出以上提到的两个线性规划问题。
标准形式线性规划:
mins.t.cTxAx=bx≥0
不等式形式线性规划:
maxs.t.−bTνATν+c≥0
该理解说明了对偶问题真的具有对偶性,但是并没有说明对偶问题具有对偶性的原因。接下来将说明这一点。
这个理解同样来自于斯坦福的课程——机器学习:
一句话总结:调换对偶问题中对拉格朗日函数取最大化、最小化的顺序即可得到与原问题等价的优化问题。即,对偶问题是对拉格朗日函数先取最小化,再取最大化;而原问题则是对拉格朗日函数先取最大化,再取最小化。
为了对比两优化问题之间的对偶性,我先列出对偶问题的形式:
gd(λ,ν)=minxL(x,λ,ν)d∗=maxλ≥0,νgd(λ,ν)
其中下标d表示对偶问题。考虑对换取最小化和最大化的顺序:
gp(x)=maxλ≥0,νL(x,λ,ν)p∗=minxgp(x)
其中下标p表示原问题。
定理:上式中p∗就是原问题的最优解。
证明:当x不满足约束条件时:
fi(x)>0⇒gp(x)=∞
只要对应的λi取无穷大即可。
hi(x)≠0⇒gp(x)=∞
只要对应的νi取无穷大或无穷小即可。
当x满足约束条件时:
hi(x)=0,所以∑νihi(x)=0;fi(x)≤0,所以为了使gp(x)最大化,则必须有∑λifi(x)=0,因此gp(x)=f0(x)。总结得:
gp(x)={∞f0(x)x不满足约束条件else
因此p∗为原问题最优解。以上,证毕。
L(x,λ,ν)=f0(x)+∑λifi(x)+∑νihi(x)
对偶问题的对偶性体现
这个理解来自于斯坦福的课程——凸优化:“我们注意到标准形式线性规划和不等式形式线性规划以及它们的对偶问题之间的有趣的对称性:标准形式线性规划的对偶问题是只含有不等式约束的线性规划问题,反之亦然。”
为了完整性,下面列出以上提到的两个线性规划问题。
标准形式线性规划:
mins.t.cTxAx=bx≥0
不等式形式线性规划:
maxs.t.−bTνATν+c≥0
该理解说明了对偶问题真的具有对偶性,但是并没有说明对偶问题具有对偶性的原因。接下来将说明这一点。
对偶问题具有对偶性的原因
这个理解同样来自于斯坦福的课程——机器学习:一句话总结:调换对偶问题中对拉格朗日函数取最大化、最小化的顺序即可得到与原问题等价的优化问题。即,对偶问题是对拉格朗日函数先取最小化,再取最大化;而原问题则是对拉格朗日函数先取最大化,再取最小化。
为了对比两优化问题之间的对偶性,我先列出对偶问题的形式:
gd(λ,ν)=minxL(x,λ,ν)d∗=maxλ≥0,νgd(λ,ν)
其中下标d表示对偶问题。考虑对换取最小化和最大化的顺序:
gp(x)=maxλ≥0,νL(x,λ,ν)p∗=minxgp(x)
其中下标p表示原问题。
定理:上式中p∗就是原问题的最优解。
证明:当x不满足约束条件时:
fi(x)>0⇒gp(x)=∞
只要对应的λi取无穷大即可。
hi(x)≠0⇒gp(x)=∞
只要对应的νi取无穷大或无穷小即可。
当x满足约束条件时:
hi(x)=0,所以∑νihi(x)=0;fi(x)≤0,所以为了使gp(x)最大化,则必须有∑λifi(x)=0,因此gp(x)=f0(x)。总结得:
gp(x)={∞f0(x)x不满足约束条件else
因此p∗为原问题最优解。以上,证毕。
相关文章推荐
- MachineLearning01_DecisionTree(决策树)
- 关于fragment到底是否可见的问题 以及 什么时候调用才能真正意义上实现可见加载
- Python函数讲解
- LOL匹配算法
- 自定义View:点、图片随手指而移动的View
- 详解Android Activity的四种launchMode
- 欢迎使用CSDN-markdown编辑器
- 过滤器Filter
- 手写体识别(基于Opencv)
- STM32boot启动
- 172. Factorial Trailing Zeroes
- 《Windows程序设计》读书笔七 鼠标
- Android java传递int类型数组给C
- 【转载】深入探讨透视投影坐标变换
- HDU5697 刷题计划 dp+最小乘积生成树
- java数据类型
- 做人的原则
- 进击的码农-6
- 自己写的自定义View,M收音机频率view,85MHz-108MHz。
- Qt 多线程与数据库操作需要注意的几点问题(QSqlDatabase对象只能在当前线程里使用)