Liberti, Leo et al., Global optimization. From theory to implementation. New York, NY: Springer (ISBN 0-387-28260-2/hbk). Nonconvex Optimization and Its Applications 84, 155-210 (2006).
From the text: We introduce a new methodology for convex optimization called disciplined convex programming. Disciplined convex programming simplifies the specification, analysis, and solution of convex programs by imposing certain restrictions on their construction. These restrictions are simple and teachable; they are inspired by the basic principles of convex analysis; and they formalize the intuitive practices of many who use convex optimization today. Despite the restrictions, generality is preserved through the expandability of the atom library.
We enumerate a number of the benefits that disciplined convex programming obtains for practical convex optimization. Verifying that a model is a valid disciplined convex program (DCP) is a straightforward and reliable process. Nondifferentiable functions may be freely employed without fear of sacrificing numerical performance. And while we do not explore in detail how DCPs are solved, we do discuss how the implementation of functions and sets enables a variety of numerical methods to be used—methods whose performance and reliability are well known. We refer the reader to [M. C. Grant, "Disciplined convex programming", Ph.D. thesis, Stanford Univ. (2005)] for more development on this topic.
An overarching goal of the development of disciplined convex programming is unification. There are no less than seven standard forms for convex programming being studied and used today: LS, LP, QP, SDP, SOCP, GP, and smooth CP. Deciding which form best suits a given application is not always obvious; and for many problems, a custom solver is the only appropriate choice. Unification allows modelers to freely consider all of these problem types simultaneously—because they need not think of them as separate types at all.
The principles of disciplined convex programming are implemented in the cvx modeling framework. The current version employs a simple barrier solver, but we intend to develop a more powerful solver in the future, and we hope to convince other developers to provide a link to cvx for their own solvers. We will be disseminating cvx freely with BSD-like licensing, and it is our hope that it will be used widely in coursework, research, and applications.
The reader is invited to visit the Web site http://www.stanford.edu/ boyd/cvx to monitor the development of cvx, to download the latest versions, and to read the accompanying documentation.