pub fn run<N, B, S>(
nlp: &mut N,
seed: &CrossoverSeed,
opts: &CrossoverOptions,
sqp_opts: &SqpOptions,
qp_opts: &QpOptions,
make_backend: B,
make_sqp: S,
) -> (CrossoverReport, Option<SqpResult>)where
N: SqpProblemSpec,
B: FnMut() -> Box<dyn SparseSymLinearSolverInterface>,
S: FnMut(SqpOptions) -> Option<SqpAlgorithm>,Expand description
Run the crossover phase (paper §7 steps 2-4).
seed is the converged interior iterate. make_backend supplies the
sparse symmetric linear solver for the active-set engine — the same
factory the IPM used, so crossover inherits the caller’s linear_solver
choice. make_sqp builds the step-4 driver; it is a closure rather than a
value because step 4 needs its own iteration budget and ν₀, and it is
never called at all on the step-3 path.
Returns the report always, and the replacement solution only when it was accepted.