Software for Disciplined Convex Programming

CVX: a Matlab-based convex modeling framework

CVX is a popular modeling framework for disciplined convex programming that CVX turns Matlab into a modeling language, allowing constraints and objectives to be specified using standard Matlab expression syntax. CVX is a powerful tool for the rapid prototyping of models and algorithms incorporating convex optimization.
 
CVX is free for use in academic and commercial applications, and ships with two free solvers, SDPT3 and SeDuMi. CVX is also compatible with commercial solvers Gurobi and Mosek.
 
As of April 21, 2024, a CVX Professional license is no longer required for use in commercial applications. See this announcement for more details.

TFOCS: Templates for First-Order Conic Solvers

TFOCS (pronounced tee-fox) provides a set of Matlab templates, or building blocks, that can be used to construct efficient, customized solvers for a variety of convex models, including in particular those employed in sparse recovery applications.
 
TFOCS can scale to larger model sizes than CVX. However, it is not a modeling framework—it requires all models to be manually converted to one of its standard forms. Therefore, it requires more expertise to use than CVX.
 
TFOCS was conceived and written by Stephen Becker, Emmanuel J. Candès and Michael Grant, and is jointly owned by CVX Research and Caltech. It has been made freely available for both academic and commercial use under a BSD 3-Clause license.