# QPSchur

QPSchur: A dual, active-set, Schur-complement method for large-scale and structured convex quadratic programming. We describe an active-set, dual-feasible Schur-complement method for quadratic programming (QP) with positive definite Hessians. The formulation of the QP being solved is general and flexible, and is appropriate for many different application areas. Moreover, the specialized structure of the QP is abstracted away behind a fixed KKT matrix called $K_{o}$ and other problem matrices, which naturally leads to an object-oriented software implementation. Updates to the working set of active inequality constraints are facilitated using a dense Schur complement, which we expect to remain small. Here, the dual Schur complement method requires the projected Hessian to be positive definite for every working set considered by the algorithm. Therefore, this method is not appropriate for all QPs. While the Schur complement approach to linear algebra is very flexible with respect to allowing exploitation of problem structure, it is not as numerically stable as approaches using a QR factorization. However, we show that the use of fixed-precision iterative refinement helps to dramatically improve the numerical stability of this Schur complement algorithm. The use of the object-oriented QP solver implementation is demonstrated on two different application areas with specializations in each area; large-scale model predictive control (MPC) and reduced-space successive quadratic programming (with several different representations for the reduced Hessian). These results demonstrate that the QP solver can exploit application-specific structure in a computationally efficient and fairly robust manner as compared to other QP solver implementations.