Progressive-hedging solvers
Documentation for StochasticPrograms.jl's progressive-hedging solvers.
Index
StochasticPrograms.ProgressiveHedging.AbstractProgressiveHedgingAttributeStochasticPrograms.ProgressiveHedging.AdaptiveStochasticPrograms.ProgressiveHedging.AdaptivePenalizationStochasticPrograms.ProgressiveHedging.AsynchronousExecutionStochasticPrograms.ProgressiveHedging.DualToleranceStochasticPrograms.ProgressiveHedging.FixedStochasticPrograms.ProgressiveHedging.FixedPenalizationStochasticPrograms.ProgressiveHedging.OptimizerStochasticPrograms.ProgressiveHedging.PenalizationParameterStochasticPrograms.ProgressiveHedging.PenalizerStochasticPrograms.ProgressiveHedging.PenaltytermStochasticPrograms.ProgressiveHedging.PrimalToleranceStochasticPrograms.ProgressiveHedging.ProgressiveHedgingAlgorithmStochasticPrograms.ProgressiveHedging.RawPenalizationParameterStochasticPrograms.ProgressiveHedging.SerialExecutionStochasticPrograms.ProgressiveHedging.SynchronousExecutionStochasticPrograms.ProgressiveHedging.get_penalization_attributeStochasticPrograms.ProgressiveHedging.set_penalization_attributeStochasticPrograms.ProgressiveHedging.set_penalization_attributeStochasticPrograms.ProgressiveHedging.set_penalization_attributesStochasticPrograms.ProgressiveHedging.set_penalization_attributes
API
StochasticPrograms.ProgressiveHedging.ProgressiveHedgingAlgorithm — TypeProgressiveHedgingAlgorithmFunctor object for the progressive-hedging algorithm. Create using the ProgressiveHedgingSolver factory function and then pass to a StochasticPrograms.jl model.
...
Parameters
τ::AbstractFloat = 1e-6: Relative tolerance for convergence checks.log::Bool = true: Specifices if progressive-hedging procedure should be logged on standard output or not.
...
StochasticPrograms.ProgressiveHedging.AbstractProgressiveHedgingAttribute — TypeAbstractProgressiveHedgingAttributeAbstract supertype for attribute objects specific to the progressive-hedging algorithm.
StochasticPrograms.ProgressiveHedging.DualTolerance — TypeDualToleranceAn optimizer attribute for specifying the dual tolerance in the progressive-hedging algorithm.
StochasticPrograms.ProgressiveHedging.PenalizationParameter — TypePenalizationParameterAbstract supertype for penalization-specific attributes.
StochasticPrograms.ProgressiveHedging.Penalizer — TypeRegularizerAn optimizer attribute for specifying a penalization procedure to be used in the progressive-hedging algorithm. Options are:
StochasticPrograms.ProgressiveHedging.Penaltyterm — TypePenaltytermAn optimizer attribute for specifying what proximal term should be used in subproblemsof the progressive-hedging algorithm. Options are:
Quadratic(default)LinearizedInfNormManhattanNorm
StochasticPrograms.ProgressiveHedging.PrimalTolerance — TypePrimalToleranceAn optimizer attribute for specifying the primal tolerance in the progressive-hedging algorithm.
StochasticPrograms.ProgressiveHedging.Optimizer — TypeOptimizer(; <keyword arguments>)Return a progressive-hedging optimizer.
...
Arguments
subproblem_optimizer::AbstractOptimizer: MathOptInterface solver capable of solving quadratic programs.penalty::AbstractPenalizer = Fixed(): Specify penalty update procedure (Fixed, Adaptive)execution::AbstractExecuter = Serial: Specify how algorithm should be executed (Serial, Synchronous, Asynchronous). Distributed variants requires worker cores.penaltyterm::PenaltyTerm = Quadratic: Specify penaltyterm variant (Quadratic,Linearized,InfNorm, [ManhattanNorm][@ref])- <keyword arguments>: Algorithm specific parameters, consult individual docstrings (see above list) for list of possible arguments and default values.
...
StochasticPrograms.ProgressiveHedging.get_penalization_attribute — Methodget_penalization_attribute(stochasticprogram::StochasticProgram, name::String)Return the value associated with the penalization-specific attribute named name in stochasticprogram.
See also: set_penalization_attribute, set_penalization_attributes.
StochasticPrograms.ProgressiveHedging.set_penalization_attribute — Methodset_penalization_attribute(stochasticprogram::StochasticProgram, name::Union{Symbol, String}, value)Sets the penalization-specific attribute identified by name to value.
StochasticPrograms.ProgressiveHedging.set_penalization_attributes — Methodset_penalization_attributes(stochasticprogram::StochasticProgram, pairs::Pair...)Given a list of attribute => value pairs or a collection of keyword arguments, calls set_penalization_attribute(stochasticprogram, attribute, value) for each pair.
Execution
StochasticPrograms.ProgressiveHedging.SerialExecution — TypeSerialExecutionFunctor object for using serial execution in a progressive-hedging algorithm. Create by supplying a Serial object through execution in the ProgressiveHedgingSolver factory function and then pass to a StochasticPrograms.jl model.
StochasticPrograms.ProgressiveHedging.SynchronousExecution — TypeSynchronousExecutionFunctor object for using synchronous execution in a progressive-hedging algorithm (assuming multiple Julia cores are available). Create by supplying a Synchronous object through execution in the ProgressiveHedgingSolver factory function and then pass to a StochasticPrograms.jl model.
StochasticPrograms.ProgressiveHedging.AsynchronousExecution — TypeAsynchronousExecutionFunctor object for using asynchronous execution in a progressive-hedging algorithm (assuming multiple Julia cores are available). Create by supplying an Asynchronous object through execution in the ProgressiveHedgingSolver factory function and then pass to a StochasticPrograms.jl model.
Penalties
StochasticPrograms.ProgressiveHedging.set_penalization_attribute — Functionset_penalization_attribute(stochasticprogram::StochasticProgram, name::Union{Symbol, String}, value)Sets the penalization-specific attribute identified by name to value.
StochasticPrograms.ProgressiveHedging.set_penalization_attributes — Functionset_penalization_attributes(stochasticprogram::StochasticProgram, pairs::Pair...)Given a list of attribute => value pairs or a collection of keyword arguments, calls set_penalization_attribute(stochasticprogram, attribute, value) for each pair.
StochasticPrograms.ProgressiveHedging.RawPenalizationParameter — TypeRawPenalizationParameterAn optimizer attribute used for raw parameters of the penalizer. Defers to RawParameter.
StochasticPrograms.ProgressiveHedging.FixedPenalization — TypeFixedPenalizationFunctor object for using fixed penalty in a progressive-hedging algorithm. Create by supplying a Fixed object through penalty in the ProgressiveHedgingSolver factory function and then pass to a StochasticPrograms.jl model.
...
Parameters
r::T = 1.00: Fixed penalty
...
StochasticPrograms.ProgressiveHedging.Fixed — TypeFixedFactory object for FixedPenalization. Pass to penalty in the ProgressiveHedgingSolver factory function. See ?FixedPenalization for parameter descriptions.
StochasticPrograms.ProgressiveHedging.AdaptivePenalization — TypeAdaptivePenalizationFunctor object for using adaptive penalty in a progressive-hedging algorithm. Create by supplying an Adaptive object through penalty in the ProgressiveHedgingSolver factory function and then pass to a StochasticPrograms.jl model.
...
Parameters
ζ::T = 0.1: Used to calculate the initial penalty. Non-anticipativity in the initial decision is enforced more as ζ increase.γ₁::T = 1e-5: Tolerance for primal changes being significantγ₂::T = 0.01: Tolerance for primal changes dominating dual changesγ₃::T = 0.25: Tolerance for dual changes dominating primal changesσ::T = 1e-5: Tolerance for the quadratic penalty dominating the Lagrangianα::T = 0.95: Penalty decrease after primal changes dominating dual changesθ::T = 1.1: Penalty increase after dual changes dominating primal changesν::T = 0.1: Tolerance for significant non-anticipativity violationβ::T = 1.1: Penalty increase after increased non-anticipativity violationη::T = 1.25: Default penalty increase in the default case
...
StochasticPrograms.ProgressiveHedging.Adaptive — TypeAdaptiveFactory object for AdaptivePenalization. Pass to penalty in the ProgressiveHedgingSolver factory function. See ?AdaptivePenalization for parameter descriptions.