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.tar.gz
or
qpalm-matlab-windows.zip
from the
releases page, and
extract it into the ~/Documents/MATLAB
folder.
As a one-liner for Linux:
wget https://github.com/kul-optec/QPALM/releases/download/1.0.0/qpalm-matlab-linux.tar.gz -O- | tar xz -C ~/Documents/MATLAB
Building QPALM from source
For the full instructions 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 and Matlab.
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.0.0-cp310-cp310-win_amd64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | f2b263fb3304c5002fb58698855931895b111d7bdf06f10736dfc21a6b2aa069 |
|
MD5 | 1c825adaefac957c4536a788b6937aee |
|
BLAKE2b-256 | 61f17d0f09e9430103ed4e847d2082a1dd7dac9e22f5f3a1fb1b2fb9b3a2dbfb |
Hashes for qpalm-1.0.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_27_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 4045a4cdf70d3232890cd8349816042e1320364a3b9afb664933340e1acb11f2 |
|
MD5 | fdacbcf418a1102533ac37bb9e20aba5 |
|
BLAKE2b-256 | b8b611060604e7a1fd76aea07dcaa80e2aae8785850c8e548a1f3341237f1dab |
Hashes for qpalm-1.0.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.manylinux_2_27_aarch64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 094c131372f2f000928f250ca532f50e18585deb065059566a8dcec456021307 |
|
MD5 | 4ca52e367d91443f8e3e588299100758 |
|
BLAKE2b-256 | 32ab0e97d8872495e5970cbbb3956fcfb1688f19e11dcd708247f1ab6a5f0ed2 |
Hashes for qpalm-1.0.0-cp39-cp39-win_amd64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | ab5918b82fe6c650be69813674ef03b7630cf43dfc377709c7f2481e4d89d47f |
|
MD5 | dc8f3a1d84ee20b4913d1bf0749dbb2d |
|
BLAKE2b-256 | ebebef203f1280de881eb854b0b26acda7bcd007ed733f25edfbdf9e0db9d3ce |
Hashes for qpalm-1.0.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_27_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 4ade7f4283b26757a4d6cc685cacedb5c0fa2d617d30d8b383bb6d69344c8d92 |
|
MD5 | c7ba64609d916075f4d94057b106bf47 |
|
BLAKE2b-256 | 2332687f9d43ffc3a944cf121b5a6c8076f473c4961d55e410fc7a54e3bd9d1f |
Hashes for qpalm-1.0.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.manylinux_2_27_aarch64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 01dba01a58787b59cf858d00eaa391f829a03e9fcdb371ce9529caa9aeb1a5c0 |
|
MD5 | 72d6653abd76dabe43209226f278139a |
|
BLAKE2b-256 | c33084580f824e5dd025f2a84f16ea4260acc6c1fcf52c8efd4126f253db64ad |
Hashes for qpalm-1.0.0-cp38-cp38-win_amd64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | c9a042ceb94818632322612acf4173688cd54d7d3948808a0b63066b429d507f |
|
MD5 | 344ea009924c46f346e1387b92278638 |
|
BLAKE2b-256 | 7018d026b9675a961a41ce5f2fee13d684e0e8480c619081a057f34ca6436f5d |
Hashes for qpalm-1.0.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_27_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 38f103aba137f2d7deb8a9c4b688c9be64ce47bb8170d7cc0e683c48f910a450 |
|
MD5 | 205dbf8c82169231c8873ad95e3954c6 |
|
BLAKE2b-256 | ed8ec6870312dbc8641de03947e1c174128ca05609d8b4f8e02ed95c27a0fb4c |
Hashes for qpalm-1.0.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.manylinux_2_27_aarch64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 3d15797e5efb5be31e03526547d589cc9610739a5220163259767984aeca9a56 |
|
MD5 | d25b4e8c8e79f85b04536c60131aa95e |
|
BLAKE2b-256 | dc42562fe5cbd8dae4a3e92d5e1fb1cd647c1a6b1a95bd8a93bca60455e5d1ea |