目录

  • 前言
  • 一.线性约束的凸优化问题(一个凸函数+线性约束条件)
    • 1.一个实例
    • 2.对偶问题
  • 二.拉格朗日函数与鞍点
    • 1.拉格朗日函数
    • 2.鞍点
  • 三.变分不等式(Variational Inequality,VI)
  • 五.参考引用

前言

在南方科技大学学习何炳生老师的数值分析课程期间有很多收获与感悟,由衷的感谢何老师的谆谆教导,当然我希望能将课程中所学习到的,能应用到未来科研和工作中的这部分知识,以学习笔记的方式记录下来,也希望能通过这种帖子将自己作为小白对于这些知识的通俗理解分享给大家,文中一些不够准确或错误的表达,还望大家指证。
【数值分析】学习笔记目录

本章节将分享凸优化的进阶知识——拉格朗日函数及变分不等式


一.线性约束的凸优化问题(一个凸函数+线性约束条件)

1.一个实例

在上一篇笔记中,我们提到了,在我们生活中很多凸优化问题除了函数自身的限制以外,还一般存在一个条件约束,需要同时满足两个条件的点才会是我们需要的最优解点,为方便大家理解,这里借用何老师课堂上的一个例子来进行说明:

背景:某饲料场需要购买一批粮食来配置动物们的饲料
要求:饲料需要满足动物所需的营养要求,其中淀粉2100千克,蛋白质600千克
目前已知市场上总共出售三种粮食(玉米、小麦、大豆)【j=1,2,3】,三种粮食每公斤的价格cjc_{j}cj​以及营养成分aija_{ij}aij​如表所示,设三种粮食的采购量为xjx_{j}xj​,请问如何在满足营养要求(线性约束条件)的情况下,购买粮食,并且花费尽可能少的钱(凸函数)?

含量 玉米x1x_{1}x1​ 小麦x2x_{2}x2​ 大豆x3x_{3}x3​ 总需求量
淀粉 a11=0.50a_{11}=0.50a11​=0.50 a12=0.50a_{12}=0.50a12​=0.50 a13=0.20a_{13}=0.20a13​=0.20 2100
蛋白质 a21=0.10a_{21}=0.10a21​=0.10 a22=0.12a_{22}=0.12a22​=0.12 a23=0.40a_{23}=0.40a23​=0.40 600
单价 c1=3c_{1}=3c1​=3 c2=4c_{2}=4c2​=4 c3=8.4c_{3}=8.4c3​=8.4

设总的花费为θ(x)=cTx\theta(x)=c^{T}xθ(x)=cTx,营养需求为bbb,那这个问题的数学表达可以写为
arg⁡min⁡{θ(x)∣Ax=b,x∈X}\arg \min \{\theta(x) \mid A x=b, x \in \mathcal{X}\} argmin{θ(x)∣Ax=b,x∈X}这就是一个典型线性约束的凸优化问题,那它的最优解位于哪里(即求其最优性条件)呢?

这个问题其实和上一篇笔记中两个凸函数的凸优化问题是有异曲同工之处的,区别只在于,那个问题是求两个函数之和的最小,而此处我们需要一个最小的同时,另一个足够大满足甚至超过我们的要求,即min-max思想。除此之外这个问题还有一个难点就是在于,我们该如何表达出后面线性约束Ax=bAx=bAx=b 的最优性条件。

2.对偶问题

要求解上面这个问题,我们最需要去做的就是,将线性约束式与前面的凸函数式联立起来,得到一个新的函数表达式,再根据那个函数来求其最优解点。而如何联立两者,我们需要引入一个新的问题来方便理解,即它的对偶问题(Dual Problem),上面的问题则被称为原始问题(Primal Problem)

背景:一家营养素公司,打算做饲料场的生意,他们可以直接供给淀粉营养素和蛋白质营养素,由于要能做成生意,他们保证配置同样的营养成分,买营养素是不会高于市场粮食价格的,设公司对两种营养素的价格设定分别为y1,y2y_{1}, y_{2}y1​,y2​,请问该怎么设定价格可以实现最大的盈利。

含量 玉米x1x_{1}x1​ 小麦x2x_{2}x2​ 大豆x3x_{3}x3​ 营养素价格
淀粉 a11=0.50a_{11}=0.50a11​=0.50 a12=0.50a_{12}=0.50a12​=0.50 a13=0.20a_{13}=0.20a13​=0.20 y1y_{1}y1​
蛋白质 a21=0.10a_{21}=0.10a21​=0.10 a22=0.12a_{22}=0.12a22​=0.12 a23=0.40a_{23}=0.40a23​=0.40 y2y_{2}y2​
单价 c1=3c_{1}=3c1​=3 c2=4c_{2}=4c2​=4 c3=8.4c_{3}=8.4c3​=8.4

根据其背景,设其最大盈利为ψ(y)=bTy\psi(y)=b^{T}yψ(y)=bTy,我们可以得到这个对偶问题的数学表达为:
arg⁡max⁡{ψ(y)∣ATy≤c,x∈X}\arg \max \{\psi(y) \mid A^{T} y\leq c, x \in \mathcal{X}\} argmax{ψ(y)∣ATy≤c,x∈X}总结两个问题的线性约束条件,可以得到

  1. 买方要实现营养要求:Ax=b,x≥0A x=b,x\geq 0Ax=b,x≥0
  2. 卖方要实现价格承诺:ATy≤cA^{T} y\leq cATy≤c

由于x≥0x\geq 0x≥0,将其乘到下面可以得到
xT(c−ATy)≥0⇒cTx≥yTAx⇒cTx≥bTyx^{T}\left(c-A^{T} y\right) \geq 0\Rightarrow c^{T} x \geq y^{T} A x\Rightarrow c^{T} x \geq b^{T} yxT(c−ATy)≥0⇒cTx≥yTAx⇒cTx≥bTy即双方均有诚意时,买方要花的钱≥\geq≥卖方能挣的钱,也就是当双方共赢时,此时买方最省钱,卖方最大利润。

利用该公式我们即可将两者的线性约束条件进行联立,转换为类似上一篇笔记中两个凸函数的凸优化问题。当然只是做到类似,因为这里的θ(x),ψ(y)\theta(x), \psi(y)θ(x),ψ(y)并不是简单相加的关系,两者的关系需要通过拉格朗日函数来进行表达

二.拉格朗日函数与鞍点

1.拉格朗日函数

拉格朗日函数的提出与具体算术推导,这里由于个人能力问题就不展开了,如有兴趣推荐阅读第一篇参考引用中的文献。由于在上一节中我们利用对偶问题的思想,可以将线性约束条件与凸函数联立起来,如此一来,原本的两个要求(即min⁡θ(x)\min \theta(x)minθ(x)和Ax=b,x≥0A x=b,x\geq 0Ax=b,x≥0)即可通过一个函数来进行表征,这个函数即拉格朗日函数,这是定义在ℜ+n×ℜm\Re_{+}^{n} \times \Re^{m}ℜ+n​×ℜm上的函数,即

此处n即为xxx的维数,m为yyy的维数

L(x,y)=cTx−yT(Ax−b)L(x, y)=c^{T} x-y^{T}(A x-b)L(x,y)=cTx−yT(Ax−b)由于这里的xxx是原始问题(花费最少),即min问题的待求解,而yyy是对偶问题,即max问题的待求解,因此对于拉格朗日函数而言,其最优解位置并不是极大值点或者极小值点,而是位于一个鞍点(Saddle Point)处,为方便理解,这里将鞍点与拉格朗日函数具象化,其大概长这个样子,而这个形态也很大程度上说明了,双赢即最优解!

2.鞍点

鞍点实质是一个奇点,其从一个维度(从卖方角度)看满足了极大的特性,从另一个维度(从买方角度)看则满足了极小的特性,结合第一节中的问题,鞍点定义为:

如果x∗∈ℜ+nx^* \in \Re_{+}^{n}x∗∈ℜ+n​ 和 y∗∈ℜmy^* \in \Re^{m}y∗∈ℜm满足
Ly∈ℜm(x∗,y)≤L(x∗,y∗)≤Lx∈ℜ+n(x,y∗)L_{y \in \Re^{m}}\left(x^{*}, y\right) \leq L\left(x^{*}, y^{*}\right) \leq L_{x \in \Re_{+}^{n}}\left(x, y^{*}\right) Ly∈ℜm​(x∗,y)≤L(x∗,y∗)≤Lx∈ℜ+n​​(x,y∗)则称(x∗,y∗)\left(x^{*}, y^{*}\right)(x∗,y∗)是拉格朗日函数L(x,y)L(x, y)L(x,y)在ℜ+n×ℜm\Re_{+}^{n} \times \Re^{m}ℜ+n​×ℜm上的一个鞍点

为方便理解,不等式的前半部分Ly∈ℜm(x∗,y)L_{y \in \Re^{m}}\left(x^{*}, y\right)Ly∈ℜm​(x∗,y)可以理解为只考虑买方省钱,不考虑卖方受益的情况,即只考虑原始问题无约束下的最优解;后半部分Lx∈ℜ+n(x,y∗)L_{x \in \Re_{+}^{n}}\left(x, y^{*}\right)Lx∈ℜ+n​​(x,y∗)可以理解为只考虑卖方赚钱,不考虑买方省钱的情况,即只考虑对偶问题无约束下的最优解。由于实际最优解是双赢因此,鞍点肯定是位于两者之间的

换句话说,鞍点就是同时满足以下两个优化子问题的一个特殊点
{x∗=arg⁡min⁡{L(x,y∗)∣x∈ℜ+n}y∗=arg⁡max⁡{L(x∗,y)∣y∈ℜm}\left\{\begin{aligned} x^{*} &=\arg \min \left\{L\left(x, y^{*}\right) \mid x \in \Re_{+}^{n}\right\} \\ y^{*} &=\arg \max \left\{L\left(x^{*}, y\right) \mid y \in \Re^{m}\right\} \end{aligned}\right. {x∗y∗​=argmin{L(x,y∗)∣x∈ℜ+n​}=argmax{L(x∗,y)∣y∈ℜm}​将上式结合上一篇学习笔记中根据凸函数性质得到的最优性条件不等式表达,上式可以被整理为
{x∗≥0,L(x,y∗)−L(x∗,y∗)≥0,∀x≥0;y∗∈ℜm,L(x∗,y∗)−L(x∗,y)≥0,∀y∈ℜm.\left\{\begin{array}{r} x^{*} \geq 0, \quad L\left(x, y^{*}\right)-L\left(x^{*}, y^{*}\right) \geq 0, \quad \forall x \geq 0 ; \\ y^{*} \in \Re^{m}, \quad L\left(x^{*}, y^{*}\right)-L\left(x^{*}, y\right) \geq 0, \quad \forall y \in \Re^{m} . \end{array}\right.{x∗≥0,L(x,y∗)−L(x∗,y∗)≥0,∀x≥0;y∗∈ℜm,L(x∗,y∗)−L(x∗,y)≥0,∀y∈ℜm.​将拉格朗日函数式代入则有
{x∗≥0,(x−x∗)T(c−ATy∗)≥0,∀x≥0;y∗∈ℜm,(y−y∗)T(Ax∗−b)≥0,∀y∈ℜm.\left\{\begin{array}{r} x^{*} \geq 0, \quad\left(x-x^{*}\right)^{T}\left(c-A^{T} y^{*}\right) \geq 0, \quad \forall x \geq 0 ; \\ y^{*} \in \Re^{m}, \quad\left(y-y^{*}\right)^{T}\left(A x^{*}-b\right) \geq 0, \quad \forall y \in \Re^{m} . \end{array}\right. {x∗≥0,(x−x∗)T(c−ATy∗)≥0,∀x≥0;y∗∈ℜm,(y−y∗)T(Ax∗−b)≥0,∀y∈ℜm.​即当一个点满足上述不等式表达,则其就可以被看做是一个鞍点,即问题的最优解点,而上述不等式正是其最优性条件!

三.变分不等式(Variational Inequality,VI)

如果你已经理解了上面的知识内容,那变分不等式其实就是个小概念罢了,可以看到基于鞍点和拉格朗日函数,线性约束的凸优化问题arg⁡min⁡{θ(x)∣Ax=b,x∈X}\arg \min \{\theta(x) \mid A x=b, x \in \mathcal{X}\}argmin{θ(x)∣Ax=b,x∈X}的最优性条件已经得到了,但这个表达还是不够简洁,为了规范化表达以及简化表述,我们将刚刚的不等式组进行整理,用λ\lambdaλ替换之前的yyy,则有
{x∗∈X,θ(x)−θ(x∗)+(x−x∗)T(−ATλ∗)≥0,∀x∈Xλ∗∈Λ,(λ−λ∗)T(Ax∗−b)≥0,∀λ∈Λ.\left\{\begin{array}{ll} x^{*} \in \mathcal{X}, \quad \theta(x)-\theta\left(x^{*}\right)+& \left(x-x^{*}\right)^{T}\left(-A^{T} \lambda^{*}\right) \geq 0, \quad \forall x \in \mathcal{X}\\ \lambda^{*} \in \Lambda, & \left(\lambda-\lambda^{*}\right)^{T}\left(A x^{*}-b\right) \geq 0, \quad \forall \lambda \in \Lambda . \end{array}\right. {x∗∈X,θ(x)−θ(x∗)+λ∗∈Λ,​(x−x∗)T(−ATλ∗)≥0,∀x∈X(λ−λ∗)T(Ax∗−b)≥0,∀λ∈Λ.​将两者写为线性表达的的形式,即可表示成为一个单调的(混合)变分不等式
w∗∈X,θ(x)−θ(x∗)+(w−w∗)TF(w∗)≥0,∀w∈Ωw^{*} \in \mathcal{X}, \quad \theta(x)-\theta\left(x^{*}\right)+ \left(w-w^{*}\right)^{T}F(w^*)\geq 0, \quad \forall w \in \mathcal{\Omega}w∗∈X,θ(x)−θ(x∗)+(w−w∗)TF(w∗)≥0,∀w∈Ω其中w=(xλ)w=\begin{pmatrix} x\\ \lambda \end{pmatrix}w=(xλ​),F(w∗)=(−ATλ∗Ax∗−b)F(w^*)=\begin{pmatrix} -A^{T} \lambda^{*}\\ A x^{*}-b \end{pmatrix}F(w∗)=(−ATλ∗Ax∗−b​),Ω=X×Λ\Omega=\mathcal{X} \times \LambdaΩ=X×Λ。如此一来,任何一个凸函数+一个线性约束条件线性约束的凸优化问题,其最优解需要满足的条件均可以用其VI来进行表达,从而设定了求解问题的目标。在下一篇笔记就是用什么样的方法去达成这个目标,将从问题的最优性条件出发,具体探讨如何根据变分不等式,求解其最优解。


五.参考引用

  1. Beavis B, Dobbs I. Optimisation and stability theory for economic analysis[M]. Cambridge university press, 1990.

【数值分析】学习笔记4——凸优化2:拉格朗日函数及变分不等式(Variational Inequality,VI)相关推荐

  1. 【数值分析】学习笔记3——凸优化1:凸函数和凸优化问题

    目录 前言 一.凸函数(Convex Function) 1.什么是凸函数 2.凸函数的性质 (1) 凸函数上任一点的切线均位于函数下方 (2)可微凸函数极小值点(实际问题中的最优解点)的特性 二.凸 ...

  2. [学习笔记]dp凸优化/wqs二分[八省联考2018]林克卡特树lct

    废话 很早就想学wqs二分,结果拖了好久.因为以前是看了几遍都没有懂..(太菜了 后来因为计划里凸优化的题(比如CF321E Ciel and Gondolas,CF739E Gosha is hun ...

  3. 【学习笔记】斜率优化

    [学习笔记]斜率优化 [SDOI2012]任务安排 斜率优化入门题: 设\(f(x)\)为\(F(x)\)的后缀和,\(t(x)\)为\(T(x)\)的前缀和.\(dp(i)\)表示完成到第\(i\) ...

  4. CUDA学习笔记之程序优化

    CUDA学习笔记之程序优化 标签: cuda优化conflict存储算法数学计算 2010-01-05 17:18 5035人阅读 评论(4) 收藏 举报 分类: CUDA(6) 版权声明:本文为博主 ...

  5. ORB-SLAM2学习笔记——全局BA优化

    ORB-SLAM2学习笔记--全局BA优化 1.理论部分(待更新) 2.代码详解 void Optimizer::GlobalBundleAdjustemnt(Map* pMap, int nIter ...

  6. 激光slam学习笔记——基于图优化的激光slam方法

    激光slam学习笔记--基于图优化的激光slam方法 1.slam基础 整体来说,在激光slam中,滤波器的误差要小于图优化的误差. 图优化通俗点说就是里程计计算的位姿与观测到的位姿之间会形成一个误差 ...

  7. OpenCV学习笔记(三十六)——Kalman滤波做运动目标跟踪 OpenCV学习笔记(三十七)——实用函数、系统函数、宏core OpenCV学习笔记(三十八)——显示当前FPS OpenC

    OpenCV学习笔记(三十六)--Kalman滤波做运动目标跟踪 kalman滤波大家都很熟悉,其基本思想就是先不考虑输入信号和观测噪声的影响,得到状态变量和输出信号的估计值,再用输出信号的估计误差加 ...

  8. C++学习笔记_3_ C++入门 内联函数

    C++学习笔记_3_ C++入门 内联函数 目录 C++学习笔记_3_ C++入门 内联函数 一.内联函数 1.查看方式 2.特性 宏的优缺点 C++有哪些技术替代宏? 一.内联函数 以inline修 ...

  9. OpenCV学习笔记(二十一)——绘图函数core OpenCV学习笔记(二十二)——粒子滤波跟踪方法 OpenCV学习笔记(二十三)——OpenCV的GUI之凤凰涅槃Qt OpenCV学习笔记(二十

    OpenCV学习笔记(二十一)--绘图函数core 在图像中,我们经常想要在图像中做一些标识记号,这就需要绘图函数.OpenCV虽然没有太优秀的GUI,但在绘图方面还是做得很完整的.这里就介绍一下相关 ...

最新文章

  1. [征询意见][投票]先集中力量做好一个开源项目
  2. exec的不同实现--鸠占鹊巢还是功成身退
  3. 【C语言】数字在排序数组中出现的次数(改动)
  4. java dbtype_Java实现数据库的读写分离
  5. Pyhton学习——Day25
  6. 博主日常工作中使用的shell脚本分享
  7. Guava Cache 使用笔记
  8. java array 元素的位置_介绍java中的两种排序工具Arrays和Collections
  9. 软件工程师和程序员到底有多大的区别?
  10. C 标准库 - stdio.h
  11. svn报错E175002
  12. POJ 1201 Intervals(差分约束)
  13. Thinkpad笔记本电池保养
  14. 离散数学 集合的运算
  15. cf 1677A - Tokitsukaze and Strange Inequality
  16. linux查看进程被kill原因,定位Linux下定位进程被谁KILL
  17. IOS开发学习之路--第一篇--TOM猫
  18. 使用opencv从mp4视频中抽帧并保存
  19. 会议及作用篇--项目管理(十七)
  20. 论文阅读:CVPR2022 Wavelet Knowledge Distillation: Towards Efficient Image-to-Image Translation

热门文章

  1. unity玩家血量控制,定时掉血,道具加血
  2. Node.js Web开发_第二章(2)
  3. python raise异常处理
  4. Linux使用豆瓣源下载scipy报错“Cannot unpack file “
  5. 绝对值得收藏的十位电影配乐大师 (中)
  6. java 方法signature_Java方法 signature
  7. Abaqus复合材料层合板仿真
  8. C#动态获取当前的时间日期(年月日 -星期 -上/下午-时:分:秒 )
  9. 【转】无所不能的vim-vim到底能做什么
  10. ubutun设置双壁纸