Skip to main content

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

Project description

PyPI License Travis Coverage Status Code Climate Documentation Status DOI

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

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.)

The optlang trello board also provides a good overview of the project’s roadmap.

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.)

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

optlang-0.4.1.tar.gz (45.8 kB view details)

Uploaded Source

Built Distributions

If you're not sure about the file name format, learn more about wheel file names.

optlang-0.4.1-py3.4.egg (90.0 kB view details)

Uploaded Egg

optlang-0.4.1-py2.py3-none-any.whl (38.5 kB view details)

Uploaded Python 2Python 3

File details

Details for the file optlang-0.4.1.tar.gz.

File metadata

  • Download URL: optlang-0.4.1.tar.gz
  • Upload date:
  • Size: 45.8 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No

File hashes

Hashes for optlang-0.4.1.tar.gz
Algorithm Hash digest
SHA256 06b5cd2308712d39b56e9b1816ce2e78d5241a2925d83f575982dcdaf48adfa8
MD5 c7e92d4a7b72afe9d285d5f735201ab1
BLAKE2b-256 db364e606c5821aa60bfbd5b804ee361f18fa343b6d790b51e096cdc3a668d25

See more details on using hashes here.

File details

Details for the file optlang-0.4.1-py3.4.egg.

File metadata

  • Download URL: optlang-0.4.1-py3.4.egg
  • Upload date:
  • Size: 90.0 kB
  • Tags: Egg
  • Uploaded using Trusted Publishing? No

File hashes

Hashes for optlang-0.4.1-py3.4.egg
Algorithm Hash digest
SHA256 d33761221de3ef0ab7a3e516e0731714cba3a9a0e7a2bac2c221683fdffbe043
MD5 da26b580e5bd2b0373ddfc74fc515027
BLAKE2b-256 6fb9a7d6f0158e43870b60b525c1f26e5989e0a41dd6e6d12720d13ddac01334

See more details on using hashes here.

File details

Details for the file optlang-0.4.1-py2.py3-none-any.whl.

File metadata

File hashes

Hashes for optlang-0.4.1-py2.py3-none-any.whl
Algorithm Hash digest
SHA256 94ecc0c0636687f0b37bbabdc4f7432c20b486f6120d99b2f2c5ab1fa6f2c217
MD5 7f7f6536500acd58fe3c7fac16015b4c
BLAKE2b-256 9037fd253f9195be678c9fc09d6af6133baff2d3c5d18327d211cc947e423d6f

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page