python - 在不显式定义梯度的情况下优化 scipy 中的函数

标签 python scipy mathematical-optimization meep

我目前正在尝试使用 scipy 优化函数。我对变量有一些限制,从这个链接:http://docs.scipy.org/doc/scipy-0.14.0/reference/tutorial/optimize.html ,看起来 SLSQP 正是我想要的。在他们的示例中,他们对输入的结果有一个明确定义的公式,从中可以找到梯度。我有一个极其令人厌恶的计算密集型函数,它计算电磁场如何从金属壁反弹,这绝不可以用封闭形式表达(我正在使用 MEEP FDTD Python 模拟,如果你感兴趣的话)。 scipy 中是否有内置的等效函数可以为您找到函数的梯度然后进行优化?或者,等效地,scipy 中是否内置了一个函数(任何基本的 python 库都可以),它可以为我找到函数的梯度,然后我可以将其传递到这个优化程序中?任何建议将不胜感激。

最佳答案

由于您无法轻松计算梯度,因此使用无梯度优化算法可能会有所返回。以下是 SciPy 中可用的一些功能的概述:

http://scipy-lectures.github.io/advanced/mathematical_optimization/#gradient-less-methods

还有盆地跳跃算法,该算法与模拟退火类似,但该页面未提及:

http://docs.scipy.org/doc/scipy/reference/generated/scipy.optimize.basinhopping.html

关于python - 在不显式定义梯度的情况下优化 scipy 中的函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26739550/

相关文章:

python-3.x - 使用 NetworkX 进行图形排列和旋转

arrays - 翻转元素以最小化最大的连续元素在一起

optimization - 如何加速 GLPK 求解 MIP 模型

python - 无法在 Azure Data Studio 中将内核更改为 Python

python - 启用急切执行时如何运行并行map_fn

python-2.7 - 高分辨率再分析数据

python - Lomb-Scargle 与 FFT 功率谱 : crashes with evenly spaced data

function - 使用 fminsearch 最大化函数

javascript - Selenium RC 中的 selectCancelOnNextConfirmation 替代方案

python - 如何使用 Python 替换本文中的冒号?