Progressive-hedging solvers
Documentation for StochasticPrograms.jl
's progressive-hedging solvers.
Index
StochasticPrograms.ProgressiveHedging.AbstractProgressiveHedgingAttribute
StochasticPrograms.ProgressiveHedging.Adaptive
StochasticPrograms.ProgressiveHedging.AdaptivePenalization
StochasticPrograms.ProgressiveHedging.AsynchronousExecution
StochasticPrograms.ProgressiveHedging.DualTolerance
StochasticPrograms.ProgressiveHedging.Fixed
StochasticPrograms.ProgressiveHedging.FixedPenalization
StochasticPrograms.ProgressiveHedging.Optimizer
StochasticPrograms.ProgressiveHedging.PenalizationParameter
StochasticPrograms.ProgressiveHedging.Penalizer
StochasticPrograms.ProgressiveHedging.PenaltyTerm
StochasticPrograms.ProgressiveHedging.PrimalTolerance
StochasticPrograms.ProgressiveHedging.ProgressiveHedgingAlgorithm
StochasticPrograms.ProgressiveHedging.RawPenalizationParameter
StochasticPrograms.ProgressiveHedging.SerialExecution
StochasticPrograms.ProgressiveHedging.SynchronousExecution
StochasticPrograms.ProgressiveHedging.get_penalization_attribute
StochasticPrograms.ProgressiveHedging.set_penalization_attribute
StochasticPrograms.ProgressiveHedging.set_penalization_attribute
StochasticPrograms.ProgressiveHedging.set_penalization_attributes
StochasticPrograms.ProgressiveHedging.set_penalization_attributes
API
StochasticPrograms.ProgressiveHedging.ProgressiveHedgingAlgorithm
— TypeProgressiveHedgingAlgorithm
Functor 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
— TypeAbstractProgressiveHedgingAttribute
Abstract supertype for attribute objects specific to the progressive-hedging algorithm.
StochasticPrograms.ProgressiveHedging.DualTolerance
— TypeDualTolerance
An optimizer attribute for specifying the dual tolerance in the progressive-hedging algorithm.
StochasticPrograms.ProgressiveHedging.PenalizationParameter
— TypePenalizationParameter
Abstract supertype for penalization-specific attributes.
StochasticPrograms.ProgressiveHedging.Penalizer
— TypeRegularizer
An optimizer attribute for specifying a penalization procedure to be used in the progressive-hedging algorithm. Options are:
StochasticPrograms.ProgressiveHedging.PenaltyTerm
— TypePenaltyTerm
An optimizer attribute for specifying what proximal term should be used in subproblemsof the progressive-hedging algorithm. Options are:
Quadratic
(default)Linearized
InfNorm
ManhattanNorm
StochasticPrograms.ProgressiveHedging.PrimalTolerance
— TypePrimalTolerance
An 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
— TypeSerialExecution
Functor 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
— TypeSynchronousExecution
Functor 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
— TypeAsynchronousExecution
Functor 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
— TypeRawPenalizationParameter
An optimizer attribute used for raw parameters of the penalizer. Defers to RawOptimizerAttribute
.
StochasticPrograms.ProgressiveHedging.FixedPenalization
— TypeFixedPenalization
Functor 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
— TypeFixed
Factory object for FixedPenalization
. Pass to penalty
in the ProgressiveHedgingSolver
factory function. See ?FixedPenalization for parameter descriptions.
StochasticPrograms.ProgressiveHedging.AdaptivePenalization
— TypeAdaptivePenalization
Functor 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
— TypeAdaptive
Factory object for AdaptivePenalization
. Pass to penalty
in the ProgressiveHedgingSolver
factory function. See ?AdaptivePenalization for parameter descriptions.