Skip to main content

Module penalty_acceptor

Module penalty_acceptor 

Source
Expand description

Penalty line-search acceptor — port of IpPenaltyLSAcceptor.{hpp,cpp}.

Phase 10. Backs line_search_method = penalty. Maintains a penalty parameter ν that’s bumped up whenever the predicted reduction would otherwise be non-monotone:

  ν⁺ = (∇φᵀ δ + ½ δᵀ W δ) / ((1 − ρ) · θ)
  if ν < ν⁺ then ν ← ν⁺ + ν_inc

Acceptance test (Armijo on the penalty merit M = φ + ν · θ, upstream IpPenaltyLSAcceptor.cpp:CheckAcceptabilityOfTrialPoint):

  pred(α) = − α · ∇φᵀδ − ½ α² · δᵀWδ + ν · (θ − θ₂(α))
  ared(α) = (φ_ref + ν · θ_ref) − (φ_trial + ν · θ_trial)
  accept iff Compare_le(η · pred, ared, |φ_ref + ν · θ_ref|)

where θ₂(α) is the 1-norm of the linearised constraint infeasibility at the predicted step:

  θ₂(α) = ‖c(x) + α · J_c · δx‖₁ + ‖d(x) − s + α · (J_d · δx − δs)‖₁

init_this_line_search (driven by the backtracking driver before the α-loop) snapshots the reference state and the linearisation vectors, then runs update_nu. check_trial_point reads the snapshot to compute pred/ared per α — matching upstream lines 188-247.

Structs§

PenaltyLsAcceptor