User’s guide

The user's guide distributed with the package is also available on-line.

Technical documentation

Discussion forum

There is a Google discussion forum for CVXOPT.

Revision history

Version 1.3.2 (August 9, 2023).

Bug fix

Version 1.3.1 (May 9, 2023).

Minor improvements

Version 1.3.0 (March 8, 2022).

Bug fixes and improved Python 3.11 compatibility.

Version 1.2.7 (September 20, 2021).

Minor improvements and bug fixes.

Version 1.2.6 (February 18, 2021).

Minor improvements and bug fix.

Version 1.2.5 (April 16, 2020).

Python 3.8 and PyPy compatibility.

Version 1.2.4 (January 20, 2020).

Several bug fixes. Python 3.8 compatibility.

Version 1.2.3 (February 5, 2019).

Bug fix.

Version 1.2.2 (October 18, 2018).

Bug fix.

Version 1.2.1 (August 30, 2018).

Several bug fixes.

Version 1.2.0 (April 17, 2018).

Several bug fixes. Improved Windows compatibility (Python 3.5+).

Version 1.1.9 (November 30, 2016).

Removed the SuiteSparse source code from the distribution.

Version 1.1.8 (September 22, 2015).

Upgrade to SuiteSparse version 4.4.5. Several bug fixes.

Version 1.1.7 (May 31, 2014).

Upgrades of the GLPK and MOSEK interfaces.

Version 1.1.6 (April 22, 2013).

Several bug fixes (int/int_t issues). Performance improvements for certain spmatrix slicing operations. Upgrade to SuiteSparse version 4.1.0. Improved Numpy compatibility via buffer protocol (works in both Python 2.x and 3.x). Improved SunOS/Solaris compatibility (“complex double” instead of “complex”).

Version 1.1.5 (March 28, 2012).

Fixed a Mac OS X BLAS compatibility issue.

Version 1.1.4 (December 21, 2011).

Merged the source for the Python 2.7 and Python 3 versions.

Version 1.1.3 (September 15, 2010).

Upgrade of the MOSEK interface to MOSEK version 6. A few bug fixes in the matrix class.

Version 1.1.2 (December 15, 2009).

Several bug fixes. Improved initialization in the coneqp() solver.

Version 1.1.1 (March 1, 2009).

Translated the user guide to Sphinx. Additional LAPACK routines for LQ factorization and QR factorization with column pivoting.

Version 1.1 (October 15, 2008).

matrix(), spmatrix(), and the other functions in cvxopt.base can now be directly imported from cvxopt (”from cvxopt import matrix” replaces “from cvxopt.base import matrix”, although the older code still works). bool(A) of a dense or sparse matrix A is now defined to be True if A is a nonzero matrix. (Hence “if A” in older code should be replaced by “if len(A)”.) The optimization routines now return the last iterates when returning with status 'unknown', and provide information about the accuracy of the solution they return. An element-wise max and min of matrices. Schur factorization routines from LAPACK.

Version 1.0 (April 24, 2008).

Addition of two-dimensional discrete transforms. Performance improvements in the optimization routines. Interfaces to the MOSEK and GLPK integer LP solvers (these features are documented in the source docstrings).

Version 0.9.3 (February 24, 2008).

A new solver for quadratic programming with linear cone constraints. Minor changes to the other solvers: the option of requesting several steps of iterative refinement when solving Newton equations; the fields W['dl'] and W['dli'] in the scaling dictionary described in section 9.4 were renamed W['d'] and W['di'].

Version 0.9.2 (December 27, 2007).

The GNU Scientific Library is no longer required for installation. The cvxopt.random module has been deleted, and the functions for generating random matrices (random.uniform(), random.normal(), random.getseed(), random.setseed()) have been moved to cvxopt.base. The upgrade also includes an improved and more easily customized style of matrix formatting.

Version 0.9.1 (November 23, 2007).

A revision of the nonlinear optimization solver, with added support for second-order cone and linear matrix inequality constraints. (A new argument was added to the function solvers.cp(), but code that uses the previous version should still work if the arguments A and b are specified by keywords.) The functions in cvxopt.random are now based on the random number generators of the GNU Scientific Library. The MOSEK interface was upgraded to version 5. A new function base.spdiag() for specifying sparse block diagonal matrices.

Version 0.9 (August 10, 2007).

A new cone program solver, with support for second-order cone constraints.

Version 0.8.2 (February 6, 2007).

Performance improvements in the sparse matrix arithmetic. The LAPACK solvers for banded and tridiagonal equations. Several bug fixes.

Version 0.8.1 (October 31, 2006).

Compatibility with Python 2.5. An extension of base.matrix() to construct block matrices. A new function sparse() to create sparse block matrices. The default value of cholmod.options['supernodal'] was changed to 2.

Version 0.8 (September 20, 2006).

General sequences are allowed in matrix definitions and assignments. The base.div(), base.mul(), and base.syrk() functions. Elementwise exponentiation of dense matrices. The FFTW interface. The optional arguments in BLAS and LAPACK have been reordered so that the most important arguments come first. (This affects previous code in which optional arguments were passed by position instead of by keyword.) A revised nonlinear convex optimization solver with a simpler calling sequence.

Version 0.7.1 (August 1, 2006).

Complex sparse matrices. The sparse BLAS functions base.symv() and base.gemm(). The DSDP5 interface. The cvxopt.colamd and cvxopt.ccolamd interfaces were removed. There are several important backward incompatible changes in the definitions of base.matrix() and base.spmatrix():

  • The x argument in base.matrix() is now required; it is no longer possible to create matrices with uninitialized values.

  • If the x argument in base.matrix() is of integer type, an integer matrix is created. For example, “matrix(1)” now creates an 'i' matrix; “matrix(1.0)” creates a 'd' matrix.

  • Symmetric sparse matrices are no longer defined. The type argument in base.spmatrix() has been removed.

  • The x, I, J arguments in base.spmatrix() are all required.

Version 0.7 (April 21, 2006).

A semidefinite programming solver. LAPACK routines for QR factorization. The base.gemv() function. The base.smv() function was removed.

Version 0.6.1 (February 27, 2006).

Compatibility with the SciPy array interface. Portability to 64 bit machines. LAPACK routines for matrix inversion. Generalized symmetric eigenvalue problems and singular value decomposition. The cvxopt.ldl module has been removed.

Version 0.6 (December 27, 2005).

Elementwise exp(), sin(), cos(), and log() of dense matrices. Indexed assignments of sparse to dense matrices. Pickling of dense and sparse matrices. Interfaces to the matrix ordering libraries COLAMD and CCOLAMD. Several new functions in cvxopt.cholmod. A new LP solver.

Version 0.5 (October 20, 2005).

The CHOLMOD interface. The nonlinear convex optimization solver in the solvers module. Several bug fixes.

Version 0.4 (May 18, 2005).

Interfaces to the LP solvers in MOSEK and GLPK.

Version 0.3 (March 29, 2005).

Several minor additions and improvements.

Version 0.2 (January 31, 2005).

Sparse linear equation solvers from UMFPACK and LDL. A modeling tool for convex piecewise-linear optimization problems.

Version 0.1 (November 3, 2004).

Dense and sparse matrix class. Some BLAS and LAPACK routines. A linear programming solver.