Skip to main content

Module default

Module default 

Source
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:

  1. Pull x from nlp.get_starting_x and push each component into the interior of [x_l, x_u] per DefaultIterateInitializer::push_to_interior.
  2. Set s = d(x) (evaluated through CQ on a transient iterate) and push it into the interior of [d_l, d_u].
  3. Initialize y_c, y_d to zero, then revise them with the least-square estimate from crate::eq_mult::least_square::LeastSquareMults when an EqMultCalculator is wired and constr_mult_init_max > 0 (an estimate above that cap is discarded, per upstream).
  4. Initialize z_l, z_u, v_l, v_u to bound_mult_init_val (component-wise) — i.e. bound_mult_init_method = "constant", the only mode pounce implements. "mu-based" is registered for ipopt.opt compatibility and refused rather than silently served as "constant" (gh#604).

Structs§

DefaultIterateInitializer
LeastSquareInitReport
What the safeguarded least-square initializer did. Returned by DefaultIterateInitializer::safeguarded_least_square_x and readable after the solve through crate::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 at debug level on the pounce::algorithm target, 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.