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.3.3.tar.gz (45.7 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.3.3-py3.4.egg (89.7 kB view details)

Uploaded Egg

optlang-0.3.3-py2.7.egg (87.1 kB view details)

Uploaded Egg

File details

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

File metadata

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

File hashes

Hashes for optlang-0.3.3.tar.gz
Algorithm Hash digest
SHA256 1e5ac91bbaa6b156016f65505f40b0ffe2f39201b85084fbcb525c99d7c518c3
MD5 04bc349474baafc35eba89a4aae06023
BLAKE2b-256 6370f8c4846d74bcbdc57769e18110185b56384331667e274ebdc89dcc57cab1

See more details on using hashes here.

File details

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

File metadata

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

File hashes

Hashes for optlang-0.3.3-py3.4.egg
Algorithm Hash digest
SHA256 8a9eed3c6cd6786f1c01126e87579595f498c7074bcd87784febcc44a28b4d59
MD5 6f58029ecc6f7da500b2fabc0cfa9c3f
BLAKE2b-256 43e662cbaf54745b1f2da4d612f5084cc19e8f5ee0a2c2e2fef3d8aa0b516646

See more details on using hashes here.

File details

Details for the file optlang-0.3.3-py2.7.egg.

File metadata

  • Download URL: optlang-0.3.3-py2.7.egg
  • Upload date:
  • Size: 87.1 kB
  • Tags: Egg
  • Uploaded using Trusted Publishing? No

File hashes

Hashes for optlang-0.3.3-py2.7.egg
Algorithm Hash digest
SHA256 0149fb2a9d3b55267fb71ed56d67265da93f752b51fca35af454736a82cd96c0
MD5 a32f1b545665fb08893b1307c74e492d
BLAKE2b-256 94259f694d0c63c0c30481f452a98bbc68848b89d2b5f72ece42bff7b08e283a

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