A multi-parametric quadratic programming solver
Project description
pdaqp is a Python package for solving multi-parametric quadratic programs of the form
$$ \begin{align} \min_{z} & ~\frac{1}{2}z^{T}Hz+(f+F \theta)^{T}z \ \text{s.t.} & ~A z \leq b + B \theta \ & ~\theta \in \Theta \end{align} $$
where $H \succ 0$ and $\Theta \triangleq \lbrace l \leq \theta \leq u : A_{\theta} \theta \leq b_{\theta}\rbrace$.
pdaqp is based on the Julia package ParametricDAQP.jl and the Python module juliacall. More information about the underlying algorithm and numerical experiments can be found in the paper "A High-Performant Multi-Parametric Quadratic Programming Solver".
Installation
pip install pdaqp
Citation
If you use the package in your work, consider citing the following paper
@inproceedings{arnstrom2024pdaqp,
author={Arnström, Daniel and Axehill, Daniel},
booktitle={2024 IEEE 63rd Conference on Decision and Control (CDC)},
title={A High-Performant Multi-Parametric Quadratic Programming Solver},
year={2024},
volume={},
number={},
pages={303-308},
}
Example
The following code solves the mpQP in Section 7.1 in Bemporad et al. 2002
import numpy
H = numpy.array([[1.5064, 0.4838], [0.4838, 1.5258]])
f = numpy.zeros((2,1))
F = numpy.array([[9.6652, 5.2115], [7.0732, -7.0879]])
A = numpy.array([[1.0, 0], [-1, 0], [0, 1], [0, -1]])
b = 2*numpy.ones((4,1));
B = numpy.zeros((4,2));
thmin = -1.5*numpy.ones(2)
thmax = 1.5*numpy.ones(2)
from pdaqp import MPQP
mpQP = MPQP(H,f,F,A,b,B,thmin,thmax)
mpQP.solve()
To construct a binary search tree for point location, and to generate corresponding C-code, run
mpQP.codegen(dir="codegen", fname="pointlocation")
which will create the following directory:
├── codegen
│ ├── pointlocation.c
│ └── pointlocation.h
The critical regions and the optimal solution can be plotted with the commands
mpQP.plot_regions()
mpQP.plot_solution()
which create the following plots
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 Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file pdaqp-0.6.4.tar.gz.
File metadata
- Download URL: pdaqp-0.6.4.tar.gz
- Upload date:
- Size: 215.0 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.0.1 CPython/3.10.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
eda777e482c8fba19997596c73ef0b3866e6dab9ef56a39f314c8fa19075cbb7
|
|
| MD5 |
cfd4c04a36676a353458f617eaf2eb91
|
|
| BLAKE2b-256 |
e400c7809abe94ce3bd481a4fbd2639fabb2a3e06e282d04717afd94514052a7
|
File details
Details for the file pdaqp-0.6.4-py3-none-any.whl.
File metadata
- Download URL: pdaqp-0.6.4-py3-none-any.whl
- Upload date:
- Size: 7.6 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.0.1 CPython/3.10.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
6264b34d870dacb9239cc574e3d96b5e93592f7bdc7441f78d7e7bf4b54ea1a8
|
|
| MD5 |
6c9bdb2dc5ffd17e83b689c0d1ea8971
|
|
| BLAKE2b-256 |
0d8b47141c5ef88d2a1efc3896680cdfa42c6ab3493fad303b39458b84032df2
|