Skip to content

Latest commit

 

History

History
73 lines (59 loc) · 6.26 KB

optimization.md

File metadata and controls

73 lines (59 loc) · 6.26 KB

Python optimization frameworks

General

  • cvxopt (GPLv3, Python/C): Python Software for Convex Optimization
  • Pyomo (Python) (Sandia)
  • PuLP (Python) interfaces to GLPK, CLP/CBC, CPLEX, GUROBI
  • optlang
  • PICOS (GPL-3, Python): interface to linear and conic optimization solvers (cvxopt, smcp, mosek, cplex, gurobi, zibopt)
  • pycplex (MIT, Python, C): interface to the ILOG CPLEX® Callable Library
  • python-zibopt (GPL-3, Python): solve MIQP using SCIP and SoPlex from the ZIB Optimization Suite
  • SCIP (ZIB, C): MIP and MINLP, and a framework for constraint integer programming and branch-cut-and-price
    • PySCIPOpt (MIT, Python): Python interface for the SCIP Optimization Suite
    • SCIP.jl (MIT, Julia): Julia interface to SCIP solver
    • JSCIPOpt (MIT, Java/C): Java interface for the SCIP Optimization Suite
  • COIN-OR: index of packages interfacing to solvers
  • BONMIN (EPL-1.0, C++): Basic Open-source Nonlinear Mixed INteger programming, for solving general MINLP (Mixed Integer NonLinear Programming) problems (IBM, CMU)
  • IPOPT: large-scale nonlinear opt
    • pyipopt (Python): interface to IPOPT
  • NLOPT (LGPLv2/Open Source, C): nonlinear optimization library with Python bindings using SWIG
  • lpsolve
  • NEOS Server: State-of-the-Art Solvers for Numerical Optimization: free internet-based service for solving numerical optimization problems
  • Numberjack: (LGPL-2.1, C++/Python) combinatorial optimisation platform
  • NOMAD: (LGPL, C++): implementation of the Mesh Adaptive Direct Search algorithm (MADS), designed for difficult blackbox optimization problems, with objective and constraints arising from costly computer simulations
  • PyMUMPS (BSD-3, Python): A parallel sparse direct solver
  • optipy (MIT, Python): numerical optimization or minimzation.

GLPK

Modeling

  • cvexp (Python) interfaces to GLPK, cvxopt
  • cvxpy (Python): on top of cvxopt
  • https://github.com/cvxgrp/qcml
  • PyLMI-SDP (BSD, Python): set of classes to represent and manipulate LMIs symbolically using SymPy. It also includes tools to export LMIs to CVXOPT SDP input and to the SDPA format

Polytopic computational geometry

  • polytope (BSD-3, Python): Geometric operations on polytopes of any dimension, using scipy, or cvxopt if present
  • cddlib (GPLv2, C): implementation in C of the double description method of Motzkin et al.
  • transforms3d (BSD-2, Python): 3 dimensional spatial transformations
  • Parma Polyhedra Library (GPLv3, C++)
  • PPLPy (GPLv3, Python/Cython/C++): Cython bindings to the Parma Polyhedra Library
  • PolyOp (GPLv3, OCaml): OCaml bindings to the Parma Polyhedra Library (LORIA, Univ. de Lorraine, CNRS, Inria)
  • islpy (MIT, Python/C++): polyhedral analysis from Python, by wrapping isl, a C library for manipulating sets and relations of integer points bounded by linear constraints. Supports intersection, union, set difference, emptyness check, convex hull, integer affine hull, integer projection, lexicographic minimum via parametric integer programming, parametric vertex enumeration
  • geode (BSD-3, C++/Python): A computational geometry library for C++ and Python (Otherlab)
  • MinkSum (GPLv2, C++): takes as input the vertices of a set of polytopes and outputs the vertices of their Minkowski sum (Google)

Zonotopes

  • libzonotope (MIT, C++/Python): a collection of scripts and algorithms for zonotope manipulations

Other

  • tspsolve: solution algorithms for the Traveling salesman problem

abbreviations

  • MIP: Mixed Integer Programming
  • MILP: Mixed Integer Linear Programming
  • MINLP: Mixed Integer Nonlinear Programming