X-Git-Url: https://gitweb.michael.orlitzky.com/?a=blobdiff_plain;f=src%2FLinearProgramming.py;h=7ea144bca77b3d1606a6927f713b542f5d275058;hb=3bc9f5d2b4196fce972776f38856da05817e7364;hp=2e8477d609fac8869cb41e23e14fcc89c2d7a1c9;hpb=3235d38d8e7975724fe06b4a68b1604559eedee2;p=dead%2Fcensus-tools.git diff --git a/src/LinearProgramming.py b/src/LinearProgramming.py index 2e8477d..7ea144b 100644 --- a/src/LinearProgramming.py +++ b/src/LinearProgramming.py @@ -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