11

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

updogliu
  • 221
  • 2
  • 5

2 Answers2

11

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.

Arnold Neumaier
  • 11,318
  • 20
  • 47
4

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.

Marc Shivers
  • 201
  • 1
  • 3