首页 > 其他分享 >用实例并可视化去理解拉格朗日对偶函数的凹性质

用实例并可视化去理解拉格朗日对偶函数的凹性质

时间:2022-10-03 09:11:19浏览次数:81  
标签:拉格朗 begin end matrix sum 偶函数 可视化 vec lambda

考虑约束最优化问题:

\[\begin{aligned} &min &&f(x) \\ &s.t. &&c_i(x)\leq 0, i=1,2,...,l,\\ &&&h_i(x) = 0,i=l+1,l+2,...,n \end{aligned} \]

拉格朗日化后为:

\[\begin{aligned} &\Delta L(x,\vec{\lambda}) = \Delta L(x,\lambda_1,\lambda_2,\cdots,\lambda_n) = \Delta(f(x,y)+\sum_{i=1}^{l}\lambda_i c_i(x)+\sum_{i=l+1}^{n}\lambda_i h_i(x)) = 0,\\ &s.t. \forall i \in \{1,2,...,l\}, \lambda_i \geq 0 \end{aligned} \]

该拉格朗日函数为:

\[L(x,\vec{\lambda})=f(x)+\sum_{i=1}^{l}\lambda_i c_i(x)+\sum_{i=l+1}^{n}\lambda_i h_i(x),\forall i \in \{1,2,...,l\}, \lambda_i \geq 0 \]

因为\(\forall i \in \{1,2,\cdots,l\}\),\(c_i(x) \leq 0,\lambda_i \geq 0;\forall i \in \{l+1,l+2,\cdots,n\}\),\(h_i(x) = 0\),所以:

\[L(x,\vec{\lambda}) = f(x)+\sum_{i=1}^{l}\lambda_i c_i(x)+\sum_{i=l+1}^{n}\lambda_i h_i(x) \leq f(x) \]

就是说:对任意的\(x\),

拉格朗日函数都不大于原函数

那么,
拉格朗日函数的最小值肯定不大于原函数的最小值

则有:

\[min(L(x,\vec{\lambda})) \leq min(f(x)) \]

于是,我们把拉格朗日的对偶函数定义为:

$$ g(\vec{\lambda}) = min(L(x,\vec{\lambda})) = min(f(x)+\sum_{i=1}^{l}\lambda_i c_i(x)+\sum_{i=l+1}^{n}\lambda_i h_i(x)) $$ 函数$g$的意义为:
对于每一个$\vec{\lambda}$,找到一个$x$,使得函数$L(x,\vec{\lambda})$最小

现在,让我们看看拉格朗日对偶函数的凹性质:

函数$g(\vec{\lambda})$可以写成如下形式: $$ \begin{aligned} g(\vec{\lambda}) &= min(f(x)+\sum_{i=1}^{l}\lambda_i c_i(x)+\sum_{i=l+1}^{n}\lambda_i h_i(x))\\ &=min(f(x)+\left[\begin{matrix} c_1(x)&c_2(x)&\cdots&c_l(x)&h_{l+1}(x)&h_{l+2}(x)&\cdots&h_n(x) \end{matrix} \right] · \left[\begin{matrix} \lambda_1&\lambda_2&\cdots&\lambda_n \end{matrix} \right]) \end{aligned} $$ 其中, $$ \begin{aligned} &f(x) \in R,\\ &\forall i \in \{1,2,\cdots,l\},c_i(x) \leq R,\\ &\forall i \in \{l+1,l+2,\cdots,n\},h_i(x) = 0 \end{aligned} $$ 就是说,$k(\vec{\lambda})= \left[\begin{matrix} \vec{c(x)};\vec{h(x)}\end{matrix} \right] · \vec{\lambda}$是一个超平面(类似于$2 · x$,前面的‘;’表示拼接两个向量),$ \left[\begin{matrix} \vec{c(x)};\vec{h(x)}\end{matrix} \right]$就是一个超平面的系数。那么说明:
对于任意的$x$,$ \left[\begin{matrix} \vec{c(x)};\vec{h(x)}\end{matrix} \right] · \vec{\lambda}$对应一个不同的超平面。
让我们来看二维平面中的几个'超平面':(在下图中,$ \left[\begin{matrix} \vec{c(x)};\vec{h(x)}\end{matrix} \right]$分别对应‘超平面’的系数,$\vec{\lambda}$为点$(x,y)$)

三维空间中的几个‘超平面’

左图在点(-5-5)处往上掰看的视图

从图中可以看到,不同的超平面相交后,如果我们对于一个\(\vec{\lambda}\),取,使函数\(k(\vec{\lambda})\),最小的值,那么可以看到:

最终的取值面接近一个倒扣着的碗
也就是说:
$min \left ( \left [ \begin{matrix} \vec{c(x)};\vec{h(x)}\end{matrix} \right ] · \vec{\lambda} \right )$是凹的。
从而: $$ \begin{aligned} g(\vec{\lambda}) &= min(f(x)+\sum_{i=1}^{l}\lambda_i c_i(x)+\sum_{i=l+1}^{n}\lambda_i h_i(x))\\ &=min(f(x)+\left[\begin{matrix} c_1(x)&c_2(x)&\cdots&c_l(x)&h_{l+1}(x)&h_{l+2}(x)&\cdots&h_n(x) \end{matrix} \right] · \left[\begin{matrix} \lambda_1&\lambda_2&\cdots&\lambda_n \end{matrix} \right]) \end{aligned} $$是凹的。

参考文献:

如何理解拉格朗日对偶函数_PandaRELEASE的博客(上图的工作源自此文章的对对偶函数的解释)
凸优化中的对偶问题与共轭函数(对对偶函数的定义来自此文)

标签:拉格朗,begin,end,matrix,sum,偶函数,可视化,vec,lambda
From: https://www.cnblogs.com/hisi-tech/p/16736032.html

相关文章

  • Docker可视化Portainer
    https://hub.docker.com/r/portainer/portainerhttps://docs.portainer.io/start/install/server/docker/linuxdockerrun-d-p8000:8000-p9443:9443--nameporta......
  • 煤矿生产高精专!选矿厂 3D 可视化监管,实现提质增效
    目前,随着人工智能、5G等新一代信息技术的迅猛发展,正处于从工业经济向数字经济转型过渡的大变革时代。以“黑色煤炭、绿色发展、高碳能源、低碳利用”的管理理念,以精细化的......
  • aardio + PowerShell 可视化快速开发独立 EXE 桌面程序
    aardio可以方便地调用PowerShell,PowerShell中也可以自由调用aardio对象与函数。不用带上体积很大的System.Management.Automation.dll,直接调用系统组件,可以生成体积......
  • 成为散点图可视化专家
    成为散点图可视化专家创建散点图的Matplotlib指南BecomeaProinScatterPlotVisualization(Credits:Aatomz)散点图的主要目的是确定两个变量(双变量)之间的关系......
  • APICloud可视化编程(二)
    上一期我们为大家讲解低代码在国内市场的当前现状以及APICloud可视化开发工具的组件类型和特点。相信大家对可视化编程有了一个整体的了解,那么今天带大家更进一步的使用组......
  • APICloud可视化编程(二)
    上一期我们为大家讲解低代码在国内市场的当前现状以及APICloud可视化开发工具的组件类型和特点。相信大家对可视化编程有了一个整体的了解,那么今天带大家更进一步的使用组......
  • Linux下docker可视化portainer容器在线安装
    portainer容器在线安装注释:portainer为docker的可视化页面,安装后可以打开,进行可视化操作.1、搜索portainer镜像[root@localhost]#dockersearchportainer2......
  • 盘点一个哔哩哔哩弹幕抓取并词云可视化的项目
    大家好,我是皮皮。一、前言前几天在Python白银交流群【肉丸胡辣汤】问了一个Python网络爬虫和可视化的问题,提问截图如下:代码如下:#导入我们要用到的模块importrequest......
  • aardio + PHP 可视化快速开发独立 EXE 桌面程序
    aardio支持与很多编程语言混合开发。网络上大家分享的aardio+Python混合开发的文章很多,aardio+PHP的文章却很少。其实aardio与PHP混合开发是真的简单!▶CGI......
  • Redis可视化管理工具-RedisDesktopManager
    Windows客户端,访问Redis数据库并执行一些基本操作。链接:https://pan.baidu.com/s/1OuGqIfbpGwglC-642rECbQ提取码:m6uo   ......