Python 参数值是否传递给lmfit中的secomd minimizer调用

Python 参数值是否传递给lmfit中的secomd minimizer调用,python,lmfit,Python,Lmfit,我用lmfit把一些数据拟合到一个双反应系统中,以估计速率常数。我的数据是x1->x2->x3中x1、x2和x3物种浓度的变化 在其他工具中,我通常使用一个全局优化器,然后使用一个本地优化器,这样我就可以更容易地访问Hessian等。在lmfit中,我认为我可以做如下操作: minimizer = lmfit.Minimizer(self._residuals, params) result = minimizer.minimize(method='differential_evolution'

我用lmfit把一些数据拟合到一个双反应系统中,以估计速率常数。我的数据是x1->x2->x3中x1、x2和x3物种浓度的变化

在其他工具中,我通常使用一个全局优化器,然后使用一个本地优化器,这样我就可以更容易地访问Hessian等。在lmfit中,我认为我可以做如下操作:

minimizer = lmfit.Minimizer(self._residuals, params)
result = minimizer.minimize(method='differential_evolution')
result = minimizer.minimize(method='leastsqr')
我假设微分进化拟合的参数将保留在最小化对象中,并通过第二次最小化函数调用自动拾取

然而,我不确定,因为我的同事提出了其他建议。如果有人更了解lmfit包,那么第二个minimize是否会在第一个minimize停止时拾取参数

更新1:我添加了最小化调用,以确保只创建一个minizmize对象。我当前的测试似乎表明参数值确实从一个最小化调用传递到另一个最小化调用(这是我所期望的)


更新2:进一步的实验表明,如果系统不可识别,则存在差异,这意味着最小化的第一个调用似乎不会将其已安装的参数传递给第二个最小化调用。

否,根据您提供的代码,第一种方法中的拟合参数将不会用于第二次最小化

如果没有为
minimizer.minimize()
指定任何内容,它将从您提供的初始化
minimizer
类的
参数开始。下面的代码应满足您的要求:

minimizer = lmfit.Minimizer(self._residuals, params)
result_de = minimizer.minimize(method='differential_evolution')
result = minimizer.minimize(params=result_de.params, method='leastsqr')
(我在此假设,
self.\u残差
是您的拟合函数,即您希望最小化的函数)。请检查文件