本部分记录一些最优化理论中的常见算法。

1. 无约束规划

研究无约束优化问题,对研究各类优化问题都有重要意义。因为可以有多种方法将各类等式或者不等式约束的优化问题转换为无约束优化问题,比如利用KKT条件(乘子法),罚函数法,序列二次规划等。

(1)梯度下降 (Gradient Descent Method):泰勒一阶展开分析可得。优点:通俗易懂,且只算梯度。缺点:收敛速度慢,线性收敛,震荡。最速下降:不仅包括迭代方向,还包括的迭代步长的计算。

(2)牛顿/拟牛顿 (Newton Methods/Quasi-Newton Methods):

https://zhuanlan.zhihu.com/p/46536960里面关于拟牛顿讲的不错。但是对于优化问题的牛顿法讲的原理讲的不太清楚。

牛顿法的有点是二次收敛性,当优化问题和二次规划接近时有很快的收敛速度。缺点是要求Hessian矩阵,甚至要求逆,这要求Hessian矩阵非奇异。因此拟牛顿法就模仿牛顿法的结构去构造近似Hessian矩阵的迭代矩阵,保证算法的稳定性。

(3)共轭梯度(Conjugate Gradient Method, CGM)

早年各位先贤在研究二次规划问题时得到的结论,可以推广到其他情况,现在用的很多。其本质思想是希望对于n元函数的优化问题,找到n个共轭(更广义的正交)方向,使得每次迭代可以在共轭方向上确定迭代步长,保证这个方向的误差减少到0。其中下列的pdf讲了很多细节理论分析,有助于理解数学原理。

https://zhuanlan.zhihu.com/p/64227658

https://www.zhihu.com/question/25440474

http://hliangzhao.me/math/CG.pdf


2. 线性规划,单纯性法(Simplex Method)

TODO,暂时用不到先跳过了

https://blog.csdn.net/weixin_43902708/article/details/89253943


3. 二次规划,有效集法 (Active Set Method, ASM)

暂时没有时间抠细节,不过ASM是二次规划的一个重要基础,弄清楚后也有利于SQP的理解。

https://blog.csdn.net/dymodi/article/details/50358278


4. 罚函数法,内点法(Interior Point Method, IPM)和外点法(exterior point method, )。

优点:对优化问题本身没有太多要求,因此其适用性较广泛,可用于求解非线性优化问题。

基本思想:把约束优化问题转化为一系列无约束优化问题。

在去除约束的过程中,可以把x偏离可行集的程度作为一个惩罚项,就是把约束映射成cost了。根本思想就是把一些东西都搞成函数值(这个思路就很现代了)。又是构造下界了,那当然就要构造一个最大的下界。外点法是可以从可行域外出发,逐渐使得解收敛到可行域内;内点法是要求从可行域内出发,然后在可行域边界处设立一套cost高墙,使得迭代过程中解不会超出边界。

https://blog.csdn.net/SkullSky/article/details/107621121


5. 序列二次规划(Sequential Quadratic Programming,SQP)

解决给定约束条件下的非线性优化问题(从最优化问题的难度来说,非凸带来的求解难度比非线性带来的难度要大很多)。

基本思想就是局部线性化(或者二次化,说白了就是用泰勒展开),就是在迭代过程中,在当前解的周围把非线性优化问题转化为标准的二次规划求解。

https://blog.csdn.net/qq_42247231/article/details/106938003 (其中对于不等式约束的二次规划问题,再次用到有效集思想)


6. 次梯度法 (Subgradient Method)

次梯度,顾名思义其区别于梯度,或者说是一种更广义的梯度,用于解决函数不可导时的优化求解问题。从这个概念上看,次梯度会是一大类很广泛的方法,涉及到原有梯度方法都需要推广到次梯度方法上去。https://blog.csdn.net/qq_32742009/article/details/81704139


7. 松弛变量 (Slack Variable)

松弛变量的两种作用

(1)将不等式约束转化为等式约束。https://zhuanlan.zhihu.com/p/90556189。有一个疑问:Ax <= b这样的不等式约束是变成了等式约束,但是多了一个关于新增变量的不等式约束。从整体形式上来说,这个形式非常接近于线性规划的标准型,所以可以这么搞。

(2)修改部分约束的边界,使得原来的硬约束变成软约束,使得新问题满足原约束更好,如果不满足的话,要使软约束引起的cost尽量小。https://www.cnblogs.com/Key-Ky/p/5100324.html


8. 常用的优化库

(1)matlab优化工具箱:这个不解释,很多高校搞研究都喜欢用matlab

(2)python:scipy.optimize,python的优化库

https://docs.scipy.org/doc/scipy/reference/tutorial/optimize.html

https://blog.csdn.net/jiang425776024/article/details/87885969

(3)qpOAES:QP求解库,https://github.com/coin-or/qpOASES

(4)osqp:牛津搞的开源项目,对比测试这个效率会比qpOAES要高。https://osqp.org/docs/get_started/

(5)其他:https://blog.csdn.net/qq_43002347/article/details/104390139

最优化理论与方法2--算法篇相关推荐

  1. 最优化理论与方法(part4)--秩一校正

    学习笔记,仅供参考,有错必纠 文章目录 最优化理论与方法 秩一校正 定理 1.2.6(Sherman-Morrison 定理) 定理 1.2.7(Sherman-Morrison-Woodburg 定 ...

  2. 线性和非线性最优化理论、方法及应用研究的发展状况.

    关注. 最优化的研究包含理论.方法和应用.最优化理论主要研究问题解的最优性条件.灵敏度分析.解的存在性和一般复杂性等.而最优化方法研究包括构造新算法.证明解的收敛性.算法的比较和复杂性等.最优化的应用 ...

  3. 最优化理论与方法(part11)--约束优化问题

    学习笔记,仅供参考,有错必纠 文章目录 最优化理论与方法 约束优化问题 定义 8.1.1(可行点与可行域) 全局和局部极小值点 积极与非积极 最优化理论与方法 约束优化问题 定义 8.1.1(可行点与 ...

  4. 最优化理论与方法(part8)--凸集的分离和支撑

    学习笔记,仅供参考,有错必纠 文章目录 最优化理论与方法 凸集的分离和支撑 定理 1.3.17(凸集外一点与闭凸集的极小距离) 定理 1.3.18 定理 1.3.19 定义 1.3.20(支撑超平面) ...

  5. 最优化理论与方法(part5)--函数和微分

    学习笔记,仅供参考,有错必纠 文章目录 最优化理论与方法 函数和微分 连续可微和Hesse矩阵 d d d的方向导数 d d

  6. 最优化理论与方法(part3)--矩阵的Rayleigh商

    学习笔记,仅供参考,有错必纠 文章目录 最优化理论与方法 矩阵的Rayleigh商 定义 1.2.4 定理 1.2.5 最优化理论与方法 矩阵的Rayleigh商 定义 1.2.4 备注: C C C ...

  7. 最优化理论与方法(part2)--矩阵求逆和广义逆

    学习笔记,仅供参考,有错必纠 文章目录 最优化理论与方法 矩阵求逆和广义逆 定理 1.2.3 (von Neumann引理) 定理 1.2.3' 子空间 最优化理论与方法 矩阵求逆和广义逆 定理 1. ...

  8. 最优化理论与方法学习笔记

    最优化理论与方法 参考学习资源:上海财经大学崔老师B站讲解视频 以下是个人学习笔记,并不具有很强的参考性,具体学习书籍可参考<最优化理论与方法-袁亚湘> 大致分类: 1.无约束优化/约束优 ...

  9. (最优化理论与方法)第一章最优化简介-第一节:最优化问题概括

    文章目录 一:最优化问题的一般形式 二:一个简单例子 三:最优化问题分类 (1)有约束和无约束 (2)连续优化和离散优化 (3)随机性优化和确定性优化 (4)线性规划和非线性规划 (5)凸优化和非凸优 ...

最新文章

  1. Loj #3111. 「SDOI2019」染色
  2. MPU和CPU有什么区别?
  3. leetcode32 --- longestValidParentheses
  4. mysql out_mysql存储过程 in out inout
  5. H5自带的type=date或者month等日期控件移动端显示placeholder
  6. 怎样在 iPhone 或 iPad 上使用“快捷指令”?
  7. 符文(灵晶)系统介绍
  8. 论文翻译:2021_Towards model compression for deep learning based speech enhancement
  9. 洛谷P3387 【模板】缩点(tarjan)
  10. Unity3D学习—牧师与魔鬼—MVC模式和ECS架构应用
  11. 当Spring Cloud Alibaba Sentinel碰上Spring Cloud Sleuth会擦出怎样的火花
  12. 安道拓Adient EDI 830物料需求预测报文详解
  13. STC51单片机数码管显示程序和仿真
  14. 北京一卡通显示未能连接到服务器,教你苹果手机如何绑北京一卡通
  15. vmware完全卸载 防止出现各种问题治标不治本
  16. 女儿说要看烟花,但是政府规定不能放,程序员爸爸默默的拿起了键盘,程序员就是要为所欲为!
  17. 极速PDF阅读器有哪些快捷键?
  18. 【开关】如何理解树状矩阵和交叉点矩阵
  19. 项目看板开发经验分享(番外篇)——集团碳排放看板(万剑归宗)
  20. 构建验证测试BVT--Build Verification Test

热门文章

  1. 阿里Java后台开发是怎么面试的
  2. 亿格名片 | 亿格云牵手“共享充电宝行业龙头公司“怪兽充电
  3. Android基于高德地图实时定位服务
  4. select获取选中的值
  5. cf 1012B Chemical table
  6. Perl数组和hash相关函数
  7. Altium Designer 报错整理-软件安装失败
  8. 博途1200间MODBUS TCP通信
  9. Jenkins 详细部署
  10. 强弩之末,不能入鲁缟;冲风之衰,不能起毛羽。