Skip to main content

Differentiable QP solver in JAX.

Project description

qpax logo

Differentiable, batched, single-precision quadratic programming in JAX

PyPI version Python versions Build status Documentation arXiv License

FeaturesInstallationDocumentationPaper

This package can be used for solving and differentiating (batched) convex quadratic programs of the following form:

$$ \begin{align*} \underset{x}{\text{minimize}} & \quad \frac{1}{2}x^TQx + q^Tx \ \text{s.t.} & \quad Ax = b,\ & \quad Gx \leq h \end{align*} $$

with decision variables $x \in \mathbb{R}^n$, and data matrices $Q \succeq 0$, $q \in \mathbb{R}^n$, $A \in \mathbb{R}^{m \times n}$, $b \in \mathbb{R}^m$, $G \in \mathbb{R}^{p \times n}$ and $h \in \mathbb{R}^p$.

Features

  • Differentiable: Backpropagate through QPs and obtain smooth informative subgradients, even at active inequality constraints.
  • Single Precision: Runs in f32, allowing for larger batch sizes and higher throughput.
  • Batchable: Solves and differentiates lots of QPs in parallel with shared structure.
  • Infeasibility avoidance: Avoids generating infeasible problems by solving an always-feasible "elastic" QP and providing informative gradients to encourage feasibility.

Installation

To install directly from github using pip:

  • CPU: pip install qpax
  • NVIDIA GPU (cuda 12): pip install "qpax[cuda12]"
  • NVIDIA GPU (cuda 13): pip install "qpax[cuda13]"

For further details, check our documentation.

Examples

Browse the quickstart examples in the documentation, and explore end-to-end applications in the examples repository.

If you are using qpax in an interesting application and would like it featured, please open an issue or pull request in the examples repository.

License

This project is licensed under the Apache License 2.0 — see the LICENSE file for details.

Citing

If you use this solver, please cite our work(s):

@misc{arrizabalaga2026differentiableinteriorpointmethodsingle,
      title={A Differentiable Interior-Point Method in Single Precision}, 
      author={Jon Arrizabalaga and Kevin Tracy and Zachary Manchester},
      year={2026},
      eprint={2605.17913},
      archivePrefix={arXiv},
      primaryClass={math.OC},
      url={https://arxiv.org/abs/2605.17913}, 
}
@misc{tracy2024differentiability,
    title={On the Differentiability of the Primal-Dual Interior-Point Method},
    author={Kevin Tracy and Zachary Manchester},
    year={2024},
    eprint={2406.11749},
    archivePrefix={arXiv},
    primaryClass={math.OC}
}

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

qpax-0.1.2.tar.gz (33.2 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

qpax-0.1.2-py3-none-any.whl (36.1 kB view details)

Uploaded Python 3

File details

Details for the file qpax-0.1.2.tar.gz.

File metadata

  • Download URL: qpax-0.1.2.tar.gz
  • Upload date:
  • Size: 33.2 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.9.25

File hashes

Hashes for qpax-0.1.2.tar.gz
Algorithm Hash digest
SHA256 7b0bffdee282df9561395afdbd1a19dcbef2b42bc9a3c36ef8026b72a2826c9d
MD5 d76f145297abf448290d5551ac0ed85d
BLAKE2b-256 987f06e03650c7e27912aa9bf3dc169706976accc2914d52e6ba458113777f18

See more details on using hashes here.

File details

Details for the file qpax-0.1.2-py3-none-any.whl.

File metadata

  • Download URL: qpax-0.1.2-py3-none-any.whl
  • Upload date:
  • Size: 36.1 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.9.25

File hashes

Hashes for qpax-0.1.2-py3-none-any.whl
Algorithm Hash digest
SHA256 7323409eaf3b87d2cdece97eb3f9fc18b5895064c5b6c4a9c377dbc59b109f8f
MD5 3802505ab36b060dbf6eee6756ce36be
BLAKE2b-256 3998f0f95e606aaf5c9b3f94694615921959cc1c54d22b50d473d3bb37772ec7

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page