pounce-algorithm 0.4.0

Algorithm-side core for POUNCE (port of Ipopt's src/Algorithm/): IteratesVector, IpoptData, CalculatedQuantities, KKT solvers, line search, mu update, conv check, initializer, IpoptAlg main loop, AlgBuilder.
Documentation

pounce-algorithm

The interior-point core of POUNCE. Port of Ipopt's src/Algorithm/. Wires together the iterate, lazy-cache, KKT, line-search, μ-update, convergence-check, and Hessian-approximation strategies into the main IpoptAlgorithm::optimize() loop.

Internal crate. The user-facing entry point is IpoptApplication, re-exported as pounce_algorithm::IpoptApplication. Callers should implement TNLP and call IpoptApplication::optimize_tnlp(...).

Subsystems

Module What it does Upstream
iterates_vector Compound iterate (x, s, λ, ν, z_L, z_U) IpIteratesVector.{hpp,cpp}
ipopt_data Mutable state (current iterate, perturbations, μ, ...) IpIpoptData.{hpp,cpp}
ipopt_cq Lazy-cached derived quantities (norms, residuals, ...) IpIpoptCalculatedQuantities.*
kkt Augmented system, perturbation handler, PD full-space solver, search-direction calculator Ip{AugSystemSolver,PdFullSpaceSolver,SearchDirCalculator}.*
line_search Filter + backtracking, second-order correction, watchdog IpFilterLineSearch.{hpp,cpp}
mu Barrier-parameter update (monotone + Mehrotra adaptive) IpMonotoneMuUpdate.{hpp,cpp}, IpAdaptiveMuUpdate.*
conv_check Optimality / acceptable-level / iteration-cap termination IpOptErrorConvCheck.{hpp,cpp}
eq_mult Equality-multiplier initial estimate IpEqMultCalculator.{hpp,cpp}
init Starting-point projection and bound-multiplier seeding IpDefaultIterateInitializer.*
hess Exact / quasi-Newton Hessian dispatch IpHessianUpdater.{hpp,cpp}
ipopt_alg The main optimize() loop IpIpoptAlg.{hpp,cpp}
alg_builder Strategy wire-up (BuildBasicAlgorithm) IpAlgBuilder.{hpp,cpp}
application IpoptApplication entry point IpoptApplication.{hpp,cpp}
sqp Active-set SQP outer loop (Phase 5b) new (pounce-only)
iterate_dump --dump iterates:{summary,full} trajectory writer (#68) new (pounce-only)
timing_stats Wall-clock accumulators IpTimingStatistics.{hpp,cpp}
output Per-iteration table IpOrigIterationOutput.{hpp,cpp}

Choosing strategies

AlgorithmBuilder carries enum knobs:

  • AlgorithmChoiceIpoptAlgorithm (default, the interior-point filter line-search) or ActiveSetSqp (Phase 5b parametric active-set SQP, backed by pounce-qp).
  • LinearSolverChoiceFeral (default) or Ma57 (requires ma57).
  • LinearSystemScalingChoiceNone, Mc19 (HSL), or Ruiz (pure-Rust).
  • MuStrategyChoiceMonotone (default) or Adaptive (Mehrotra probing-corrector cascade).
  • HessianApproxChoiceExact (default) or LimitedMemory (L-BFGS).
  • LineSearchChoiceFilter.
  • NlpScalingChoiceNone, Gradient, User.

Most users won't touch the builder directly — IpoptApplication::new() plus the option machinery covers the standard knobs (linear_solver, hessian_approximation, mu_strategy, etc.) and matches upstream option names verbatim.

Restoration

When the line search cannot accept any step, control switches into the restoration phase (port of Ipopt's Algorithm/Resto*).

License

EPL-2.0.