gpt4 book ai didi

python - 使用 lmfit 和差分进化方法设置迭代限制

转载 作者:太空宇宙 更新时间:2023-11-03 20:11:10 24 4
gpt4 key购买 nike

我正在尝试使用 lmfit 包拟合一组数据。作为最小化例程,我选择了 Differential_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),我可以使用 **fit_kws 字典通过最小化函数将关键字参数传递到底层 scipy 最小化器。

我尝试了几种选项,将关键字传递给 fit 例程。例子是:

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)

我没有收到任何错误消息,但 maxiter 被简单地忽略了。我简单地期望在 20 次迭代之后(我也尝试过使用更大的数字),拟合过程将停止。另外,如果我将 fit_kws 定义为

fit_kws={'maxiter':a}

这是无稽之谈,我希望出现一个错误,但我没有得到。

您能帮我了解如何将一些参数传递给底层 scipy.optimize 函数吗?

最佳答案

我遇到了同样的问题,尽管在我的情况下出现了错误,请参阅以下 SO question .

简而言之,您可以使用关键字参数 options 将关键字参数传递给底层求解器:

fit = fitter.minimize(method='differential_evolution', options={'maxiter':20})

或更具体地说,对于上面的示例:

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

关于python - 使用 lmfit 和差分进化方法设置迭代限制,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58707872/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com