Awesome
Proximal Augmented Lagrangian method for Quadratic Programs
QPALM is a numerical optimization package that finds stationary points of (possibly nonconvex) quadratic programs, that is
$$ \begin{equation} \begin{aligned} & \underset{x}{\textbf{minimize}} & & \tfrac12 x^\top Q x + q^\top x\ & \textbf{subject to} & & b_\mathrm{min} \le Ax \le b_\mathrm{max} \ \end{aligned} \end{equation} $$
Documentation
The documentation can be found at: https://kul-optec.github.io/QPALM/Doxygen
Examples are included as well: https://kul-optec.github.io/QPALM/Doxygen/examples.html
Installation
Python
The QPALM Python interface is available from PyPI, you can install it using:
python3 -m pip install qpalm
Julia
In the Julia console, press ]
to enter the Pkg REPL and install QPALM using:
add QPALM
Matlab
To install the Matlab interface, download
qpalm-matlab-{glnxa64,win64,maci64,maca64}.zip
from the
releases page, and
extract it into the ~/Documents/MATLAB
folder.
As a one-liner in the Matlab console:
unzip(['https://github.com/kul-optec/QPALM/releases/latest/download/qpalm-matlab-' computer('arch') '.zip'], userpath)
Matlab versions R2021a and later are supported (R2023b and later on ARM64).
C/C++/Fortran
Pre-built C, C++ and Fortran libraries are available from the releases page.
Building QPALM from source
For detailed instructions on how to build QPALM from source, please see https://kul-optec.github.io/QPALM/Doxygen/installation-md.html
Supported platforms
QPALM is written in C, with interfaces for C++, Python, Julia, Matlab and Fortran.
The code itself is portable across all major platforms. Binaries are available
for Linux, Windows and macOS on x86-64 and ARM64<sup>*</sup>.
Benchmarks
Check out the papers below for detailed benchmark tests comparing QPALM with state-of-the-art solvers.
- QPALM: A Newton-type Proximal Augmented Lagrangian Method for Quadratic Programs
- QPALM: A Proximal Augmented Lagrangian Method for Nonconvex Quadratic Programs
Citing
If you use QPALM in your research, please cite the following paper:
@inproceedings{hermans2019qpalm,
author = {Hermans, B. and Themelis, A. and Patrinos, P.},
booktitle = {58th IEEE Conference on Decision and Control},
title = {{QPALM}: {A} {N}ewton-type {P}roximal {A}ugmented {L}agrangian {M}ethod for {Q}uadratic {P}rograms},
year = {2019},
volume = {},
number = {},
pages = {},
doi = {},
issn = {},
month = {Dec.},
}
Previous versions
The original repository by Ben Hermans at https://github.com/Benny44/QPALM_vLADEL will no longer be maintained.
License
QPALM is licensed under LGPL v3.0. Some modules are used in this software:
- LADEL: authored by Ben Hermans and licensed under LGPL-v3.
- LOBPCG: the version of LOBPCG used here was written by Ben Hermans and licensed under the GNU Lesser General Public License v3.0, see LOBPCG/LICENSE.
- LAPACK: authored by The University of Tennessee and The University of Tennessee Research Foundation, The University of California Berkeley, and The University of Colorado Denver, and licensed under BSD-3, see here.