约束优化:约束优化的三种序列无约束优化方法

这篇具有很好参考价值的文章主要介绍了约束优化:约束优化的三种序列无约束优化方法。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

约束优化:约束优化的三种序列无约束优化方法

罚函数法是指将约束作为惩罚项加到目标函数中,从而转化成熟悉的无约束优化问题。

外点罚函数法

简而言之,外点罚函数法是指对于可行域外的点,惩罚项为正,即对该点进行惩罚;对于可行域内的点,惩罚项为0,即不做任何惩罚。因此,该算法在迭代过程中点列一般处于可行域之外,惩罚项会促使无约束优化问题的解落在可行域内。罚函数一般由约束部分乘正系数组成,通过增大该系数,我们可以更严厉地惩罚违反约束的行为,从而迫使惩罚函数的最小值更接近约束问题的可行区域。

L2-罚函数法:非精确算法

对于等式约束
内点罚函数和外点罚函数的优缺点,数学笔记,# 凸优化,算法,最优化内点罚函数和外点罚函数的优缺点,数学笔记,# 凸优化,算法,最优化
对于不等式约束
内点罚函数和外点罚函数的优缺点,数学笔记,# 凸优化,算法,最优化内点罚函数和外点罚函数的优缺点,数学笔记,# 凸优化,算法,最优化

对于一般优化问题,则是将上述不等式约束和等式约束的惩罚项加到一起。

内点罚函数和外点罚函数的优缺点,数学笔记,# 凸优化,算法,最优化

什么情况下使用L2-罚函数法?

  • 实际优化问题中,等式与不等式约束具有物理意义;
  • 约束违背量不要求特别小,在1e-2~1e-3之间可接受就行。例如某优化问题中速度约束 v ≤ 10 v \leq 10 v10,解 v = 10.01 v=10.01 v=10.01也可以接受。

使用该方法时,可采用如下两种方式:

  • 一步到位,即取 σ \sigma σ足够大,直接解无约束罚函数P最优化问题,此时P最优解是个近似解,与实际最优解之间的误差在可接受范围内;
  • 序列迭代优化,例如:

σ = 1    ⟹    P ( x , 1 ) \sigma=1 \implies P(x,1) σ=1P(x,1),解 x 1 ∗ = x 1 x^{*}_{1}=x_1 x1=x1;

σ = 10    ⟹    P ( x , 10 ) \sigma=10 \implies P(x,10) σ=10P(x,10),上一次迭代 x 1 x_1 x1作初值解 x 2 ∗ = x 2 x^{*}_{2}=x_2 x2=x2;

σ = 100    ⟹    P ( x , 100 ) \sigma=100 \implies P(x,100) σ=100P(x,100),上一次迭代 x 2 x_2 x2作初值解 x 3 ∗ = x 3 x^{*}_{3}=x_3 x3=x3;

​ ……直到达到收敛准则。算法伪代码如下:

内点罚函数和外点罚函数的优缺点,数学笔记,# 凸优化,算法,最优化

一般情况下,具体选择何种方式取决于实际工程问题的精度需求和速度需求。

L2-罚函数法的优缺点?

优点:

  • 将约束优化问题转化为无约束优化问题,当 c i ( x ) c_i(x) ci(x)光滑时可以调用一般的无约束光滑优化问题算法求解;
  • 二次罚函数形式简洁直观而在实际中广泛使用。

缺点:

  • 需要 σ → ∞ \sigma \rightarrow \infty σ,此时海瑟矩阵条件数过大,对于无约束优化问题的数值方法拟牛顿法与共轭梯度法存在数值困难,且需要多次迭代求解子问题;
  • 对于存在不等式约束的 P ( x , σ ) P(x,\sigma) P(x,σ)可能不存在二次可微性质,光滑性降低;
  • 不精确,与原问题最优解存在距离。

例子:

内点罚函数和外点罚函数的优缺点,数学笔记,# 凸优化,算法,最优化内点罚函数和外点罚函数的优缺点,数学笔记,# 凸优化,算法,最优化

L1-罚函数法:精确算法

由于L2-罚函数法存在数值困难,并且与原问题的解存在误差,因此考虑精确罚函数法。精确罚函数是一种问题求解时不需要令罚因子趋于正无穷(或零)的罚函数。换句话说,若罚因子选取适当,对罚函数进行极小化得到的解恰好就是原问题的精确解。这个性质在设计算法时非常有用,使用精确罚函数的算法通常会有比较好的性质。

由于L1-罚函数非光滑,因此无约束优化问题P的收敛速度无法保证,这实际上就相当于用牺牲收敛速度的方式来换取优化问题P的精确最优解。

内点罚函数和外点罚函数的优缺点,数学笔记,# 凸优化,算法,最优化

内点罚函数法:障碍函数法

前面介绍的L1和L2罚函数均属于外点罚函数,即在求解过程中允许自变量 x x x位于原问题可行域之外,当罚因子趋于无穷时,子问题最优解序列从可行域外部逼近最优解。自然地,如果我们想要使得子问题最优解序列从可行域内部逼近最优解,则需要构造内点罚函数。顾名思义,内点罚函数在迭代时始终要求自变量 x x x不能违反约束,因此它主要用于不等式约束优化问题

如下图所示,考虑含不等式约束的优化问题,为了使迭代点始终在可行域内,当迭代点趋于可行域边界时,我们需要罚函数趋于正无穷。常见的罚函数有三种:对数罚函数,逆罚函数和指数罚函数。对于原问题,它的最优解通常位于可行域边界,即 c i ( x ) ≤ 0 c_i(x) \leq 0 ci(x)0中至少有一个取到等号,此时需要调整惩罚因子 σ \sigma σ使其趋于0,这会减弱障碍罚函数在边界附近的惩罚效果。

内点罚函数和外点罚函数的优缺点,数学笔记,# 凸优化,算法,最优化

算法伪代码如下:

内点罚函数和外点罚函数的优缺点,数学笔记,# 凸优化,算法,最优化

同样地,内点罚函数法也会有类似外点罚函数法的数值困难,即当 σ \sigma σ趋于0时,子问题 P ( x , σ ) P(x,\sigma) P(x,σ)的海瑟矩阵条件数会趋于无穷,因此对子问题的求解将会越来越困难。

内点罚函数和外点罚函数的优缺点,数学笔记,# 凸优化,算法,最优化

等式约束优化问题的拉格朗日函数法:Uzawa’s Method for convex optimization

基础预备:

凸优化学习笔记(一)

凸优化学习笔记:Lagrange函数、对偶函数、对偶问题、KKT条件

多元函数的极值和鞍点

**若原问题是凸问题,则KKT条件是充要条件。**原问题连续凸则拉格朗日函数严格凸,原问题的最优值 p ∗ p^* p与对偶问题的最优值 d ∗ d^* d相等, ( x ∗ , λ ∗ ) (x^*,\lambda ^*) (x,λ)是拉格朗日函数的鞍点,同时也是原问题和对偶问题的最优解。

内点罚函数和外点罚函数的优缺点,数学笔记,# 凸优化,算法,最优化内点罚函数和外点罚函数的优缺点,数学笔记,# 凸优化,算法,最优化

综上分析,Uzawa’s Method迭代过程分为两个步骤:
{ x k + 1 = argmin ⁡ x L ( x , λ k ) λ k + 1 = λ k + α ( A x k + 1 − b ) \left\{\begin{array}{l} x^{k+1}=\underset{x}{\operatorname{argmin}} \mathcal{L}\left(x, \lambda^k\right) \\ \lambda^{k+1}=\lambda^k+\alpha\left(A x^{k+1}-b\right) \end{array}\right. {xk+1=xargminL(x,λk)λk+1=λk+α(Axk+1b)
(1)给定 λ k \lambda^k λk,求解 min ⁡ x L ( x , λ k ) \min _x \mathcal{L}(x, \lambda^k) minxL(x,λk)无约束优化问题,求解得到 x k + 1 x^{k+1} xk+1

(2)更新 λ \lambda λ L ( x k + 1 , λ ) L(x^{k+1},\lambda) L(xk+1,λ)关于 λ \lambda λ的梯度为 ∂ L ∂ λ ∣ x + 1 = A x k + 1 − b \left.\frac{\partial L}{\partial \lambda}\right|_{x+1}=A x^{k+1}-b λL x+1=Axk+1b,若要求解 max ⁡ λ L ( x k + 1 , λ ) \max _\lambda \mathcal{L}(x^{k+1}, \lambda) maxλL(xk+1,λ),则沿着梯度上升方向进入步长迭代,即 λ k + 1 = λ k + α ( A x k + 1 − b ) \lambda^{k+1}=\lambda^k+\alpha\left(A x^{k+1}-b\right) λk+1=λk+α(Axk+1b) α \alpha α为迭代步长。

该方法的前提就是原函数连续凸, L ( x , λ ) \mathcal L(x,\lambda) L(x,λ)关于 x x x严格凸,则 min ⁡ x L ( x , λ k ) \min _x \mathcal{L}(x, \lambda^k) minxL(x,λk)只存在一个最优解,可求出唯一 x k + 1 x^{k+1} xk+1进而更新 λ k + 1 \lambda^{k+1} λk+1,否则 x k + 1 x^{k+1} xk+1会存在多个,不知道选择哪个去更新 λ \lambda λ。因此缺点很明显,该方法要求原函数必须为连续凸函数,梯度上升步长需要调整且收敛速率不能保证。


参考文献

机器人中的数值优化

最优化:建模、算法与理论/最优化计算方法文章来源地址https://www.toymoban.com/news/detail-797804.html

到了这里,关于约束优化:约束优化的三种序列无约束优化方法的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • MySQL的三种属性约束(性别默认男女),简单易懂

    1、DEFAULT:默认值约束 比如当插入一些数据为空或者没有插入数据的时候,我们可以给一个默认值 插入语句进行验证:   (如下同理) 2、使用ENUM类型限制字段取值 ENUM 是一个字符串对象,其值是从列创建时定义的允许值列表中选择的 3、CHECK 检查约束 注意:(CHECK 约束:

    2024年02月04日
    浏览(33)
  • 了解 MySQL的三种属性约束(性别默认男女)请看这里!!!

    1、DEFAULT:默认值约束 比如当插入一些数据为空或者没有插入数据的时候,我们可以给一个默认值 插入语句进行验证:   (如下同理) 2、使用ENUM类型限制字段取值 ENUM 是一个字符串对象,其值是从列创建时定义的允许值列表中选择的 3、CHECK 检查约束 注意:(CHECK 约束:

    2024年02月06日
    浏览(28)
  • OpenCV函数应用:基于二值图像的三种孔洞填充方法记录(附python,C++代码)

    函数系列: OpenCV函数简记_第一章数字图像的基本概念(邻域,连通,色彩空间) OpenCV函数简记_第二章数字图像的基本操作(图像读写,图像像素获取,图像ROI获取,图像混合,图形绘制) OpenCV函数简记_第三章数字图像的滤波处理(方框,均值,高斯,中值和双边滤波) OpenC

    2024年02月05日
    浏览(42)
  • 25.9 matlab里面的10中优化方法介绍—— 惩罚函数法求约束最优化问题(matlab程序)

    1. 简述          一、算法原理 1、问题引入 之前我们了解过的算法大部分都是无约束优化问题,其算法有:黄金分割法,牛顿法,拟牛顿法,共轭梯度法,单纯性法等。但在实际工程问题中,大多数优化问题都属于有约束优化问题。惩罚函数法就可以将约束优化问题转化为

    2024年02月15日
    浏览(25)
  • 数据结构(C语言实现)——常见排序算法的基本思想及实现(快速排序的三种方法和优化及非递归实现快速排序)

    生活中几乎处处都会用到排序,比如:网购时的店铺顺序,学生成绩的排名等,今天我们就来学习数据结构中常见的几种排序算法。 排序 :所谓排序,就是使一串记录,按照其中的某个或某些的大小,递增或递减的排列起来的操作。 稳定性 :假定在待排序的记录序列

    2023年04月24日
    浏览(40)
  • SpringBoot序列化、反序列化空字符串为null的三种方式

    SpringBoot项目 方式:①Jackson(推荐)、②切面+反射、③注解+切面+反射 后两种方式,未做返回值的处理。 1、 Jackson正反序列化(推荐) StdConverter 和 JsonSerializer的区别 ENTITY 序列化处理类 反序列化处理类 序列化-转换1 序列化-转换2 Controller 测试 2、切面+反射/3、注解+切面+反

    2024年04月22日
    浏览(30)
  • MATLAB中CVX工具箱解决凸优化问题的基本知识——语法、变量声明、目标函数、约束条件、cvx编程错误及解决方法

    提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 本文是在最近学习MATLAB CVX工具箱解决凸优化问题时学到的一些知识点,分享出来供大家参考。 进行CVX编程时,会遇到各种各样意想不到又难以解决的报错问题,如果编程过程中遇到了很多cvx bug和错误,

    2024年02月08日
    浏览(37)
  • flink的ProcessWindowFunction函数的三种状态

    在处理窗口函数时,ProcessWindowFunction处理函数可以定义三个状态: 富函数getRuntimeContext.getState, 每个key+每个窗口的状态context.windowState(),每个key的状态context.globalState,那么这几个状态之间有什么关系呢? 1.getRuntimeContext.getState这个定义的状态是每个key维度的,也就是可以跨时间

    2024年02月13日
    浏览(31)
  • C语言中函数宏的三种封装方式详解

      目录 ​编辑 1. 函数宏介绍 3. do{...}while(0) 方式 4. ({}) 方式 5. 总结 函数宏,即包含多条语句的宏定义,其通常为某一被频繁调用的功能的语句封装,且不想通过函数方式封装来降低额外的弹栈压栈开销。 函数宏本质上为宏,可以直接进行定义,例如: 但上述的宏具有一

    2024年02月02日
    浏览(39)
  • 约束优化求解之罚函数法

    罚函数法 本部分考虑约束优化问题: min ⁡ f ( x ) s . t . x ∈ χ (1) begin{aligned} min f(x) \\\\ s.t. xinchi end{aligned} tag{1} min f ( x ) s . t . x ∈ χ ​ ( 1 ) 这里 χ ⊂ R n chisubsetmathbb{R}^n χ ⊂ R n 为问题的可行域。与无约束问题不同,约束优化问题中自变量 x x x 不能任意取值,这导致

    2023年04月19日
    浏览(21)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包