CVXMOD – Convex optimization software in Python

Alert!

CVXMOD is discontinued!

Unfortunately CVXMOD has not been developed since 2008. It is incomplete, somewhat buggy and not supported. Please instead try the replacement package CVXPY. Or, try CVXOPT if you are prepared to work at a lower level, CVX if you are ok with Matlab, or CVXGEN if you want small (but super high speed) QP solvers.

Introduction

CVXMOD is a Python-based tool for expressing and solving convex optimization problems. It uses CVXOPT as its solver. It is developed by Jacob Mattingley, as PhD work under Stephen Boyd at Stanford University.

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.

CVXMOD has a similar design philosophy to CVX, a convex optimization modeling language for Matlab®, and uses the principles of disciplined convex programming, as developed by Michael Grant, Stephen Boyd and Yinyu Ye.

Current version: v0.4.6, released 2008-10-21 (see changes). Still in alpha, so interface changes are possible.

Functionality

CVXMOD currently ‘supports’, to varying degrees in this alpha release:

  • Symbolic convex analysis

  • Symbolically defined parameters

  • Minimization, maximization and feasibility problem objectives

  • Convex composition rules, including with some sign analysis

  • LP representable atoms such as sum, min, max, abs, norm1, norminf, pos, neg

  • Nonlinear atoms such as norm, exp, log, entropy, kl (Kullback-Leibler divergence), sqrt, square, huber (Huber penalty function), power, inv

  • Quadratic forms (quadform)

  • Sets such as norm2ball, norm1ball, norminfball, probsimp

  • User-definable atoms and sets (currently without documentation)

  • SDPs

  • Sparsity (partially)

License

Copyright © 2006-2008 Jacob Mattingley.

CVXMOD is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 3 of the License, or (at your option) any later version.

CVXMOD is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.