Quadratic Programming Solver for Robotics and beyond.
Project description
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
- Clone this repository with:
git clone https://github.com/Simple-Robotics/proxsuite.git --recursive
- Create a build tree using CMake, build and install:
mkdir build && cd build
cmake .. -DCMAKE_BUILD_TYPE=Release -DBUILD_TESTING=OFF
make
make install
- 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
- 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
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distributions
Built Distributions
Hashes for proxsuite-0.0.0-0-cp310-cp310-manylinux_2_31_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | cdbbccf3140a5d3034e82c684ce5e9721064b3f3b90b2ffab02fa65eddd19a47 |
|
MD5 | 477a7da55da1f3cdffe60a3363d3c628 |
|
BLAKE2b-256 | 760aa0e49655df36dba0465e9db8a3a29ee332e0e6e4a957ff7471b14fd3a90c |
Hashes for proxsuite-0.0.0-0-cp310-cp310-macosx_11_0_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 040fb53d798a8a56b2dd7012f7c0278f285e5f0382ae89f36ae87e00d0d44b74 |
|
MD5 | 3704e93e5b131955b900140f80143bf9 |
|
BLAKE2b-256 | 02bd09de0c2d72064db091bfda7ebeccdfe79c86dd19acbf53e019f9f5fdcf80 |
Hashes for proxsuite-0.0.0-0-cp39-cp39-manylinux_2_31_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 4ac94a9c4dadff67631030976b78c01afd866a73464c920177e00099ab453b4e |
|
MD5 | 57f0e23ea03ac774ce1150b201325d98 |
|
BLAKE2b-256 | 846dcb73b2bc6f6ec82ad1b373fb90b620a3d620e4f17fe2715e2d426e71348c |
Hashes for proxsuite-0.0.0-0-cp39-cp39-macosx_11_0_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 9a1f1022815671a33a0cde00113d0e9e79015b87fbdc7fe72e90b1d17cd3dd37 |
|
MD5 | c2e4107ea35d791517740430966f0854 |
|
BLAKE2b-256 | 6257775808a8ec269ce7f522d69ff52b13034fca05cc2bb5d69915a896936dd5 |
Hashes for proxsuite-0.0.0-0-cp38-cp38-manylinux_2_31_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 582d5daea812facf2dae0306f12f3837b6e458ac6c06e439367609d8f90f8d7e |
|
MD5 | d852518f6666f2d57db9a73b576d0b7d |
|
BLAKE2b-256 | c87c9334ec5c029e8fb7ce691f64fd7ee52e95fc444407a70ab6c4be0324439a |
Hashes for proxsuite-0.0.0-0-cp38-cp38-macosx_10_16_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | e600e8c3ac2215dc56d0f1537d2f9d001357ab833cc586e185ee8dc83b84f60c |
|
MD5 | f5feb7755c379c9fcd46024e08cc2977 |
|
BLAKE2b-256 | 7219c66c14d206203e6c98075b6a0a4e267c618cbc519a597996f2717c18f330 |