slsqp_jax.inner.base¶
Abstract base class AbstractInnerSolver defining the inner equality-constrained QP solver interface.
slsqp_jax.inner.base
Abstract base class for pluggable inner equality-constrained QP solvers.
- class slsqp_jax.inner.base.AbstractInnerSolver[source]¶
Bases:
ModuleStrategy for solving the equality-constrained QP subproblem.
Subclasses implement
solveto compute the search directiondand Lagrange multipliers for the active constraints.- abstractmethod solve(hvp_fn, g, A, b, active_mask, precond_fn=None, free_mask=None, d_fixed=None, adaptive_tol=None)[source]¶
Solve the equality-constrained QP subproblem.
Solves:
minimize (1/2) d^T B d + g^T d subject to A[active] d = b[active] d[i] = d_fixed[i] for i where free_mask[i] is False
where B is given implicitly via
hvp_fn(v) = B @ v.- Return type:
- Parameters:
hvp_fn (Callable[[Float[Array, 'n']], Float[Array, 'n']])
g (Float[Array, 'n'])
A (Float[Array, 'm n'])
b (Float[Array, 'm'])
active_mask (Bool[Array, 'm'])
precond_fn (Callable[[Float[Array, 'n']], Float[Array, 'n']] | None)
free_mask (Bool[Array, 'n'] | None)
d_fixed (Float[Array, 'n'] | None)
adaptive_tol (Float[Array, ''] | float | None)
- Args:
hvp_fn: Hessian-vector product function v -> B @ v. g: Linear term (gradient of objective). A: Combined constraint matrix (m x n). b: Combined RHS vector (m,). active_mask: Boolean mask (m,) indicating active constraints. precond_fn: Optional preconditioner v -> M @ v where M ~ B^{-1}. free_mask: Optional boolean mask (n,). When provided, only
variables with
free_mask[i] = Trueare optimized.- d_fixed: Values for fixed variables (n,). Required when
free_maskis provided.- adaptive_tol: Optional Eisenstat-Walker tolerance override.
When provided, overrides the solver’s default convergence tolerance for this call only.
- Returns:
InnerSolveResultwith the direction, multipliers, and convergence flag.
- build_projection_context(hvp_fn, g, A, b, active_mask, precond_fn=None, free_mask=None, d_fixed=None)[source]¶
Build a reusable projector + multiplier-recovery context.
Composed strategies (e.g.
HRInexactSTCG) call this on the underlying inner solver to obtain its null-space projector, particular solution and multiplier-recovery closure without running the projector’s own CG loop.The default implementation raises
NotImplementedErrorso full-KKT solvers (MinresQLPSolver) cleanly opt out — they have no separate projection step and therefore cannot supply the inexact-projectorW̃_kthat HR Algorithm 4.5 needs.- Return type:
- Parameters:
- __init__()¶
- Return type:
None