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.zip
or
qpalm-matlab-windows.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.1/qpalm-matlab-linux.zip', userpath)
unzip('https://github.com/kul-optec/QPALM/releases/download/1.1.1/qpalm-matlab-windows.zip', userpath)
C/C++/Fortran
Pre-built C, C++ and Fortran libraries for Linux 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 popular platforms. Binaries are available
for Linux on x86-64 and AArch64* and for Windows 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.1-cp310-cp310-win_amd64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 66de28f2e8d6602f21167d1eb5d125e46831d8e11a5b01c551cab461f66ee311 |
|
MD5 | d9c6dc6eed7a4443d74a6c1c9bd2a723 |
|
BLAKE2b-256 | a111ca5f409461f3b13692226f85a4e13c4a9c9bc3f2258c11fde8eb7cbe6f72 |
Hashes for qpalm-1.1.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_27_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | e8d5ee933ecff6efd03837efb9d4c2a1a9bddc9e2b90c9f20f21145254a983cc |
|
MD5 | 003b048723ddb923cb9ff1909fa76a41 |
|
BLAKE2b-256 | 15a733e63a01d8389a860b5802c5fb68d92e08cb1831da7765c9f06aaceceb9d |
Hashes for qpalm-1.1.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.manylinux_2_27_aarch64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 4b2e104a43b808f8c0e32eaa8e3951f5431709ef3ed5d2f8f663f939b86f13f1 |
|
MD5 | 1adf666928e0dcc71e14882d708f5e8b |
|
BLAKE2b-256 | 422678d0611ef9c1556efabe5f95ac80326736e14df751b0de080bad48e0630e |
Hashes for qpalm-1.1.1-cp310-cp310-macosx_10_15_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 9ecff44d0600afc98b88d596fc0d6a836823b49cf6589fd6a72e532c6e742a31 |
|
MD5 | 8548f18964987281adbfa3d2fb733001 |
|
BLAKE2b-256 | e329e5c4681c2235e7a4d3dd059fb744a627e98538bff56a44a636908caebae5 |
Hashes for qpalm-1.1.1-cp39-cp39-win_amd64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 226a1cd2b1c9e925f8807f3b6097add6ca329cccf49899985b582b52a9c2d3ec |
|
MD5 | adc0c4d7bc762f583982c3d584e16c5e |
|
BLAKE2b-256 | 71e2a79f8f0d4ac477a278c926d7871bdaf6d9525f153284cd5d2cfbaf44ae82 |
Hashes for qpalm-1.1.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_27_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 66fafa5a296d43c9dfda15dca9e67aec348a3d893bbbceb9ed8726c49de04a4c |
|
MD5 | b2d0f95e441dc9a6041066637995b6a5 |
|
BLAKE2b-256 | 7eafd5f3e954a1950bedd17e3f890ac11108e22c0d4a3130cbdf97a01f8803f8 |
Hashes for qpalm-1.1.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.manylinux_2_27_aarch64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 70b314ec20322c600402074a115f5bb2984b5d2adeb154d4dcd67d71d7ef3c44 |
|
MD5 | 15098760f07c4ef3a8fbed2f47f058d3 |
|
BLAKE2b-256 | ec18c305a31d13f2f1e6b79975435f22ce88263596880ba7f73cc9914754465f |
Hashes for qpalm-1.1.1-cp39-cp39-macosx_10_15_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | c674b7208a07c5150631d9c112fa5c82e2a47469f0c46bfee7a9ffc4582e71f6 |
|
MD5 | d4aff37ef4c1121f21d9c3e3fdf5e410 |
|
BLAKE2b-256 | f95716c8c6866fa3e49c871d23ec91d1e76930940a8ca047ce7d87c7bf20d4b0 |
Hashes for qpalm-1.1.1-cp38-cp38-win_amd64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 318475c2dc1298e8499794b1b025512c012fa7e0213bfa20e48ad9594b699ca6 |
|
MD5 | 24662db70b282c39a5c0cffd45d94492 |
|
BLAKE2b-256 | 10ee61b8c8b8d9dfa1f231fee78b2c6c30dfda99e1505f00960d0e38459bc6f6 |
Hashes for qpalm-1.1.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_27_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 95c74e69549665d90ae9e22413eb7175e253e376c24d2a9d03ae5b2d6a0f4c70 |
|
MD5 | d88ff39cb11e54f061179047d7514ea2 |
|
BLAKE2b-256 | d6bd79c08351624aa7e0e7156708b9db5389a2069a580e5e5503b545a7ce02fc |
Hashes for qpalm-1.1.1-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.manylinux_2_27_aarch64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 41c7fd5cc0cee87bab5518c82df92faaf663fd2b98f2ab25225b1fba10def849 |
|
MD5 | 9b0c2772cea7da13e475e21568560a9a |
|
BLAKE2b-256 | 140821fec91e573c292cdef39b9fe0ccf537932d9b79a76ebfcf03140b907928 |
Hashes for qpalm-1.1.1-cp38-cp38-macosx_10_14_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 3b45268518b74e198f768d2dcd80998cb6392e07c9732be4650767ba4068c9b8 |
|
MD5 | 03d33bdd23628649b7c868af1b36c7ae |
|
BLAKE2b-256 | 43a0f6153fbb90c763b02bbe5a201a9c6d1cb167289144492f45458c9fc4d275 |