Example #1
0
 def test_dual_integer_vars_as_lp(self, model):
     var = _add_decision_variable(model, "AKGDH")
     assert abs(model.optimize("maximize").f - 0.874) < 0.001
     # as lp: make integer continuous, set to 1
     dual = dual_problem(model, "maximize", [var.id], copy=True)
     r = dual.reactions.get_by_id(var.id)
     r.variable_kind = "continuous"
     r.lower_bound = r.upper_bound = 1
     assert abs(dual.optimize("minimize").f - 0.874) < 0.001
     r.lower_bound = r.upper_bound = 0
     assert abs(dual.optimize("minimize").f - 0.858) < 0.001
Example #2
0
 def test_dual_integer_vars_as_lp(self, model):
     var = _add_decision_variable(model, "AKGDH")
     assert abs(model.optimize("maximize").f - 0.874) < 0.001
     # as lp: make integer continuous, set to 1
     dual = dual_problem(model, "maximize", [var.id], copy=True)
     r = dual.reactions.get_by_id(var.id)
     r.variable_kind = "continuous"
     r.lower_bound = r.upper_bound = 1
     assert abs(dual.optimize("minimize").f - 0.874) < 0.001
     r.lower_bound = r.upper_bound = 0
     assert abs(dual.optimize("minimize").f - 0.858) < 0.001
Example #3
0
 def test_dual_integer_vars_as_lp(self):
     model = create_test_model("textbook")
     var = _add_decision_variable(model, "AKGDH")
     self.assertAlmostEqual(model.optimize("maximize").f, 0.874, places=3)
     # as lp: make integer continuous, set to 1
     dual = dual_problem(model, "maximize", [var.id], copy=True)
     r = dual.reactions.get_by_id(var.id)
     r.variable_kind = "continuous"
     r.lower_bound = r.upper_bound = 1
     self.assertAlmostEqual(dual.optimize("minimize").f, 0.874, places=3)
     r.lower_bound = r.upper_bound = 0
     self.assertAlmostEqual(dual.optimize("minimize").f, 0.858, places=3)
Example #4
0
 def test_dual_integer_vars_as_mip(self, model):
     # mip
     var = _add_decision_variable(model, "AKGDH")
     dual = dual_problem(model, "maximize", [var.id], copy=True)
     var_in_dual = dual.reactions.get_by_id(var.id)
     # minimization, so the optimal value state is to turn off AKGDH
     assert abs(dual.optimize("minimize").f - 0.858) < 0.001
     # turn off AKGDH in dual
     var_in_dual.lower_bound = var_in_dual.upper_bound = 1
     assert abs(dual.optimize("minimize").f - 0.874) < 0.001
     # turn on AKGDH in dual
     var_in_dual.lower_bound = var_in_dual.upper_bound = 0
     assert abs(dual.optimize("minimize").f - 0.858) < 0.001
Example #5
0
 def test_dual_integer_vars_as_mip(self, model):
     # mip
     var = _add_decision_variable(model, "AKGDH")
     dual = dual_problem(model, "maximize", [var.id], copy=True)
     var_in_dual = dual.reactions.get_by_id(var.id)
     # minimization, so the optimal value state is to turn off AKGDH
     assert abs(dual.optimize("minimize").f - 0.858) < 0.001
     # turn off AKGDH in dual
     var_in_dual.lower_bound = var_in_dual.upper_bound = 1
     assert abs(dual.optimize("minimize").f - 0.874) < 0.001
     # turn on AKGDH in dual
     var_in_dual.lower_bound = var_in_dual.upper_bound = 0
     assert abs(dual.optimize("minimize").f - 0.858) < 0.001
Example #6
0
    def test_dual_integer_vars_as_mip(self):
        # mip
        model = create_test_model("textbook")
        var = _add_decision_variable(model, "AKGDH")
        dual = dual_problem(model, "maximize", [var.id], copy=True)
        var_in_dual = dual.reactions.get_by_id(var.id)

        # minimization, so the optimal value state is to turn off AKGDH
        self.assertAlmostEqual(dual.optimize("minimize").f, 0.858, places=3)

        # turn off AKGDH in dual
        var_in_dual.lower_bound = var_in_dual.upper_bound = 1
        self.assertAlmostEqual(dual.optimize("minimize").f, 0.874, places=3)

        # turn on AKGDH in dual
        var_in_dual.lower_bound = var_in_dual.upper_bound = 0
        self.assertAlmostEqual(dual.optimize("minimize").f, 0.858, places=3)