예제 #1
0
    max_I = np.max(states['I']['result'])
    final_R = states['R']['result'][-1]
    final_S = states['S']['result'][-1]

    print("max_I", max_I)
    print("final_R", final_R)
    print("final_S", final_S)

    mI_actual = 0.25920385864652234
    fR_actual = 0.96616595
    fS_actual = 0.03365363

    tol = 1e-2

    assert (abs(max_I - mI_actual) / mI_actual) < tol
    assert (abs(final_R - fR_actual) / fR_actual) < tol
    assert (abs(final_S - fS_actual) / fS_actual) < tol

    return states, params


if __name__ == '__main__':
    import matplotlib.pyplot as plt

    test_model_partials()

    states, params = test_baseline_run()
    fig = make_plots(states, params)
    fig.suptitle('Baseline SEIR')

    plt.show()
예제 #2
0
                                     t_initial_bounds,
                                     t_duration_bounds,
                                     fix_initial=True,
                                     fix_duration=True)

    p.driver = om.pyOptSparseDriver()
    p.driver.options['optimizer'] = 'IPOPT'
    p.driver.options['print_results'] = False

    p.driver.opt_settings['hessian_approximation'] = 'limited-memory'
    # p.driver.opt_settings['mu_init'] = 1.0E-2
    p.driver.opt_settings['nlp_scaling_method'] = 'gradient-based'
    p.driver.opt_settings['print_level'] = 5
    p.driver.opt_settings['linear_solver'] = 'mumps'
    p.driver.opt_settings['max_iter'] = 500

    phase0.add_boundary_constraint('I', loc='final', upper=0.01, scaler=1.0)

    #phase0.add_control('sigma', targets=['sigma'], lower=0.0, upper=beta, ref=beta)
    #phase0.add_objective('max_I', scaler=1e5)

    phase0.add_objective('time', loc='final', scaler=1.0)

    phase0.add_timeseries_output('theta')

    setup_and_run_phase(states, p, phase0, traj, 200.0)

    print(states['I']['result'][-1])
    make_plots(states, params)
    plt.show()