Simple-Robotics/proxsuite
The Advanced Proximal Optimization Toolbox
What it solves
ProxSuite provides a collection of numerically robust and efficient numerical solvers for optimization problems, specifically Linear Programs (LPs) and Quadratic Programs (QPs). It addresses the need for scalable optimizers that can handle dense, sparse, or matrix-free problems, which is critical for high-performance applications like robotics where precision and speed are essential.
How it works
The library is built on revisited primal-dual proximal algorithms. It is implemented as a C++ template library that is cache-friendly and supports vectorization. To ensure versatility, it offers a unified API with specialized backends for different matrix factorizations and advanced warm-starting options. It also includes a specific component called QPLayer, which allows a Quadratic Program to be used as a differentiable layer within machine learning architectures (interfaced with PyTorch), enabling the optimization of parameters that define the QP itself.
Who it’s for
It is primarily designed for robotics researchers and engineers, but it is applicable to any field requiring high-performance numerical optimization. It is also useful for machine learning practitioners who want to integrate structured optimization constraints into their learning pipelines via QPLayer.
Highlights
- High Performance: C++ template library with cache-friendly design and vectorization support.
- Versatile Solvers: Handles dense, sparse, and matrix-free problems, as well as nonconvex QPs and batches of QPs in parallel.
- Differentiable Optimization: Includes QPLayer for integrating QPs and LPs as layers in PyTorch learning architectures.
- Broad Compatibility: Header-only C++ library (C++ 14/17/20) with Python and Julia bindings.
Related
- Project
- Project
- Project
- Project
- Project