我尝试使用scipy.optimize.dual_annealing
最小化 8 个参数的函数。搜索空间(由 my 定义bounds
)相当广泛,但我知道解决方案接近x0
. 因此,在阅读了此处找到的文档后,我决定使用较小的visit
参数值,默认为 2.62,并且应该在 (0, 3] 范围内。
当我使用时visit=0.8
,我得到了一个RuntimeWarning: invalid value 在日志中遇到,实际上,在源代码中我发现了这个:
self._factor2 = np.exp((4.0 - self._visiting_param) * np.log(self._visiting_param - 1.0))
(_dual_annealing.py 的 l.62)(基本上self._visiting_param
直接分配了 的值visit
)
所以我想也许文档是错误的,访问范围是(1,3]。
当我使用时visit=1.2
,我得到了一个FloatingPointError:log中遇到的无效值,这一次是由于
x *= np.exp(-(self._visiting_param - 1.0) * np.log(self._factor6 / factor4) / (3.0 - self._visiting_param))
(_dual_annealing.py 的 l.121)其中self._factor6
是否定的。
这是一个真正的错误,一个错误的文档,还是只是我误解了什么?visit
为了搜索接近 x0,我可以为参数使用哪些值?