Expand description
Default iterate initializer — port of
Algorithm/IpDefaultIterateInitializer.{hpp,cpp}.
Bound push, slack init, multiplier init (constant / mu-based /
least-square via the EqMultCalculator). Constants below match
upstream’s defaults from RegisterOptions.
set_initial_iterates ports the upstream sequence:
- Pull
xfromnlp.get_starting_xand push each component into the interior of[x_l, x_u]perDefaultIterateInitializer::push_to_interior. - Set
s = d(x)(evaluated through CQ on a transient iterate) and push it into the interior of[d_l, d_u]. - Initialize
y_c,y_dto zero, then revise them with the least-square estimate fromcrate::eq_mult::least_square::LeastSquareMultswhen anEqMultCalculatoris wired andconstr_mult_init_max > 0(an estimate above that cap is discarded, per upstream). - Initialize
z_l,z_u,v_l,v_utobound_mult_init_val(component-wise) — i.e.bound_mult_init_method = "constant", the only mode pounce implements."mu-based"is registered foripopt.optcompatibility and refused rather than silently served as"constant"(gh#604).
Structs§
- Default
Iterate Initializer - Least
Square Init Report - What the safeguarded least-square initializer did. Returned by
DefaultIterateInitializer::safeguarded_least_square_xand readable after the solve throughcrate::application::IpoptApplication::least_square_init_report, so a starting point that silently got worse is visible somewhere other than the iteration count. It is primarily a programmatic accessor; since gh#616 the same fields are also emitted once per solve atdebuglevel on thepounce::algorithmtarget, so a fixture sweep can attribute a moving model without a source patch (RUST_LOG=pounce::algorithm=debug). Nothing prints it at the default log level.