Expand description
Primal-dual perturbation handler — port of
Algorithm/IpPDPerturbationHandler.{hpp,cpp}.
Owns the four perturbations (δ_x, δ_s, δ_c, δ_d) that the
PDFullSpaceSolver adds to the augmented system to recover correct
inertia / non-singularity. Implements upstream’s full state
machine:
- [
Self::consider_new_system] — first call per new aug-system. Finalizes the previous trial’s degeneracy probe, decides whether to start a new degeneracy test, and seedsδ_c/δ_dif the Jacobian is already known to be degenerate (orperturb_always_cdis on). - [
Self::perturb_for_singular] — escalation step taken when MA57 reportsSingular. - [
Self::perturb_for_wrong_inertia] — escalation step taken when the factor’s negative-eigenvalue count disagrees with what the KKT structure requires. - [
Self::current_perturbation] — read the most recently committed(δ_x, δ_s, δ_c, δ_d).
Returns false when no further escalation is possible (caller must
enter the restoration phase). The info_string-mutation calls in
upstream are emitted via the IpoptData handle the caller passes
in; if None is passed, the strings are simply dropped.
Structs§
- Deltas
- Snapshot of the four perturbations after a state-machine call.
- PdPerturbation
Handler - State + algorithmic parameters. Defaults mirror
IpPDPerturbationHandler.cpp::RegisterOptions.
Enums§
- Degen
Type - Degeneracy state — port of
DegenType. - Trial
Status - Trial state — port of upstream
TrialStatusenum.