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
|
|
required |
q
|
Array
|
|
required |
A
|
Array
|
|
required |
b
|
Array
|
|
required |
G
|
Array
|
|
required |
h
|
Array
|
|
required |
backend
|
str
|
|
'i'
|
**kwargs
|
Any
|
forwarded to the selected backend (e.g. |
{}
|
Returns:
| Type | Description |
|---|---|
tuple
|
Tuple |
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
|
|
required |
q
|
Array
|
|
required |
A
|
Array
|
|
required |
b
|
Array
|
|
required |
G
|
Array
|
|
required |
h
|
Array
|
|
required |
backend
|
str
|
|
'i'
|
**kwargs
|
Any
|
forwarded to the selected backend (e.g. |
{}
|
Returns:
| Type | Description |
|---|---|
Array
|
Primal solution |
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
|
|
required |
q
|
Array
|
|
required |
G
|
Array
|
|
required |
h
|
Array
|
|
required |
penalty
|
float
|
per-unit cost of slack on each inequality. |
required |
backend
|
str
|
only |
'e'
|
**kwargs
|
Any
|
forwarded to the explicit backend (e.g. |
{}
|
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
|
|
required |
q
|
Array
|
|
required |
G
|
Array
|
|
required |
h
|
Array
|
|
required |
penalty
|
float
|
per-unit cost of slack on each inequality. |
required |
backend
|
str
|
only |
'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
|
|
required |
q
|
Array
|
|
required |
A
|
Array
|
|
required |
b
|
Array
|
|
required |
G
|
Array
|
|
required |
h
|
Array
|
|
required |
x
|
Array
|
primal warm start, shape |
required |
s
|
Array
|
inequality slack warm start, shape |
required |
z
|
Array
|
inequality dual warm start, shape |
required |
y
|
Array
|
equality dual warm start, shape |
required |
backend
|
str
|
|
'e'
|
**kwargs
|
Any
|
forwarded to the selected backend (e.g. |
{}
|
Returns:
| Type | Description |
|---|---|
tuple
|
Tuple |
Types¶
qpax.QPData ¶
Bases: NamedTuple
qpax.QPState ¶
Bases: NamedTuple
qpax.SolverParams ¶
Bases: NamedTuple
qpax.LinearSolver ¶
Bases: Enum