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: Module

Strategy for solving the equality-constrained QP subproblem.

Subclasses implement solve to compute the search direction d and 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:

InnerSolveResult

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] = True are optimized.

d_fixed: Values for fixed variables (n,). Required when

free_mask is provided.

adaptive_tol: Optional Eisenstat-Walker tolerance override.

When provided, overrides the solver’s default convergence tolerance for this call only.

Returns:

InnerSolveResult with 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 NotImplementedError so full-KKT solvers (MinresQLPSolver) cleanly opt out — they have no separate projection step and therefore cannot supply the inexact-projector W̃_k that HR Algorithm 4.5 needs.

Return type:

ProjectionContext

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)

__init__()
Return type:

None