CONE World [ CONE World Home | Board | Solvers | CONELib | Links | Gams World Forum | Search | Contact ]

Conic Programming Solvers

There are several cone programming solvers available, both free codes from research institutions and commercial codes from various vendors. The solvers differ in the methods they use, in the size of models they can handle, and in the format of models they accept.

CONOPT Nonlinear optimization solver from ARKI Consulting and Development, Copenhagen, Denmark
CPLEX High-performance linear, mixed-integer linear, and quadratic programming solver from IBM
CVXOPT 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.
LOQO General purpose solver for smooth nonlinear programs from Princeton University.
MOSEK Software package for the solution of linear, mixed-integer linear, and convex nonlinear mathematical optimization problems (including SOCP). From MOSEK ApS, Copenhagen, Denmark
SeDuMi MATLAB toolbox for solving optimization problems over symmetric cones. From Tilburg University, Netherlands.
SDPT3 MATLAB software for semidefinite-quadratic-linear programming from the National University of Singapore.

Conic Programming Interfaces

This sections lists interfaces to conic programming solvers.
CVX CVX is a Matlab-based modeling system for convex optimization. CVX turns Matlab into a modeling language, allowing constraints and objectives to be specified using standard Matlab expression syntax. (Developed by Michael Grant and Stephen Boyd, with input from Yinyu Ye)
CVXMOD Python-based tool for expressing and solving convex optimization problems using CVXOPT as it's solver. (Developed by Jacob Mattingley and Stephen Boyd)
PICOS PICOS (A Python Interface for Conic Optimization Solvers) currently handles (MI)LP, (MI)QCQP, (MI)SOCP, SDP and GP, and interfaces the solvers mosek, cplex, cvxopt, and zibopt (aka scip). PICOS was developed by Guillaume Sagnol and is available at the PICOS website of the Zuse Institute Berlin (ZIB).
YALMIP YALMIP is an interface to a number of semi-definite and conic programming solvers and is developed by Johan Lofberg, ETH Zurich, Switzerland


Solver/Interface Descriptions

CONOPT

CONOPT is a large-scale nonlinear programming solver utilizing various methods (Steepest-Descent, Quasi-newton, SLP, SQP) and uses exact second derivatives. SOCP models are solved via NLP formulation without smoothing.

For more information see here.

CPLEX

CPLEX is a powerful Linear Programming (LP), Mixed-Integer Programming (MIP), Quadratically Constraint Programming (QCP) and second order cone programs, and Mixed-Integer Quadratically Constraint Programming (MIQCP) solver based on the Cplex Callable Library from IBM.

LPs are solved via the following algorithms: Primal Simplex, Dual Simplex, Network, Barrier, and Sifting. MIPs are solved using an implementation of a branch-and-bound search with modern algorithmic features such as cuts and heuristics.

CPLEX transforms QCPs into SOCPs (Second Order Cone Programs) for the barrier solver. CPLEX also supports SOCPs inputted directly.

For more information see here.

CVX

CVX is a Matlab-based modeling system for convex optimization. CVX turns Matlab into a modeling language, allowing constraints and objectives to be specified using standard Matlab expression syntax.

In its default mode, CVX supports a particular approach to convex optimization that we call disciplined convex programming. Under this approach, convex functions and sets are built up from a small set of rules from convex analysis, starting from a base library of convex functions and sets. Constraints and objectives that are expressed using these rules are automatically transformed to a canonical form and solved.

CVX also supports geometric programming (GP) through the use of a special GP mode. Geometric programs are not convex, but can be made so by applying a certain transformation. In this mode, CVX allows GPs to be constructed in their native, nonconvex form, transforms them automatically to a solvable convex form, and translates the numerical results back to the original problem.

More information about CVX can be found in the CVX Users', included with the CVX package and available separately on the CVX web site. The CVX package includes a growing library of examples to help get you started, including examples from the book Convex Optimization and from a variety of applications. You can browse through this library directly from the CVX web site without having to download and install CVX.

CVX was designed designed by Michael Grant and Stephen Boyd, with input from Yinyu Ye.

For more information see http://www.stanford.edu/~boyd/cvx/.

CVXMOD

CVXMOD is a Python-based tool for expressing and solving convex optimization problems. It uses CVXOPT as its solver. CVXMOD is primarily a modeling layer for CVXOPT. While it is possible to use CVXOPT directly, CVXMOD makes it faster and easier to build and solve problems. Advanced users who want to see or manipulate how their problems are being solved should consider using CVXOPT directly. Additional features are being added to CVXMOD beyond just modeling. These are currently experimental.

For more information, see http://cvxmod.net/

CVXOPT

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

For more information, see http://abel.ee.ucla.edu/cvxopt/

LOQO

LOQO is a software package for the solution of large scale smooth nonlinear programming problems. It can also handle SOCP and semi-definite programming (SDP) problems and utilizes an efficient interior point method. SOCP are solved via reformulation as smooth nonlinear programs.

For more information, see http://www.orfe.princeton.edu/~loqo/.

MOSEK

MOSEK is a software package for the solution of linear,mixed-integer linear, and convex nonlinear mathematical optimization problems. MOSEK is particularly well suited for solving large-scale linear programs using an extremely efficient interior point algorithm. The interior point algorithm has many extensive standard library and on the strengths of Python as a high-level programming language.complex solver options which the user can specify to fine-tune the optimizer for a particular model.

Also see here.

PICOS

PICOS (A Python Interface for Conic Optimization Solvers) currently handles (MI)LP, (MI)QCQP, (MI)SOCP, SDP and GP, and interfaces the solvers mosek, cplex, cvxopt, and zibopt (aka scip). PICOS was developed by Guillaume Sagnol and is available at the PICOS website of the Zuse Institute Berlin (ZIB).

Also see http://picos.zib.de.

SeDuMi

Matlab toolbox for solving optimization problems over symmetric cones, i.e. it allows not only for linear constraints, but also quasiconvex-quadratic constraints and positive semi-definiteness constraints. SeDuMi incorporates a primal-dual interior point method and implements a self-dual minimization technique for optimization over symmetric cones. Iterative solutions are updated in product form which makes it possible to provide highly accurate solutions.

Complex valued entries are allowed. Both symbolic and numerical reordering schemes, Cholesky and pre-conditioned conjugate gradient techniques that balance speed/accuracy performance. Sophisticated dense column handling, using Goldfarb-Scheinberg product form idea. Proven polynomial worst case operation bound.

Also see http://sedumi.ie.lehigh.edu/.

SDPT3

MATLAB-based software that can incorporate FORTRAN or C subroutines via MEX files for faster execution. It implements an infeasible path-following algorithm for solving conic optimization problems involving semidefinite, second-order and linear cone constraints. Sparsity in the data is exploited whenever possible.

Also see http://www.math.nus.edu.sg/~mattohkc/sdpt3.html.

YALMIP

YALMIP is a free MATLAB toolbox for rapid prototyping of optimization problems. The package initially aimed at the control community and focused on semidefinite programming, but the latest release extends this scope significantly.

The main features of YALMIP are:

Also see http://control.ee.ethz.ch/~joloef/yalmip.msql.