【发布时间】:2019-11-03 08:45:29
【问题描述】:
我尝试使用scipy.optimize.dual_annealing 来最小化 8 个参数的函数。搜索空间(由我的bounds 定义)相当广泛,但我知道解决方案接近x0。因此,在阅读找到here 的文档后,我决定使用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: invalid value 在日志中遇到,由于这次
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?
【问题讨论】:
标签: python scipy scipy-optimize