Exemple #1
0
    #pyomo_model2.P['k1'].value = 0.006655
    #pyomo_model2.P['k1'].fixed = True

    v_estimator = VarianceEstimator(pyomo_model2)

    v_estimator.apply_discretization('dae.collocation',
                                     nfe=60,
                                     ncp=3,
                                     scheme='LAGRANGE-RADAU')

    # Provide good initial guess
    p_guess = {'k1': 0.006655}
    raw_results = v_estimator.run_lsq_given_P('ipopt', p_guess, tee=False)

    v_estimator.initialize_from_trajectory('Z', raw_results.Z)
    v_estimator.initialize_from_trajectory('S', raw_results.S)
    v_estimator.initialize_from_trajectory('dZdt', raw_results.dZdt)
    v_estimator.initialize_from_trajectory('C', raw_results.C)

    options = dict()
    A_set = [
        l for i, l in enumerate(pyomo_model2.meas_lambdas) if (i % 4 == 0)
    ]
    results_variances = v_estimator.run_opt('ipopt',
                                            tee=True,
                                            solver_options=options,
                                            tolerance=1e-4,
                                            max_iter=40,
                                            subset_lambdas=A_set)
Exemple #2
0
    #################################################################################
    builder = TemplateBuilder()
    builder.add_mixture_component(concentrations)
    builder.add_parameter('k', bounds=(0.0, 1.0))
    builder.add_spectral_data(results_sim.D)
    builder.set_odes_rule(rule_odes)

    opt_model = builder.create_pyomo_model(0.0, 200.0)

    v_estimator = VarianceEstimator(opt_model)
    v_estimator.apply_discretization('dae.collocation',
                                     nfe=4,
                                     ncp=1,
                                     scheme='LAGRANGE-RADAU')

    v_estimator.initialize_from_trajectory('Z', results_sim.Z)
    v_estimator.initialize_from_trajectory('S', results_sim.S)

    v_estimator.scale_variables_from_trajectory('Z', results_sim.Z)
    v_estimator.scale_variables_from_trajectory('S', results_sim.S)

    options = {}  #{'mu_init': 1e-6, 'bound_push':  1e-6}
    results_variances = v_estimator.run_opt('ipopt',
                                            tee=True,
                                            solver_options=options,
                                            tolerance=1e-6)

    print("\nThe estimated variances are:\n")
    for k, v in six.iteritems(results_variances.sigma_sq):
        print(k, v)
    sigmas = results_variances.sigma_sq  #results_variances.sigma_sq