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.3b1/qpalm-matlab-linux.zip', userpath)
unzip('https://github.com/kul-optec/QPALM/releases/download/1.1.3b1/qpalm-matlab-windows.zip', userpath)
unzip('https://github.com/kul-optec/QPALM/releases/download/1.1.3b1/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 Distributions
Built Distributions
Hashes for qpalm-1.1.3b1-cp311-cp311-manylinux_2_17_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | d6bd5fb6e56f58f7b4395fd4e3d337d59ce02517a27d532be462ef56be5f4956 |
|
MD5 | 975d6684173c02ef6499c1e159df5acf |
|
BLAKE2b-256 | 272114e429ad5942b088c61ff5d9f537cb43e56c73a5ce671a31208c2acc2624 |
Hashes for qpalm-1.1.3b1-cp311-cp311-macosx_10_9_universal2.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 02d5288f93d17fb885e1c10e686b592a95b55397988e3118164f7cb47b2c279b |
|
MD5 | f0e47feb1050b4cae4735f50dc22964e |
|
BLAKE2b-256 | 70fd75d5e69d6576ff4c67de01d81c89d7396f866610b97d0d26c3fe3b245505 |
Hashes for qpalm-1.1.3b1-cp311-cp311-linux_armv6l.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 006d7740a7fe41d2e042be6c5febcb92bf9b738d3d6811c93c7669ef7004ab14 |
|
MD5 | d2c05349210bacad8e251c039a974a33 |
|
BLAKE2b-256 | 25c2b83075d9cbac5e9323181f7b88ee6b6d3e6e2983c2b1b1f751ea3b4df2e1 |
Hashes for qpalm-1.1.3b1-cp310-cp310-macosx_10_9_universal2.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | cc184a959934a0782d08b35800b5543b2af0a25390d46a6ac0594b0cac83e3ab |
|
MD5 | 7d9de96c413af77224a3e62c34b1f929 |
|
BLAKE2b-256 | ea79e1087cc9f2de7ac91b90e23b0f838879a647917ccff3e64c03afd9412cba |
Hashes for qpalm-1.1.3b1-cp310-cp310-linux_armv6l.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 2872997bfb76c243b283737eb1a3dfbf9d929d4895d1fba496b0d64b035fbb96 |
|
MD5 | 5b2ce0418f4d7aa44f580f188d5e8eba |
|
BLAKE2b-256 | 166d6d107c2a108d0f5e30e75914109d01a3ef30c524ab2c81dde839023f1766 |
Hashes for qpalm-1.1.3b1-cp39-cp39-linux_armv6l.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 511433834919d321822d3b11d20a008085ca214cbddc4b84aed7951f8351a0c0 |
|
MD5 | c09d154374da188aba9f5245dc16558b |
|
BLAKE2b-256 | fd8dab25869078c647c0fb290daf3b03954c367535399f32e61060abbc314e02 |
Hashes for qpalm-1.1.3b1-cp37-cp37m-manylinux_2_17_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 0b2a7c4015467ef8be23d5423ddb973654fde1350b640f56b56b1b23df0aed67 |
|
MD5 | ef21adaad220078f2e085a0ca3967718 |
|
BLAKE2b-256 | 9a091946ebfde2c229faecef498e6c6055bb57bd367a783325560f0b1edff19d |
Hashes for qpalm-1.1.3b1-cp37-cp37m-macosx_10_9_universal2.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 6ff2a17a6e2bacbb2caaa8bcf7d08cb44b53bcc9f56f54597095aabcdbff8d8e |
|
MD5 | 88a59b55bf40d0a85b57854159c97225 |
|
BLAKE2b-256 | c2853f2b0cec52cdf3b54a670c1857ce5f9574e6e3f1aeb1e7a368c1c48a34b2 |
Hashes for qpalm-1.1.3b1-cp37-cp37m-linux_armv6l.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 32940c4bb16eec1a65266b7995fefdf57edf4b37126ca32007cf49188757f36e |
|
MD5 | 7a052a8c810a6736e9bb3f96e1adac61 |
|
BLAKE2b-256 | 3e3f702a3df80106f2a8a26988718bf31ac63c3b00d349f7ec325344f29b4eb7 |