Link Search Menu Expand Document

Background

DAQP is a dual active-set solver that solves quadratic programs (QPs) in the form

\[\begin{aligned} &\underset{x}{\text{minimize}}&& \frac{1}{2} x^T H x + f^T x\\ &\text{subject to} && l\:\: \leq \:x \:\:\leq u, \\ & && b_l \leq A x \leq b_u, \\ \end{aligned}\]

where \(H\succ 0\). The case when \(H\succeq 0\) is also handled through proximal-point iterations, which in particular means that DAQP also solves linear programs (LPs). Moreover, DAQP can also solve mixed-integer QPs by handling binary constraints of the form \(Ax \in \lbrace b_l, b_u \rbrace\) (for which \(x_i \in \lbrace 0,1 \rbrace\) is a special case).

DAQP has been developed for QPs that arise in real-time Model Predictive Control (MPC) applications, with focus on fully condensed MPC formulations. As such, DAQP efficiently solves small/medium scale, dense, QPs and LPs. If your aim is to solve large-scale sparse problems, consider instead solvers, such as OSQP, that exploit sparsity.

For technical details and numerical results, see the papers

A Dual Active-Set Solver for Embedded Quadratic Programming Using Recursive LDL\(^T\) Updates
D. Arnström, A. Bemporad, D. Axehill
IEEE Transactions on Automatic Control, vol. 67, no. 8, pp. 4362-4369, 2022

A Linear Programming Method Based on Proximal-Point Iterations With Applications to Multi-Parametric Programming
D. Arnström, A. Bemporad, D. Axehill
IEEE Control Systems Letters, vol. 6, pp. 2066-2071, 2022

BnB-DAQP: A Mixed-Integer QP Solver for Embedded Applications
D. Arnström, D. Axehill
Proceedings of the 2023 IFAC World Congress, 2023

Code

Available here.
The solver is written in C and is library free. DAQP can be interfaced to C, Julia, MATLAB, and Python.