]> gitweb.michael.orlitzky.com - dead/census-tools.git/blob - src/Tests/Unit/SimplexIterationTest.py
Added the unit tests for the SimplexIteration class.
[dead/census-tools.git] / src / Tests / Unit / SimplexIterationTest.py
1 import unittest
2
3 import LinearProgramming
4
5
6 class SimplexIterationTest(unittest.TestCase):
7
8 def testSolutionVectorUnchanged(self):
9 sm = LinearProgramming.SimplexIteration()
10 sm.solution_vector = [1,2,3,4,5]
11 self.assertTrue(sm.solution_vector == [1,2,3,4,5])
12
13
14 def testBasicVariables(self):
15 sm = LinearProgramming.SimplexIteration()
16 sm.solution_vector = [0,1,0,1,0,1]
17 sm.basic_variables = "x1, x2, x3,x4,x5 "
18 self.assertTrue("x1" in sm.basic_variables)
19 self.assertTrue("x2" in sm.basic_variables)
20 self.assertTrue("x3" in sm.basic_variables)
21 self.assertTrue("x4" in sm.basic_variables)
22 self.assertTrue("x5" in sm.basic_variables)
23
24
25 def testNonBasicVariables(self):
26 sm = LinearProgramming.SimplexIteration()
27 sm.solution_vector = [1,0,0,4,5,6]
28 sm.basic_indices = [0,3,4,5]
29 self.assertTrue("x2" in sm.nonbasic_variables)
30 self.assertTrue("x3" in sm.nonbasic_variables)
31
32
33 def testBasisMatrix(self):
34 sm = LinearProgramming.SimplexIteration()
35
36 sm.solution_vector = [1, 0, 1, 1, 1, 0, 0, 1]
37 sm.basic_variables = "x1,x3,x4,x5,x8"
38
39 sm.constraint_matrix = [ [1, 1, 1, 0, 0, 0, 1, 0],
40 [0, 0, 0, 1, 1, 1, 0, 1],
41 [1, 0, 0, 1, 0, 0, 0, 0],
42 [0, 1, 0, 0, 1, 0, 0, 0],
43 [0, 0, 1, 0, 0, 1, 0, 0] ]
44
45 expected_basis_matrix = [ [1, 1, 0, 0, 0],
46 [0, 0, 1, 1, 1],
47 [1, 0, 1, 0, 0],
48 [0, 0, 0, 1, 0],
49 [0, 1, 0, 0, 0] ]
50
51 self.assertTrue(sm.basis_matrix() == expected_basis_matrix)
52
53
54 def testOptimal(self):
55 sm = LinearProgramming.SimplexIteration()
56 sm.objective_coefficients = [ 5, 100, 30, 10, 20, 300, 0, 0 ]
57 sm.solution_vector = [300, 0, 200, 100, 300, 0, 0, 200]
58 sm.basic_variables = "x1,x3,x4,x5,x8"
59
60 sm.constraint_matrix = [ [1, 1, 1, 0, 0, 0, 1, 0],
61 [0, 0, 0, 1, 1, 1, 0, 1],
62 [1, 0, 0, 1, 0, 0, 0, 0],
63 [0, 1, 0, 0, 1, 0, 0, 0],
64 [0, 0, 1, 0, 0, 1, 0, 0] ]
65
66 self.assertTrue(sm.optimal)
67
68
69 def testNonOptimal(self):
70 sm = LinearProgramming.SimplexIteration()
71 sm.objective_coefficients = [ 5, 100, 30, 10, 20, 300, 0, 0 ]
72 sm.solution_vector = [0, 100, 200, 400, 200, 0, 200, 0]
73 sm.basic_variables = "x2,x3,x4,x5,x7"
74
75 sm.constraint_matrix = [ [1, 1, 1, 0, 0, 0, 1, 0],
76 [0, 0, 0, 1, 1, 1, 0, 1],
77 [1, 0, 0, 1, 0, 0, 0, 0],
78 [0, 1, 0, 0, 1, 0, 0, 0],
79 [0, 0, 1, 0, 0, 1, 0, 0] ]
80
81 self.assertTrue(not sm.optimal)
82
83
84 def suite():
85 suite = unittest.TestSuite()
86 suite.addTest(unittest.makeSuite(SimplexIterationTest))
87 return suite