From: Michael Orlitzky Date: Mon, 19 Apr 2010 04:55:24 +0000 (-0400) Subject: Added the LinearProgramming module. X-Git-Url: https://gitweb.michael.orlitzky.com/?a=commitdiff_plain;h=1803f36d3cc39a3f11bffccacf7447174ca23f43;p=dead%2Fcensus-tools.git Added the LinearProgramming module. --- diff --git a/src/LinearProgramming.py b/src/LinearProgramming.py new file mode 100644 index 0000000..1d72ad5 --- /dev/null +++ b/src/LinearProgramming.py @@ -0,0 +1,44 @@ +""" +Classes to create, solve, and make dinner for linear programs. Handles +integration with lp_solve. +""" + +import os +import site +import sys + +# Add LP_SOLVE_PATH to our path. There is no point to this variable +# other than to make the site.addsitedir() line fit within 80 +# characters. +LP_SOLVE_PATH = '/../lib/lp_solve' +site.addsitedir(os.path.dirname(os.path.abspath(sys.argv[0])) + LP_SOLVE_PATH) + +from lp_solve import * + + +# Constants denoting the three different types of (in)equalities. +# These are defined by lp_solve. +LEQ = -1 # Less than or equal to. +EQ = 0 # Equal to +GEQ = 1 # Greater than or Equal to. + + +class LinearProgram(object): + """ + Represents an instance of an lp_solve linear program. + """ + + def __init__(self): + self.objective_function_coefficients = [] + self.constraint_matrix = [] + self.rhs = [] + self.inequalities = [] + + + def solve(self): + [v,x,duals] = lp_solve(self.objective_function_coefficients, + self.constraint_matrix, + self.rhs, + self.inequalities) + return [v,x,duals] +