lmfit/scipy.optimize最小化方法说明?

2024-05-23 21:27:56 发布

您现在位置:Python中文网/ 问答频道 /正文

lmfit包的^{} function中是否有对参数method的每个算法的简要描述?无论是在那里还是在documentation of SciPy中,都没有对每个算法的细节进行解释。现在我知道我可以在他们之间选择,但我不知道选择哪一个

我目前的问题

我在Python中使用lmfit最小化函数。我希望在有限和预定义范围内最小化函数,其中函数具有以下特征:

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

这使得许多最小化算法无法工作。现在,我正在使用蛮力方法(method="brute")的组合来找到接近峰值的点,然后将该值输入Nelder-Mead算法(method="nelder"),以最终执行最小化。它在大约50%的时间内工作,在其他50%的时间内找不到最小值。我想知道是否有更好的算法来处理这种情况


Tags: of函数算法区域参数documentation时间function
1条回答
网友
1楼 · 发布于 2024-05-23 21:27:56

我认为,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和相关库的大多数文档都描述了如何使用这些方法,但没有详细描述算法是如何工作的

公平地说,不同的优化算法有许多共同的特点,它们之间的差异可以得到相当的技术性。所有这些方法都试图通过更改所提供函数的参数值来最小化某些度量(通常称为“成本”或“剩余”)

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

相关问题 更多 >