本篇参考优化问题综述来源
优化问题分类
优化问题一般可以分为两大类:无约束优化问题和约束优化问题。约束优化问题又可分为含等式约束优化和含不等式约束优化
- 无约束优化问题
- 含等式约束的优化问题
含不等式约束的优化问题
求解策略
针对以上三种情形,各有不同的处理策略:
- 无约束的优化问题:可直接对其求导,并使其为0,这样便能得到最终的最优解;
- 含等式约束的优化问题:主要通过拉格朗日乘数法将含等式约束的优化问题转换成为无约束条件的优化问题求解
- 含有不等式约束的优化问题:主要通过KKT条件(Karush-Kuhn-Tucker Condition)将其转化成无约束优化问题求解
算法比较
无约束优化算法
- 坐标轮换法具有不需要导数信息的优点,计算过程比较简单,程序实现也比较容易,但存在算法收敛速度较慢、计算效率低等缺点。坐标轮换法主要用来解决优化问题涉及变量数目小于10的小规模无约束优化问题;另外,坐标轮换法还可解决目标函数的等值线为圆或平行于坐标轴的优化问题。
- 与其他无约束优化算法相比,最速下降法(梯度下降法)具有方法简单等优点,计算效率在最初几步迭代时较高,且对初始点不敏感,因而常与其他方法一起使用,但最速下降法需要目标函数的一阶导数信息。
- 牛顿法对给定的初始点比较敏。如果初始点选择的比较好,则其解决优化问题的收敛过程会很快;如果选择不当,则可能会出现收敛失败的情况。另外,牛顿法存在计算过程复杂、计算量特别大等缺点,因此主要适合于设计变量数目小的优化问题及目标函数阶次较低的优化问题。
- 共轭梯度法具有收敛速度快等优点,其收敛速度远快于最速下降法。共轭梯度法计算简单,所需要的存储空间少,适合于优化变量数目较多的中等规模优化问题。
- Powell法是计算效率比较高的优化算法之一,它不需要目标函数的导数,是求解中小型规模优化问题的有效方法。
- 变尺度法也是计算效率比较高的优化算法之一,可用来解决高阶目标函数的优化问题,但存在程序实现比较复杂、存储空间比较大等缺点。
- 单纯形法具有不需目标函数导数信息、程序实现简单、计算效率比较高等优点。
约束优化算法
- Monte Carlo法具有方法简单、不需要导数信息等优点,但存在求解高维优化问题时计算量大等不足;
- 随机方向搜索法具有优化求解过程收敛快,但存在局部寻优的不足,因而在使用时需采用选择多个不同初始点的策略;
- 复合形法具有程序实现简单等优点,但在解决设计变量和约束条件多的优化问题时优化效率比较低;
- 可行方向法是解决约束优化问题的有效方法之一,适合求解中等规模化问题,但存在程序实现复杂等不足;
- 广义简约梯度法具有算法收敛快、计算精度高等优点,但也存在程序实现复杂等不足;
- 罚函数优化方法包括内点法、外点法、混合法等,具有方法实现简单等优点,但存在优化过程不稳定、收敛速度较慢等缺点,适宜于解决中小规模优化问题;
- 序列线性规划法收敛较慢,只适用于非线性程度不是很强的优化问题;
- 序列二次规划法是收敛速度较快、优化比较有效的方法之一,比较适合于中等规模优化问题;
智能算法智能算法综述
- 遗传算法:优点是能很好的处理约束,能很好的跳出局部最优,最终得到全局最优解,全局搜索能力强;缺点是收敛较慢,局部搜索能力较弱,运行时间长,且容易受参数的影响。遗传算法适合求解离散问题,具备数学理论支持,但是存在着汉明悬崖等问题。
- 模拟退火:优点是局部搜索能力强,运行时间较短;缺点是全局搜索能力差,容易受参数的影响。
- 爬山算法:显然爬山算法较简单,效率高,但是处理多约束大规模问题时力不从心,往往不能得到较好的解。
- 粒子群算法:适合求解实数问题,算法简单,计算方便,求解速度快,但是存在着陷入局部最优等问题。
- 蚁群算法:适合在图上搜索路径问题,计算开销会大。
带约束的最优化问题详细推导,推荐精读
来源. 优化问题综述 ↩
智能算法综述. 智能算法综述,智能优化算法概述 ↩