Установка предела итерации с помощью метода lmfit и дифференциальной эволюции - PullRequest
1 голос
/ 05 ноября 2019

Я пытаюсь разместить набор данных с помощью пакета lmfit. В качестве процедуры минимизации я выбрал diff_evolution (https://docs.scipy.org/doc/scipy-0.17.0/reference/generated/scipy.optimize.differential_evolution.html), и я хотел бы ограничить максимальное количество выполняемых итераций.

Согласно руководству lmfit (https://lmfit.github.io/lmfit-py/fitting.html#the-minimize-function), я могу передать ключевое словоаргументы с помощью функции минимизации для базового минимизатора scipy с использованием словаря ** fit_kws.

Я пробовал несколько вариантов передачи ключевого слова в процедуру подгонки. Примеры:

fit_kws={'maxiter':20}
out = minimize(f2min, fit_params, args=(q, Iexp, errI), iter_cb=printout, method='differential_evolution', **fit_kws) 

или

out = minimize(f2min, fit_params, args=(q, Iexp, errI), iter_cb=printout, method='differential_evolution', fit_kws={'maxiter':20})

или

out = minimize(f2min, fit_params, args=(q, Iexp, errI), iter_cb=printout, method='differential_evolution', maxiter = 20)

Я не получаю никаких сообщений об ошибках, но максиматор просто игнорируется. Я бы просто ожидал, что после 20 итераций (я пробовал такжес большими числами), процедура подбора остановится. Кроме того, если я определю fit_kws как

fit_kws={'maxiter':a}

, что является бессмысленным, я бы ожидал ошибку, которую я не получаю.

Не могли бы вы помочь мне понять, как передать некоторые параметры в базовую функцию scipy.optimize?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...