pub struct IpoptApplication { /* private fields */ }Implementations§
Source§impl IpoptApplication
impl IpoptApplication
Sourcepub fn new() -> Self
pub fn new() -> Self
New application with empty options and a default journalist.
Equivalent to IpoptApplication::IpoptApplication(true,true).
pub fn options(&self) -> &OptionsList
pub fn options_mut(&mut self) -> &mut OptionsList
pub fn registered_options(&self) -> &Rc<RegisteredOptions>
pub fn journalist(&self) -> &Rc<Journalist>
Sourcepub fn set_linear_backend_factory(&mut self, factory: LinearBackendFactory)
pub fn set_linear_backend_factory(&mut self, factory: LinearBackendFactory)
Plug a custom symmetric-linear-solver factory. Useful for tests
that want to swap MA57 for a stub. Production callers should
leave this unset — the default (default_backend_factory)
returns the workspace’s MA57 binding.
Sourcepub fn set_restoration_factory(&mut self, factory: RestorationFactory)
pub fn set_restoration_factory(&mut self, factory: RestorationFactory)
Plug a restoration-phase factory. Called once per
optimize_tnlp invocation to mint a fresh
Box<dyn RestorationPhase> that the outer algorithm uses as
its line-search restoration fallback. Lives behind a setter
(rather than at construction) because the concrete restoration
strategies live in pounce-restoration, which depends on this
crate; consumers in pounce-cli / integration tests wire the
factory at the application boundary.
Sourcepub fn set_diagnostics(&mut self, diag: Rc<DiagnosticsState>)
pub fn set_diagnostics(&mut self, diag: Rc<DiagnosticsState>)
Install the shared diagnostics state. Once set, every
subsequent optimize_tnlp call forwards the state into the
algorithm via IpoptAlgorithm::with_diagnostics so the KKT
solver can emit --dump kkt:... artifacts.
Sourcepub fn diagnostics(&self) -> Option<Rc<DiagnosticsState>>
pub fn diagnostics(&self) -> Option<Rc<DiagnosticsState>>
Read-side accessor for the installed diagnostics state, if any. Lets the CLI write the top-level manifest/timing files after the solve completes.
Sourcepub fn set_restoration_factory_provider(
&mut self,
provider: RestorationFactoryProvider,
)
pub fn set_restoration_factory_provider( &mut self, provider: RestorationFactoryProvider, )
Plug a restoration-phase factory provider for 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). On each inner solve, the application consults the
provider to mint a fresh RestorationFactory, replacing any
stale one, so the default one-shot restoration factory does
not panic on its second invocation. If both set_restoration_factory
and this are configured, the provider wins.
Sourcepub fn set_on_converged(&mut self, cb: ConvergedCallback)
pub fn set_on_converged(&mut self, cb: ConvergedCallback)
Register a callback to run once the IPM has converged (status
ApplicationReturnStatus::SolveSucceeded or
ApplicationReturnStatus::SolvedToAcceptableLevel) but before
finalize_solution flows back to the TNLP. See
ConvergedCallback for the use case (post-optimal sensitivity).
Sourcepub fn enable_iter_history(&mut self)
pub fn enable_iter_history(&mut self)
Enable per-iteration trajectory capture. After the solve
returns, Self::statistics() exposes
pounce_nlp::solve_statistics::SolveStatistics::iterations
populated with one pounce_nlp::solve_statistics::IterRecord
per accepted iterate. Off by default — the pounce_sens and
pounce binaries opt in when --json-output is passed.
Sourcepub fn initialize_with_options_file(
&mut self,
path: &Path,
) -> Result<(), SolverException>
pub fn initialize_with_options_file( &mut self, path: &Path, ) -> Result<(), SolverException>
Read an ipopt.opt-format options file. Equivalent to
IpoptApplication::Initialize(const std::string& options_file).
Sourcepub fn initialize_with_options_str(
&mut self,
s: &str,
) -> Result<(), SolverException>
pub fn initialize_with_options_str( &mut self, s: &str, ) -> Result<(), SolverException>
Read options from a string in ipopt.opt format. Useful for
tests and embedded callers.
Sourcepub fn initialize(&mut self) -> Result<(), SolverException>
pub fn initialize(&mut self) -> Result<(), SolverException>
No-op initialize (just succeeds). Mirrors
IpoptApplication::Initialize(bool allow_clobber) with no
options file.
Sourcepub fn open_output_file(&mut self, fname: &str, print_level: i32) -> bool
pub fn open_output_file(&mut self, fname: &str, print_level: i32) -> bool
Mirror IpoptApplication::OpenOutputFile. Sets the output_file
/ file_print_level options and attaches a matching
FileJournal named OutputFile:<fname> to the journalist.
Returns false if the file could not be opened or the option
store rejected the request (e.g. clamped print level).
Sourcepub fn problem_dimensions(&self, tnlp: &mut dyn TNLP) -> Option<NlpInfo>
pub fn problem_dimensions(&self, tnlp: &mut dyn TNLP) -> Option<NlpInfo>
Wrap a TNLP and report problem dimensions. Used in tests until the full IPM path covers every entry shape.
pub fn statistics(&self) -> SolveStatistics
Sourcepub fn timing_stats(&self) -> Rc<TimingStatistics>
pub fn timing_stats(&self) -> Rc<TimingStatistics>
Shared timing accumulator from the most recent optimize_tnlp
call. Each subsystem (algorithm, NLP, KKT solver) bumped its own
fields during the solve; consumers read totals out of the
returned Rc. The instance is replaced at the top of every
subsequent solve, so cloning the Rc and holding it past a
re-solve will give you the previous solve’s timings — by design.
Sourcepub fn linear_solver_summary(&self) -> Option<LinearSolverSummary>
pub fn linear_solver_summary(&self) -> Option<LinearSolverSummary>
Aggregate linear-solver post-mortem from the most recent
optimize_tnlp call. Some when the workspace-default FERAL
backend ran at least one factor; None when no factors were
recorded (custom factory plugged via
Self::set_linear_backend_factory, or solve aborted before
the first KKT factor). Reset at the top of every solve.
Sourcepub fn optimize_tnlp(
&mut self,
tnlp: Rc<RefCell<dyn TNLP>>,
) -> ApplicationReturnStatus
pub fn optimize_tnlp( &mut self, tnlp: Rc<RefCell<dyn TNLP>>, ) -> ApplicationReturnStatus
Drive a solve.
- Constrained problems (
m > 0) take the primal-dual IPM path: build aTNLPAdapter→OrigIpoptNlp, run theAlgorithmBuilderwith the workspace MA57 backend, and callIpoptAlgorithm::optimize. TheSolverReturn→ApplicationReturnStatusmapping mirrors the table inref/Ipopt/AGENT_REFERENCE/MAIN_LOOP.md(“exception → SolverReturn map”). - Unconstrained problems (
m == 0) keep going through the in-pounce-nlpNewton driver so the trivial path is independent of the linear-solver backend.
Sourcepub fn set_sqp_warm_start(&mut self, warm: SqpIterates)
pub fn set_sqp_warm_start(&mut self, warm: SqpIterates)
Has the user set algorithm = active-set-sqp? Reads the
string option and matches case-insensitively against the
design-note §7.1 spelling. Any value other than
“active-set-sqp” (including absence) routes to the
default IPM path.
Stash a warm-start iterate for the SQP path. Consumed by
the next optimize_tnlp call when the algorithm option
resolves to active-set-sqp; the IPM path ignores it.
Phase 5c (§6) — the parametric / MPC warm-start hand-off.
The iterate is auto-cleared after use, so a follow-up
solve without an intervening set_sqp_warm_start call
cold-starts.
Sourcepub fn clear_sqp_warm_start(&mut self)
pub fn clear_sqp_warm_start(&mut self)
Drop any pending warm-start iterate without solving.
Sourcepub fn last_sqp_working_set(&self) -> Option<&WorkingSet>
pub fn last_sqp_working_set(&self) -> Option<&WorkingSet>
Return the final QP working set from the most recent SQP
solve, or None if the last solve wasn’t SQP, didn’t
produce a working set (cold-start declared the iterate
optimal before solving any QP), or no SQP solve has run.
Sourcepub fn reoptimize_tnlp(
&mut self,
tnlp: Rc<RefCell<dyn TNLP>>,
) -> ApplicationReturnStatus
pub fn reoptimize_tnlp( &mut self, tnlp: Rc<RefCell<dyn TNLP>>, ) -> ApplicationReturnStatus
Stub. Re-solve with a warm start. Phase 7+.
Sourcepub fn algorithm_builder_from_options(&self) -> AlgorithmBuilder
pub fn algorithm_builder_from_options(&self) -> AlgorithmBuilder
Build an AlgorithmBuilder populated from the app’s
OptionsList. Public so callers wiring the restoration
factory can hand the inner IPM a builder that mirrors the
outer’s mu_strategy/mu_oracle/line-search choices —
matching upstream IpAlgBuilder::BuildRestoIpoptAlgorithm,
which reads the same mu_strategy option with prefix `“resto.”
- prefix` and falls back to the outer setting.
Trait Implementations§
Source§impl Debug for IpoptApplication
impl Debug for IpoptApplication
Auto Trait Implementations§
impl !Freeze for IpoptApplication
impl !RefUnwindSafe for IpoptApplication
impl !Send for IpoptApplication
impl !Sync for IpoptApplication
impl Unpin for IpoptApplication
impl UnsafeUnpin for IpoptApplication
impl !UnwindSafe for IpoptApplication
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
Source§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read more