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