0%

最优化算法学习记录

本文提供了优化问题的概述,包括背景,分类,以及线性,非线性和二次规划问题的求解方法。本文还讨论了全局优化,并提供了非凸函数和凸函数的例子,以及线性规划和二次规划的例子。

优化问题的最终目的就是求最小值(最大值转为求最小值)

简单划分

  1. 解析法
  2. 迭代法
    1. 常规方法
    2. 技巧
      1. 切平面
      2. 椭圆法
      3. 内点法

Background

  1. 目标函数、约束、线性(非线性)
  2. 凸优化问题(是否为凸问题)
  3. 局部最优、全局最优
  4. 矩阵求导(梯度),矩阵的一阶导数、二阶导数(Hessian)
  5. 解析与迭代

How

  1. 目标函数、约束均为线性:单纯形法。大问题:内点法
  2. 目标函数二次,约束线性:改进单纯形法。大问题:内点法
  3. 凸问题:切割平面、椭球算法、内点法
  4. 目标函数存在多个局部最小值,全局优化算法(启发式算法/智能优化算法)
  5. 非线性非凸问题(最难),梯度和海森信息(二阶导)->构造解析表达式
  6. 无约束问题
    1. Levenberg-Marquardt
    2. 牛顿算法
    3. 拟牛顿
    4. 最速下降
    5. Powell
  7. 线性约束:SQP、梯度投影法
  8. 非线性约束:SQP、转为为无约束

优化问题分类

  1. 无约束问题(非线性最小二乘问题)

    1. 牛顿法
    2. 逆牛顿法
    3. Levenberg-Marquardt算法
    4. Nelder-Mead 方法
    5. 其他
      1. 搜索方向和一维搜索法
  2. 约束问题

    1. 规划问题
      1. 线性规划(整数规划)
        1. 单纯形解法
      2. 二次规划
        1. 改进单纯形法
    2. 非线性优化的约束
      1. 等式约束
        1. 线性等式约束
        2. 非线性等式约束
      2. 不等式约束
        1. 线性等式约束
        2. 非线性等式约束

全局优化

  1. 启发式算法
    1. 模拟退火
    2. 遗传算法
  2. 基本算法
    1. 随机搜索
    2. 多起点优化

优化问题\(F(x)\)

  • 线性问题
    • 不论有无约束,都可以使用单纯形法内点法求解
  • 非线性问题
    • 凸优化问题
      • 有约束:切平面法、椭球法、内点法
      • 无约束情况下等同于非凸问题
    • 非凸问题
      • 约束\(h(x)\)不是线性,拉格朗日乘子法
      • 约束\(g(x)\)为线性,gradient projection、SQP
      • 约束\(g(x)\)不是线性,惩罚函数、Barrier函数、SQP问题
      • 无约束(可消约束)
        • 多起点优化
          • Hession矩阵,一阶矩阵:Levenberg-Marquardt、牛顿法、牛顿线性搜索
          • 一阶矩阵:Quasi-Newton、Quasi-Newton线性搜索、最速下降法
          • 无:Powell Perpendicular线性搜索、Nelder-Mead
        • 不是多起点优化:随机搜索、模拟退火、遗传算法
  • 二次问题
    • 约束,线性,修正的单纯形法、内点法

例子

非凸函数

\(\int _ { 0 } ^ { x 2 } ( \frac { e ^ { x _ { 3 } ^ { 2 } z } \cos ( z ) } { x _ { 3 } ^ { 4 } z + 1 } + z ^ { x 1 } ) d z\)

\(e ^ { x _ { 1 } ^ { 2 } + x _ { 2 } ^ { 2 } } + x _ { 1 } ^ { 2 } x _ { 2 } ^ { 2 }\)

\(( x _ { 1 } + x _ { 2 } ) ^ { 3 } - \log ( 2 - x _ { 1 } ^ { 2 } - x _ { 2 } ^ { 2 } )\)

$x _ { 1 } ^ { 4 } + x _ { 2 } ^ { 2 } + 3 x _ { 1 } x _ { 3 } + 2 x _ { 4 } x _ { 5 } $

$9 x _ { 1 } ^ { 2 } + 4 x _ { 2 } ^ { 2 } + 2 x _ { 1 } x _ { 2 } + 8 x _ { 3 } ^ { 2 } - 2 x _ { 1 } x _ { 3 } $

$ { ( x _ { 1 } + 3 x _ { 2 } + 4 x _ { 3 } ) ^ { 2 } } + ( ( x _ { 1 } + 4 x _ { 2 } + 5 x _ { 3 } - 100 ) ^ { 4 } )$

$ { 1 + } $

凸函数

$( x _ { 1 } ^ { 2 } + x _ { 2 } ^ { 2 } ) + 14 x _ { 2 } ^ { 4 } $

$ ( ( x _ { 1 } - 1 ) ^ { 2 } + ( x _ { 2 } - 2 ) ^ { 2 } ) ^ { 2 } - ( 2 - x _ { 1 } ^ { 2 } - x _ { 2 } ^ { 2 } )$

$| 2 x _ { 1 } + 4 x _ { 2 } + 3 x _ { 3 } + 2 x _ { 4 } + 7 | + ( ( x _ { 1 } + x _ { 2 } - 4 x _ { 3 } - x _ { 4 } ) ^ { 4 } ) $

$( F _ { 1 } ( x ) , 2 F _ { 2 } ( x ) , F _ { 3 } ( x ) + 8 F _ { 4 } ( x ) ) $

$ x _ { 1 } + | x _ { 2 } | + 3 x _ { 3 } + 4 | x _ { 4 } |$

\(( 4 x _ { 1 } + 7 x _ { 2 } - 4 x _ { 3 } + 12 x _ { 4 } ) ^ { 3 }\)

\(( x _ { 1 } - 5 ) ^ { 2 } + ( x _ { 2 } - 8 ) ^ { 4 }\)

线性规划问题

\(| x _ { 1 } - 4 x _ { 2 } + x _ { 3 } - 4 |\)

$( 4 x _ { 1 } - 3 x _ { 2 } + 8 x _ { 3 } - 5 , - 2 x _ { 1 } + 7 x _ { 2 } - x _ { 3 } + 1 ) $

二次规划(凸二次函数)

\(2 ^ { 5 x _ { 1 } ^ { 2 } + 2 x _ { 2 } ^ { 2 } + 6 x _ { 1 } x _ { 2 } + 3 x _ { 1 } - x _ { 2 } }\)

\(1 - 4 x _ { 1 } ^ { 2 } - 9 x _ { 2 } ^ { 2 } - 8 x _ { 3 } ^ { 2 } + 4 x _ { 1 } x _ { 2 } - 2 x _ { 1 } x _ { 3 } + 4 x _ { 2 } x _ { 3 }\)

相关书籍

[1] 程理民, 吴江, 张玉林. 运筹学模型与方法教程[M]. 清华大学出版社, 2000.

[2] 陈宝林. 最优化理论与算法[M]. 清华大学出版社有限公司, 2005.

[3] 袁亚湘, 孙文瑜. 最优化理论与方法[M]. 科学出版社, 1997.

个人感觉,难度[3]>[2]>[1],袁院士那本理论证明偏多,可搭配[2]与课后练习一起阅读。