我正在使用scipy.optimize.basinhopping,以使简单的指数函数(a exp(-b time))适合实际数据。我尝试进行适当的初始猜测(针对a和b),但是在某些迭代中(针对某些值进行跳槽猜测),发生“ exp溢出”。我知道这是因为要通过exp计算出很大的答案。顺便说一句,结果是绝对错误的。 是否总有要求代码忽略那些包含猜测的错误,以防止输出错误的结果? +时间从0到e + 06左右 感谢您的关心和帮助
答案 0 :(得分:0)
这是我的代码。运行后,对于bk的某些值,我得到了溢出错误,因此ret的结果值绝对错误,与正确答案相距甚远。 :(
def model(bk):
s = 0
realData = data()
modelData = []
modelData.append(realData[0])
for time in range(len(realData) - 1):
x = realData[0] * np.exp((bk[0] * np.exp(bk[1]*time))*time)
y = 1 - realData[0] + x
i = x / y
modelData.append(i)
s+=np.abs(i-realData[time])
return(s)
def optimize():
bk0 = [1,-1]
minimizer_kwargs = {"method" : "BFGS"}
ret = basinhopping(model, bk0, minimizer_kwargs=minimizer_kwargs, niter=100)
print(ret)
optimize()