Esempio n. 1
0
    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')
Esempio n. 2
0
    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
Esempio n. 3
0
        "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)