pub fn feral_config_from_options_scoped(
options: &OptionsList,
carve_out: RefineCarveOut,
) -> FeralConfigExpand description
feral_config_from_options with the limited-memory refine carve-out
made explicit.
The carve-out is interior-point-specific in both of its premises, and
neither holds on the active-set SQP arm. It is justified by
PdFullSpaceSolver::compute_residuals already refining the unreduced
Newton system — the SQP arm has no such host loop, so
pounce_qp::factor::LinearSolver relies on the backend’s own refinement
(“refinement is implicit in this layer”, that module’s docs) and turning
it off removes refinement from the stack entirely. And it keys off
hessian_approximation, which is not that arm’s Hessian selector at all:
sqp_hessian is.
Measured, and this is why the parameter exists rather than the SQP path
just calling the plain function: inheriting the carve-out moved 10 of 97
fixtures on the sweep’s L-BFGS leg under algorithm=active-set-sqp, while
the exact leg did not move at all. Some of that movement looked like a win
(mu_fallback_point_floor MaximumIterationsExceeded/200 ->
SolveSucceeded/8), but it was a win bought by disabling refinement for a
reason that does not apply here, and it came with hs13_bigstart landing
on a different point (objective 1 -> 1.0018) and eigena2 and
mpcc_scholtes4_biactive likewise. Turning refinement off on this arm may
well be worth measuring on its own merits; it should not arrive as a side
effect of honouring linear_solver.