【问题标题】:lmfit/scipy.optimize minimization methods description?lmfit/scipy.optimize 最小化方法描述?
【发布时间】:2021-04-16 20:06:12
【问题描述】:

lmfit包的minimize function中参数method的各个算法有什么地方有简要说明吗?那里和documentation of SciPy 都没有解释每种算法的细节。现在我知道我可以在它们之间进行选择,但我不知道该选择哪一个......

我目前的问题

我在 Python 中使用 lmfit 来最小化一个函数。我想在有限的预定义范围内最小化函数,其中函数具有以下特征:

  • 它几乎处处为零,这使其在数值上几乎处处为零。
  • 它在某个点有一个非常非常尖锐的峰值。
  • 峰可以在该区域内的任何地方。

这使得许多最小化算法不起作用。现在,我正在使用蛮力方法 (method="brute") 的组合来找到接近峰值的点,然后将此值提供给 Nelder-Mead 算法 (method="nelder") 以最终执行最小化。它大约有 50% 的时间在工作,而另外 50% 的时间它无法找到最小值。我想知道对于这种情况是否有更好的算法......

【问题讨论】:

  • 你有看过源码吗?这些算法都在源代码中进行了详尽的描述,如下所示:github.com/scipy/scipy/blob/…
  • 谢谢,我不知道。最好将所有这些信息汇总在某个地方,以便轻松快速地阅读。

标签: python documentation scipy-optimize lmfit


【解决方案1】:

我认为 lmfit(例如 https://lmfit.github.io/lmfit-py/fitting.html#fit-methods-table)和 scipy.optimize(例如 https://docs.scipy.org/doc/scipy/reference/tutorial/optimize.html#optimization-scipy-optimize)的文档没有给出算法的详细数学描述是公平的。 再说一次,scipy、numpy 和相关库的大多数文档都描述了如何使用这些方法,但没有详细描述算法的工作原理。

平心而论,不同的优化算法共享许多功能,它们之间的差异可能会变得相当技术性。所有这些方法都试图通过更改所提供函数的参数值来最小化某些度量(通常称为“成本”或“残差”)。

它需要一本教科书(或至少一个维基百科页面)来确定用于这些方法的概念和数学术语,然后是一篇论文(或至少一个维基百科页面)来描述每种方法与其他。所以,我认为基本的答案是查找不同的方法。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-09-17
    • 1970-01-01
    • 1970-01-01
    • 2020-03-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多