python Scipy.optimize 模块中优化求解器总结
2024-04-07python科学计算生态栈中的顶级开源库scipy提供了大量的数值优化求解器,尤其以optimize模块最为显著,其提供了统一的数值优化求解器接口minimize(),虽然方便使用,但是也对非数学专业的人员初次使用时带来存选择困难,尤其是十几种方法统一由同一个接口调用,各方法使用限制、优缺点难以把握,此外官方文档在对各求解器参数设置的解释略显晦涩,部分过于简略,甚至有些凌乱,导致使用起来并非得心应手,今天调研阅读现有优秀博客和官方文档,对该接口的各种方法进行总结,方便后续根据需要快速选择所需算法。
求解器 | 中文名 | jac要求 | hess要求 | 边界约束 | 条件约束 | 求解规模 |
---|---|---|---|---|---|---|
Nelder-Mead | 单纯形法 | 无 | 无 | 可选 | 无 | 小 |
Powell | 鲍威尔法 | 无 | 无 | 可选 | 无 | 小 |
CG | 共轭梯度法 | 可选 | 无 | 无 | 无 | 中小 |
BFGS | 拟牛顿法 | 可选 | 无 | 无 | 无 | 中大 |
L-BFGS-B | 限制内存BFGS法 | 可选 | 无 | 可选 | 无 | 中大 |
TNC | 截断牛顿法 | 可选 | 无 | 可选 | 无 | 中大 |
COBYLA | 线性近似法 | 无 | 无 | 无 | 可选 | 中大 |
SLSQP | 序列最小二乘法 | 可选 | 无 | 可选 | 可选 | 中大 |
trust-constr | 信赖域算法 | 无 | 可选 | 可选 | 可选 | 中大 |
Newton-CG | 牛顿共轭梯度法 | 必须 | 可选 | 无 | 无 | 大 |
dogleg | 信赖域狗腿法 | 必须 | 可选 | 无 | 无 | 中大 |
trust-ncg | 牛顿共轭梯度信赖域法 | 必须 | 可选 | 无 | 无 | 大 |
trust-exact | 高精度信赖域法 | 必须 | 可选 | 无 | 无 | 大 |
trust-krylov | 子空间迭代信赖域法 | 必须 | 可选 | 无 | 无 | 大 |
**注: |
https://blog.csdn.net/youcans/article/details/118396836
https://blog.csdn.net/weixin_41645983/article/details/93191580
https://wuli.wiki/online/NelMea.html
https://docs.scipy.org/doc/scipy/reference/tutorial/optimize.html