Skip to main content

pounce_algorithm/sqp/
mod.rs

1//! Phase 5b — active-set SQP algorithm driver.
2//!
3//! Sits parallel to [`crate::ipopt_alg::IpoptAlgorithm`]. Consumes
4//! the same [`crate::ipopt_nlp::IpoptNlp`] for function /
5//! derivative evaluations and reuses [`crate::line_search`] /
6//! [`crate::conv_check`] machinery where it makes sense; the QP
7//! subproblem solve is delegated to the `pounce-qp` crate
8//! (Phases 5a, 5a.1, 5a.2 of the design note).
9//!
10//! Design reference:
11//! [`docs/research/active-set-sqp-warm-start.md`].
12//!
13//! Selected via [`crate::alg_builder::AlgorithmChoice::ActiveSetSqp`].
14//! The `InteriorPoint` choice (default) remains the
15//! `IpoptAlgorithm` path with no changes.
16
17pub mod bfgs;
18pub mod filter;
19pub mod ipopt_adapter;
20pub mod iterates;
21pub mod lbfgs;
22pub mod line_search;
23pub mod options;
24pub mod problem;
25pub mod qp_assembly;
26pub mod result;
27pub mod sqp_alg;
28pub mod warm_start;
29
30#[cfg(test)]
31mod tests;
32
33pub use bfgs::DampedBfgs;
34pub use filter::{filter_line_search, SqpFilter};
35pub use ipopt_adapter::IpoptNlpAdapter;
36pub use iterates::SqpIterates;
37pub use lbfgs::LBfgs;
38pub use options::{SqpGlobalization, SqpHessianSource, SqpOptions};
39pub use problem::SqpProblemSpec;
40pub use qp_assembly::{SqpQpData, Triplet};
41pub use result::{SqpError, SqpResult, SqpStatus};
42pub use sqp_alg::SqpAlgorithm;
43pub use warm_start::classify_working_set;