Exemplo n.º 1
0
 def test__get_pivoting_row(self):
     """Test Tableau._get_pivoting_row method."""
     tableau = lp.Tableau(5, 2)
     tableau.add_constraint([-6, 0, 1, -2, 2, 6], 2)
     tableau.add_constraint([-3, 1, 0, 6, 3, 15], 1)
     tableau.add_cost_function([5, 0, 0, 3, -2, -21])
     self.assertEqual(tableau._get_pivoting_row(4), 0)
Exemplo n.º 2
0
    def test__pivote(self):
        """Test Tableau._pivote method."""
        tableau = lp.Tableau(3, 3)
        tableau.add_constraint([1, 4, 2, 6], 0)
        tableau.add_constraint([3, 14, 8, 16], 1)
        tableau.add_constraint([4, 21, 10, 28], 2)

        # Pivote by x1 in the first equation
        tableau._pivote(0, 0)
        self.assertEqual(
            tableau._tableau,
            [[1.0, 4.0, 2.0, 6.0], [0.0, 2.0, 2.0, -2.0], [0.0, 5.0, 2.0, 4.0]
             ],
        )
        # Pivote by x2 in the second equation
        tableau._pivote(1, 1)
        self.assertEqual(
            tableau._tableau,
            [[1.0, 0.0, -2.0, 10.0], [0.0, 1.0, 1.0, -1.0],
             [0.0, 0.0, -3.0, 9.0]],
        )
        # Pivote by x3 in the third equation
        tableau._pivote(2, 2)
        self.assertEqual(
            tableau._tableau,
            [[1.0, 0.0, 0.0, 4.0], [0.0, 1.0, 0.0, 2.0], [0.0, 0.0, 1.0, -3.0]
             ],
        )
Exemplo n.º 3
0
 def test_is_basic_feasible_solution_fails(self):
     """Test Tableau.is_basic_feasible_solution failures."""
     tableau = lp.Tableau(4, 2)
     tableau.add_constraint([1, 1, 2, 1, 6], 0)
     tableau.add_constraint([0, 3, 1, 8, 3], 1)
     tableau.add_cost_function([0, 0, 0, 0, 0])
     self.assertRaises(AssertionError, tableau.is_basic_feasible_solution)
Exemplo n.º 4
0
 def test_is_basic_feasible_solution(self):
     """Test Tableau.is_basic_feasible_solution method."""
     tableau = lp.Tableau(4, 2)
     tableau.add_constraint([1, 0, 1.667, 1.667, 5], 0)
     tableau.add_constraint([0, 1, 0.333, 2.667, 1], 1)
     tableau.add_cost_function([0, 0, 0, 0, 0])
     self.assertTrue(tableau.is_basic_feasible_solution())
Exemplo n.º 5
0
 def test_is_canonical_almost_canonical(self):
     """Test Tableau.is_canonical when no canonical."""
     tableau = lp.Tableau(2, 2)
     tableau.add_constraint([1, 2, 5], 0)
     tableau.add_constraint([0, 1, 5], 1)
     tableau.add_cost_function([2, 3, 5])
     self.assertFalse(tableau.is_canonical())
Exemplo n.º 6
0
 def test_is_minimum(self):
     """Test Tableau.is_minimum method."""
     tableau = lp.Tableau(3, 2)
     tableau.add_constraint([1, 2, 3, 4], 0)
     tableau.add_constraint([0, 1, 2, 3], 1)
     tableau.add_cost_function([0, 0, 1, 2])
     self.assertTrue(tableau.is_minimum())
Exemplo n.º 7
0
 def test_is_canonical(self):
     """Test Tableau.is_canonical when canonical."""
     tableau = lp.Tableau(2, 2)
     tableau.add_constraint([1, 0, 5], 0)
     tableau.add_constraint([0, 1, 5], 1)
     tableau.add_cost_function([0, 0, 5])
     self.assertTrue(tableau.is_canonical())
Exemplo n.º 8
0
 def test_cost_function(self):
     """Test Tableau.cost_function for non artificial models."""
     tableau = lp.Tableau(3, 2)
     tableau.add_constraint([1, 2, 3, 4], 0)
     tableau.add_constraint([0, 1, 2, 3], 1)
     tableau.add_cost_function([0, 0, 1, 2])
     self.assertEqual(tableau.cost_function(), [0, 0, 1, 2])
Exemplo n.º 9
0
 def test_is_minimum_artificial_not_minimum(self):
     """Test Tableau.is_minimum method."""
     tableau = lp.Tableau(3, 2)
     tableau.add_constraint([1, 2, 3, 4], 0)
     tableau.add_constraint([0, 1, 2, 3], 1)
     tableau.add_cost_function([0, 0, 1, 2])
     tableau.add_artificial_function([2, -3, 0, 0])
     self.assertFalse(tableau.is_minimum())
Exemplo n.º 10
0
 def test_drop_artificial_artificial_variable(self):
     """Test Tableau.drop_artificial fails when artificial variable."""
     tableau = lp.Tableau(4, 2)
     tableau.add_constraint([1, 2, 1, 0, 5], 2)
     tableau.add_constraint([0, 1, 0, 1, 5], 3)
     tableau.add_cost_function([2, 3, 0, 0, 5])
     tableau.add_artificial_function([1, 3, 0, 0, -15])
     self.assertRaises(AssertionError, tableau.drop_artificial)
Exemplo n.º 11
0
 def test_drop_artificial_not_minimal(self):
     """Test Tableau.drop_artificial fails when not minimal."""
     tableau = lp.Tableau(4, 2)
     tableau.add_constraint([1, 2, 1, 0, 5], 0)
     tableau.add_constraint([0, 1, 0, 1, 5], 1)
     tableau.add_cost_function([2, 3, 0, 0, 5])
     tableau.add_artificial_function([-1, -3, 0, 0, -15])
     self.assertRaises(AssertionError, tableau.drop_artificial)
Exemplo n.º 12
0
 def test_constraints(self):
     """Test Tableau.constraints method."""
     tableau = lp.Tableau(3, 2)
     tableau.add_constraint([1, 2, 3, 4], 0)
     tableau.add_constraint([0, 1, 2, 3], 1)
     tableau.add_cost_function([0, 0, 1, 2])
     tableau.add_artificial_function([1, 3, 5, 7])
     self.assertEqual(tableau.constraints(), [[1, 2, 3, 4], [0, 1, 2, 3]])
Exemplo n.º 13
0
 def test_add_cost_function(self):
     """Test Tableau.add_cost_function success."""
     tableau = lp.Tableau(3, 2)
     tableau.add_constraint([1, 2, 3, 4], 0)
     tableau.add_constraint([0, 1, 2, 3], 1)
     tableau.add_cost_function([0, 0, 1, 2])
     self.assertEqual(tableau._tableau,
                      [[1, 2, 3, 4], [0, 1, 2, 3], [0, 0, 1, 2]])
Exemplo n.º 14
0
 def test_add_constraint_fails(self):
     """Test Tableau.add_constraint asserts."""
     tableau = lp.Tableau(3, 2)
     self.assertRaises(AssertionError, tableau.add_constraint, [1], 0)
     self.assertRaises(AssertionError, tableau.add_constraint,
                       [1, 2, 3, 4, 5], 0)
     tableau.add_constraint([1, 2, 3, 4], 0)
     self.assertRaises(AssertionError, tableau.add_constraint, [1, 2, 3, 4],
                       0)
Exemplo n.º 15
0
 def test_drop_artificial(self):
     """Test Tableau.drop_artificial method."""
     tableau = lp.Tableau(4, 2)
     tableau.add_constraint([1, 2, 1, 0, 5], 0)
     tableau.add_constraint([0, 1, 0, 1, 5], 1)
     tableau.add_cost_function([2, 3, 0, 0, 5])
     tableau.add_artificial_function([1, 3, 0, 0, -15])
     tableau.drop_artificial()
     self.assertFalse(tableau._artificial)
     self.assertEqual(tableau._tableau, [[1, 2, 5], [0, 1, 5], [2, 3, 5]])
Exemplo n.º 16
0
 def test_simplex(self):
     """Test Tableau.simplex method."""
     tableau = lp.Tableau(5, 2)
     tableau.add_constraint([-6, 0, 1, -2, 2, 6], 2)
     tableau.add_constraint([-3, 1, 0, 6, 3, 15], 1)
     tableau.add_cost_function([5, 0, 0, 3, -2, -21])
     tableau.simplex()
     self.assertEqual(tableau._basic_variables, [4, 0])
     self.assertEqual(tableau._tableau,
                      [[0.0, 1 / 2, -1 / 4, 7 / 2, 1.0, 6.0],
                       [1.0, 1 / 6, -1 / 4, 3 / 2, 0.0, 1.0],
                       [0.0, 1 / 6, 3 / 4, 5 / 2, 0.0, -14.0]])
Exemplo n.º 17
0
 def test_add_artificial_function_fails(self):
     """Test Tableau.add_artificial_function asserts."""
     tableau = lp.Tableau(3, 2)
     self.assertRaises(AssertionError, tableau.add_artificial_function, [1])
     self.assertRaises(AssertionError, tableau.add_artificial_function,
                       [1, 2, 3, 4])
Exemplo n.º 18
0
 def test_add_constraint(self):
     """Test Tableau.add_constraint success."""
     tableau = lp.Tableau(3, 2)
     tableau.add_constraint([1, 2, 3, 4], 0)
     self.assertEqual(tableau._basic_variables, [0])
     self.assertEqual(tableau._tableau, [[1, 2, 3, 4]])