Exemplo n.º 1
0
 def test_add_constraint_fails(self):
     """Test Model.add_constraint asserts."""
     model = lp.Model(['x1', 'x2'])
     self.assertRaises(AssertionError, model.add_constraint, [1], lp.EQ, 1)
     self.assertRaises(AssertionError, model.add_constraint, [1, 2, 3],
                       lp.EQ, 1)
     self.assertRaises(AssertionError, model.add_constraint, [1, 2], None,
                       1)
Exemplo n.º 2
0
 def test_add_cost_function_fails(self):
     """Test Model.add_cost_function asserts."""
     model = lp.Model(['x1', 'x2'])
     self.assertRaises(AssertionError, model.add_cost_function, None,
                       [1, 2], 1)
     self.assertRaises(AssertionError, model.add_cost_function, lp.MINIMIZE,
                       [1], 1)
     self.assertRaises(AssertionError, model.add_cost_function, lp.MINIMIZE,
                       [1, 2, 3], 1)
Exemplo n.º 3
0
 def test__convert_to_standard_form_standard(self):
     """Test Model._convert_to_standard_form when in standard form."""
     model = lp.Model(['x1', 'x2', 'x3'])
     model.add_constraint([30, 100, 85], lp.EQ, 2500)
     model.add_constraint([6, 2, 3], lp.EQ, 90)
     model.add_cost_function(lp.MINIMIZE, [3, 2, 4], 0)
     model._convert_to_standard_form()
     self.assertEqual(model._slack_variables, [])
     self.assertEqual(model._standard_constraints, [([30, 100, 85], 2500),
                                                    ([6, 2, 3], 90)])
     self.assertEqual(model._standard_cost_function, ([3, 2, 4], 0))
Exemplo n.º 4
0
 def test__convert_to_standard_form_gte(self):
     """Test Model._convert_to_standard_form when constraint is GTE."""
     model = lp.Model(["x1", "x2", "x3"])
     model.add_constraint([30, 100, 85], lp.GTE, 2500)
     model.add_constraint([6, 2, 3], lp.EQ, 90)
     model.add_cost_function(lp.MINIMIZE, [3, 2, 4], 0)
     model._convert_to_standard_form()
     self.assertEqual(model._slack_variables, [3])
     self.assertEqual(model._standard_constraints,
                      [([30, 100, 85, -1], 2500), ([6, 2, 3, 0], 90)])
     self.assertEqual(model._standard_cost_function, ([3, 2, 4, 0], 0))
Exemplo n.º 5
0
 def test__convert_to_standard_form_maximize(self):
     """Test Model._convert_to_standard_form when maximizing."""
     model = lp.Model(["x1", "x2", "x3"])
     model.add_constraint([30, 100, 85], lp.EQ, 2500)
     model.add_constraint([6, 2, 3], lp.EQ, 90)
     model.add_cost_function(lp.MAXIMIZE, [3, 2, 4], 0)
     model._convert_to_standard_form()
     self.assertEqual(model._slack_variables, [])
     self.assertEqual(model._standard_constraints, [([30, 100, 85], 2500),
                                                    ([6, 2, 3], 90)])
     self.assertEqual(model._standard_cost_function, ([-3, -2, -4], 0))
Exemplo n.º 6
0
 def test__convert_to_standard_form_lte_gte(self):
     """Test Model._convert_to_standard_form for LTE/GTE constraints."""
     model = lp.Model(['x1', 'x2', 'x3'])
     model.add_constraint([30, 100, 85], lp.LTE, 2500)
     model.add_constraint([6, 2, 3], lp.GTE, 90)
     model.add_cost_function(lp.MINIMIZE, [3, 2, 4], 0)
     model._convert_to_standard_form()
     self.assertEqual(model._slack_variables, [3, 4])
     self.assertEqual(model._standard_constraints,
                      [([30, 100, 85, 1, 0], 2500), ([6, 2, 3, 0, -1], 90)])
     self.assertEqual(model._standard_cost_function, ([3, 2, 4, 0, 0], 0))
Exemplo n.º 7
0
 def test_simplex(self):
     """Test Model.simplex method."""
     model = lp.Model(['x1', 'x2', 'x3', 'x4', 'x5'])
     model.add_constraint([-6, 0, 1, -2, 2], lp.EQ, 6)
     model.add_constraint([-3, 1, 0, 6, 3], lp.EQ, 15)
     model.add_cost_function(lp.MINIMIZE, [5, 0, 0, 3, -2], -21)
     self.assertEqual(model.simplex(), {
         'x1': 1.0,
         'x2': 0.0,
         'x3': 0.0,
         'x4': 0.0,
         'x5': 6.0
     })
Exemplo n.º 8
0
 def test__build_tableau_canonical_form(self):
     """Test Model._build_tableau_canonical_form method."""
     model = lp.Model(['x1', 'x2', 'x3', 'x4'])
     model.add_constraint([1, -2, -3, -2], lp.EQ, 3)
     model.add_constraint([1, -1, 2, 1], lp.EQ, 11)
     model.add_cost_function(lp.MINIMIZE, [2, -3, 1, 1], 0)
     model._convert_to_standard_form()
     model._convert_to_canonical_form()
     tableau = model._build_tableau_canonical_form()
     self.assertEqual(tableau._basic_variables, [4, 5])
     self.assertEqual(tableau._tableau,
                      [[1, -2, -3, -2, 1, 0, 3], [1, -1, 2, 1, 0, 1, 11],
                       [2, -3, 1, 1, 0, 0, 0], [-2, 3, 1, 1, 0, 0, -14]])
Exemplo n.º 9
0
 def test_simplex(self):
     """Test Model.simplex method."""
     model = lp.Model(["x1", "x2", "x3", "x4", "x5"])
     model.add_constraint([-6, 0, 1, -2, 2], lp.EQ, 6)
     model.add_constraint([-3, 1, 0, 6, 3], lp.EQ, 15)
     model.add_cost_function(lp.MINIMIZE, [5, 0, 0, 3, -2], -21)
     self.assertEqual(model.simplex(), {
         "x1": 1.0,
         "x2": 0.0,
         "x3": 0.0,
         "x4": 0.0,
         "x5": 6.0
     })
Exemplo n.º 10
0
    def test___str__(self):
        """Test Model.__str__ method."""
        model = lp.Model(['x1', 'x2', 'x3', 'x4', 'x5'])
        model.add_constraint([-6, 0, 1, -2, 2], lp.LTE, 6)
        model.add_constraint([-3, 1, 0, 6, 3], lp.EQ, 15)
        model.add_cost_function(lp.MINIMIZE, [5, 0, 0, 3, -2], -21)
        self.assertEqual(
            model.__str__(), """Minimize:
  5 x1 + 0 x2 + 0 x3 + 3 x4 - 2 x5 - 21

Subject to:
  -6 x1 + 0 x2 + 1 x3 - 2 x4 + 2 x5 <= 6
  -3 x1 + 1 x2 + 0 x3 + 6 x4 + 3 x5 = 15
  x1, x2, x3, x4, x5 >= 0""")
Exemplo n.º 11
0
 def test__convert_to_canonical_form_neg_free_term(self):
     """Test Model._convert_to_standard_form when in standard form."""
     model = lp.Model(['x1', 'x2', 'x3'])
     model.add_constraint([30, 100, 85], lp.EQ, -2500)
     model.add_constraint([6, 2, 3], lp.EQ, 90)
     model.add_cost_function(lp.MINIMIZE, [3, 2, 4], 0)
     model._convert_to_standard_form()
     model._convert_to_canonical_form()
     self.assertEqual(model._canonical_constraints,
                      [([-30, -100, -85, 1, 0], 2500),
                       ([6, 2, 3, 0, 1], 90)])
     self.assertEqual(model._canonical_cost_function, ([3, 2, 4, 0, 0], 0))
     self.assertEqual(model._canonical_artificial_function,
                      ([24, 98, 82, 0, 0], -2590))
Exemplo n.º 12
0
 def test__convert_to_canonical_form_artificial(self):
     """Test Model._convert_to_canonical_form when not in standard form."""
     model = lp.Model(['x1', 'x2', 'x3', 'x4'])
     model.add_constraint([1, -2, -3, -2], lp.LTE, 3)
     model.add_constraint([1, -1, 2, 1], lp.GTE, 11)
     model.add_cost_function(lp.MAXIMIZE, [2, -3, 1, 1], 10)
     model._convert_to_standard_form()
     model._convert_to_canonical_form()
     self.assertEqual(model._canonical_constraints,
                      [([1, -2, -3, -2, 1, 0, 1, 0], 3),
                       ([1, -1, 2, 1, 0, -1, 0, 1], 11)])
     self.assertEqual(model._canonical_cost_function,
                      ([-2, 3, -1, -1, 0, 0, 0, 0], -10))
     self.assertEqual(model._canonical_artificial_function,
                      ([-2, 3, 1, 1, -1, 1, 0, 0], -14))
Exemplo n.º 13
0
 def test__convert_to_canonical_form(self):
     """Test Model._convert_to_canonical_form when in standard form."""
     model = lp.Model(["x1", "x2", "x3", "x4"])
     model.add_constraint([1, -2, -3, -2], lp.EQ, 3)
     model.add_constraint([1, -1, 2, 1], lp.EQ, 11)
     model.add_cost_function(lp.MINIMIZE, [2, -3, 1, 1], 0)
     model._convert_to_standard_form()
     model._convert_to_canonical_form()
     self.assertEqual(
         model._canonical_constraints,
         [([1, -2, -3, -2, 1, 0], 3), ([1, -1, 2, 1, 0, 1], 11)],
     )
     self.assertEqual(model._canonical_cost_function,
                      ([2, -3, 1, 1, 0, 0], 0))
     self.assertEqual(model._canonical_artificial_function,
                      ([-2, 3, 1, 1, 0, 0], -14))
Exemplo n.º 14
0
 def test_add_cost_function_named(self):
     """Test Model.add_cost_function success."""
     model = lp.Model(['x1', 'x2'])
     model.add_cost_function_named(lp.MINIMIZE, {'x1': 1, 'x2': 2}, 1)
     self.assertEqual((lp.MINIMIZE, [1, 2], 1), model._cost_function)
Exemplo n.º 15
0
 def test_add_constraint_named(self):
     """Test Model.add_constraint_named success."""
     model = lp.Model(['x1', 'x2'])
     model.add_constraint_named({'x1': 1, 'x2': 2}, lp.EQ, 1)
     self.assertTrue(([1, 2], lp.EQ, 1) in model._constraints)
Exemplo n.º 16
0
 def test__coeff(self):
     """Test model._coeff method."""
     model = lp.Model(['x1', 'x2'])
     self.assertEqual(model._coeff({'x1': 1}), [1, 0])
     self.assertEqual(model._coeff({'x2': 1}), [0, 1])
     self.assertEqual(model._coeff({'x1': 1, 'x2': 2}), [1, 2])
Exemplo n.º 17
0
 def test__coeff(self):
     """Test model._coeff method."""
     model = lp.Model(["x1", "x2"])
     self.assertEqual(model._coeff({"x1": 1}), [1, 0])
     self.assertEqual(model._coeff({"x2": 1}), [0, 1])
     self.assertEqual(model._coeff({"x1": 1, "x2": 2}), [1, 2])
Exemplo n.º 18
0
 def test_add_cost_function_named(self):
     """Test Model.add_cost_function success."""
     model = lp.Model(["x1", "x2"])
     model.add_cost_function_named(lp.MINIMIZE, {"x1": 1, "x2": 2}, 1)
     self.assertEqual((lp.MINIMIZE, [1, 2], 1), model._cost_function)
Exemplo n.º 19
0
 def test_add_constraint_named(self):
     """Test Model.add_constraint_named success."""
     model = lp.Model(["x1", "x2"])
     model.add_constraint_named({"x1": 1, "x2": 2}, lp.EQ, 1)
     self.assertTrue(([1, 2], lp.EQ, 1) in model._constraints)