Code Generation for Embedded Convex Optimization
Author | : Jacob Elliot Mattingley |
Publisher | : Stanford University |
Total Pages | : 123 |
Release | : 2011 |
ISBN-10 | : STANFORD:qd834ss0073 |
ISBN-13 | : |
Rating | : 4/5 (73 Downloads) |
Book excerpt: Convex optimization is widely used, in many fields, but is nearly always constrained to problems solved in a few minutes or seconds, and even then, nearly always with a human in the loop. The advent of parser-solvers has made convex optimization simpler and more accessible, and greatly increased the number of people using convex optimization. Most current applications, however, are for the design of systems or analysis of data. It is possible to use convex optimization for real-time or embedded applications, where the optimization solver is a part of a larger system. Here, the optimization algorithm must find solutions much faster than a generic solver, and often has a hard, real-time deadline. Use in embedded applications additionally means that the solver cannot fail, and must be robust even in the presence of relatively poor quality data. For ease of embedding, the solver should be simple, and have minimal dependencies on external libraries. Convex optimization has been successfully applied in such settings in the past. However, they have usually necessitated a custom, hand-written solver. This requires signficant time and expertise, and has been a major factor preventing the adoption of convex optimization in embedded applications. This work describes the implementation and use of a prototype code generator for convex optimization, CVXGEN, that creates high-speed solvers automatically. Using the principles of disciplined convex programming, CVXGEN allows the user to describe an optimization problem in a convenient, high-level language, then receive code for compilation into an extremely fast, robust, embeddable solver.