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