]> gitweb.michael.orlitzky.com - dead/census-tools.git/blobdiff - src/LinearProgramming.py
Added a property for the linear program's epsilon level.
[dead/census-tools.git] / src / LinearProgramming.py
index 2e8477d609fac8869cb41e23e14fcc89c2d7a1c9..7ea144bca77b3d1606a6927f713b542f5d275058 100644 (file)
@@ -26,6 +26,12 @@ from lpsolve55 import *
 MINIMIZE = 0
 MAXIMIZE = 1
 
+# "Epsilon levels"
+# Used to control rounding thresholds.
+EPS_TIGHT = 0
+EPS_MEDIUM = 1
+EPS_LOOSE = 2
+EPS_BAGGY = 3
 
 class LinearProgram(object):
     """
@@ -116,6 +122,17 @@ class LinearProgram(object):
             lpsolve('set_rh_vec', self._lp, self._rhs)
 
 
+    @property
+    def eps_level(self):
+        return self._eps_level
+
+    @eps_level.setter
+    def eps_level(self, value):
+        self._eps_level = value
+
+        if self._lp != None:
+            lpsolve('set_epslevel', self._lp, value)
+
 
     @property
     def inequalities(self):
@@ -253,6 +270,7 @@ class LinearProgram(object):
         self._solution_upper_bounds = []
         self._scale_mode = 0
         self._type = MINIMIZE
+        self._eps_level = EPS_MEDIUM
 
 
     def set_all_lp_properties(self):
@@ -277,6 +295,7 @@ class LinearProgram(object):
         self.solution_upper_bounds = self.solution_upper_bounds
         self.scale_mode = self.scale_mode
         self.type = self.type
+        self.eps_level = self.eps_level
 
 
 
@@ -382,6 +401,15 @@ class SimplexIteration(object):
         self._solution_vector = array(value)
 
 
+    @property
+    def variables(self):
+        vars = []
+        for idx in range(1, len(self.solution_vector)+1):
+            vars.append("x" + str(idx))
+
+        return vars
+
+
     @property
     def basic_variables(self):
         # The current set of basic variables. Constructed from the