/eiquadprog

C++ reimplementation of eiquadprog

Primary LanguageC++GNU Lesser General Public License v3.0LGPL-3.0

eiquadprog

Pipeline status Coverage report pre-commit.ci status

This repo contains different C++ implementations of the algorithm of Goldfarb and Idnani for the solution of a (convex) Quadratic Programming problem by means of a dual method.

The problem is in the form: min 0.5 * x G x + g0 x s.t. CE^T x + ce0 = 0 CI^T x + ci0 >= 0

There are 3 implementations:

  • eiquadprog.hpp: the original C++ implementation
  • eiquadprog-fast.hpp: an improved version employing a wrapper, avoiding dynamic memory allocation
  • eiquadprog-rt.hpp: similar to the above, it employs fixed-size Eigen vectors. This requires the problem dimensions to be known at compile time and is recommended only for small problems.

Please refer to the unit tests for examples of usage.

Authors

Eiquadprog was created at LAAS-CNRS by Gabriele Buondonno, based on parts from TSID by Andrea Del Prete.

This work was based on previous libraries:

  • QuadProg++, Copyright (C) 2007-2016 Luca Di Gaspero, MIT License.
  • uQuadProg, Copyright (C) 2006 - 2017 Angelo Furfaro, LGPL v3.
  • eiquadprog.hpp, Copyright (2011) Benjamin Stephens, GPL v2.
  • quadprog++ Copyright (C) 2014-2015 Gael Guennebaud, LGPL v3.