Reference

​

Contents

​

​

Index

​

​

PartiallySeparableSolvers.ModPartitionedMethods.PTRUNK — Method
stats = 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.
source
PartiallySeparableSolvers.ModPartitionedMethods.get_expr_tree — Method
expr_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.

source
PartiallySeparableSolvers.ModTrustRegionPartitionedData.Counter — Type
Counter

Substitute 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.
source
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.

source
PartiallySeparableSolvers.ModTrustRegionPartitionedData.partitionedTrunk — Method
stats = 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.

source