Я пытался использовать scipy.optimize.dual_annealing
, чтобы минимизировать функцию из 8 параметров. Область поиска (как определено моим bounds
) довольно широка, но я знаю, что решение близко к x0
. Итак, после прочтения документации, найденной здесь , я решил использовать меньшее значение параметра visit
, которое по умолчанию равно 2.62 и предположительно находится в диапазоне (0, 3].
Когда я использовал visit=0.8
, я получил RuntimeWarning: недопустимое значение, обнаруженное в журнале , и действительно, в исходном коде я нашел это:
self._factor2 = np.exp((4.0 - self._visiting_param) * np.log(self._visiting_param - 1.0))
(l.62 из _dual_annealing.py)
(в основном self._visiting_param
прямо присвоено значение visit
)
Так что я подумал, что, возможно, документация неверна, и диапазон посещений равен (1,3).
Когда я использовал visit=1.2
, я получил FloatingPointError: недопустимое значение в журнале , на этот раз из-за
x *= np.exp(-(self._visiting_param - 1.0) * np.log(self._factor6 / factor4) / (3.0 - self._visiting_param))
(л.121 из _dual_annealing.py)
где self._factor6
отрицательно.
Это настоящая ошибка, ошибочная документация, или это просто мое недопонимание? Какие значения можно использовать для параметра visit
, чтобы выполнить поиск, близкий к x0?