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*}$$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)}")
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)}")