Barrier strategies
The structure AbstractBarrierUpdate encodes the barrier strategy currently used in MadNLP. The strategy is defined by the option barrier when initializing MadNLP.
MadNLP.AbstractBarrierUpdate — TypeAbstractBarrierUpdate{T}Abstraction used to implement the different rules to update the barrier parameter. The barrier is updated using either a monotone rule or an adaptive rule.
MadNLP.update_barrier! — Functionupdate_barrier!(barrier::AbstractBarrierUpdate{T}, solver::AbstractMadNLPSolver{T}, sc::T) where TUpdate barrier using the rule in barrier. Store the results in solver.mu.
Monotone strategy
By default, MadNLP uses a monotone strategy, following the Fiacco-McCormick approach.
MadNLP.MonotoneUpdate — TypeMonotoneUpdate{T} <: AbstractBarrierUpdate{T}Update the barrier parameter using the classical Fiacco-McCormick monotone rule.
Adaptive strategies
As an alternative to the monotone strategy, MadNLP implements several adaptive rules, all described in this article.
MadNLP.AbstractAdaptiveUpdate — TypeAbstractAdaptiveUpdate{T} <: AbstractBarrierUpdate{T}Abstraction used to implement the adaptive barrier updates described in [Nocedal2009].
References
[Nocedal2009] Nocedal, J., Wächter, A., & Waltz, R. A. (2009). Adaptive barrier update strategies for nonlinear interior methods. SIAM Journal on Optimization, 19(4), 1674-1693.
MadNLP.QualityFunctionUpdate — TypeQualityFunctionUpdate{T} <: AbstractAdaptiveUpdate{T}Find the barrier parameter using a quality function encoding the ℓ1-norm of the KKT violations. At each IPM iteration, the minimum of the quality function is found using a Golden search algorithm.
If no sufficient progress is made, the barrier fallbacks to a monotone rule.
References
The algorithm is described in [Nocedal2009, Section 4].
MadNLP.LOQOUpdate — TypeLOQOUpdate{T} <: AbstractAdaptiveUpdate{T}Find the barrier parameter using the rule used in the LOQO solver. The rule is explicited in [Nocedal2009, Eq (3.6)].
If no sufficient progress is made, the barrier fallbacks to a monotone rule.
References
The algorithm is described in [Nocedal2009, Section 3].