Я использую scipy.optimize.basinhopping, чтобы подогнать простую экспоненциальную функцию (aexp(-btime)) к реальным данным. Я пытаюсь получить соответствующие начальные догадки (для a и b), но в некоторых итерациях (для некоторых значений прыжковых догадок) происходит «переполнение в exp». Я знаю, что это из-за очень большого ответа, который нужно рассчитать по exp. Кстати получается что-то совсем не то. Можно ли как-то попросить код игнорировать те ошибки, содержащие догадки, чтобы предотвратить неверные результаты в выводе? + время идет от 0 до чего-то около e+06 Спасибо за вашу заботу и помощь
переполнение в exp с использованием python scipy.optimize.basinhopping
comment
Одна строка кода стоит тысячи слов, потраченных на ее описание :) Пожалуйста, поделитесь тем, что вы пробовали, как есть. Кстати, добро пожаловать.
- person vahdet   schedule 27.06.2018
comment
@vahdet привет :) Я сделал это.
- person Attefeh   schedule 28.06.2018
Ответы (1)
вот мой код. после запуска я получаю ошибку переполнения для некоторых значений для 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()
person
Attefeh
schedule
28.06.2018