slsqp_jax.qp.direct

Direct null-space projection of equality constraints inside the QP (no proximal term).

slsqp_jax.qp.direct

Direct null-space projection QP strategy (sSQP disabled).

Equality constraints are enforced exactly through the inner solver’s null-space projector instead of the augmented-Lagrangian penalty. This avoids the ill-conditioning introduced by the (1/mu) A_eq^T A_eq proximal term.

slsqp_jax.qp.direct.solve_qp_direct(hvp_fn, g, A_eq, b_eq, A_ineq, b_ineq, m_eq, m_ineq, max_iter, tol, expand_factor, initial_active_set, kkt_residual, inner_solver, precond_fn=None, cg_tol=None, cg_regularization=1e-06, predicted_active_set=None, use_expand=True, mult_drop_floor=1e-06, ping_pong_threshold=2147483647)[source]

Solve the QP with equality constraints enforced via direct projection.

A combined constraint matrix [A_eq; A_ineq] is formed. Equality rows are permanently active; the active-set loop only adds/drops inequality rows.

Return type:

QPSolverResult

Parameters:
  • hvp_fn (Callable[[Float[Array, 'n']], Float[Array, 'n']])

  • g (Float[Array, 'n'])

  • A_eq (Float[Array, 'm_eq n'])

  • b_eq (Float[Array, 'm_eq'])

  • A_ineq (Float[Array, 'm_ineq n'])

  • b_ineq (Float[Array, 'm_ineq'])

  • m_eq (int)

  • m_ineq (int)

  • max_iter (int)

  • tol (Float[Array, ''] | float)

  • expand_factor (float)

  • initial_active_set (Bool[Array, 'm_ineq'] | None)

  • kkt_residual (Float[Array, ''] | float)

  • inner_solver (AbstractInnerSolver)

  • precond_fn (Callable[[Float[Array, 'n']], Float[Array, 'n']] | None)

  • cg_tol (Float[Array, ''] | float | None)

  • cg_regularization (float)

  • predicted_active_set (Bool[Array, 'm_ineq'] | None)

  • use_expand (bool)

  • mult_drop_floor (float)

  • ping_pong_threshold (int)