Какое значение параметра `visit` разрешено в scipy.optimize.dual_annealing? - PullRequest
1 голос
/ 20 июня 2019

Я пытался использовать 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?

...