Skip to content

Instantly share code, notes, and snippets.

@ostrokach
Last active December 2, 2017 11:00
Show Gist options
  • Star 1 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save ostrokach/258d4a469d895f828934 to your computer and use it in GitHub Desktop.
Save ostrokach/258d4a469d895f828934 to your computer and use it in GitHub Desktop.

Solving optimization problems

Integer programs

http://stackoverflow.com/questions/502102/best-open-source-mixed-integer-optimization-solver http://math.stackexchange.com/questions/252654/good-software-for-linear-integer-programming https://github.com/johnyf/tool_lists/blob/master/optimization.md

Spreadsheets

MS Excel / LibreOffice Calc

Tools -> Solver -> LibreOffice Linear Solver

MATLAB

CVX

The best interface currently availible.

Python

CVXOPT : http://cvxopt.org/index.html

CVXOPT is a free software package for convex optimization based on the Python programming language. It can be used with the interactive Python interpreter, on the command line by executing Python scripts, or integrated in other software via Python extension modules. Its main purpose is to make the development of software for convex optimization applications straightforward by building on Python’s extensive standard library and on the strengths of Python as a high-level programming language.

CVXPY : http://www.cvxpy.org/en/latest/

Interfaces with CVXOPT but offers a more intuitive interface to define the problem. GLPK

PICOS : http://picos.zib.de/index.html
  • A Python Interface for Conic Optimization Solvers. Can call: cvxopt, smcp, mosek, cplex, gurobi, zibopt
  • A lot of functionality for working with graphs. Finding max flow, min cut, etc.
  • Convex semi-definite programming
PuLP : https://code.google.com/p/pulp-or/
  • Similar to CVXOPT but less active and fewer updates.
  • Interfaces to GLPK, CLP/CBC, CPLEX, GUROBI
NLOPT : http://ab-initio.mit.edu/wiki/index.php/NLopt

Nonlinear optimization library with Python bindings

COIN-OR Project

COIN-OR : http://www.coin-or.org/projects/

Index of packages interfacing to solvers

CBC (COIN-OR Branch-and-Cut MIP Solver)
  • A set of routines written in C++ and can be used as a callable library or a stand-alone executable
  • Solves linear programming (LP) and mixed-integer programming (MIP) problems
IPOPT : https://projects.coin-or.org/Ipopt

Large-scale nonlinear optimization

pyipopt : https://code.google.com/p/pyipopt/

Python interface to IPOPT

Standalone libraries

SCIP (ZIB) : http://scip.zib.de/
GLPK (GNU Linear Programming Kit) : https://www.gnu.org/software/glpk/
  • A set of routines written in C and organized in the form of a callable library
  • Solves linear programming (LP) and mixed integer programming (MIP) problems
  • Can be accessed through CVXOPT
LP Solve : http://sourceforge.net/projects/lpsolve/
Gurobi : http://www.gurobi.com/products/licensing-and-pricing/academic-licensing

Fast commercial solver with a free academic license

CPLEX Optimizer : http://www-01.ibm.com/software/commerce/optimization/cplex-optimizer/index.html

Commercial package from IBM.

MDPs

POMDPs

A good tutorial on solving POMDPs: <http://cs.brown.edu/research/ai/pomdp/tutorial/>

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment