blob: ce9bb010ba607faec7ee3174044ce1c35e23f9ed [file] [log] [blame]
Austin Schuh9049e202022-02-20 17:34:16 -08001OSQP solver documentation
2==========================
3**Join our** `forum <https://osqp.discourse.group/>`_ **for any
4questions related to the solver!**
5
6The OSQP (Operator Splitting Quadratic Program) solver is a numerical
7optimization 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
15where :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
22If 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
64OSQP is distributed under the `Apache 2.0 License <https://www.apache.org/licenses/LICENSE-2.0>`_
65
66
67
68.. rubric:: Credits
69
70The 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
82Interfaces 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
90Please 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
95Numerical 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