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.1.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.1-py3-none-any.whl (7.3 kB view details)

Uploaded Python 3

File details

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

File metadata

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

File hashes

Hashes for pdaqp-0.4.1.tar.gz
Algorithm Hash digest
SHA256 76e3ebfe3bd9d7a486ccb4931a9be659be46b745b639f43a2299c5b5b8312204
MD5 a9aeb06b208e0257fb79ea546e79d678
BLAKE2b-256 de5e00d63e8d37f09462d40a10e8f7b3dbbd54368f17aaf1a0d6153e359ed5d1

See more details on using hashes here.

File details

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

File metadata

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

File hashes

Hashes for pdaqp-0.4.1-py3-none-any.whl
Algorithm Hash digest
SHA256 1a53246d9d4d8e02ac84af9268d98b7fff389b102d27371143bbd5704de14d7d
MD5 3c8838a42e5fb9238dd85805adecc381
BLAKE2b-256 d105b0720ffc5a82f609900e392e029baac039b1647e299711dfd730a661a54a

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