Skip to main content

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 batch;
26pub mod conv_check;
27pub mod debug;
28pub mod debug_rank;
29pub mod eq_mult;
30pub mod hess;
31pub mod init;
32pub mod intermediate;
33pub mod ipopt_alg;
34pub mod ipopt_cq;
35pub mod ipopt_data;
36pub mod ipopt_nlp;
37pub mod iter_dump;
38pub mod iterate_dump;
39pub mod iterates_vector;
40pub mod kkt;
41pub mod line_search;
42pub mod mu;
43pub mod output;
44pub mod restoration;
45pub mod sqp;
46pub mod strategy;
47pub mod timing_stats;
48pub mod upstream_options;
49
50pub use application::IpoptApplication;
51pub use batch::{
52    install_pooled_serial_feral_backend, install_serial_feral_backend, solve_nlp_batch,
53    solve_nlp_batch_parallel, solve_nlp_batch_parallel_warm, solve_nlp_batch_warm,
54    FeralBackendPool, NlpBatchResult, NlpBatchSolution, NlpWarmStart,
55};
56pub use ipopt_cq::{IpoptCalculatedQuantities, IpoptCqHandle};
57pub use ipopt_data::{IpoptData, IpoptDataHandle, PdPerturbations};
58pub use ipopt_nlp::{IpoptNlp, Nlp};
59pub use iterates_vector::IteratesVector;
60pub use strategy::AlgorithmStrategy;