Giter Site home page Giter Site logo

mpcalgo / qpalm Goto Github PK

View Code? Open in Web Editor NEW

This project forked from kul-optec/qpalm

0.0 0.0 0.0 4.96 MB

Proximal Augmented Lagrangian method for Quadratic Programs

Home Page: https://kul-optec.github.io/QPALM

License: GNU Lesser General Public License v3.0

Shell 1.58% JavaScript 0.01% C++ 14.16% Python 0.75% C 39.05% Fortran 1.95% MATLAB 23.35% PowerShell 0.19% Julia 0.27% CSS 1.39% TeX 12.96% HTML 0.43% CMake 3.91%

qpalm's Introduction

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

qpalm's People

Contributors

tttapa avatar benny44 avatar dpo avatar freemin7 avatar jgillis avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.