Exemple #1
0
 def test_improper_basic_step_linear(self):
     model_builder = import_file(
         join(exdir, 'two_rxn_lee', 'two_rxn_model.py'))
     m = model_builder.build_model(use_mccormick=True)
     m.basic_step = apply_basic_step([
         m.reactor_choice, m.max_demand, m.mccormick_1, m.mccormick_2])
     for disj in m.basic_step.disjuncts.values():
         self.assertIs(
             disj.improper_constraints[1].body, m.P)
         self.assertEqual(
             disj.improper_constraints[1].lower, None)
         self.assertEqual(
             disj.improper_constraints[1].upper, 2)
         self.assertEqual(
             disj.improper_constraints[2].body.polynomial_degree(), 1)
         self.assertEqual(
             disj.improper_constraints[2].lower, None)
         self.assertEqual(
             disj.improper_constraints[2].upper, 0)
         self.assertEqual(
             disj.improper_constraints[3].body.polynomial_degree(), 1)
         self.assertEqual(
             disj.improper_constraints[3].lower, None)
         self.assertEqual(
             disj.improper_constraints[3].upper, 0)
         self.assertEqual(
             len(disj.improper_constraints), 3)
     self.assertFalse(m.max_demand.active)
     self.assertFalse(m.mccormick_1.active)
     self.assertFalse(m.mccormick_2.active)
Exemple #2
0
    def test_improper_basic_step_simpleConstraint(self):
        m = models.makeTwoTermDisj()
        m.simple = Constraint(expr=m.x <= m.a + 1)

        m.basic_step = apply_basic_step([m.disjunction, m.simple])
        self.check_after_improper_basic_step(m)

        self.assertFalse(m.simple.active)
        self.assertFalse(m.disjunction.active)
Exemple #3
0
 def test_improper_basic_step(self):
     model_builder = import_file(
         join(exdir, 'two_rxn_lee', 'two_rxn_model.py'))
     m = model_builder.build_model()
     m.basic_step = apply_basic_step([m.reactor_choice, m.max_demand])
     for disj in m.basic_step.disjuncts.values():
         self.assertEqual(
             disj.improper_constraints[1].body.polynomial_degree(), 2)
         self.assertEqual(disj.improper_constraints[1].lower, None)
         self.assertEqual(disj.improper_constraints[1].upper, 2)
         self.assertEqual(len(disj.improper_constraints), 1)
     self.assertFalse(m.max_demand.active)
Exemple #4
0
    def test_improper_basic_step_constraintData(self):
        m = models.makeTwoTermDisj()

        @m.Constraint([1, 2])
        def indexed(m, i):
            return m.x <= m.a + i

        m.basic_step = apply_basic_step([m.disjunction, m.indexed[1]])
        self.check_after_improper_basic_step(m)

        self.assertFalse(m.indexed[1].active)
        self.assertTrue(m.indexed[2].active)
        self.assertFalse(m.disjunction.active)
Exemple #5
0
    def test_indicator_var_references(self):
        m = models.makeTwoTermDisj()
        m.simple = Constraint(expr=m.x <= m.a + 1)

        m.basic_step = apply_basic_step([m.disjunction, m.simple])

        refs = [
            v for v in m.basic_step.component_data_objects(
                BooleanVar, sort=SortComponents.deterministic)
        ]
        self.assertEqual(len(refs), 2)
        self.assertIs(refs[0][None], m.d[0].indicator_var)
        self.assertIs(refs[1][None], m.d[1].indicator_var)
Exemple #6
0
    def test_improper_basic_step_indexedConstraint(self):
        m = models.makeTwoTermDisj()

        @m.Constraint([1, 2])
        def indexed(m, i):
            return m.x <= m.a + i

        m.basic_step = apply_basic_step([m.disjunction, m.indexed])
        for disj in m.basic_step.disjuncts.values():
            self.assertEqual(len(disj.improper_constraints), 2)
            cons = disj.improper_constraints[1]
            self.check_constraint_body(m, cons, -1)

            cons = disj.improper_constraints[2]
            self.check_constraint_body(m, cons, -2)
Exemple #7
0
 def test_improper_basic_step(self):
     model_builder = import_file(
         join(exdir, 'two_rxn_lee', 'two_rxn_model.py'))
     m = model_builder.build_model()
     m.basic_step = apply_basic_step([m.reactor_choice, m.max_demand])
     for disj in m.basic_step.disjuncts.values():
         self.assertEqual(
             disj.improper_constraints[1].body.polynomial_degree(), 2)
         self.assertEqual(
             disj.improper_constraints[1].lower, None)
         self.assertEqual(
             disj.improper_constraints[1].upper, 2)
         self.assertEqual(
             len(disj.improper_constraints), 1)
     self.assertFalse(m.max_demand.active)
Exemple #8
0
def solve_basic_step_model():
    m_base = build_gdp_model()
    m_base.BS = apply_basic_step([m_base.disjunctions[1],m_base.disjunctions[2]])

    # crux to pprint component
    #with open('pprint.log','w') as outputfile: 
    #    m_base.disjunctions.pprint(outputfile)

    #m_bs_chull = TransformationFactory('gdp.chull').create_using(m_base)
    m_bigm = TransformationFactory('gdp.bigm').create_using(m_base, bigM=100)
    m_bigm.pprint()

    solver = SolverFactory('gams')
    solver.solve(m_bigm, tee=True, solver='baron')

    m_bigm.objective.display()
    m_bigm.x1.display()
    m_bigm.x2.display()
Exemple #9
0
 def test_improper_basic_step_linear(self):
     model_builder = import_file(
         join(exdir, 'two_rxn_lee', 'two_rxn_model.py'))
     m = model_builder.build_model(use_mccormick=True)
     m.basic_step = apply_basic_step(
         [m.reactor_choice, m.max_demand, m.mccormick_1, m.mccormick_2])
     for disj in m.basic_step.disjuncts.values():
         self.assertIs(disj.improper_constraints[1].body, m.P)
         self.assertEqual(disj.improper_constraints[1].lower, None)
         self.assertEqual(disj.improper_constraints[1].upper, 2)
         self.assertEqual(
             disj.improper_constraints[2].body.polynomial_degree(), 1)
         self.assertEqual(disj.improper_constraints[2].lower, None)
         self.assertEqual(disj.improper_constraints[2].upper, 0)
         self.assertEqual(
             disj.improper_constraints[3].body.polynomial_degree(), 1)
         self.assertEqual(disj.improper_constraints[3].lower, None)
         self.assertEqual(disj.improper_constraints[3].upper, 0)
         self.assertEqual(len(disj.improper_constraints), 3)
     self.assertFalse(m.max_demand.active)
     self.assertFalse(m.mccormick_1.active)
     self.assertFalse(m.mccormick_2.active)