pounce_algorithm/lib.rs
1//! POUNCE algorithm-side core.
2//!
3//! Port of Ipopt's `src/Algorithm/`: the `IteratesVector` data
4//! object, the mutable `IpoptData` state, the `IpoptCalculatedQuantities`
5//! lazy-cache layer, the KKT subsystem (augmented system, perturbation
6//! handler, full-space PD solver, search-direction calculator), the
7//! line search (filter + backtracking), barrier-update strategies
8//! (monotone now, adaptive in Phase 10), convergence check, iterate
9//! initialization, equality-multiplier estimation, Hessian update
10//! strategies (exact + L-BFGS/SR1 in Phase 8), iteration output,
11//! timing statistics, the algorithm builder, and the main
12//! `IpoptAlgorithm::optimize()` loop.
13//!
14//! NLP scaling (gradient-based objective/constraint scaling) lives
15//! NLP-side in [`pounce_nlp::orig_ipopt_nlp`].
16//!
17//! Strategies are wired together by [`alg_builder::AlgorithmBuilder`]
18//! per the dependency order documented in
19//! `ref/Ipopt/AGENT_REFERENCE/ARCHITECTURE.md` ยง"BuildBasicAlgorithm".
20
21#![cfg_attr(test, allow(clippy::unwrap_used, clippy::expect_used))]
22
23pub mod alg_builder;
24pub mod application;
25pub mod conv_check;
26pub mod debug;
27pub mod debug_rank;
28pub mod eq_mult;
29pub mod hess;
30pub mod init;
31pub mod intermediate;
32pub mod ipopt_alg;
33pub mod ipopt_cq;
34pub mod ipopt_data;
35pub mod ipopt_nlp;
36pub mod iter_dump;
37pub mod iterate_dump;
38pub mod iterates_vector;
39pub mod kkt;
40pub mod line_search;
41pub mod mu;
42pub mod output;
43pub mod restoration;
44pub mod sqp;
45pub mod strategy;
46pub mod timing_stats;
47pub mod upstream_options;
48
49pub use application::IpoptApplication;
50pub use ipopt_cq::{IpoptCalculatedQuantities, IpoptCqHandle};
51pub use ipopt_data::{IpoptData, IpoptDataHandle, PdPerturbations};
52pub use ipopt_nlp::{IpoptNlp, Nlp};
53pub use iterates_vector::IteratesVector;
54pub use strategy::AlgorithmStrategy;