import unittest import LinearProgramming class SimplexIterationTest(unittest.TestCase): def testSolutionVectorUnchanged(self): sm = LinearProgramming.SimplexIteration() sm.solution_vector = [1,2,3,4,5] self.assertTrue(sm.solution_vector == [1,2,3,4,5]) def testBasicVariables(self): sm = LinearProgramming.SimplexIteration() sm.solution_vector = [0,1,0,1,0,1] sm.basic_variables = "x1, x2, x3,x4,x5 " self.assertTrue("x1" in sm.basic_variables) self.assertTrue("x2" in sm.basic_variables) self.assertTrue("x3" in sm.basic_variables) self.assertTrue("x4" in sm.basic_variables) self.assertTrue("x5" in sm.basic_variables) def testNonBasicVariables(self): sm = LinearProgramming.SimplexIteration() sm.solution_vector = [1,0,0,4,5,6] sm.basic_indices = [0,3,4,5] self.assertTrue("x2" in sm.nonbasic_variables) self.assertTrue("x3" in sm.nonbasic_variables) def testBasisMatrix(self): sm = LinearProgramming.SimplexIteration() sm.solution_vector = [1, 0, 1, 1, 1, 0, 0, 1] sm.basic_variables = "x1,x3,x4,x5,x8" sm.constraint_matrix = [ [1, 1, 1, 0, 0, 0, 1, 0], [0, 0, 0, 1, 1, 1, 0, 1], [1, 0, 0, 1, 0, 0, 0, 0], [0, 1, 0, 0, 1, 0, 0, 0], [0, 0, 1, 0, 0, 1, 0, 0] ] expected_basis_matrix = [ [1, 1, 0, 0, 0], [0, 0, 1, 1, 1], [1, 0, 1, 0, 0], [0, 0, 0, 1, 0], [0, 1, 0, 0, 0] ] self.assertTrue(sm.basis_matrix() == expected_basis_matrix) def testOptimal(self): sm = LinearProgramming.SimplexIteration() sm.objective_coefficients = [ 5, 100, 30, 10, 20, 300, 0, 0 ] sm.solution_vector = [300, 0, 200, 100, 300, 0, 0, 200] sm.basic_variables = "x1,x3,x4,x5,x8" sm.constraint_matrix = [ [1, 1, 1, 0, 0, 0, 1, 0], [0, 0, 0, 1, 1, 1, 0, 1], [1, 0, 0, 1, 0, 0, 0, 0], [0, 1, 0, 0, 1, 0, 0, 0], [0, 0, 1, 0, 0, 1, 0, 0] ] self.assertTrue(sm.optimal) def testNonOptimal(self): sm = LinearProgramming.SimplexIteration() sm.objective_coefficients = [ 5, 100, 30, 10, 20, 300, 0, 0 ] sm.solution_vector = [0, 100, 200, 400, 200, 0, 200, 0] sm.basic_variables = "x2,x3,x4,x5,x7" sm.constraint_matrix = [ [1, 1, 1, 0, 0, 0, 1, 0], [0, 0, 0, 1, 1, 1, 0, 1], [1, 0, 0, 1, 0, 0, 0, 0], [0, 1, 0, 0, 1, 0, 0, 0], [0, 0, 1, 0, 0, 1, 0, 0] ] self.assertTrue(not sm.optimal) def suite(): suite = unittest.TestSuite() suite.addTest(unittest.makeSuite(SimplexIterationTest)) return suite