Skip to main content

Quadratic Programming Solver for Robotics and beyond.

Project description

Proxsuite Logo

License CI - Linux/OSX/Windows - Conda

ProxSuite is a collection of open-source, numerically robuste, precise and efficient numerical solvers (e.g., LPs, QPs, etc.) rooted on revisited primal-dual proximal algorithms. While the first targeted application is Robotics, ProxSuite can be used in other contextes without any limits. Through ProxSuite, we aim at offering to the community scalable optimizers which can deal with dense, sparse or matrix-free problems.

ProxSuite is actively developped and supported by the Willow and Sierra research groups, joint research teams between Inria, École Normale Supérieure de Paris and Centre National de la Recherche Scientifique.

If you want to directly dive into ProxSuite, only one single line is sufficient via pip (currently available on Linux and MacOS):

pip install proxsuite

ProxQP

The ProxQP solver is a numerical optimization package for solving problems of the form:

$$ \begin{align} \min_{x} & ~\frac{1}{2}x^{T}Hx+g^{T}x \ \text{s.t.} & ~A x = b \ & ~l \leq C x \leq u \end{align} $$

where $x \in \mathbb{R}^n$ is the optimization variable. The objective function is defined by a positive semidefinite matrix $H \in \mathcal{S}^n_+$ and a vector $g \in \mathbb{R}^n$. The linear constraints are defined by the equality-contraint matrix $A \in \mathbb{R}^{n_\text{eq} \times n}$ and the inequality-constraint matrix $C \in \mathbb{R}^{n_\text{in} \times n}$ and the vectors $b \in \mathbb{R}^{n_\text{eq}}$, $l \in \mathbb{R}^{n_\text{in}}$ and $u \in \mathbb{R}^{n_\text{in}}$ so that $b_i \in \mathbb{R},~ \forall i = 1,...,n_\text{eq}$ and $l_i \in \mathbb{R} \cup { -\infty }$ and $u_i \in \mathbb{R} \cup { +\infty }, ~\forall i = 1,...,n_\text{in}$.

Citing ProxQP

If you are using ProxQP for your work, we encourage you to cite the related paper.

Numerical benchmarks

The numerical benchmarks of ProxQP against other commercial and open-source solvers are available here.

Installation

Building from source

Required install dependencies

The following dependencies are required at compile time:

  • CMake
  • Eigen >= 3.0.5
  • C++ >= 17

Installation instructions

  1. Clone this repository with:
git clone https://github.com/Simple-Robotics/proxsuite.git --recursive
  1. Create a build tree using CMake, build and install:
mkdir build && cd build
cmake .. -DCMAKE_BUILD_TYPE=Release -DBUILD_TESTING=OFF
make
make install
  1. Build the Python interface

You just need to ensure that Python3 is indeed present on your system and activate the cmake option BUILD_PYTHON_INTERFACE=ON by replacing:

mkdir build && cd build
cmake .. -DCMAKE_BUILD_TYPE=Release -DBUILD_TESTING=OFF -DBUILD_PYTHON_INTERFACE=ON
make
make install
  1. Generate the doc

To build the documentation, you need installing Doxygen. Once it is done, it then is as simple as:

make doc
open doc/doxygen_html/index.html

Disabling vectorization

We highly encourage you to enable the vectorization of the underlying linear algebra for the best performances. They are active by default in ProxSuite. Yet, some CPU architectures may not support such operations. You just need to deactivate the cmake option BUILD_WITH_VECTORIZATION_SUPPORT=OFF, like:

mkdir build && cd build
cmake .. -DCMAKE_BUILD_TYPE=Release -DBUILD_TESTING=OFF -DBUILD_WITH_VECTORIZATION_SUPPORT=OFF
make
make install

Testing

To test the whole framework, you need installing first Matio (for reading .mat files in C++). You can then activate the build of the unit tests by activating the cmake option BUILD_TESTING=ON.

Project details


Download files

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

Source Distributions

No source distribution files available for this release.See tutorial on generating distribution archives.

Built Distributions

proxsuite-0.0.0-0-cp310-cp310-manylinux_2_31_x86_64.whl (1.6 MB view hashes)

Uploaded CPython 3.10 manylinux: glibc 2.31+ x86-64

proxsuite-0.0.0-0-cp310-cp310-macosx_11_0_x86_64.whl (1.9 MB view hashes)

Uploaded CPython 3.10 macOS 11.0+ x86-64

proxsuite-0.0.0-0-cp39-cp39-manylinux_2_31_x86_64.whl (1.6 MB view hashes)

Uploaded CPython 3.9 manylinux: glibc 2.31+ x86-64

proxsuite-0.0.0-0-cp39-cp39-macosx_11_0_x86_64.whl (1.9 MB view hashes)

Uploaded CPython 3.9 macOS 11.0+ x86-64

proxsuite-0.0.0-0-cp38-cp38-manylinux_2_31_x86_64.whl (1.6 MB view hashes)

Uploaded CPython 3.8 manylinux: glibc 2.31+ x86-64

proxsuite-0.0.0-0-cp38-cp38-macosx_10_16_x86_64.whl (1.9 MB view hashes)

Uploaded CPython 3.8 macOS 10.16+ x86-64

Supported by

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