BTW, is there any other high quality general purpose convex optimization library for Python/C++ worth noting?


CVXOPT only solves (smooth and nonsmooth) convex problems, giving access to several third party convex solvers with guaranteed state of the art worst case complexity. You may pose linear, convex quadratic, linear semidefinite, and many other convex types of constraints.

OpenOpt solves general (smooth and nonsmooth) nonlinear programs, including problems with integer constraints. Unlike CVXOPT, it has no software for solving semidefinite programs. The solvers were all written by Dmitrey Kroshko himself and don't have a long history, so testing was probably limited. OpenOpt itself does _not- interface to general third party solvers.

However, there is the ''OpenOpt Framework'' (http://openopt.org/OOFramework) that interfaces to IPOPT (mentioned in another comment; it cannot solve nonsmooth problems), CVXOPT, and some other solvers available in Python.

Apart from this interface, there is no relation between these packages. The methods are completely different; the only common things may well be the Python language and the access to LAPACK.

For convex problems, I'd also like to recommend
CVX: Matlab Software for Disciplined Convex Programming http://cvxr.com/cvx,
for which the authors obtained this year's very prestigious Beale-Hays-Orchard Prize for Excellence in Computational Mathematical Programming. It is written in Matlab, though.
They also have a Python ''version'' called CVXPY http://www.stanford.edu/~ttinoco/cvxpy/, but CVXPY is effectively only a very nice and useful ''disciplined'' interface to CVXOPT, in which one can make sure that when a program is syntactically correct it is a convex optimization problem.


OpenOpt is, for the most part, just an interface to other solvers. CVXOPT is one of the open source solvers underlying OpenOpt, so unless you have a commercial solver you want to use, you'll likely want to install CVXOPT in any case. AFAIK, CVXOPT is state-of-the-art among open source libraries, at least for second-order cone programming and semi-definite programming.

  • 1
    $\begingroup$ I don't think it makes sense to say CVXOPT is the main open source solver underlying OpenOpt. Why is it more main than, say, IPOPT, or a dozen other underlying solvers? $\endgroup$ – David Ketcheson Sep 22 '12 at 6:25
  • $\begingroup$ perhaps main SOCP solver is more accurate(?) $\endgroup$ – Marc Shivers Sep 22 '12 at 16:45

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.