""" 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]