slsqp_jax.qp.proximal

sSQP proximal stabilisation — equality constraints absorbed into the objective via an augmented-Lagrangian penalty.

slsqp_jax.qp.proximal

Proximal stabilized SQP (sSQP) QP strategy.

Equality constraints are absorbed into the objective via an augmented-Lagrangian penalty with adaptive parameter mu; see Hager (1999) and Wright (2002, eq 6.6) for the formulation. The active-set loop operates on inequality constraints only.

slsqp_jax.qp.proximal.solve_qp_proximal(hvp_fn, g, A_eq, b_eq, A_ineq, b_ineq, m_eq, m_ineq, max_iter, max_cg_iter, tol, expand_factor, initial_active_set, kkt_residual, proximal_mu, prev_multipliers_eq, 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 via the stabilized SQP (sSQP) formulation.

Equality constraints are absorbed into the objective via an augmented-Lagrangian penalty with weight 1/mu; the active-set loop operates on inequality constraints only.

The stabilized objective is:

(1/2) d^T B_tilde d + g_tilde^T d

where B_tilde(v) = H v + (1/mu) A_eq^T (A_eq v) and g_tilde = g - (1/mu) A_eq^T b_eq - A_eq^T lambda_k.

Equality multipliers are recovered from the penalty optimality condition: lambda = lambda_k - (1/mu)(A_eq d - b_eq).

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)

  • max_cg_iter (int)

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

  • expand_factor (float)

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

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

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

  • prev_multipliers_eq (Float[Array, 'm_eq'] | None)

  • 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)