daqp
DAQP: A dual active-set QP solver
What it is and what it does
DAQP solves convex quadratic programs—optimization problems that minimize a quadratic objective subject to linear and box constraints—using a dual active-set algorithm. It also handles mixed-integer variants where some constraints enforce binary choices. The solver is written in C with no external library dependencies and is designed for embedded and real-time applications; the Python interface wraps this compiled core.
You would use DAQP when you need a lightweight, self-contained QP solver for control, robotics, or optimization tasks where standard solvers may be too heavy or their dependencies problematic. It trades generality for speed and portability—it handles the standard QP form well but is not a general-purpose nonlinear optimizer.
Use it for:
- Model predictive control in embedded systems where a fast, dependency-free QP solver is essential.
- Real-time optimization in robotics or autonomous systems requiring tight computational budgets.
- Mixed-integer quadratic programming for discrete decision problems in scheduling or resource allocation.
- Prototyping optimization algorithms in research without heavy solver dependencies.
- Integration into applications where solver licensing or footprint is a constraint.
Worth the install?
AI-flagged interpretation of the facts on this page — verify before relying
DAQP is a dual active-set solver for convex quadratic programs, including mixed-integer variants, with a C-based implementation that interfaces to Python.
Yes, if you need a lightweight, self-contained quadratic program solver for embedded or real-time use. The MIT license, active maintenance, zero runtime dependencies, and broad platform coverage make it low-risk to adopt. Install only if your problem fits the standard convex QP form; for general nonlinear optimization or exotic constraints, a more general solver may be necessary.
Install
daqp on PyPI
pip
pip install daqpuv
uv add daqppoetry
poetry add daqpInstalling daqp
Before you install
Medium install friction due to compiled wheels across multiple platforms. Active maintenance with recent commits and no runtime dependencies simplify integration.
License in practice
MIT license permits unrestricted use, modification, and distribution in commercial and private projects with minimal attribution requirements.
Quickstart
pip install daqp
import daqp
# Solve: minimize 0.5*x'*H*x + f'*x subject to l <= x <= u, bl <= A*x <= bu
solver = daqp.DAQP()
result = solver.solve(H, f, A, l, u, bl, bu)
Wheels available for multiple Python versions and platforms; verify your Python version and OS match available distributions.
Verify before relying
- Whether Python version support is truly unspecified or implicitly limited by wheel availability.
- Performance characteristics and scalability limits for problem size and structure.
- Availability and completeness of Python API documentation beyond the linked external docs.
- Whether the solver supports warm-starting from previous solutions.
Package facts
| License | MIT (permissive) |
| Python support | not specified |
| Install friction | medium — platform-specific wheel |
| Runtime dependencies | none |
| Maintenance | actively maintained — 87 days since the last release |
| Last repo commit | |
| First released | |
| Downloads | 460,778/month — #6,538 on PyPI (30-day window, as of 2026-08-14) |
| Known vulnerabilities | none known (OSV.dev, checked 2026-08-14) |
Evidence: daqp-0.8.7-cp310-cp310-macosx_10_9_x86_64.whl; daqp-0.8.7-cp310-cp310-macosx_11_0_arm64.whl; daqp-0.8.7-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl; daqp-0.8.7-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl; daqp-0.8.7-cp310-cp310-musllinux_1_2_aarch64.whl; daqp-0.8.7-cp310-cp310-win32.whl; daqp-0.8.7-cp310-cp310-win_amd64.whl; daqp-0.8.7-cp311-cp311-macosx_10_9_x86_64.whl; daqp-0.8.7-cp311-cp311-macosx_11_0_arm64.whl; daqp-0.8.7-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl; daqp-0.8.7-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl; daqp-0.8.7-cp311-cp311-musllinux_1_2_aarch64.whl; daqp-0.8.7-cp311-cp311-win32.whl; daqp-0.8.7-cp311-cp311-win_amd64.whl; daqp-0.8.7-cp312-cp312-macosx_10_13_x86_64.whl; daqp-0.8.7-cp312-cp312-macosx_11_0_arm64.whl; daqp-0.8.7-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl; daqp-0.8.7-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl; daqp-0.8.7-cp312-cp312-musllinux_1_2_aarch64.whl; daqp-0.8.7-cp312-cp312-win32.whl
Tags
More Mathematics packages
NetworkX provides data structures and…
permissive · top 1,000 on PyPI
kiwisolverkiwisolver is a Python binding to a fast C++…
permissive · top 1,000 on PyPI
sympySymPy is a Python library for symbolic…
permissive · top 1,000 on PyPI
contourpyContourPy calculates contours of 2D…
permissive · top 1,000 on PyPI
torchPyTorch provides GPU-accelerated tensor…
permissive · top 1,000 on PyPI
onnxruntimeonnxruntime loads and executes Open Neural…
permissive · top 1,000 on PyPI
qpsolversProvides a unified Python interface to solve…
copyleft · top 5,000 on PyPI
quadprogSolves strictly convex quadratic programming…
copyleft · top 15,000 on PyPI
MosekMOSEK solves large-scale convex and…
unclear · top 15,000 on PyPI
osqpOSQP is a Python wrapper for the Operator…
permissive · top 5,000 on PyPI
qdldlProvides a Python interface to QDLDL, a free…
permissive · top 5,000 on PyPI
proxsuiteProxSuite is a numerically robust quadratic…
permissive · top 15,000 on PyPI
cvxoptcvxopt is a Python library for solving convex…
unclear · top 5,000 on PyPI
gekkoGEKKO is a Python package for optimization and…
permissive · top 15,000 on PyPI
dimoddimod provides classes and interfaces for…
permissive · top 15,000 on PyPI
cvxpyCVXPY is a Python modeling language for…
permissive · top 5,000 on PyPI