使用python scipy.optimize.basinhopping在exp中溢出

时间:2018-06-27 18:11:08

标签: python overflow exp

我正在使用scipy.optimize.basinhopping,以使简单的指数函数(a exp(-b time))适合实际数据。我尝试进行适当的初始猜测(针对a和b),但是在某些迭代中(针对某些值进行跳槽猜测),发生“ exp溢出”。我知道这是因为要通过exp计算出很大的答案。顺便说一句,结果是绝对错误的。 是否总有要求代码忽略那些包含猜测的错误,以防止输出错误的结果? +时间从0到e + 06左右 感谢您的关心和帮助

1 个答案:

答案 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()