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.3.0.tar.gz (213.8 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.3.0-py3-none-any.whl (7.2 kB view details)

Uploaded Python 3

File details

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

File metadata

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

File hashes

Hashes for pdaqp-0.3.0.tar.gz
Algorithm Hash digest
SHA256 5e8500074f61856f5fc9fd1666094f34e5f61ec9c6d45d288adad1c18249ac89
MD5 638ce8dfa75b6285e40da742b7e942ad
BLAKE2b-256 c8f08d7d8e2517b69c0f331571f3a8cf310c096e779434de852da7ff84530779

See more details on using hashes here.

File details

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

File metadata

  • Download URL: pdaqp-0.3.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.3.0-py3-none-any.whl
Algorithm Hash digest
SHA256 6a2c4917c442fbbd61f8a9a31704a20ab776b7b2748a7d39c4f7a77f9f1e4fbe
MD5 69932700a27596e6af1232b4614ad66a
BLAKE2b-256 c6c12ffb4ac7a3b989d04753600b4d819c148a2e3fea77c3fdd75472013ca128

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