pounce_algorithm/init/trait.rs
1//! `IterateInitializer` trait — port of `IpIterateInitializer.hpp`.
2
3use crate::ipopt_cq::IpoptCqHandle;
4use crate::ipopt_data::IpoptDataHandle;
5use crate::ipopt_nlp::IpoptNlp;
6use crate::kkt::aug_system_solver::AugSystemSolver;
7use std::cell::RefCell;
8use std::rc::Rc;
9
10pub trait IterateInitializer {
11 /// Populate `IpoptData::curr` with an initial iterate. Mirrors
12 /// `IterateInitializer::SetInitialIterates`. The implementation
13 /// can use `aug_solver` for least-square multiplier estimates;
14 /// callers that don't need that may pass any solver — concrete
15 /// initializers consult it only if their option settings require
16 /// it.
17 fn set_initial_iterates(
18 &mut self,
19 data: &IpoptDataHandle,
20 cq: &IpoptCqHandle,
21 nlp: &Rc<RefCell<dyn IpoptNlp>>,
22 aug_solver: &mut dyn AugSystemSolver,
23 ) -> bool;
24}