This cookbook is about model building using convex optimization. It is intended as a modeling guide for the MOSEK optimization package. However, the style is intentionally quite generic without specific MOSEK commands or API descriptions.
There are several excellent books available on this topic, for example the recent books by Ben-Tal and Nemirovski [BenTalN01] and Boyd and Vandenberghe [BV04], which have both been a great source of inspiration for this manual. The purpose of this manual is to collect the material which we consider most relevant to our customers and to present it in a practical self-contained manner; however, we highly recommend the books as a supplement to this manual.
Some textbooks on building models using optimization (or mathematical programming) introduce different concept through practical examples. In this manual we have chosen a different route, where we instead show the different sets and functions that can be modeled using convex optimization, which can subsequently be combined into realistic examples and applications. In other words, we present simple convex building blocks, which can then be combined into more elaborate convex models. With the advent of more expressive and sophisticated tools like conic optimization, we feel that this approach is better suited.
The first three chapters discuss self-dual conic optimization, namely linear optimization (Chap. 2), conic quadratic optimization (Chap. 3) and semidefinite optimization (Chap. 4), which should be read in succession. Chap. 5 discusses quadratic optimization, and has Chap. 3 as a prerequisite. Chapter 6 diverges from the path of convex optimization and discusses mixed integer conic optimization. The remaining chapters delve deeper into more specialized topics. Appendix 10 contains details on notation used in the manual.