Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/355.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何加快basinhopping全局优化_Python_Optimization_Scipy_Scipy Optimize_Scipy Optimize Minimize - Fatal编程技术网

Python 如何加快basinhopping全局优化

Python 如何加快basinhopping全局优化,python,optimization,scipy,scipy-optimize,scipy-optimize-minimize,Python,Optimization,Scipy,Scipy Optimize,Scipy Optimize Minimize,我正在开发一个程序,它应该执行大约6750次优化。现在的问题是,一次优化的持续时间约为3分钟。乍一看这似乎不多,但如果我必须执行6750次,我将等待2周。。。显然这不是我想要的,因此我的问题是如何提高basinhopping全局优化算法的速度。我有一种感觉,我在这里忘记了一些东西,比如另一种方法或一些可能对我有帮助的参数。只是我不知道是什么 简言之,我有两个问题。一个优化在收敛前可能需要3分钟,这是否正常?我该如何加速优化 下面是一段代码,显示了我目前的工作方式。第一种方法完成1750次优化,第

我正在开发一个程序,它应该执行大约6750次优化。现在的问题是,一次优化的持续时间约为3分钟。乍一看这似乎不多,但如果我必须执行6750次,我将等待2周。。。显然这不是我想要的,因此我的问题是如何提高basinhopping全局优化算法的速度。我有一种感觉,我在这里忘记了一些东西,比如另一种方法或一些可能对我有帮助的参数。只是我不知道是什么

简言之,我有两个问题。一个优化在收敛前可能需要3分钟,这是否正常?我该如何加速优化

下面是一段代码,显示了我目前的工作方式。第一种方法完成1750次优化,第二种方法完成5000次优化

minimizer_kwargs = {"method": "L-BFGS-B"}
x0 = [100]
func = lambda x: calculate_score(x)
ret = op.basinhopping(func, x0, stepsize=5, minimizer_kwargs=minimizer_kwargs)
print(ret.x[0])

minimizer_kwargs = {"method": "L-BFGS-B"}
x0 = [100, 100]
func = lambda x: calculate_score(x[0], x[1])
ret = op.basinhopping(func, x0, stepsize=5, minimizer_kwargs=minimizer_kwargs)
print(ret.x[0], ret.x[1])

以下几点建议的简单顺序如下:1)在多个核/机器上并行执行,2)在优化程序上放宽初始公差,然后在您关心的几个核上重新运行,3)编写代码以计算
func
的梯度,并将其传递给优化程序感谢您的帮助。然而,我不太清楚你在第二点中说的是什么。你说的“宽松的初始公差”和“对我关心的少数人更紧”是什么意思。还有,如你在第3点中提到的,我在哪里可以找到如何计算函数梯度的方法吗?我所说的“容差”是指scipy用来定义它用来确定何时停止的标准的措辞(搜索
tol
)。如果你让它停止时,它的“轻微”更糟,这可以节省大量的时间,而不会严重影响结果。至于计算梯度,这需要了解
calculate_score
和一些微积分(我应该注意,我没有使用
basinhopping
,而是编写了运行数月CPU时间的蒙特卡罗优化例程)