Skip to content

kul-optec/QPALM

 
 

Repository files navigation

Python Wheels tests Matlab Package Test Coverage PyPI - Downloads

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-{linux,windows,macos}.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/download/1.2.3/qpalm-matlab-linux.zip', userpath)
unzip('https://github.com/kul-optec/QPALM/releases/download/1.2.3/qpalm-matlab-windows.zip', userpath)
unzip('https://github.com/kul-optec/QPALM/releases/download/1.2.3/qpalm-matlab-macos.zip', userpath)

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 on x86-64 and AArch64* and for Windows and macOS on x86-64.

(*) Except Matlab.

Benchmarks

Check out the papers below for detailed benchmark tests comparing QPALM with state-of-the-art solvers.

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.

Packages

No packages published

Languages

  • C 36.3%
  • MATLAB 22.5%
  • C++ 16.7%
  • TeX 12.5%
  • CMake 4.1%
  • Python 1.9%
  • Other 6.0%