Disciplined Convex Programming
Chapter in Global Optimization: From Theory to Implementation, L. Liberti and N. Maculan (eds.), in the book series Nonconvex Optimization and its Applications, Springer, 2006, pages 155-210.
Book chapter: disccvxprog.pdf
Talk slides: dcp_talk.pdf
Michael Grant's PhD thesis: mcg_thesis.pdf
CVX, a Matlab toolbox for disciplined convex programming.
Convex programming is a subclass of nonlinear programming (NLP) that unifies and generalizes least squares (LS), linear programming (LP), and convex quadratic programming (QP). It has become quite popular recently for a number of reasons, including its attractive theoretical properties, efficient numerical algorithms, and practical applications. Nevertheless, there remains a significant impediment to the more widespread adoption of convex programming: the high level of expertise required to use it.
In this article, we introduce a new modeling methodology called disciplined convex programming. As the term ‘disciplined’ suggests, the methodology imposes a set of conventions that one must follow when constructing convex programs. The conventions are simple and teachable, taken from basic principles of convex analysis, and inspired by the practices of those who regularly study and apply convex optimization today. The conventions do not limit generality; but they do allow much of the manipulation and transformation required to analyze and solve convex programs to be automated.