This library offers tools and implementations to write, specialize and test QP solvers.
It comes (so far) with an implementation of the Goldfarb-Idnani dual solver described in the seminal paper *D. Goldfarb, A. Idnani, "A numerically stable dual method for solving strictly convex quadratic programs", Mathematical Programming 27 (1983) 1-33 *.
The implementation is done with Eigen.
Compilation is tested on Linux (gcc/clang), macOS and Windows (Visual Studio).
# For head version replace stable with head
curl -1sLf 'https://dl.cloudsmith.io/public/mc-rtc/stable/setup.deb.sh' | sudo -E bash
sudo apt install libjrl-qp-dev
To compile you will need the following tools:
jrl-qp has a single dependency:
- Eigen >= 3.2.8
If you have the following solvers, you can run benchmark comparisons with them :
- eigen-qld
- eigen-quadprog
- eigen-lssol (private repository)
This repository also uses jrl-cmakemodules, and google benchmark as submodules.
Follow the standard CMake build procedure:
git clone --recursive https://github.com/jrl-umi3218/jrl-qp
cd jrl-qp
mkdir build && cd build
cmake [options] ..
make && sudo make install
where the main options are:
-DCMAKE_BUILD_TYPE=Release
Build in Release mode-DCMAKE_INSTALL_PREFIX=some/path/to/install
default is/usr/local
Aside from hand-crafted and randomized tests, this repository can use the Maros and Meszaros QP collection (bottom of this page), that can also be found here with a Matlab version of the problems. To use this collection, simply specify its path in the CMake options.