def test_postsolve_unscaled_constraints_and_bounds_cleanup(self, m, s): assert hasattr(s, '_postsolve') # for the Pyomo implementation try: s._postsolve() except AttributeError: pass self._test_bounds(m) assert not hasattr(s, '_scaling_cache') cons_with_sf = list(constraints_with_scale_factor_generator(m)) assert cons_with_sf == [(m.b.d, 1e6)] assert not hasattr(s, '_model')
def test_presolve_scales_constraints_and_relaxes_bounds(self, m, s): s._presolve(m, tee=True) for c, sf in s._scaling_cache: if c is m.b.d: assert sf == 1e6 else: assert sf is None cons_with_sf = [ c for c, _ in constraints_with_scale_factor_generator(m) ] assert m.c in cons_with_sf assert m.b.c[1] in cons_with_sf assert m.b.c[2] in cons_with_sf assert m.b.d in cons_with_sf assert s._model is m assert m.a.lb == -0.5 - 1e-10 assert m.a.ub == 0.5 + 1e-10 assert m.b.a[1].lb == -10 - 1e-09 assert m.b.a[1].ub == 10 + 1e-09 assert m.b.a[2].lb == -10 - 1e-09 assert m.b.a[2].ub == 10 + 1e-09
"H2O":0.0, "CO2":0.0034, "N2":0.0361, "Ar":0.0, "SO2":0.0} m, solver = main( comps=comps, rxns=rxns, phases=phases, air_comp=air_comp, ng_comp=ng_comp) run_full_load(m, solver) #iscale.constraint_autoscale_large_jac(m) jac, nlp = iscale.get_jacobian(m, scaled=True) print("Extreme Jacobian entries:") for i in iscale.extreme_jacobian_entries(jac=jac, nlp=nlp, large=100): print(f" {i[0]:.2e}, [{i[1]}, {i[2]}]") print("Unscaled constraints:") for c in iscale.unscaled_constraints_generator(m): print(f" {c}") print("Scaled constraints by factor:") for c, s in iscale.constraints_with_scale_factor_generator(m): print(f" {c}, {s}") print("Badly scaled variables:") for v, sv in iscale.badly_scaled_var_generator(m, large=1e2, small=1e-2, zero=1e-12): print(f" {v} -- {sv} -- {iscale.get_scaling_factor(v)}") print(f"Jacobian Condition Number: {iscale.jacobian_cond(jac=jac):.2e}") write_pfd_results("gas_turbine_results.svg", m.tags, m.tag_format) #run_series(m, solver)