Skip to main content

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}