最优化理论与方法-第十讲-对偶理论的基本性质和割平面法

文章目录

  • 1. 向量化拉格朗日对偶函数
  • 2. 对偶问题是凹函数
  • 3. 对偶问题转换
  • 4. 外逼近法
    • 4.1 步骤
    • 4.2 注意事项

1. 向量化拉格朗日对偶函数

( D ) max ⁡ d ( λ , μ ) s t . λ i ≥ 0 , i = 1 , ⋯ , m , d ( λ , μ ) = min ⁡ x ∈ X { f ( x ) + ∑ i = 1 m λ i g i ( x ) + ∑ i = 1 l μ i h i ( x ) } \begin{equation}\begin{aligned} &(D)\; \;\max\; d(\lambda,\mu)\\ &st.\;\;\lambda_i\ge0,i=1,\cdots,m,\\ &\;\;d(\lambda,\mu)=\min\limits_{x\in X}\{f(x)+\sum_{i=1}^m\lambda_ig_i(x)+\sum_{i=1}^l\mu_ih_i(x)\}\\ \end{aligned}\end{equation} (D)maxd(λ,μ)st.λi0,i=1,,m,d(λ,μ)=xXmin{f(x)+i=1mλigi(x)+i=1lμihi(x)}

  • 为了方便向量的表达方式,我们记:
    g ( x ) = ( g 1 ( x ) , g 2 ( x ) , ⋯ , g m ( x ) ) T h ( x ) = ( h 1 ( x ) , h 2 ( x ) , ⋯ , h l ( x ) ) T λ = ( λ 1 , λ 2 , ⋯ , λ m ) μ = ( μ 1 , μ 2 , ⋯ , μ l ) \begin{equation}\begin{aligned} &\; \;g(x)=(g_1(x),g_2(x),\cdots,g_m(x))^T\\ &\; \;h(x)=(h_1(x),h_2(x),\cdots,h_l(x))^T\\ &\; \;\lambda=(\lambda_1,\lambda_2,\cdots,\lambda_m)\\ &\; \;\mu=(\mu_1,\mu_2,\cdots,\mu_l)\\ \end{aligned}\end{equation} g(x)=(g1(x),g2(x),,gm(x))Th(x)=(h1(x),h2(x),,hl(x))Tλ=(λ1,λ2,,λm)μ=(μ1,μ2,,μl)
  • 整理上式可得:
    ( D ) max ⁡ d ( λ , μ ) s t . λ i ≥ 0 , i = 1 , ⋯ , m , d ( λ , μ ) = min ⁡ x ∈ X { f ( x ) + λ T g ( x ) + μ T h ( x ) } \begin{equation}\begin{aligned} &(D)\; \;\max\; d(\lambda,\mu)\\ &st.\;\;\lambda_i\ge0,i=1,\cdots,m,\\ &\;\;d(\lambda,\mu)=\min\limits_{x\in X}\{f(x)+\lambda^Tg(x)+\mu^Th(x)\}\\ \end{aligned}\end{equation} (D)maxd(λ,μ)st.λi0,i=1,,m,d(λ,μ)=xXmin{f(x)+λTg(x)+μTh(x)}

2. 对偶问题是凹函数

  • 对偶问题(D)问题,对偶函数是函数

  • 这里的函数图像如下:这个定义国内外相反,真有点坑,容易糊涂
    在这里插入图片描述

  • 需要证明对偶函数 d ( λ , μ ) d(\lambda,\mu) d(λ,μ)是凹函数
    d ( λ , μ ) = min ⁡ x ∈ X { f ( x ) + λ T g ( x ) + μ T h ( x ) } \begin{equation} d(\lambda,\mu)=\min\limits_{x\in X}\{f(x)+\lambda^Tg(x)+\mu^Th(x)\} \end{equation} d(λ,μ)=xXmin{f(x)+λTg(x)+μTh(x)}

  • 假设X为有限个值 X = { x 1 , x 2 , ⋯ , x n } X=\{x_1,x_2,\cdots,x_n\} X={x1,x2,,xn},那么对偶函数,就是从N个函数中求最小值
    d ( λ , μ ) = min ⁡ i = 1 , ⋯ , n { f ( x i ) + λ T g ( x i ) + μ T h ( x i ) } \begin{equation} d(\lambda,\mu)=\min\limits_{i=1,\cdots,n}\{f(x_i)+\lambda^Tg(x_i)+\mu^Th(x_i)\} \end{equation} d(λ,μ)=i=1,,nmin{f(xi)+λTg(xi)+μTh(xi)}

  • 对于每个函数,一旦 x i x_i xi确定后, d ( λ , μ ) d(\lambda,\mu) d(λ,μ)就只是一个关于 λ , μ \lambda,\mu λ,μ的线性函数,也就是分段最小值函数,详见下图:
    在这里插入图片描述

  • 由上图可得,对偶函数是凹函数,是凸问题。

3. 对偶问题转换

  • 我们有如下对偶问题:
    ( D ) max ⁡ d ( λ , μ ) s t . λ i ≥ 0 , i = 1 , ⋯ , m , d ( λ , μ ) = min ⁡ x ∈ X { f ( x ) + λ T g ( x ) + μ T h ( x ) } \begin{equation}\begin{aligned} &(D)\; \;\max\; d(\lambda,\mu)\\ &st.\;\;\lambda_i\ge0,i=1,\cdots,m,\\ &\;\;d(\lambda,\mu)=\min\limits_{x\in X}\{f(x)+\lambda^Tg(x)+\mu^Th(x)\}\\ \end{aligned}\end{equation} (D)maxd(λ,μ)st.λi0,i=1,,m,d(λ,μ)=xXmin{f(x)+λTg(x)+μTh(x)}
  • 定义 θ = d ( λ , μ ) \theta = d(\lambda,\mu) θ=d(λ,μ)
    ( D ) max ⁡ θ s t . λ i ≥ 0 , i = 1 , ⋯ , m , θ = d ( λ , μ ) = min ⁡ x ∈ X { f ( x ) + λ T g ( x ) + μ T h ( x ) } \begin{equation}\begin{aligned} &(D)\; \;\max\; \theta\\ &st.\;\;\lambda_i\ge0,i=1,\cdots,m,\\ &\;\;\theta=d(\lambda,\mu)=\min\limits_{x\in X}\{f(x)+\lambda^Tg(x)+\mu^Th(x)\}\\ \end{aligned}\end{equation} (D)maxθst.λi0,i=1,,m,θ=d(λ,μ)=xXmin{f(x)+λTg(x)+μTh(x)}
  • 因为最终求 θ \theta θ的最大值,所以可以缩放 θ = d ( λ , μ ) → θ ≤ d ( λ , μ ) \theta=d(\lambda,\mu)\to \theta\le d(\lambda,\mu) θ=d(λ,μ)θd(λ,μ)
    ( D ) max ⁡ θ s t . λ i ≥ 0 , i = 1 , ⋯ , m , θ ≤ d ( λ , μ ) = min ⁡ x ∈ X { f ( x ) + λ T g ( x ) + μ T h ( x ) } \begin{equation}\begin{aligned} &(D)\; \;\max\; \theta\\ &st.\;\;\lambda_i\ge0,i=1,\cdots,m,\\ &\;\;\theta\le d(\lambda,\mu)=\min\limits_{x\in X}\{f(x)+\lambda^Tg(x)+\mu^Th(x)\}\\ \end{aligned}\end{equation} (D)maxθst.λi0,i=1,,m,θd(λ,μ)=xXmin{f(x)+λTg(x)+μTh(x)}
  • 整理后可得:
    ( D ) max ⁡ θ θ ≤ min ⁡ x ∈ X { f ( x ) + λ T g ( x ) + μ T h ( x ) } s t . λ ≥ 0 \begin{equation}\begin{aligned} &(D)\; \;\max\; \theta\\ &\;\;\theta\le \min\limits_{x\in X}\{f(x)+\lambda^Tg(x)+\mu^Th(x)\}\\ &st.\;\;\lambda\ge 0\\ \end{aligned}\end{equation} (D)maxθθxXmin{f(x)+λTg(x)+μTh(x)}st.λ0
  • 如果最终存在一个 θ ˉ \bar{\theta} θˉ是上面的最大值,那么就是最优值
    θ ˉ = v ( D ) \begin{equation} \bar{\theta}=v(D)\end{equation} θˉ=v(D)
  • 假设X有有限个解 X = { x 1 , x 2 , ⋯ , x n } X=\{x_1,x_2,\cdots,x_n\} X={x1,x2,,xn},那么存在n个不等式,可以用scipy的库进行线性规划问题的求解,假设X有无穷多解,那么代表的就是无穷多个线性不等式。
    θ ≤ min ⁡ i = 1 , ⋯ , n { f ( x i ) + λ T g ( x i ) + μ T h ( x i ) } s t . λ ≥ 0 \begin{equation}\begin{aligned} &\;\;\theta\le \min\limits_{i=1,\cdots,n}\{f(x_i)+\lambda^Tg(x_i)+\mu^Th(x_i)\}\\ &st.\;\;\lambda\ge 0\\ \end{aligned}\end{equation} θi=1,,nmin{f(xi)+λTg(xi)+μTh(xi)}st.λ0
  • 我们假设 X 0 = { x 1 , x 3 } X_0=\{x_1,x_3\} X0={x1,x3},现在只有两个约束,那么这个得到的最大值肯定大于N个约束的的最大值 θ ˉ \bar{\theta} θˉ,因为约束越多,其定义域的范围越小,那么值域就越小,最大值也就越小
    θ 0 ≥ θ ˉ \begin{equation}\begin{aligned} \theta_0\ge \bar{\theta} \end{aligned}\end{equation} θ0θˉ
  • 我们记最优解为 ( λ 0 , μ 0 , θ 0 ) (\lambda_0,\mu_0,\theta_0) (λ0,μ0,θ0),现在求 d ( λ 0 , μ 0 ) d(\lambda_0,\mu_0) d(λ0,μ0)
    d ( λ 0 , μ 0 ) = min ⁡ x ∈ X { f ( x ) + λ 0 T g ( x ) + μ 0 T h ( x ) } \begin{equation} d(\lambda_0,\mu_0)=\min\limits_{x\in X}\{f(x)+\lambda_0^Tg(x)+\mu_0^Th(x)\} \end{equation} d(λ0,μ0)=xXmin{f(x)+λ0Tg(x)+μ0Th(x)}
  • 假设存在一个 x 0 x_0 x0 满足如下条件:
    g ( x 0 ) ≤ 0 , h ( x 0 ) = 0 , λ 0 T g ( x 0 ) = 0 \begin{equation} g(x_0)\le 0,h(x_0)=0,\lambda_0^Tg(x_0)=0 \end{equation} g(x0)0,h(x0)=0,λ0Tg(x0)=0
  • 反正上面都为0,等式左右相加不影响:
    f ( x 0 ) = f ( x 0 ) + λ 0 T g ( x 0 ) + μ 0 T h ( x 0 ) \begin{equation} f(x_0)=f(x_0)+\lambda_0^Tg(x_0)+\mu_0^Th(x_0) \end{equation} f(x0)=f(x0)+λ0Tg(x0)+μ0Th(x0)
  • 我们定义 x 0 x_0 x0 d ( λ 0 , μ 0 ) d(\lambda_0,\mu_0) d(λ0,μ0)最优解,那么可得:
    d ( x 0 , λ 0 , μ 0 ) = f ( x 0 ) + λ 0 T g ( x 0 ) + μ 0 T h ( x 0 ) = f ( x 0 ) \begin{equation} d(x_0,\lambda_0,\mu_0)=f(x_0)+\lambda_0^Tg(x_0)+\mu_0^Th(x_0)=f(x_0) \end{equation} d(x0,λ0,μ0)=f(x0)+λ0Tg(x0)+μ0Th(x0)=f(x0)
  • 则强对偶定理成立
  • d ( λ 0 , μ 0 ) = θ 0 d(\lambda_0,\mu_0)=\theta_0 d(λ0,μ0)=θ0,可得:
    d ( λ 0 , μ 0 ) = v ( D ) \begin{equation} d(\lambda_0,\mu_0)=v(D) \end{equation} d(λ0,μ0)=v(D)

4. 外逼近法

4.1 步骤

  • step 0: 选取X的非空子集 X 1 X^1 X1,其中 X 1 X^1 X1包含有限个元素,令 k = 1 k=1 k=1
  • step 1: 求解线性规划问题:
    ( D ) max ⁡ θ θ ≤ min ⁡ x ∈ X { f ( x ) + λ T g ( x ) + μ T h ( x ) } , ∀ x ∈ X k s t . λ ≥ 0 记最优解为 ( λ k , μ k , θ k ) \begin{equation}\begin{aligned} &(D)\; \;\max\; \theta\\ &\;\;\theta\le \min\limits_{x\in X}\{f(x)+\lambda^Tg(x)+\mu^Th(x)\},\forall x\in X^k\\ &st.\;\;\lambda\ge 0\\ & 记最优解为(\lambda^k,\mu^k,\theta^k) \end{aligned}\end{equation} (D)maxθθxXmin{f(x)+λTg(x)+μTh(x)},xXkst.λ0记最优解为(λk,μk,θk)
  • step 2: 求解相应的子问题:
    min ⁡ { f ( x ) + ( λ k ) T g ( x ) + ( μ k ) T h ( x ) ∣ x ∈ X } ; \begin{equation} \min\{f(x)+(\lambda^k)^Tg(x)+(\mu^k)^Th(x)\big|x\in X\}; \end{equation} min{f(x)+(λk)Tg(x)+(μk)Th(x) xX}
  • 记其最优解为 x k x^k xk,最优值为 d ( λ k , μ k ) d(\lambda^k,\mu^k) d(λk,μk)
  • step 3: x k x^k xk是原问题 ( P ) (P) (P)的可行解,且 ( λ k ) T g ( x k ) = 0 (\lambda^k)^Tg(x^k)=0 (λk)Tg(xk)=0,则算法终止, x k x^k xk ( λ k , μ k ) (\lambda^k,\mu^k) (λk,μk)分别是原问题P和对偶问题D的最优解,且最优值相等,若
    θ k = d ( λ k , μ k ) \begin{equation} \theta^k=d(\lambda^k,\mu^k) \end{equation} θk=d(λk,μk)
    则算法终止, ( λ k , μ k ) (\lambda^k,\mu^k) (λk,μk)即对偶问题的最优解,且最优值为 θ k \theta^k θk
  • step 4: X k + 1 = X k ∪ { x k } , k : = k + 1 X^{k+1}=X^k\cup\{x^k\},k:= k+1 Xk+1=Xk{xk},k:=k+1,转 step 1

4.2 注意事项

    1. X的子集合点总需要包含一个原问题的可行解,这样能保证 θ \theta θ有一个上界,使得迭代更好收敛。
      θ ≤ f ( x ) + λ T g ( x ) + μ T h ( x ) ≤ f ( x ) \begin{equation} \theta \le f(x)+\lambda^Tg(x)+\mu^Th(x)\le f(x) \end{equation} θf(x)+λTg(x)+μTh(x)f(x)
    1. X包含无穷多个解,为了方便迭代,我们可以动态去掉 X k X^k Xk中多余的解,加速迭代
    1. 割平面法,通过不断加约束来不断地缩小定义域,近似的逼近最优解。就像切西瓜一样,不断地切,最后切成我们想要的形状。
      在这里插入图片描述
  • 在最优解附近具有不稳定性,我们通常通过加正则项的方法进行正则化
  • 后续研究次梯度法和bound method

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/48567.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【AI那些事】YOLO算法在香橙派AIpro上跑起来的初体验

一、本文概述 在之前推出的Yolo算法后,我在windows电脑上使用python语言运行将其跑通了,觉的这个识别算法很是有意思,就一直想着这个算法能不能跑在硬件的开发板上那就太好了。我就开始寻找市面上可行的开发板,一直期盼的事情真的…

【学术研究、研究热点、最新前沿】如何跟踪最新的论文

1.跟踪arxiv 使用https://www.arxivdaily.com/接收每天的推送。 2.跟踪热点文章的引用 使用semantic scholar。 3.跟踪某个学术大佬或者主题 3.1 使用web of science。 3.2 使用文献鸟 4.跟踪某个期刊

迭代学习笔记

一、迭代学习定义和分类 1、直观理解 迭代学习一般应用于重复性的场景。比如控制一个单自由度的小车以特定的速度曲线移动到指定位置,整个时间是10s,控制频率是0.01,那么整个控制序列就会有1000个点。这1000个点在10s内依次发出&#xff0c…

小白快速入门量化交易的自学路径

今年已然过去一半了,年初立的flag都实现了吗? 据我多年来的观察,很多小白萌新开始学习量化,特别是年初的时候立下“宏图大志”,但有相当一部分最终没能"上岸",从入门到放弃,从然后到没…

数据结构2—顺序表(附源码)

1.线性表 线性表(linear list)是n个具有相同特性的数据元素的有限序列。线性表是一种在实际中广泛使用的数据结构,常见的线性表:顺序表、链表、栈、队列、字符串... 线性表在逻辑上是线性结构,也就是说连续的一条直线…

抽象java入门1.5.2

前言: 坑留下来是为了补的 正片: 一、面向对象特性 二、面向对象编程详细展开 这些没有加粗的方法究竟来源哪? 在上一期的提示中,我们说了这些方法来源于面向对象编程的一个特性 验证: 第一步:我们先…

区块链空投之空投合约

关于 solidity、空投、智能合约 空投作为区块链行业最大的惊喜之一,很多人都是通过空投才接触到了这一领域。 甚至有很多专业薅空投羊毛的专业玩家。行业内有句话,小薅养活妻儿、大薅… 文章目录 前言空投到底是什么空投什么?空投合约代码空投步骤代码解析代码详解前言 今…

代码随想录算法训练营第23天|39. 组合总和、40.组合总和II、131.分割回文串

打卡Day23 1.39. 组合总和2.40.组合总和II3.131.分割回文串 1.39. 组合总和 题目链接:39. 组合总和 文档讲解: 代码随想录 这道题和昨天做的组合之和由两个区别:被选的元素没有数量限制,同时被选的元素可以无限重复,…

【嵌入式开发之标准I/O】流的刷新、定位以及格式化输出、输入

流的刷新 int fflush(FILE *fp); 成功时返回0;出错时返回EOF。 将流缓冲区中的数据写入实际的文件。 Linux下只能刷新输出缓冲区,输入缓冲区丢弃。 如果输出到屏幕使用fflush(stdout)。 流的定位 流的定位:ftell()函数 long ftell(FILE *stream)…

JavaScript:节流与防抖

目录 一、前言 二、节流(Throttle) 1、定义 2、使用场景 3、实现原理 4、代码示例 5、封装节流函数 三、防抖(Debounce) 1、定义 2、使用场景 3、实现原理 4、代码示例 5、封装防抖函数 四、异同点总结 一、前言 …

信息检索(39):Condenser: a Pre-training Architecture for Dense Retrieval

Condenser: a Pre-training Architecture for Dense Retrieval 摘要1 引言2 相关工作3 方法3.1 前提3.2 Transformer 编码器的问题3.3 Condenser3.4 Transformer 编码器的 Condenser 4 实验4.1 预训练4.2 句子相似度4.3 开放域问答检索4.4 Web search 检索 5 注意力分析6 结论 …

Adobe Premiere Pro(Pr)安装包软件下载

一、简介 Adobe Premiere Pro(简称Pr)是由Adobe公司开发的一款功能强大的视频编辑软件。它支持多平台使用,包括Windows和Mac系统,并且拥有良好的兼容性和高效的性能。Premiere Pro不仅提供了视频剪辑、特效添加、音频处理等基本功…

《从C/C++到Java入门指南》- 9.字符和字符串

字符和字符串 字符类型 Java 中一个字符保存一个Unicode字符,所以一个中文和一个英文字母都占用两个字节。 // 计算1 .. 100 public class Hello {public static void main(String[] args) {char a A;char b 中;System.out.println(a);System.out.println(b)…

【2024最新华为OD-C/D卷试题汇总】[支持在线评测] 二进制游戏(200分)- 三语言AC题解(Python/Java/Cpp)

🍭 大家好这里是清隆学长 ,一枚热爱算法的程序员 ✨ 本系列打算持续跟新华为OD-C/D卷的三语言AC题解 💻 ACM银牌🥈| 多次AK大厂笔试 | 编程一对一辅导 👏 感谢大家的订阅➕ 和 喜欢💗 🍿 最新华为OD机试D卷目录,全、新、准,题目覆盖率达 95% 以上,支持题目在线…

npm install时报错 reason: connect ETIMEDOUT

在VS code中导入新项目,执行npm install时报错: npm warn old lockfile Could not fetch metadata for antv/coord0.1.0 FetchError: request to https://registry.npmjs.org/antv%2fcoord failed, reason: connect ETIMEDOUT 150.242.56.251:443 npm w…

大数据之路 读书笔记 Day8 数据存储

回顾: 大数据之路 读书笔记 Day7 实时技术 简介及流式技术架构 大数据之路 读书笔记 Day6 离线数据开发之数据开发平台 数据存储 1 数据类型 实时任务在运行过程中,会计算很多维度和指标,这些数据需要放在一个存储系统中作为恢复或者关联使…

微信小程序开发:DOM 相关 API 使用详解

在微信小程序开发中,与传统的网页开发相比,由于安全性和性能考虑,访问 DOM(文档对象模型)是受限的。然而,微信小程序提供了一些特定的 API,使开发者能够处理和操作视图层,实现丰富的…

Transformer之Vision Transformer结构解读

论文地址 代码地址 写在前面 什么是Transformer呢?就是把符号向量化为Token, 再和位置编码求和或者做阿达玛积,最后送入一定层数的Attention Block构成的Encoder和Decoder,就完成了Transformer的基础功能。 那么,把上…

C基础函数——内存分配(未完)

在C语言中,内存管理是非常重要的一部分。C语言提供了几种不同的函数用于动态内存分配和释放,这些函数允许程序在运行时根据需要分配和回收内存。以下是C语言中常用的几个内存管理函数: malloc() void malloc(size_t size); 这个函数用于请求…

C++中枚举(enum)的用法和限制

在C中,枚举(enum)是一种用户定义的类型,它允许程序员为整数常量指定易于阅读的名字。枚举类型是由一组命名的整型常量组成的类型,每个常量都表示该类型的一个有效值。枚举在编程中常用于表示一组固定的值,如…