如何为scipy.optimize.minimize选择合适的方法?

时间:2019-11-19 02:02:13

标签: minimization scipy-optimize scipy-optimize-minimize

我想知道如何为scipy.optimize.minimize选择最佳的最小化方法,以及结果有何不同?

我正在尝试最小化以下表达式(求解g):

|a1.g.x + a2.g.x^3 - K|

1 个答案:

答案 0 :(得分:0)

Scipy举办了有关数学优化的讲座,他们在课堂上有section on choosing a minimization method。该部分摘录:

不了解渐变:

  • 通常,首选BFGS或 L-BFGS,即使您必须近似于数字梯度。这些 如果省略参数方法,也是默认值-取决于是否 问题有局限性
  • 关于条件良好的问题, Powell和Nelder-Mead都是无梯度方法,在高温下效果很好 维度,但因病情恶化而崩溃。

了解渐变

  • BFGS或L​​-BFGS。
  • 计算开销 BFGS的值大于L-BFGS的值,而L-BFGS本身的值大于 共轭梯度。另一方面,BFGS通常需要更少 功能评价比CG。因此共轭梯度法更好 在优化计算便宜的函数方面比BFGS更好。

使用黑森州

  • 如果您可以计算粗麻布,则首选牛顿法(Newton-CG或TCG)。

如果测量噪声很大

  • 使用Nelder-Mead或Powell。

如果我正确地解释了您的方程式,我认为BFGS or L-BFGS都可能对您有用。