#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)
################################################################################# 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