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

Uploaded Python 3

File details

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

File metadata

  • Download URL: pdaqp-0.4.3.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.3.tar.gz
Algorithm Hash digest
SHA256 f2130d3cd5a20cd99039c1cff6e220e1a8e05c532ed946e7b18814411c459e8e
MD5 6107802385c8195bee9b99057ccac5d5
BLAKE2b-256 d307010b09b64802d6296b7a09e280f04ae05f3cfccf77bc365d62c629a603aa

See more details on using hashes here.

File details

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

File metadata

  • Download URL: pdaqp-0.4.3-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.3-py3-none-any.whl
Algorithm Hash digest
SHA256 96ea45b8008f9ad87e936adc54e83db1f2f945cbfac5213b8963690319b2263c
MD5 c4af071b2b80958986c77e9cb4e38ec0
BLAKE2b-256 5a694e2c629ab4e9755bc22aea22e382c6cd3a878e1ea724fab8d126e945589e

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