如何使scipy的basinhopping在Python中不那么敏感

2024-05-26 11:53:58 发布

您现在位置:Python中文网/ 问答频道 /正文

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

我正在使用basinhopping算法来评估它的最小值,但是在每个盆地内,函数似乎都在为大约10^-9的非常小的ftol进行优化

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

我以为这会是一个传递一些ftol到最小函数的问题,但我似乎无法让它工作。我要把这个传给贝辛霍普:

minimizer_kwargs = {"method": "L-BFGS-B","options": {"ftol":1e-2}}

但这似乎没有任何效果,函数仍在评估最佳值微小增加10^-9的值

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


Tags: 函数算法参数环境时间局部理论kwargs