def residuals_totalcases(params): """ Wanted to start with solve_ivp because figures will be faster to debug params: (alpha, days, r_s, r_dth, p_dth, k1, k2), fitted parameters of the model """ # Variables Initialization for the ODE system alpha, days, r_s, r_dth, p_dth, k1, k2 = params params = max(alpha, 0), days, max(r_s, 0), max(r_dth, 0), max(min(p_dth, 1), 0), max(k1, 0), max(k2, 0) x_0_cases = get_initial_conditions( params_fitted=params, global_params_fixed=GLOBAL_PARAMS_FIXED ) x_sol = solve_ivp( fun=model_covid, y0=x_0_cases, t_span=[t_cases[0], t_cases[-1]], t_eval=t_cases, args=tuple(params), ).y weights = list(range(1, len(fitcasesnd) + 1)) # focus on last 5 days weights[-5:] =[x + 50 for x in weights[-5:]] residuals_value = sum( np.multiply((x_sol[15, :] - fitcasesnd) ** 2, weights) + balance * balance * np.multiply((x_sol[14, :] - fitcasesd) ** 2, weights) ) return residuals_value
def solve_best_params_and_predict(optimal_params): # Variables Initialization for the ODE system x_0_cases = get_initial_conditions( params_fitted=optimal_params, global_params_fixed=GLOBAL_PARAMS_FIXED) x_sol_best = solve_ivp( fun=model_covid, y0=x_0_cases, t_span=[t_cases_all[0], t_cases_all[-1]], t_eval=t_cases_all, args=tuple(optimal_params), ).y return x_sol_best