Formulate optimization problems using sympy expressions and solve them using interfaces to third-party optimization software (e.g. GLPK).
Project description
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.
Dependencies
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
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.