pub fn accepts(
before: (Number, Number, Number),
after: (Number, Number, Number),
sqp_opts: &SqpOptions,
) -> boolExpand description
Never-regress gate. The crossed-over point is accepted only when it is at least as good a KKT point of the original NLP as the interior iterate, on all three of feasibility, stationarity, and objective.
Each residual is compared against max(interior residual, its tolerance)
rather than against the interior residual alone: crossover puts the
iterate on the active constraints, which can nudge a residual that was
1e-12 up to 1e-10 while the point is unambiguously better identified.
Refusing that would make the gate reject exactly the cases the phase
exists for. What it still refuses is a residual that crosses its own
tolerance, which is the thing that would turn a converged solve into a
misreported one.