Quadratic Optimization with Constraints in Python using CVXOPT
P. Desforges. Towards Data Science. May, 10th 2022.
Abstract: Quadratic optimization is a problem encountered in many fields, from least squares regression to portfolio optimization and passing by model predictive control. In all of these problems, one must optimize the allocation of resources to different assets or agents (which usually corresponds to the linear term) knowing that there can be helpful or unhelpful interactions between these assets or agents (this corresponds to the quadratic term), all the while satisfying some particular constraints (not allocating all the resources to the same agent or asset, making sure the sum of all allocated resources does not surpass the total available resources, etc.). Difficulties may arise when the constraints cannot be formulated linearly. In this article, we will see how to tackle these optimization problems using a very powerful python library called CVXOPT, which relies on LAPACK and BLAS routines (these are highly efficient linear algebra libraries written in Fortran 90).