Skip to main content

Crate pounce_sensitivity

Crate pounce_sensitivity 

Source
Expand description

Sensitivity analysis for POUNCE — port of upstream Ipopt’s contrib/sIPOPT/.

§Status

Phases A–C complete. Wired today:

Verified against upstream sIPOPT 3.14.19’s parametric_cpp golden output to 1e-8 (see tests/parametric_cpp.rs); the standalone pounce_sens AMPL driver in pounce-cli matches sensitivity_amplsolver’s _sens_sol output on representative .nl problems.

Phase D progress (per pounce#7):

§Algorithmic reference

Pirnay, H., López-Negrete, R., and Biegler, L.T. (2012). Optimal sensitivity based on IPOPT. Mathematical Programming Computation, 4(4), 307–331. DOI: 10.1007/s12532-012-0043-2.

Verified 2026-05-14 via Crossref: title, authors (Hans Pirnay; Rodrigo López-Negrete; Lorenz T. Biegler), MPC volume 4 issue 4 pp 307–331.

§Upstream source mirror

Port targets ref/Ipopt/contrib/sIPOPT/src/ in this repo (EPL-2.0, © Hans Pirnay 2009–2011 per the file headers). Each public item in this crate documents the upstream symbol it mirrors with file path and (where stable) line numbers.

Re-exports§

pub use algorithm_backsolver::PdSensBacksolver;
pub use backsolver::DenseLuBacksolver;
pub use backsolver::SensBacksolver;
pub use convenience::SensResult;
pub use convenience::SensSolve;
pub use eigen::symmetric_eigen;
pub use p_calculator::IndexPCalculator;
pub use p_calculator::PCalculator;
pub use reduced_hessian::compute_reduced_hessian;
pub use schur_data::IndexSchurData;
pub use schur_data::SchurData;
pub use schur_driver::DenseGenSchurDriver;
pub use schur_driver::SchurDriver;
pub use sens_app::register_options;
pub use sens_app::SensApplication;
pub use sens_app::SensOptions;
pub use solver::ConvergedState;
pub use solver::Solver;
pub use solver::SolverError;
pub use step_calc::SensStepCalc;
pub use step_calc::StdStepCalc;
pub use step_calc::WithBacksolver;

Modules§

algorithm_backsolver
PdSensBacksolverSensBacksolver adapter over the converged PdFullSpaceSolver from pounce-algorithm.
backsolver
SensBacksolver trait — abstract backsolver against a converged KKT factor.
boundcheck
Single-pass bound clamping for the parametric sensitivity step.
convenience
High-level “solve, then run sensitivity” entry point for callers that don’t want to write the set_on_converged callback + PdSensBacksolver + IndexSchurData plumbing by hand.
eigen
Symmetric eigendecomposition for small dense matrices via the cyclic Jacobi rotation method.
p_calculator
PCalculator trait surface.
reduced_hessian
ReducedHessianCalculator — port of upstream SensReducedHessianCalculator.{hpp,cpp}.
schur_data
SchurData trait surface and the IndexSchurData flavor.
schur_driver
SchurDriver trait + DenseGenSchurDriver implementation.
sens_app
SensApplication — high-level entry point for sensitivity analysis.
solver
Solver — value-typed session API that holds an IpoptApplication, its TNLP, and the converged KKT factor between calls.
step_calc
SensStepCalc trait — orchestrates the sensitivity step computation.