zoukankan      html  css  js  c++  java
  • python Scipy.optimize 模块中优化求解器总结

    minimize中各种优化器总结

    python科学计算生态栈中的顶级开源库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 子空间迭代信赖域法 必须 可选

    注:
    jac可选,代表jac有五种选项{callable, 2-point, 3-point, cs, bool},可任选其一。默认为None,即采用有限差分近似计算;2/3-point 或者 cs 采用2点、3点、中心差分近似计算;若为True,则目标函数需返回目标函数值和jac向量;若为callable,则提供jac计算函数。hess 也有五种选项{callable, 2-point, 3-point, cs, HessianUpdateStrategy},但要注意,只有jac提供计算函数,hess才可以使用差分近似,我想这也是避免因差分二次近似导致数值耗散的缘故。表中各算法适用问题规模乃个人总结,仅供参考。

    参考链接

    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

  • 相关阅读:
    rabbitmq在centos7下安装
    跨域问题
    11生成器相关及推导式(附内置函数分析图url)
    10函数名的应用,闭包,和迭代器
    09函数的动态传参及global和nonlocal关键字
    08函数简介
    07基本的文件操作
    06set集合和深浅拷贝(包括前面的一些知识点补充)
    05判断和编码/解码
    04基本数据类型(字典)
  • 原文地址:https://www.cnblogs.com/catnofishing/p/15097025.html
Copyright © 2011-2022 走看看