You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: README.md
+25-5Lines changed: 25 additions & 5 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -33,17 +33,21 @@ We are ready to integrate **ProxSuite** within other optimization ecosystems.
33
33
34
34
- dense, sparse, and matrix-free matrix factorization backends,
35
35
- advanced warm-starting options (e.g., equality-constrained initial guess, warm-start or cold-start options from previous results),
36
-
- dedicated features for handling more efficiently box constraints, linear programs, QP with diagonal Hessian, or with far more constraints than primal variables.
36
+
37
+
38
+
with dedicated features for
39
+
- handling more efficiently box constraints, linear programs, QP with diagonal Hessian, or with far more constraints than primal variables,
40
+
- solving nonconvex QPs,
41
+
- solving batches of QPs in parallel,
42
+
- solving the closest feasible QP if the QP appears to be primal infeasible,
43
+
- differentiating feasible and infeasible QPs.
37
44
38
45
**Proxsuite** is flexible:
39
46
40
47
- header only,
41
48
- C++ 14/17/20 compliant,
42
49
- Python and Julia bindings for easy code prototyping without sacrificing performance.
43
50
44
-
**Proxsuite** has a dedicated feature for solving batches of QPs.
45
-
**Proxsuite** has a dedicated feature for solving nonconvex QPs.
46
-
**Proxsuite** has a dedicated feature for solving the closest feasible QPs if they appear to be primal infeasible.
47
51
**Proxsuite** is extensible.
48
52
**Proxsuite** is reliable and extensively tested, showing the best performances on the hardest problems of the literature.
49
53
**Proxsuite** is supported and tested on Windows, Mac OS X, Unix, and Linux.
@@ -123,7 +127,6 @@ where $x \in \mathbb{R}^n$ is the optimization variable. The objective function
123
127
### Citing **ProxQP**
124
128
125
129
If you are using **ProxQP** for your work, we encourage you to [cite the related paper](https://hal.inria.fr/hal-03683733/file/Yet_another_QP_solver_for_robotics_and_beyond.pdf/).
126
-
127
130
### Numerical benchmarks
128
131
129
132
The numerical benchmarks of **ProxQP** against other commercial and open-source solvers are available [here](https://github.com/Simple-Robotics/proxqp_benchmark).
@@ -145,7 +148,24 @@ For hard problems from the [Maros Meszaros testset](http://www.cuter.rl.ac.uk/Pr
145
148
The chart above reports the performance profiles of different solvers. It is classic for benchmarking solvers. Performance profiles correspond to the fraction of problems solved (on the y-axis) as a function of certain runtime (on the x-axis, measured in terms of a multiple of the runtime of the fastest solver for that problem). So the higher, the better. You can see that **ProxQP** solves the quickest over 60% of the problems (i.e., for $\tau=1$) and that for solving about 90% of the problems, it is at most 2 times slower than the fastest solvers solving these problems (i.e., for $\tau\approx2$).
146
149
147
150
*Note: All these results have been obtained with a 11th Gen Intel(R) Core(TM) i7-11850H @ 2.50GHz CPU.*
151
+
## **QPLayer**
152
+
153
+
**QPLayer** enables to use a QP as a layer within standard learning architectures. More precisely, QPLayer differentiates over $\theta$ the primal and dual solutions of QP of the form
where $x \in \mathbb{R}^n$ is the optimization variable. The objective function is defined by a positive semidefinite matrix $H(\theta) \in \mathcal{S}^n_+$ and a vector $g(\theta) \in \mathbb{R}^n$. The linear constraints are defined by the equality-contraint matrix $A(\theta) \in \mathbb{R}^{n_\text{eq} \times n}$ and the inequality-constraint matrix $C(\theta) \in \mathbb{R}^{n_\text{in} \times n}$ and the vectors $b \in \mathbb{R}^{n_\text{eq}}$, $l(\theta) \in \mathbb{R}^{n_\text{in}}$ and $u(\theta) \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}$.
164
+
165
+
**QPLayer** is able to learn more structured architectures. For example, $\theta$ can consists only in learning some elements of $A$ while letting $b$ fixed (see e.g., the [example](https://github.com/Simple-Robotics/proxsuite/blob/main/examples/python/qplayer_sudoku.py) about how to include QPLayer into a learning pipeline). **QPLayer** can also differentiates over LPs. **QPLayer** allows for parallelized calculus over CPUs, and is interfaced with **PyTorch**.
166
+
### Citing **QPLayer**
148
167
168
+
If you are using **QPLayer** for your work, we encourage you to [cite the related paper](https://inria.hal.science/hal-04133055/file/QPLayer_Preprint.pdf).
149
169
## Installation procedure
150
170
151
171
Please follow the installation procedure [here](https://github.com/Simple-Robotics/proxsuite/blob/main/doc/5-installation.md).
0 commit comments