Expand description
l1-merit backtracking line search for SQP. The classic Han-Powell scheme:
φ(x; ν) = f(x) + ν · violation(x)
violation(x) = Σ_i max(bl_i − c_i, 0) + max(c_i − bu_i, 0)
+ Σ_j max(xl_j − x_j, 0) + max(x_j − xu_j, 0)Step p is a descent direction of φ(·; ν) whenever
ν ≥ ‖λ_g‖_∞ (Nocedal-Wright §18.4). We adapt ν at every
iteration as ν ← max(ν, ‖λ_g_qp‖_∞ + buffer) so the QP-
derived multipliers are always dominated.
Backtracking is plain Armijo:
φ(x + αp) ≤ φ(x) + η · α · D_p φ(x; ν)with predicted derivative
D_p φ ≈ ∇f(x)ᵀ p − ν · violation(x)(correct under the standard assumption that the QP step reduces the linearized constraint violation to zero).
Phase 5b commit 5 deliverable. The filter alternative
(Fletcher-Leyffer 2002) is opt-in via
SqpGlobalization::Filter and lands as a follow-up.
Structs§
Functions§
- l1_
merit_ line_ search - Adapt
νagainst the QP multiplier magnitude and run Armijo backtracking on the l1 merit function. Returns the accepted step length, the updated ν, and the resulting trial state (x_new,f_new,c_new) so the caller doesn’t have to re-evaluate. - l1_
violation - l1 constraint + bound violation
‖max(bl − c, 0) + max(c − bu, 0)‖_1(plus the same for variable bounds). Infinite bounds are treated as never violated.