2

我想知道如何为 scipy.optimize.minimize 选择最佳最小化方法,结果可能会有多大不同?

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

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

4

1 回答 1

3

Scipy 有一个关于数学优化的讲座,其中有一个关于选择最小化方法的部分。摘自该部分的片段:

在不了解梯度的情况下:

  • 一般来说,更喜欢 BFGS 或 L-BFGS,即使你必须近似数值梯度。如果您省略参数方法,这些也是默认值 - 取决于问题是否有约束或界限
  • 在条件良好的问题上,Powell 和 Nelder-Mead 都是无梯度的方法,在高维上工作得很好,但在条件恶劣的问题上它们会崩溃。

了解梯度

  • BFGS 或 L-BFGS。
  • BFGS的计算开销比L-BFGS大,本身也比共轭梯度大。另一方面,BFGS 通常比 CG 需要更少的功能评估。因此,共轭梯度法在优化计算成本低的函数方面优于 BFGS。

与黑森州

  • 如果您可以计算 Hessian,则更喜欢 Newton 方法(Newton-CG 或 TCG)。

如果您有嘈杂的测量结果

  • 使用 Nelder-Mead 或 Powell。

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

于 2020-09-22T06:44:28.790 回答