Skip to content

Core API

Stable, re-exported at the top level of qpax. These functions forward to whichever backend you select with the backend keyword.

Solvers

qpax.solve_qp

solve_qp(Q: Array, q: Array, A: Array, b: Array, G: Array, h: Array, *, backend: str = 'i', **kwargs: Any) -> tuple

Solve a convex QP via primal-dual interior point.

Parameters:

Name Type Description Default
Q Array

(n, n) PSD cost matrix.

required
q Array

(n,) linear cost.

required
A Array

(m, n) equality constraint matrix.

required
b Array

(m,) equality constraint RHS.

required
G Array

(p, n) inequality constraint matrix.

required
h Array

(p,) inequality constraint RHS.

required
backend str

"e" for the explicit predictor-corrector PDIP (default), "i" for the implicit retraction-manifold PDIP.

'i'
**kwargs Any

forwarded to the selected backend (e.g. solver_tol, max_iter, linear_solver).

{}

Returns:

Type Description
tuple

Tuple (x, s, z, y, converged, iters).

qpax.solve_qp_primal

solve_qp_primal(Q: Array, q: Array, A: Array, b: Array, G: Array, h: Array, *, backend: str = 'i', **kwargs: Any) -> jax.Array

Solve a QP and return the primal solution x.

Differentiable via jax.custom_vjp; gradients flow through every QP parameter using the implicit function theorem on the relaxed KKT system.

Parameters:

Name Type Description Default
Q Array

(n, n) PSD cost matrix.

required
q Array

(n,) linear cost.

required
A Array

(m, n) equality constraint matrix.

required
b Array

(m,) equality constraint RHS.

required
G Array

(p, n) inequality constraint matrix.

required
h Array

(p,) inequality constraint RHS.

required
backend str

"e" for the explicit backend (default), "i" for the implicit backend.

'i'
**kwargs Any

forwarded to the selected backend (e.g. solver_tol, target_kappa, max_iter).

{}

Returns:

Type Description
Array

Primal solution x of shape (n,).

qpax.solve_qp_elastic

solve_qp_elastic(Q: Array, q: Array, G: Array, h: Array, penalty: float, *, backend: str = 'e', **kwargs: Any)

Solve the elastic QP relaxation of an inequality-constrained QP.

Parameters:

Name Type Description Default
Q Array

(n, n) PSD cost matrix.

required
q Array

(n,) linear cost.

required
G Array

(p, n) inequality constraint matrix.

required
h Array

(p,) inequality constraint RHS.

required
penalty float

per-unit cost of slack on each inequality.

required
backend str

only "e" is supported; "i" raises NotImplementedError.

'e'
**kwargs Any

forwarded to the explicit backend (e.g. solver_tol, max_iter).

{}

qpax.solve_qp_elastic_primal

solve_qp_elastic_primal(Q: Array, q: Array, G: Array, h: Array, penalty: float, *, backend: str = 'e', **kwargs: Any) -> jax.Array

Differentiable elastic-QP solve returning only the primal x.

Parameters:

Name Type Description Default
Q Array

(n, n) PSD cost matrix.

required
q Array

(n,) linear cost.

required
G Array

(p, n) inequality constraint matrix.

required
h Array

(p,) inequality constraint RHS.

required
penalty float

per-unit cost of slack on each inequality.

required
backend str

only "e" is supported; "i" raises NotImplementedError.

'e'
**kwargs Any

forwarded to the explicit backend.

{}

qpax.relax_qp

relax_qp(Q: Array, q: Array, A: Array, b: Array, G: Array, h: Array, x: Array, s: Array, z: Array, y: Array, *, backend: str = 'e', **kwargs: Any) -> tuple

Refine a PDIP solution to a relaxed (kappa-perturbed) KKT point.

Parameters:

Name Type Description Default
Q Array

(n, n) PSD cost matrix.

required
q Array

(n,) linear cost.

required
A Array

(m, n) equality constraint matrix.

required
b Array

(m,) equality constraint RHS.

required
G Array

(p, n) inequality constraint matrix.

required
h Array

(p,) inequality constraint RHS.

required
x Array

primal warm start, shape (n,).

required
s Array

inequality slack warm start, shape (p,).

required
z Array

inequality dual warm start, shape (p,).

required
y Array

equality dual warm start, shape (m,).

required
backend str

"e" for the explicit backend (default), "i" for the implicit backend.

'e'
**kwargs Any

forwarded to the selected backend (e.g. solver_tol, target_kappa, max_iter).

{}

Returns:

Type Description
tuple

Tuple (x, s, z, y, converged, iters) of the refined solution.

Types

qpax.QPData

Bases: NamedTuple

qpax.QPState

Bases: NamedTuple

qpax.SolverParams

Bases: NamedTuple

qpax.LinearSolver

Bases: Enum