示例#1
0
 def solve_best_params_and_predict(optimal_params):
     # Variables Initialization for the ODE system
     alpha, days, r_s, r_dth, p_dth, r_dthdecay, k1, k2, jump, t_jump, std_normal = optimal_params
     optimal_params = [
         max(alpha, 0), days,
         max(r_s, 0),
         max(min(r_dth, 1), 0.02),
         max(min(p_dth, 1), 0),
         max(r_dthdecay, 0),
         max(k1, 0),
         max(k2, 0),
         max(jump, 0),
         max(t_jump, 0),
         max(std_normal, 1)
     ]
     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_predictions[0], t_predictions[-1]],
         t_eval=t_predictions,
         args=tuple(optimal_params),
     ).y
     return x_sol_best
示例#2
0
            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, r_dthdecay, k1, k2, jump, t_jump, std_normal = params
                params = (
                    max(alpha, 0), days, max(r_s, 0), max(min(r_dth, 1), 0.02), max(min(p_dth, 1), 0), max(r_dthdecay, 0),
                         max(k1, 0), max(k2, 0), max(jump, 0), max(t_jump, 0),max(std_normal, 1)
                )
                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))
                weights = [(x/len(fitcasesnd))**2 for x in weights]
                # weights[-15:] =[x + 50 for x in weights[-15:]]
                residuals_value = sum(
                    np.multiply((x_sol[15, :] - fitcasesnd) ** 2, weights)
                    + balance * balance * np.multiply((x_sol[14, :] - fitcasesd) ** 2, weights)) + sum(
                    np.multiply((x_sol[15, 7:] - x_sol[15, :-7] - fitcasesnd[7:] + fitcasesnd[:-7]) ** 2, weights[7:])
                    + balance * balance * np.multiply((x_sol[14, 7:] - x_sol[14, :-7] - fitcasesd[7:] + fitcasesd[:-7]) ** 2, weights[7:])
                    )
#                residuals_value = sum(
#                    np.multiply((x_sol[15, :] - fitcasesnd) ** 2, weights)
#                    + balance * balance * np.multiply((x_sol[14, :] - fitcasesd) ** 2, weights))
                return residuals_value
示例#3
0
 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_predictions[0], t_predictions[-1]],
         t_eval=t_predictions,
         args=tuple(optimal_params),
     ).y
     return x_sol_best