我正在开发一个应该执行大约 6750 次优化的程序。现在,问题是一项优化的持续时间约为 3 分钟。乍一看这似乎并不多,但如果我必须执行 6750 次,我将等待 2 周......显然这不是我想要的,因此这是我如何提高速度的问题跳盆全局优化算法。我有一种感觉,我在这里忘记了一些东西,比如另一种方法或一些可能对我有帮助的参数。只是我想不通是什么...
简而言之,我有两个问题。一项优化可能需要长达 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])