Относительно плохо знаком с Python и борется с проблемой совместимости. Изначально на моем рабочем столе был написан код 3.6, но нужно запустить его на сервере с 2.7 (и я не могу обновить сервер - это сложно!). Код работает на каждой платформе без ошибок. Тем не менее, он работает правильно в 3.6 и результаты в 2.7 полностью отключены. Кажется, проблема в scipy.optimize - функции минимизации. В 3.6 функция минимизации сходится к минимуму и возвращает ожидаемый результат. В 2.7, точно такой же код и входные данные, ясно, что функция минимизации не сходится и в конечном итоге использует верхние границы. Это приводит к тому, что возвращаемые результаты будут полностью нереальными. Я предполагаю, что это проблема синтаксиса между 3,6 и 2,7, но при повторных поисках мне еще предстоит найти что-то, что указывает на потенциальную проблему. Ниже моя функция минимизации:
from scipy.optimize import minimize
...
##############################################################################
#Minimize function
##############################################################################
def optimize(beta, eta, ht, age_day, age):
initial_guess = [beta, eta]
global cur_clust
result = minimize(Renewal, initial_guess, args=[ht,age_day,age],method = 'SLSQP', bounds=((0.4,8.0),(0.05,1000.0)),options = {'disp': False})
if result.success:
fitted_params = result.x
#print(cur_clust)
#print(fitted_params)
B_opt = fitted_params[0]
E_opt = fitted_params[1]
SSE = result.fun
else:
B_opt = 9999
E_opt = 9999
SSE = result.fun
return B_opt, E_opt, SSE;
Есть предложения?
Спасибо!