Proximal Augmented Lagrangian method for Quadratic Programs
Project description
Proximal Augmented Lagrangian method for Quadratic Programs
QPALM is a numerical optimization package that finds stationary points of (possibly nonconvex) quadratic programs, that is
minimize ½ xᵀQx + qᵀx
subject to l ≤ Ax ≤ u
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.1.2/qpalm-matlab-linux.zip', userpath)
unzip('https://github.com/kul-optec/QPALM/releases/download/1.1.2/qpalm-matlab-windows.zip', userpath)
unzip('https://github.com/kul-optec/QPALM/releases/download/1.1.2/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.
- 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.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distributions
Hashes for qpalm-1.1.2-cp310-cp310-win_amd64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 3bfb785a23041711855864f76964265702f404c2fdd7a9147ef5d6234cd421d9 |
|
MD5 | cce7517b9e1db0695ead0739a17155ca |
|
BLAKE2b-256 | de4c8cf04d34e6a78b341c136bbeb3c804e7cd90e5cd907fe3e3c69b501226d0 |
Hashes for qpalm-1.1.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_27_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | d5e8c303c012e30b24a005278f2627e936c733a6056da01897d9d5421c903a46 |
|
MD5 | 32912bf6cc4f85795bbaa90dfeeb4e92 |
|
BLAKE2b-256 | 9c9e0aecb81652719afa69bf852bdbe8c5ef9212176d9cb45e892120cc5949bd |
Hashes for qpalm-1.1.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.manylinux_2_27_aarch64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | b684641acd330413ba1a54b46ece4d130aa91762f9d64cb4a29922641bfa43d1 |
|
MD5 | ada3bf8a93606d35f11a745cf361c6ec |
|
BLAKE2b-256 | e660119740c25de04240d43cdf9b0b98a5d8a8ad6ab8bc9795b9be7cbe0ac20c |
Hashes for qpalm-1.1.2-cp310-cp310-macosx_10_15_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 12afea975955ccf278935491404fd02c9d75a5b1bc090a3a70426df925831ca9 |
|
MD5 | 8957a5fe8253a586cc85303d73b8d294 |
|
BLAKE2b-256 | ad6a04fca5effb1687948aa7e3d8e2278035c054efcdbe6bd0a8ff3b0066c7f3 |
Hashes for qpalm-1.1.2-cp39-cp39-win_amd64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 53c5f66cbd83f696c0394108a17ac95ac99d005b759b2708a443541653e1c277 |
|
MD5 | b1f9bb9051038701f69dc8581ded2b06 |
|
BLAKE2b-256 | 18f8aea73c3a066ecc356a57d94ea6d5b6178810d4b1a39ae3627cc729347f93 |
Hashes for qpalm-1.1.2-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_27_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 0f16d5bcfc0210c7843c4957b2d89e6f2fa3e7292b921bb6395cdeb4f45fc92e |
|
MD5 | a35ca286ed3a43e56505d58c50249818 |
|
BLAKE2b-256 | 13c8f7beb2e950858dabdae83768415526962de3249441a0dc8fd35cf8edf7a1 |
Hashes for qpalm-1.1.2-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.manylinux_2_27_aarch64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 2491fdee52bb55bca3bfba46f4dca32c5da017aeb6ae209796470992a3150882 |
|
MD5 | 2e75aba852a07c02f7ba736108261b4e |
|
BLAKE2b-256 | 1337d3acfb350b775154944076de8c234cb9fc0791640486bcb2274b7870f9b7 |
Hashes for qpalm-1.1.2-cp39-cp39-macosx_10_15_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | f72a85da176e69317c9da4d7067414be445cc1bde47904c1b8d71049d0b944cf |
|
MD5 | d5f3917f646e89683806305825dbc5c2 |
|
BLAKE2b-256 | 7d563171454a2a839bc6310c3ef2a138ee8580e6966fec5dd6f0b83d8e0bd896 |
Hashes for qpalm-1.1.2-cp38-cp38-win_amd64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 735f6cb903b4b9938dea7271fef1d817a14386fa23d074fedd91ebe96f57a2e7 |
|
MD5 | 0c7913c70335e4eb01b221df952f3543 |
|
BLAKE2b-256 | f392b7206b2486bdedfb29e5c3b36ab72d4b7f70aefb14d92e0f9fdf078d4981 |
Hashes for qpalm-1.1.2-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_27_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 65e2f80cbe4cc39564b486a1956d85accb2215de66e66dfcc79218f92692175b |
|
MD5 | 3c771b50cefa41d22ef53740a92c7fd9 |
|
BLAKE2b-256 | 3f4be634b4e6704a83c61af4140c0245efd55ea87630794399c6ebc92265d20a |
Hashes for qpalm-1.1.2-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.manylinux_2_27_aarch64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 5fc3641fb9765ce34de7d080cfcd23f228b02324ec21c59d3d72a2e4ce094175 |
|
MD5 | 88d8005eb909da4433d9a004d0b76aeb |
|
BLAKE2b-256 | 77c5e18948f09de6c1bb426780886f22772943d28628fa40b97c5bf656d4331c |
Hashes for qpalm-1.1.2-cp38-cp38-macosx_10_14_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | f83eeea4b640711be68d01b3695b98373201d069df428e393f40c866dbb9233c |
|
MD5 | e8e9cfe1a36f75b7e18954c5cbc88b28 |
|
BLAKE2b-256 | 2fab530b681140616aee70c7ecbfb75225ec9ea34345f122b33a785d3418a827 |