CVXMOD – Version and bug information

Current limitations

Warning: CVXMOD is currently in alpha. In particular,

  • Significant changes to the program interface are possible.

  • CVXMOD is currently relatively inefficient — the emphasis has been on getting the approach right. Expect huge performance improvements in the future.

  • The solvers CVXMOD uses are not especially robust or stable.

Known bugs

  • Symmetric variables do not currently work with nonlinear atoms.

  • Slicing does not fully work with symbolically sized parameters.

Possibly upcoming features

  • Functions defined by partially specified problems.

  • Classification in sets of variables.

  • General p-norms.

  • C code generation.

  • More general support for matrix structure.

Changes from v0.4.5 to v0.4.6 (2008-10-21)

  • Fixed bugs with single-argument slicing.

  • Fixing a bug with the pos and neg atoms giving incorrect results with numerical examples.

  • Bug fixes related to using the transpose operator in problems.

Changes from v0.4.4 to v0.4.5 (2008-06-23)

  • Bug fixes, especially to symbol slicing.

Changes from v0.4.3 to v0.4.4 (2008-06-05)

  • Bug fixes.

  • Initial internal sparsity support.

  • Performance improvements.

Changes from v0.4.2 to v0.4.3 (2008-05-30)

  • Added functions leastsquares, leastnorm, sqrtm, svd and eig to cvxmod.util.

  • Changed the short version of transpose (tr) to tp.

  • Added symbolic concatenation (though not yet including proper matrix concatenation).

  • Added a kktsolver option to p.solve, which is passed through to CVXOPT as appropriate. For better stability, try kktsolver='ldl' or kktsolver='qr'.

  • Split dim into its own type of symbol.

  • Significant bug fixes.

Changes from v0.4.1 to v0.4.2 (2008-05-09)

  • Added a quiet option to p.solve, where p is a problem. Quieten problems with p.solve(True).

  • Significant bug fixes.

  • Now requires CVXOPT v1.0.

Changes from v0.4.0 to v0.4.1 (2008-05-08)

  • Minor bug fixes.

Changes from v0.3.1 to v0.4.0 (2008-04-15)

  • Changed parameter ordering for symbols, optvars and params to
    symbol(name, rows, cols, value).

  • Changed indexing to index from 0 rather than 1. This includes optvars, params and unitvecs, and brings things into much better consistency.

  • Greatly improved matrix variable support.

  • Added diag, trace.

  • Upgraded sum to work with matrices.

  • Added inv.

  • rand(3) now means a 3times3 matrix rather than 3times1; likewise for randn.

  • Added support for implicit constraints and assertions.

  • Name changes:

    • positiveorthant, negativeorthant and probsimplex are now posorth, negorth and probsimp, respectively.

    • isnegative and ispositive are now isneg and ispos, respectively.

    • unitvector to unitvec.

    • problem.constraints is now problem.constr.

Changes from v0.3.1 to v0.3.2 (2008-01-28)

  1. Corrected norm2 evaluation.

  2. Fixed random number compatibility with CVXOPT v0.9.2. Setting BUILD_GSL = 1 before installing CVXOPT is no longer required.

Changes from v0.3.0 to v0.3.1 (2008-01-27)

  1. Better compatibility with CVXOPT v0.9.2.

  2. Bug fixes to convexity determination.

  3. Internal preparation for PSD cone support, including a much more consistent treatment of a problem's ‘standard form’.

  4. Changed variable indexing to match mathematical convention rather than Python convention (ie, x[1] now refers to the component x_1, not x_2. This does not carry over to CVXOPT matrices, however, where indexing is from 0.

Changes from v0.2.0 to v0.3.0 (2007-12-07)

  1. Removed the affine attribute from most classes. Affineness is now determined by combining convexity and concavity.

  2. Moved the variable and parameter classes into a single class symbol with a role attribute.

  3. Added new sets positiveorthant, negativeorthant and reals (which are all somewhat trivial).

  4. Changed all references to variables or vars to optvars.

  5. Changed classify() to give a minimum-length description. For example, instead of saying a variable x is convex and concave, it will simply describe it as affine.

  6. Added the sum in the definition of entropy (instead of elementwise).

  7. Compatibility with, and a new requirement for, CVXOPT v0.9.1. This includes

    1. Using cvxopt.solvers.cpl instead of inefficiently creating linear objectives and treating them as nonlinear objectives.

    2. Proper support of SOCP constraints (the norm2 atom).

    3. Use of the conic solver (rather than the general nonlinear solver) where possible.

  8. Support for log-sum-exp atoms (lse).

Changes from v0.1.1 to v0.2.0 (2007-11-26)

  1. Name changes to simplify syntax.

    1. isnondecreasing is now isincreasing.

    2. isnonincreasing is now isdecreasing.

    3. isnonnegative is now ispositive.

    4. isnonpositive is now isnegative.

  2. Name changes for better internal consistency

    1. norm is now norm2, like norm1 and norminf.

  3. The atoms norminf and norm1 work again.

  4. Two new atoms.

    1. quadform(x, Q) for quadratic forms.

    2. power(x, p) for (elementwise) powers.

  5. Replacement of variable specifications with attributes rather than classes.

    1. psdparam, nsdparam, positivevariable, negativevariable (which were not documented anyway) are gone.

  6. Changed the syntax of rand and randn to have a cols=1 default attribute.

  7. Added experimental CVX code generation with prob.cvx() (where prob is a problem).

  8. Added experimental support for set membership.

  9. Many bug fixes and internal improvements.