Skip to content
Stefan Vigerske edited this page Feb 23, 2020 · 2 revisions



qpOASES is an open-source C++ implementation of the recently proposed online active set strategy, which was inspired by important observations from the field of parametric quadratic programming (QP). It has several theoretical features that make it particularly suited for model predictive control (MPC) applications. Further numerical modifications have made qpOASES a reliable QP solver, even when tackling semi-definite, ill-posed or degenerated QP problems. Moreover, several interfaces to third-party software like Matlab or Simulink are provided that make qpOASES easy-to-use even for users without knowledge of C/C++.

qpOASES can solve quadratic programming (QP) problems of any form equivalent to

min   1/2*x'Hx + x'g
s.t.  lb  <=  x <= ub
      lbA <= Ax <= ubA

where H denotes a (typically positive semi-definite) symmetric Hessian matrix and all other quantities match common notation. qpOASES also does a good job in detecting infeasible or unbounded QP problem formulations.

qpOASES has been initially released and developed at KU Leuven within the Optimization in Engineering Center (OPTEC). Current development is mainly supported by researchers at the Interdisciplinary Center for Scientific Computing at Heidelberg University and at ABB Corporate Research.

Note that there also exists a Plain C Translation of qpOASES for use cases where using C++ code is highly undesirable or even impossible.

License and Download

qpOASES is open-source software, distributed under the GNU Lesser General Public License (LGPL), version 2.1.

qpOASES is part of the COIN-OR Initiative and its code base is hosted in an SVN repository with public read access. You can either obtain the source code by using an SVN client or by downloading a zipped archive. More details are given on the Download page.

Installation and Dependencies

qpOASES is self-contained! Except for a couple of standard C libraries, no further external software packages are required. Optionally, the LAPACK and BLAS libraries can be linked for performing internal linear algebra operations.

qpOASES has been successfully installed on PCs running Linux, Windows or Mac OS X, and can also run on embedded computing hardware. Detailled information on how to install qpOASES can be found on the Installation page.

Documentation and Support

qpOASES has a fully documented source code (see its doxygen-generated source code documentation) and provides a concise User's Manual. New users are recommended to get started by following the tutorial examples described in the manual.

In case you encounter any kind of troubles when installing or running qpOASES, please follow these steps:

  1. check whether you can find any hint in the User's Manual;
  2. browse the User Support knowledge base to see whether other users have encountered your problem before;
  3. browse All Issues reported by other users to see whether you find a solution to your problem.

If none of the above helps you to overcome your troubles, you are most welcome to ask for support. We strongly encourage you to send your bug report, question, remark, features request or any other kind of feedback by creating a new ticket. When doing so, please follow our simple Feedback Guidelines in order to receive our help as soon as possible.

Interfaces and Applications

qpOASES comes along with a number of interfaces to third-party software, namely Matlab, Simulink, octave, Scilab, and Python. Please consult Chapter 6 of the User's Manual to get more information.

Moreover, qpOASES can be used as QP solver in a number of third-party software, including the ACADO Toolkit, MUSCOD-II, YALMIP, CasADi.

Finally, it is worth mentioning that qpOASES has been successfully used in numerous real-world applications and industrial projects. Some of them can be found on the Success Stories page. If you also want to report your successful application of qpOASES, please send an e-mail to [[|]] or add to the Wiki yourself.

Citing qpOASES

If you use qpOASES within your scientific work, we strongly encourage you to cite at least one of the following publications.

  • Reference to the software:
author = {H.J. Ferreau and C. Kirches and A. Potschka and H.G. Bock and M. Diehl},
title = {{qpOASES}: A parametric active-set algorithm for quadratic programming},
journal = {Mathematical Programming Computation},
year = {2014},
volume = {6},
number = {4},
pages = {327--363},
keywords = {qpOASES, parametric quadratic programming, active set method,
            model predictive control}
  • Reference to the online active set strategy:
author = {H.J. Ferreau and H.G. Bock and M. Diehl},
title = {An online active set strategy to overcome the limitations of explicit MPC},
journal = {International Journal of Robust and Nonlinear Control},
year = {2008},
volume = {18},
number = {8},
pages = {816--830},
keywords = {model predictive control, parametric quadratic programming,
            online active set strategy}
  • Reference to the webpage:
author = {H.J. Ferreau and A. Potschka and C. Kirches},
title = {{qpOASES} webpage},
howpublished = {},
year = {2007--2017},
keywords = {qpOASES, model predictive control, parametric quadratic programming,
            online active set strategy}

Further qpOASES-related publications can be found on the Publications page.

Contact and Mailing List

If you want to receive latest information on qpOASES or participate in public discussions on future developments of the code, you should subscribe to the qpOASES mailing list. Note that unlike mailing lists of other projects hosted at COIN-OR, this mailing list is not intended for reporting installation issues, bugs or minor feature requests. Instead, please use Trac to create a new ticket for reporting these kind of issues.

In case you do not want to disclose your feedback to the public, you may to get in touch with the qpOASES developers by sending an e-mail to [[|]].

See also Download, Installation, User's Manual, Source Code Documentation, User Support, Feedback Guidelines, Success Stories, Publications, Authors and Contributors, Plain C Translation