【Convex Optimization Stanford】Lec5. Duality 对偶问题

【Convex Optimization Stanford】Lec5. Duality 对偶问题

前言

我们总在追寻爱情的本质,追寻心动的起源,总在寻找真爱,可是真爱是什么,每个人的标准都不一样,我们又如何才能找到呢?

共轭函数的性质:

仿射包的定义和性质:

矩阵的列空间 R ( A ) \mathcal{R}(A) R(A):

拉格朗日对偶

一开始的讨论并非一个凸优化问题,仅讨论对于一个一般的优化问题,不一定是凸的。




拉格朗日对偶与共轭函数

拉格朗日对偶问题

弱对偶与强对偶

约束资格

定义:

在凸优化问题中,保持该问题和其对偶问题是强对偶的条件称为约束资格。(constraint qualification)

Slater资格约束

涉及的概念

  • 严格可行点(strict feasible point):
    指的是严格满足所有优化问题约束条件的点。并且要求该点在可行域的 D \mathcal{D} D的内部,
  • 内部(int)和相对内部(relint):

省流版

  1. 可行域 D \mathcal{D} D内存在至少一个严格可行点
  2. 仅针对凸优化问题

可判断满足KKT条件。且能保证原问题一定有最优解。

注意:条件可放宽为:

  1. 可行域 D \mathcal{D} D的相对内部存在至少一个严格可行点
  2. 该点对于线性不等式不需要严格
  3. 凸优化问题

一些例子

LP

QP

省流版

  1. LP问题,除非原问题与对偶问题没有可行解,否则 p ∗ = d ∗ p^*=d^* p∗=d∗
  2. QP问题永远满足 p ∗ = d ∗ p^*=d^* p∗=d∗

非凸问题的强对偶情况

几何差值法


KKT条件

即:

如果一个问题满足强对偶,且 x , λ , v x,\lambda, \mathcal{v} x,λ,v分别是原问题和对偶问题的最优解,则一定满足以下四个条件:

  1. 满足原始的约束条件
  2. 满足对偶约束
  3. 满足互补松弛
  4. 拉格朗日函数对x的梯度等于0

强对偶+最优(原函数+对偶函数)---》KKT性质

互补松弛项

省流版:就是所有不等式项约束的加权和为0,才能让 L ( x ∗ , λ ∗ , v ∗ ) = f 0 ( x ∗ ) \mathcal{L}(x^*,\lambda^*, \mathcal{v}^*)=f_0(x^*) L(x∗,λ∗,v∗)=f0(x∗)。

KKT在凸优化问题的性质

凸优化问题+满足KKT条件-----》最优解

需要说明的是:第四条件之所以能推出这个的原因,是因为该问题为凸优化问题,则所有的函数 f i ( x ) f_i(x) fi(x)都是凸函数,因此其线形组合也是凸函数,即拉格朗日函数是凸函数,因此其全局只有一个最优点,且该最优点就是全局最优点。

最后这个KKT和Slater条件的关系,因为Slater条件如果满足,则说明该凸优化问题是一个强对偶问题,且原函数有最优值,因此对于一个 x x x,只要能找到一对 λ , v \lambda, \mathcal{v} λ,v,使得他们满足KKT条件,则他们一定是最优的。实际上,只用到了Slater条件中的凸优化问题和一定有解的两个性质,强对偶性实际上并没有用上,只是强对偶性用于作应证。

扰动和敏感性分析



对偶与问题重构

通常的方式:

  1. 引入新的变量或等式约束
  2. 将显式约束改为隐式或反之亦反
  3. 变换目标函数或限制函数的形式

引入新变量并加入等式限制

大概意思就是用新的变量表达久的变量,并将其相等关系作为限制条件写入。

隐式限制

实际上就是通过对偶的形式,让隐式约束在对偶过程中消掉,从而在对偶问题的计算过程中,能够更加简化。

带有泛化不等式约束的情况

把泛化不等式给拆开,拆成单个函数即可。

半正定规划

相关推荐
Chef_Chen2 小时前
从0开始学习R语言--Day18--分类变量关联性检验
学习
键盘敲没电2 小时前
【IOS】GCD学习
学习·ios·objective-c·xcode
海的诗篇_3 小时前
前端开发面试题总结-JavaScript篇(一)
开发语言·前端·javascript·学习·面试
AgilityBaby3 小时前
UE5 2D角色PaperZD插件动画状态机学习笔记
笔记·学习·ue5
AgilityBaby3 小时前
UE5 创建2D角色帧动画学习笔记
笔记·学习·ue5
武昌库里写JAVA4 小时前
iview Switch Tabs TabPane 使用提示Maximum call stack size exceeded堆栈溢出
java·开发语言·spring boot·学习·课程设计
一弓虽5 小时前
git 学习
git·学习
Moonnnn.7 小时前
【单片机期末】串行口循环缓冲区发送
笔记·单片机·嵌入式硬件·学习
viperrrrrrrrrr78 小时前
大数据学习(131)-Hive数据分析函数总结
大数据·hive·学习
fen_fen8 小时前
学习笔记(26):线性代数-张量的降维求和,简单示例
笔记·学习·算法