переполнение в exp с использованием python scipy.optimize.basinhopping - PullRequest
0 голосов
/ 27 июня 2018

Я использую scipy.optimize.basinhopping, чтобы подогнать простую экспоненциальную функцию ( exp (-b time)) к реальным данным. Я пытаюсь иметь соответствующие начальные догадки (для a и b), но на некоторых итерациях (для некоторых значений угадывает возвратный поток) происходит «переполнение в exp». Я знаю, что это из-за очень большого ответа, который должен быть рассчитан с помощью опыта. Кстати результат что-то абсолютно не так. Можно ли в любом случае попросить код игнорировать эти ошибки, содержащие догадки, чтобы предотвратить неверные результаты при выводе? + время идет от 0 до чего-то около е + 06 Спасибо за вашу помощь и помощь

1 Ответ

0 голосов
/ 28 июня 2018

вот мой код. после запуска я получаю ошибку переполнения для некоторых значений для 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()
...