A quadratic program is defined in standard form as:

$$\begin{align*} \underset{x}{\mbox{minimize}} \ & \frac{1}{2} x^T P x + q^T x \\ \text{subject to} \ & G x \leq h \\ & A x = b \\ & lb \leq x \leq ub \end{align*}$$

Documentation Page

In [24]:
import numpy as np
from qpsolvers import solve_qp

P = np.eye(2, dtype=np.double)
q = np.zeros(2, dtype=np.double)

G = np.array([[2, 2],
              [2, 0],
              [0, 2],
              [1, 1],
              [3, 0]], dtype=np.double)
h = np.array([-1, -1, -1, -1, -1], dtype=np.double)

x = solve_qp(P, q, G, h, solver="cvxopt")
print(f"QP solution: x = {np.round(x, 2)}")
QP solution: x = [-0.5 -0.5]
In [25]:
import numpy as np
from qpsolvers import solve_qp

P = np.array([[8, 4, 4, 4, 6],
              [4, 4, 4, 0, 1],
              [4, 0, 4, 2, 0],
              [4, 2, 2, 2, 3],
              [6, 6, 0, 3, 9]], dtype=np.double)

q = -np.ones(5, dtype=np.double)

A = np.array([[-1, -1, 1, 1, 1]], dtype=np.double)

b = np.zeros(1, dtype=np.double)

lb = np.zeros(5, dtype=np.double)

x = solve_qp(P, q, A=A, b=b, lb=lb, solver="cvxopt")
print(f"QP solution: x = {np.round(x, 2)}")
QP solution: x = [0.   0.25 0.25 0.   0.  ]