Reference
Contents
Index
PartiallySeparableSolvers.ModTrustRegionPartitionedData.CounterPartiallySeparableSolvers.ModPartitionedMethods.PTRUNKPartiallySeparableSolvers.ModPartitionedMethods.get_expr_treePartiallySeparableSolvers.ModTrustRegionPartitionedData.compute_ratioPartiallySeparableSolvers.ModTrustRegionPartitionedData.partitionedTrunk
PartiallySeparableSolvers.ModPartitionedMethods.PTRUNK — Methodstats = PTRUNK(nlp::AbstractNLPModel; name = :plse, kwargs...)PTRUNK (partitioned update solver) return a stats::GenericExecutionStats from a partitioned quasi-Newton trust-region method. Several variants are available via the optional argument name. Each variant approximate the element-Hessians differently, some use dense matrices while others use linear-operators. Variants with dense element-Hessian approximations:
- PBFGS with
name=:pbfgs, every element-Hessian approximation is updated with BFGS; - PSR1 with
name=:psr1, every element-Hessian approximation is updated with SR1; - PSE with
name=:pse, every element-Hessian approximation is updated with BFGS or SR1 if the curvature condition doesn't hold.
Variants with linear-operator element-Hessian approximations:
- PLBFGS with
name=:plbfgs, every element-Hessian approximations is a LBFGS operator; - PLSR1 with
name=:plsr1, every element-Hessian approximations is a LSR1 operator; - PLSE with
name=:plse, by default, every element-Hessian approximations is a LBFGS operator as long as the curvature condition holds, otherwise it becomes a LSR1 operator.
PartiallySeparableSolvers.ModPartitionedMethods.get_expr_tree — Methodexpr_tree, n, x0 = get_expr_tree(nlp::MathOptNLPModel; x0::Vector{T} = copy(nlp.meta.x0), kwargs...) where {T <: Number}
expr_tree, n, x0 = get_expr_tree(adnlp::ADNLPModel; x0::Vector{T} = copy(adnlp.meta.x0), kwargs...) where {T <: Number}Return the expr_tree, the size n and the initial point x0 from either a MathOptNLPModel or a ADNLPModel.
PartiallySeparableSolvers.ModTrustRegionPartitionedData.Counter — TypeCounterSubstitute to NLPModels.Counters since the partitioned methods don't relie (for now) on PartiallySeparableNLPModels. It has fields:
neval_obj::Int: count objective evaluations;neval_grad::Int: count gradient computations;neval_Hprod::Int: count Hessian-approximation-vector products.
PartiallySeparableSolvers.ModTrustRegionPartitionedData.compute_ratio — Methodρₖ = compute_ratio(x::AbstractVector{T}, fₖ::T, sₖ::Vector{T}, part_data::PartiallySeparableNLPModels.PartitionedData, B::AbstractLinearOperator{T}, gₖ::AbstractVector{T}; cpt::Counter = Counter(0, 0, 0))Compute the ratio between the actual loss and the expected loss using part_data, the current point x and the step s. g_k must be the gradient at x and B the linear-operator paired to part_data.
PartiallySeparableSolvers.ModTrustRegionPartitionedData.partitionedTrunk — Methodstats = partitionedTrunk(nlp::AbstractNLPModel, part_data::PartiallySeparableNLPModels.PartitionedData; max_eval::Int = 10000, max_iter::Int = 10000, start_time::Float64 = time(), max_time::Float64 = 30.0, ϵ::Float64 = 1e-6, name = part_data.name, name_method::String = "Trust-region " * String(name), kwargs...)Produce a GenericExecutionStats for a partitioned quasi-Newton trust-region method. It requires the partitioned structures of part_data::PartitionedDate paired with an nlp model. The counter nlp.counters are updated with the informations of ModTrustRegionPartitionedData.Counter to ease the definition of a GenericExecutionStats.