如何制作scipy';Python中的basinhopping不太敏感

如何制作scipy';Python中的basinhopping不太敏感,python,optimization,scipy,simulated-annealing,Python,Optimization,Scipy,Simulated Annealing,我正在进行一次优化,优化了约10个参数的函数。函数本身需要相当长的时间(几秒钟)来评估,而且它的环境非常多变。它的值可以介于0和1之间,0是理论上的最佳值,但我预计最佳值约为0.01 我正在使用该算法评估其最小值,但在每个水池内,该函数似乎针对约10^-9的非常小的ftol进行优化 我不需要这种精度,相反,我想更彻底地搜索风景。我想调整算法,使局部极小值最多只能优化到10^-4左右 我认为这将是一个传递一些ftol到最小化函数的问题,但我似乎无法让它工作。我将此信息传递给basinhopping

我正在进行一次优化,优化了约10个参数的函数。函数本身需要相当长的时间(几秒钟)来评估,而且它的环境非常多变。它的值可以介于0和1之间,0是理论上的最佳值,但我预计最佳值约为0.01

我正在使用该算法评估其最小值,但在每个水池内,该函数似乎针对约10^-9的非常小的ftol进行优化

我不需要这种精度,相反,我想更彻底地搜索风景。我想调整算法,使局部极小值最多只能优化到10^-4左右

我认为这将是一个传递一些ftol到最小化函数的问题,但我似乎无法让它工作。我将此信息传递给basinhopping:

minimizer_kwargs = {"method": "L-BFGS-B","options": {"ftol":1e-2}}
但这似乎没有任何效果,并且该函数仍在评估最佳值微小增加10^-9的值


我怎样才能避免这种情况?如果函数的计算结果真的不能超过这个值,那么我宁愿它只输出值为“0.10”,而不是计算它是“0.100000001”还是“0.100000002”

你能分享一些代码吗?!否则很难帮助…@Cleb,我不知道为什么代码会有帮助,这是一个主观问题。你的意思是提供一个调用盆地跳跃算法的例子吗?是的,在我看来,一个例子会有所帮助。你能分享一些代码吗?!否则很难帮助…@Cleb,我不知道为什么代码会有帮助,这是一个主观问题。你的意思是提供一个调用盆地跳跃算法的例子吗?是的,在我看来,一个例子会有所帮助。