如何解决lmfit/scipy.optimize 最小化方法描述?
在method
包的minimize
function中有没有对参数lmfit
的每种算法进行简要说明的地方?在那里和 documentation of SciPy 中都没有关于每个算法的细节的解释。现在我知道我可以在它们之间进行选择,但我不知道该选择哪一个...
我目前的问题
我在 Python 中使用 lmfit 来最小化一个函数。我想在有限和预定义的范围内最小化函数,其中函数具有以下特征:
- 几乎处处都为零,这使得它在数值上几乎处处都为零。
- 它在某些时候有一个非常非常尖锐的峰值。
- 峰值可以在区域内的任何地方。
这使得许多最小化算法不起作用。现在我结合使用蛮力法 (method="brute"
) 找到接近峰值的点,然后将此值提供给 Nelder-Mead 算法 (method="nelder"
) 以最终执行最小化.它大约有 50% 的时间在工作,而另外 50% 的时间它无法找到最小值。我想知道对于这种情况是否有更好的算法......
解决方法
我认为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 和相关库的文档都描述了如何使用这些方法,但没有详细描述算法的工作原理。
公平地说,不同的优化算法共享许多功能,它们之间的差异可能会变得非常技术性。所有这些方法都试图通过更改所提供函数的参数值来最小化某些指标(通常称为“成本”或“残差”)。
需要一本教科书(或至少是维基百科页面)来建立用于这些方法的概念和数学术语,然后是一篇论文(或至少是维基百科页面)来描述每种方法与其他。所以,我认为基本的答案是查找不同的方法。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。