skip to navigation
skip to content

Not Logged In

optlang 0.1.0

Formulate optimization problems using sympy expressions and solve them using interfaces to third-party optimization software (e.g. GLPK).

optlang

Vision

optlang provides a common interface to a series of optimization solvers (linear & non-linear) and relies on sympy for problem formulation (constraints, objectives, variables, etc.). Adding new solvers is easy: just sub-class the high-level interface and implement the necessary solver specific routines.

Installation

Install using pip

pip install optlang

or

pip install -e git+https://github.com/biosustain/optlang.git@master#egg=optlang

if you want to work with the latest stable version.

Local installations like

python setup.py install

might fail installing the dependencies (unresolved issue with easy_install). Running

pip install -r requirements.txt

beforehand should fix this issue.

Documentation

The documentation for optlang is provided at readthedocs.org.

Example

Formulating and solving the problem is straightforward (example taken from GLPK documentation):

from optlang import Model, Variable, Constraint, Objective

x1 = Variable('x1', lb=0)
x2 = Variable('x2', lb=0)
x3 = Variable('x3', lb=0)

c1 = Constraint(x1 + x2 + x3, ub=100)
c2 = Constraint(10 * x1 + 4 * x2 + 5 * x3, ub=600)
c3 = Constraint(2 * x1 + 2 * x2 + 6 * x3, ub=300)

obj = Objective(10 * x1 + 6 * x2 + 4 * x3, direction='max')

model = Model(name='Simple model')
model.objective = obj
model.add([c1, c2, c3])

status = model.optimize()

print "status:", model.status
print "objective value:", model.objective.value
for var_name, var in model.variables.iteritems():
    print var_name, "=", var.primal

The example will produce the following output:

status: optimal
objective value: 733.333333333
x2 = 66.6666666667
x3 = 0.0
x1 = 33.3333333333

Future outlook

  • Gurobi interface (very efficient MILP solver)
  • CPLEX interface (very efficient MILP solver)
  • Mosek interface (provides academic licenses)
  • GAMS output (support non-linear problem formulation)
  • DEAP (support for heuristic optimization)
  • Interface to NEOS optimization server (for testing purposes and solver evaluation)
  • Automatically handle fractional and absolute value problems when dealing with LP/MILP/QP solvers (like GLPK, CPLEX etc.)

Requirements

  • Models should always be serializable to common problem formulation languages (CPLEX, GAMS, etc.)
  • Models should be pickable
  • Common solver configuration interface (presolver, MILP gap, etc.)
 
File Type Py Version Uploaded on Size
optlang-0.1.0.tar.gz (md5) Source 2015-02-08 27KB
  • Downloads (All Versions):
  • 9 downloads in the last day
  • 50 downloads in the last week
  • 115 downloads in the last month