Skip to main content

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

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

critical_regions

solution_component

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

pdaqp-0.4.0.tar.gz (214.7 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

pdaqp-0.4.0-py3-none-any.whl (7.2 kB view details)

Uploaded Python 3

File details

Details for the file pdaqp-0.4.0.tar.gz.

File metadata

  • Download URL: pdaqp-0.4.0.tar.gz
  • Upload date:
  • Size: 214.7 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/5.1.1 CPython/3.10.12

File hashes

Hashes for pdaqp-0.4.0.tar.gz
Algorithm Hash digest
SHA256 093ffff22798f1ea188a1b299afeac8fb5946ec7101452830e7814bb46a8c1be
MD5 f7980278a6278c8df7779fc5b79a736a
BLAKE2b-256 e59692d034c42d104a9fc015013ccf414e22a61463fbcb57b466cc134f131acf

See more details on using hashes here.

File details

Details for the file pdaqp-0.4.0-py3-none-any.whl.

File metadata

  • Download URL: pdaqp-0.4.0-py3-none-any.whl
  • Upload date:
  • Size: 7.2 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/5.1.1 CPython/3.10.12

File hashes

Hashes for pdaqp-0.4.0-py3-none-any.whl
Algorithm Hash digest
SHA256 003f49ba09b61d93a95afc4f23a074507b1911bf2dc81f1fc8b4248f8d728489
MD5 7e6d486f4d0f15c3f10390f63e2bf0c2
BLAKE2b-256 ceb5cc7a444fbe9bad2a5c84d01d7f0cb741360bc53020a982b440df898be119

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page