我目前正在尝试使用类Minimize()拟合一组数据。我想用双_退火算法实现这个方法,但不幸的是我不能 代码如下:
def fit_msd2(params, x, data):
A = params['A']
a = params['a']
model = x + A * (np.exp(-a*x)-1)
return model - data
# create a set of Parameters
params = Parameters()
params.add('A', value=527, min=0)
params.add('a', value=0.016, min=0)
from scipy.optimize import dual_annealing
# do fit, here with the default leastsq algorithm
minner = Minimizer(fit_msd2, params, fcn_args=(tL, mean_msd_29))
result = minner.minimize(method = dual_annealing)
# calculate final result
#final = mean_msd_29 + result.residual
# write error report
report_fit(result)
这是我收到的返回属性错误:
AttributeError Traceback (most recent call last)
<ipython-input-531-a8c40dd82948> in <module>
2 # do fit, here with the default leastsq algorithm
3 minner = Minimizer(fit_msd2, params, fcn_args=(tL, mean_msd_29))
----> 4 result = minner.minimize(method = dual_annealing)
5 # calculate final result
6 final = mean_msd_29 + result.residual
~/opt/anaconda3/lib/python3.8/site-packages/lmfit/minimizer.py in minimize(self, method, params, **kws)
2260 kwargs.update(kws)
2261
-> 2262 user_method = method.lower()
2263 if user_method.startswith('leasts'):
2264 function = self.leastsq
AttributeError: 'function' object has no attribute 'lower'
请,如果你能建议对代码进行一些编辑,我将非常感谢
minimize
方法的method
参数必须是str,请参见docs。使用相反
相关问题 更多 >
编程相关推荐