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)andg_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:
- 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)