Skip to main content

Module application

Module application 

Source
Expand description

User-facing application object — port of Interfaces/IpIpoptApplication.{hpp,cpp}.

§Crate placement

IpoptApplication lives in pounce-algorithm (rather than alongside the other Interfaces-side ports in pounce-nlp) because optimize_tnlp needs to drive the full IPM: it constructs a TNLPAdapter + OrigIpoptNlp (from pounce-nlp) and hands the NLP off to an IpoptAlgorithm (this crate). pounce-nlp cannot depend on pounce-algorithm (the reverse already exists), so orchestration must live on the algorithm side. Public callers continue to import via pounce_algorithm::IpoptApplication.

optimize_tnlp routes every problem — constrained or not — through the same primal-dual IPM, exactly as upstream Ipopt does: it builds the algorithm via crate::alg_builder::AlgorithmBuilder (default backend MA57 from pounce-hsl) and runs IpoptAlgorithm::optimize.

Structs§

IpoptApplication

Functions§

default_backend_factory
Default symmetric linear-solver factory, parameterized by the pounce-extension FERAL knobs read off the application’s OptionsList.
default_backend_factory_with_sink
Sink-aware variant of default_backend_factory. Identical dispatch, but the FERAL backend is constructed with a LinearSolverSummary sink so IpoptApplication can read out aggregate post-mortem stats (factor counts, fill ratio, extremal pivots, final inertia) after the solve returns. MA57 ignores the sink — the HSL backend doesn’t carry the same instrumentation yet.
feral_config_from_options
Read the feral_* extension options off options, falling back to the env-var defaults baked into pounce_feral::FeralConfig::from_env for any knob the caller did not set explicitly. The returned config is what every default-factory invocation (main IPM and restoration sub-IPM) consumes.

Type Aliases§

ConvergedCallback
Callback fired by IpoptApplication::optimize_constrained once the IPM has converged (status SolveSucceeded or SolvedToAcceptableLevel) and before the user TNLP’s finalize_solution runs. Receives borrowed handles into the algorithm’s converged state.
RestorationFactory
Factory that constructs a fresh restoration-phase strategy on demand. The outer algorithm owns at most one restoration object, so the factory is invoked once per optimize_tnlp call. The factory is FnMut to allow callers to capture a builder that internally reuses caches across builds.
RestorationFactoryProvider
Provider that mints fresh RestorationFactory instances on demand. Used by drivers that need to run the inner IPM more than once per optimize_tnlp call — notably the Phase-3 ℓ₁-exact penalty-barrier outer loop (pounce#10), which the existing RestorationFactory cannot support because pounce’s default make_default_restoration_factory is a one-shot. Callers wire this via IpoptApplication::set_restoration_factory_provider.