我目前正在尝试使用 scipy 优化函数。我对变量有一些限制,从这个链接:http ://docs.scipy.org/doc/scipy-0.14.0/reference/tutorial/optimize.html,看起来 SLSQP 正是我想要的。在他们的示例中,他们有一个明确定义的输入结果公式,他们从中找到梯度。我有一个极其令人作呕的计算密集型函数,它计算电磁场如何从金属壁反弹,这绝不可以用封闭形式表示(如果你有兴趣,我正在使用 MEEP FDTD Python 模拟)。scipy 中是否有一个等效的函数可以为您找到函数的梯度然后进行优化?或者,等效地,是否有一个内置到 scipy 中的函数(任何基本的 python 库都可以),它可以为我找到一个函数的梯度,然后我可以将它传递给这个优化程序?任何建议将不胜感激。
问问题
3317 次
1 回答
5
由于您无法轻松计算梯度,因此使用无梯度优化算法可能会有所回报。以下是 SciPy 中一些可用的概述:
http://scipy-lectures.github.io/advanced/mathematical_optimization/#gradient-less-methods
还有盆地跳跃算法,它类似于模拟退火,但在该页面上没有提到:
http://docs.scipy.org/doc/scipy/reference/generated/scipy.optimize.basinhopping.html
于 2015-03-03T09:38:01.883 回答