Austin Schuh | 9049e20 | 2022-02-20 17:34:16 -0800 | [diff] [blame] | 1 | OSQP solver documentation |
| 2 | ========================== |
| 3 | **Join our** `forum <https://osqp.discourse.group/>`_ **for any |
| 4 | questions related to the solver!** |
| 5 | |
| 6 | The OSQP (Operator Splitting Quadratic Program) solver is a numerical |
| 7 | optimization package for solving convex quadratic programs in the form |
| 8 | |
| 9 | .. math:: |
| 10 | \begin{array}{ll} |
| 11 | \mbox{minimize} & \frac{1}{2} x^T P x + q^T x \\ |
| 12 | \mbox{subject to} & l \leq A x \leq u |
| 13 | \end{array} |
| 14 | |
| 15 | where :math:`x` is the optimization variable and |
| 16 | :math:`P \in \mathbf{S}^{n}_{+}` a positive semidefinite matrix. |
| 17 | |
| 18 | **Code available on** `GitHub <https://github.com/osqp/osqp>`_. |
| 19 | |
| 20 | .. rubric:: Citing OSQP |
| 21 | |
| 22 | If you are using OSQP for your work, we encourage you to |
| 23 | |
| 24 | * :ref:`Cite the related papers <citing>` |
| 25 | * Put a star on GitHub |github-star| |
| 26 | |
| 27 | |
| 28 | .. |github-star| image:: https://img.shields.io/github/stars/osqp/osqp.svg?style=social&label=Star |
| 29 | :target: https://github.com/osqp/osqp |
| 30 | |
| 31 | |
| 32 | **We are looking forward to hearing your success stories with OSQP!** Please `share them with us <bartolomeo.stellato@gmail.com>`_. |
| 33 | |
| 34 | .. rubric:: Features |
| 35 | |
| 36 | |
| 37 | .. glossary:: |
| 38 | |
| 39 | Efficient |
| 40 | It uses a custom ADMM-based first-order method requiring only a single matrix factorization in the setup phase. All the other operations are extremely cheap. It also implements custom sparse linear algebra routines exploiting structures in the problem data. |
| 41 | |
| 42 | Robust |
| 43 | The algorithm is absolutely division free after the setup and it requires no assumptions on problem data (the problem only needs to be convex). It just works! |
| 44 | |
| 45 | Detects primal / dual infeasible problems |
| 46 | When the problem is primal or dual infeasible, OSQP detects it. It is the first available QP solver based on first-order methods able to do so. |
| 47 | |
| 48 | Embeddable |
| 49 | It has an easy interface to generate customized embeddable C code with no memory manager required. |
| 50 | |
| 51 | Library-free |
| 52 | It requires no external library to run. |
| 53 | |
| 54 | Efficiently warm started |
| 55 | It can be easily warm-started and the matrix factorization can be cached to solve parametrized problems extremely efficiently. |
| 56 | |
| 57 | Interfaces |
| 58 | It can be interfaced to C, C++, Fortran (soon!), Python, Julia and Matlab. |
| 59 | |
| 60 | |
| 61 | |
| 62 | .. rubric:: License |
| 63 | |
| 64 | OSQP is distributed under the `Apache 2.0 License <https://www.apache.org/licenses/LICENSE-2.0>`_ |
| 65 | |
| 66 | |
| 67 | |
| 68 | .. rubric:: Credits |
| 69 | |
| 70 | The following people have been involved in the development of OSQP: |
| 71 | |
| 72 | * `Bartolomeo Stellato <https://stellato.io/>`_ (Princeton University): main development |
| 73 | * `Goran Banjac <https://people.ee.ethz.ch/~gbanjac/>`_ (ETH ZΓΌrich): main development |
| 74 | * `Nicholas Moehle <https://www.nicholasmoehle.com/>`_ (Stanford University): methods, maths, and code generation |
| 75 | * `Paul Goulart <http://users.ox.ac.uk/~engs1373/>`_ (University of Oxford): methods, maths, and Matlab interface |
| 76 | * `Alberto Bemporad <http://cse.lab.imtlucca.it/~bemporad/>`_ (IMT Lucca): methods and maths |
| 77 | * `Stephen Boyd <https://web.stanford.edu/~boyd/>`_ (Stanford University): methods and maths |
| 78 | * `Ian McInerney <mailto:i.mcinerney17@imperial.ac.uk>`_ (Imperial College London): code generation, software development |
| 79 | * `Michel Schubiger <mailto:michel.schubiger@bluewin.ch>`_ (Schindler R&D): GPU implementation |
| 80 | * `John Lygeros <https://control.ee.ethz.ch/people/profile.john-lygeros.html>`_ (ETH Zurich): methods and maths |
| 81 | |
| 82 | Interfaces development |
| 83 | |
| 84 | * `Nick Gould <http://www.numerical.rl.ac.uk/people/nimg/nimg.html>`_ (Rutherford Appleton Laboratory): Fortran and CUTEst interfaces |
| 85 | * `Ed Barnard <eabarnard@gmail.com>`_ (University of Oxford): Rust interface |
| 86 | |
| 87 | |
| 88 | .. rubric:: Bug reports and support |
| 89 | |
| 90 | Please report any issues via the `Github issue tracker <https://github.com/osqp/osqp/issues>`_. All types of issues are welcome including bug reports, documentation typos, feature requests and so on. |
| 91 | |
| 92 | |
| 93 | .. rubric:: Numerical benchmarks |
| 94 | |
| 95 | Numerical benchmarks against other solvers are available `here <https://github.com/osqp/osqp_benchmarks>`_. |
| 96 | |
| 97 | |
| 98 | .. toctree:: |
| 99 | :hidden: |
| 100 | :maxdepth: 2 |
| 101 | :caption: User Documentation |
| 102 | |
| 103 | solver/index |
| 104 | get_started/index |
| 105 | interfaces/index |
| 106 | parsers/index |
| 107 | codegen/index |
| 108 | examples/index |
| 109 | contributing/index |
| 110 | citing/index |