L-shaped solvers
Documentation for StochasticPrograms.jl's quasi-gradient solvers.
Index
StochasticPrograms.QuasiGradient.AbstractQuasiGradientAttributeStochasticPrograms.QuasiGradient.AfterMaximumIterationsStochasticPrograms.QuasiGradient.AndersonAcceleratedProximalStochasticPrograms.QuasiGradient.AndersonAccelerationStochasticPrograms.QuasiGradient.AtGradientThresholdStochasticPrograms.QuasiGradient.AtObjectiveThresholdStochasticPrograms.QuasiGradient.BBStochasticPrograms.QuasiGradient.BBStepStochasticPrograms.QuasiGradient.ConstantStochasticPrograms.QuasiGradient.ConstantStepStochasticPrograms.QuasiGradient.DiminishingStochasticPrograms.QuasiGradient.DiminishingStepStochasticPrograms.QuasiGradient.DryFrictionStochasticPrograms.QuasiGradient.DryFrictionProximalStochasticPrograms.QuasiGradient.GradientThresholdStochasticPrograms.QuasiGradient.MaximumIterationsStochasticPrograms.QuasiGradient.NesterovStochasticPrograms.QuasiGradient.NesterovProximalStochasticPrograms.QuasiGradient.NoProxStochasticPrograms.QuasiGradient.NoProximalStochasticPrograms.QuasiGradient.ObjectiveThresholdStochasticPrograms.QuasiGradient.OptimizerStochasticPrograms.QuasiGradient.PolyakStochasticPrograms.QuasiGradient.PolyakStepStochasticPrograms.QuasiGradient.PolyhedronStochasticPrograms.QuasiGradient.PolyhedronProjectionStochasticPrograms.QuasiGradient.ProxStochasticPrograms.QuasiGradient.ProxParameterStochasticPrograms.QuasiGradient.ProxPenaltyTermStochasticPrograms.QuasiGradient.QuasiGradientAlgorithmStochasticPrograms.QuasiGradient.RawProxParameterStochasticPrograms.QuasiGradient.RawStepParameterStochasticPrograms.QuasiGradient.RawTerminationParameterStochasticPrograms.QuasiGradient.SerialExecutionStochasticPrograms.QuasiGradient.SmoothSubProblemStochasticPrograms.QuasiGradient.SmoothedStochasticPrograms.QuasiGradient.StepParameterStochasticPrograms.QuasiGradient.StepSizeStochasticPrograms.QuasiGradient.SubProblemStochasticPrograms.QuasiGradient.SubProblemsStochasticPrograms.QuasiGradient.SynchronousExecutionStochasticPrograms.QuasiGradient.TerminationStochasticPrograms.QuasiGradient.TerminationParameterStochasticPrograms.QuasiGradient.UnalteredStochasticPrograms.QuasiGradient.get_prox_attributeStochasticPrograms.QuasiGradient.get_step_attributeStochasticPrograms.QuasiGradient.get_termination_attributeStochasticPrograms.QuasiGradient.set_prox_attributeStochasticPrograms.QuasiGradient.set_prox_attributeStochasticPrograms.QuasiGradient.set_prox_attributesStochasticPrograms.QuasiGradient.set_prox_attributesStochasticPrograms.QuasiGradient.set_step_attributeStochasticPrograms.QuasiGradient.set_step_attributeStochasticPrograms.QuasiGradient.set_step_attributesStochasticPrograms.QuasiGradient.set_step_attributesStochasticPrograms.QuasiGradient.set_termination_attributeStochasticPrograms.QuasiGradient.set_termination_attributeStochasticPrograms.QuasiGradient.set_termination_attributesStochasticPrograms.QuasiGradient.set_termination_attributes
API
StochasticPrograms.QuasiGradient.QuasiGradientAlgorithm — TypeQuasiGradientAlgorithmFunctor object for the quasi-gradient algorithm.
...
Algorithm parameters
log::Bool = true: Specifices if quasi-gradient procedure should be logged on standard output or not.
...
StochasticPrograms.QuasiGradient.AbstractQuasiGradientAttribute — TypeAbstractQuasiGradientAttributeAbstract supertype for attribute objects specific to the L-shaped algorithm.
StochasticPrograms.QuasiGradient.Prox — TypeProxAn optimizer attribute for specifying a prox policy to be used in the quasi-gradient algorithm. Options are:
NoProx: Unconstrained.Polyhedron: QP projection on polyhedral space ?PolyhedronProjection for parameter descriptions. (default)AndersonAcceleration: Anderson acceleration of inner prox step ?AndersonAcceleratedProximal for parameter descriptions.Nesterov: Nesterov acceleration of inner prox step ?NesterovProximal for parameter descriptions.DryFriction: Dry-friction acceleration of inner prox step ?DryFrictionProximal for parameter descriptions.
StochasticPrograms.QuasiGradient.ProxParameter — TypeProxParameterAbstract supertype for prox-specific attributes.
StochasticPrograms.QuasiGradient.StepParameter — TypeStepParameterAbstract supertype for step-specific attributes.
StochasticPrograms.QuasiGradient.StepSize — TypeStepSizeAn optimizer attribute for specifying an aggregation procedure to be used in the quasi-gradient algorithm. Options are:
Constant: Constant step size ?ConstantStep for parameter descriptions (default)Diminishing: Diminishing step size ?DiminishingStep for parameter descriptions.Polyak: Polyak step size ?PolyakStep for parameter descriptions.BB: Barzilai-Borwein step size ?BBStep for parameter descriptions.
StochasticPrograms.QuasiGradient.SubProblems — TypeSubProblemsAn optimizer attribute for specifying if subproblems should be smoothed. Options are:
StochasticPrograms.QuasiGradient.Termination — TypeTerminationAn optimizer attribute for specifying a termination criterion to be used in the quasi-gradient algorithm. Options are:
AfterMaximumIterations: Terminate after set number of iterations ?MaximumIterations for parameter descriptions (default)AtObjectiveThreshold: Terminate after reaching reference objective ?ObjectiveThreshold for parameter descriptions.AtGradientThreshold: Terminate after reaching zero gradient ?GradientThreshold for parameter descriptions.
StochasticPrograms.QuasiGradient.TerminationParameter — TypeTerminationParameterAbstract supertype for termination-specific attributes.
StochasticPrograms.QuasiGradient.Optimizer — TypeOptimizer(; <keyword arguments>)Return a quasi-gradient optimizer. ...
Arguments
master_optimizer::AbstractOptimizer: MathOptInterface solver capable of solving linear (and possibly quadratic) programs.subproblem_optimizer::AbstractOptimizer: Optionally specify a different solver for the subproblems.execution::Execution = Serial: Specify how algorithm should be executed (Serial, Synchronous, Asynchronous). Distributed variants requires worker cores.subproblems::AbstractSubProblemState = Unaltered(): Specify if a smoothing procedure should be applied.prox::AbstractProx = Polyhedron(): Specify proximal step.step::AbstractStep = Constant(): Specify step-sizetermination::AbstractTermination = AfterMaximumIterations(): Specify termination criterion<keyword arguments>: Algorithm specific parameters, See
?LShapedfor list of possible arguments and default values.
...
StochasticPrograms.QuasiGradient.get_prox_attribute — Methodget_prox_attribute(stochasticprogram::StochasticProgram, name::String)Return the value associated with the prox-specific attribute named name in stochasticprogram.
See also: set_prox_attribute, set_prox_attributes.
StochasticPrograms.QuasiGradient.get_step_attribute — Methodget_step_attribute(stochasticprogram::StochasticProgram, name::String)Return the value associated with the step-specific attribute named name in stochasticprogram.
See also: set_step_attribute, set_step_attributes.
StochasticPrograms.QuasiGradient.get_termination_attribute — Methodget_termination_attribute(stochasticprogram::StochasticProgram, name::String)Return the value associated with the termination-specific attribute named name in stochasticprogram.
See also: set_termination_attribute, set_termination_attributes.
StochasticPrograms.QuasiGradient.set_prox_attribute — Methodset_prox_attribute(stochasticprogram::StochasticProgram, name::Union{Symbol, String}, value)Sets the prox-specific attribute identified by name to value.
StochasticPrograms.QuasiGradient.set_prox_attributes — Methodset_prox_attributes(stochasticprogram::StochasticProgram, pairs::Pair...)Given a list of attribute => value pairs or a collection of keyword arguments, calls set_prox_attribute(stochasticprogram, attribute, value) for each pair.
StochasticPrograms.QuasiGradient.set_step_attribute — Methodset_step_attribute(stochasticprogram::StochasticProgram, name::Union{Symbol, String}, value)Sets the step-specific attribute identified by name to value.
StochasticPrograms.QuasiGradient.set_step_attributes — Methodset_step_attributes(stochasticprogram::StochasticProgram, pairs::Pair...)Given a list of attribute => value pairs or a collection of keyword arguments, calls set_step_attribute(stochasticprogram, attribute, value) for each pair.
StochasticPrograms.QuasiGradient.set_termination_attribute — Methodset_termination_attribute(stochasticprogram::StochasticProgram, name::Union{Symbol, String}, value)Sets the termination-specific attribute identified by name to value.
StochasticPrograms.QuasiGradient.set_termination_attributes — Methodset_termination_attributes(stochasticprogram::StochasticProgram, pairs::Pair...)Given a list of attribute => value pairs or a collection of keyword arguments, calls set_termination_attribute(stochasticprogram, attribute, value) for each pair.
Execution
StochasticPrograms.QuasiGradient.SerialExecution — TypeSerialExecutionFunctor object for using serial execution in a quasi-gradient algorithm. Create by supplying a Serial object through execution in QuasiGradient.Optimizer or by setting the Execution attribute.
StochasticPrograms.QuasiGradient.SynchronousExecution — TypeSynchronousExecutionFunctor object for using synchronous execution in an quasi-gradient algorithm (assuming multiple Julia cores are available). Create by supplying a Synchronous object through execution in QuasiGradient.Optimizer or by setting the Execution attribute.
Step
StochasticPrograms.QuasiGradient.set_step_attribute — Functionset_step_attribute(stochasticprogram::StochasticProgram, name::Union{Symbol, String}, value)Sets the step-specific attribute identified by name to value.
StochasticPrograms.QuasiGradient.set_step_attributes — Functionset_step_attributes(stochasticprogram::StochasticProgram, pairs::Pair...)Given a list of attribute => value pairs or a collection of keyword arguments, calls set_step_attribute(stochasticprogram, attribute, value) for each pair.
StochasticPrograms.QuasiGradient.RawStepParameter — TypeRawStepParameterAn optimizer attribute used for raw parameters of the step. Defers to RawOptimizerAttribute.
StochasticPrograms.QuasiGradient.Constant — TypeConstantFactory object for ConstantStep. Pass to step in Quasigradient.Optimizer or set the StepSize attribute. See ?ConstantStep for parameter descriptions.
StochasticPrograms.QuasiGradient.ConstantStep — TypeConstantStepFunctor object for using a constant step size in a quasigradient algorithm. Create by supplying a Constant object through step to QuasiGradient.Optimizer or by setting the StepSize attribute.
...
Parameters
γ::AbstractFloat = 0.01: Step length
...
StochasticPrograms.QuasiGradient.Diminishing — TypeDiminishingFactory object for DiminishingStep. Pass to step in Quasigradient.Optimizer or set the StepSize attribute. See ?DiminishingStep for parameter descriptions.
StochasticPrograms.QuasiGradient.DiminishingStep — TypeDiminishingStepFunctor object for using a constant step size in a quasigradient algorithm. Create by supplying a Constant object through step to QuasiGradient.Optimizer or by setting the StepSize attribute.
...
Parameters
γ₀::AbstractFloat = 0.1: Nominal stepη::AbstractFloat = 1.0: Diminishing factor
...
StochasticPrograms.QuasiGradient.Polyak — TypePolyakFactory object for PolyakStep. Pass to step in Quasigradient.Optimizer or set the StepSize attribute. See ?PolyakStep for parameter descriptions.
StochasticPrograms.QuasiGradient.PolyakStep — TypePolyakStepFunctor object for using the Polyak step size in a quasigradient algorithm. Create by supplying a Polyak object through step to QuasiGradient.Optimizer or by setting the Prox attribute.
...
Parameters
γ₀::AbstractFloat = 0.1: Nominal stepη::AbstractFloat = 1.0: Diminishing factor
...
StochasticPrograms.QuasiGradient.BB — TypeBBFactory object for BBStep. Pass to step in Quasigradient.Optimizer or set the StepSize attribute. See ?BBStep for parameter descriptions.
StochasticPrograms.QuasiGradient.BBStep — TypeBBStepFunctor object for using the Barzilai-Borwein step size in a quasigradient algorithm. Create by supplying a BB object through step to QuasiGradient.Optimizer or by setting the StepSize attribute.
...
Parameters
γ₀::AbstractFloat = 0.1: Initial step-size and fallback if BB is numerically unstable
...
Prox
StochasticPrograms.QuasiGradient.set_prox_attribute — Functionset_prox_attribute(stochasticprogram::StochasticProgram, name::Union{Symbol, String}, value)Sets the prox-specific attribute identified by name to value.
StochasticPrograms.QuasiGradient.set_prox_attributes — Functionset_prox_attributes(stochasticprogram::StochasticProgram, pairs::Pair...)Given a list of attribute => value pairs or a collection of keyword arguments, calls set_prox_attribute(stochasticprogram, attribute, value) for each pair.
StochasticPrograms.QuasiGradient.NoProx — TypeNoProxFactory object for NoProximal. Passed by default to prox in QuasiGradient.Optimizer.
StochasticPrograms.QuasiGradient.NoProximal — TypeNoProximalEmpty functor object for running a quasi-gradient algorithm without a prox step.
StochasticPrograms.QuasiGradient.ProxPenaltyTerm — TypeProxPenaltyTermAn optimizer attribute used to set the proximal term in the prox step. Options are:
Quadratic(default)InfNormManhattanNorm
StochasticPrograms.QuasiGradient.RawProxParameter — TypeRawProxParameterAn optimizer attribute used for raw parameters of the proximal step. Defers to RawOptimizerAttribute.
StochasticPrograms.QuasiGradient.Polyhedron — TypePolyhedronFactory object for PolyhedronProjection. Pass to prox in Quasigradient.Optimizer or set the Prox attribute. See ?PolyhedronProjection for parameter descriptions.
StochasticPrograms.QuasiGradient.PolyhedronProjection — TypePolyhedronProjectionFunctor object for using polyhedral projection in the prox step of a quasigradient algorithm. Create by supplying a Polyhedron object through prox to QuasiGradient.Optimizer or by setting the Prox attribute.
...
Parameters
penaltyterm::PenaltyTerm = Quadratic: Specify penaltyterm variant (Quadratic,InfNorm, [ManhattanNorm][@ref])
...
StochasticPrograms.QuasiGradient.AndersonAcceleratedProximal — TypeAndersonAcceleratedProximalFunctor object for using anderson accleration in the prox step of a quasigradient algorithm. Create by supplying an AndersonAcceleration object through prox to QuasiGradient.Optimizer or by setting the Prox attribute.
...
Parameters
prox::AbstractProx = Polyhedron: Inner prox stepm::Integer = 10: Anderson memory
...
StochasticPrograms.QuasiGradient.AndersonAcceleration — TypeAndersonAccelerationFactory object for AndersonAcceleratedProximal. Pass to prox in Quasigradient.Optimizer or set the Prox attribute. See ?AndersonAcceleratedProximal for parameter descriptions.
StochasticPrograms.QuasiGradient.Nesterov — TypeNesterovFactory object for NesterovProximal. Pass to prox in Quasigradient.Optimizer or set the Prox attribute. See ?NesterovProximal for parameter descriptions.
StochasticPrograms.QuasiGradient.NesterovProximal — TypeNesterovProximalFunctor object for using nesterov accleration, with FISTA updates, in the prox step of a quasigradient algorithm. Create by supplying a Nesterov object through prox to QuasiGradient.Optimizer or by setting the Prox attribute.
...
Parameters
prox::AbstractProx = Polyhedron: Inner prox stepstabilizing_projection::Bool = false: Specify if an extra guarding projection should be performed to ensure first-stage feasibility
...
StochasticPrograms.QuasiGradient.DryFriction — TypeDryFrictionFactory object for DryFrictionProximal. Pass to prox in Quasigradient.Optimizer or set the Prox attribute. See ?DryFrictionProximal for parameter descriptions.
StochasticPrograms.QuasiGradient.DryFrictionProximal — TypeDryFrictionProximalFunctor object for using dry-friction acceleration in the prox step of a quasigradient algorithm. Create by supplying a DryFriction object through prox to QuasiGradient.Optimizer or by setting the Prox attribute.
...
Parameters
prox::AbstractProx = Polyhedron: Inner prox stepγ::AbstractFloat = 0.9: Heavy-ball parameterr::AbstractFloat = 1e-3: Dry-friction parameter
...
Termination
StochasticPrograms.QuasiGradient.set_termination_attribute — Functionset_termination_attribute(stochasticprogram::StochasticProgram, name::Union{Symbol, String}, value)Sets the termination-specific attribute identified by name to value.
StochasticPrograms.QuasiGradient.set_termination_attributes — Functionset_termination_attributes(stochasticprogram::StochasticProgram, pairs::Pair...)Given a list of attribute => value pairs or a collection of keyword arguments, calls set_termination_attribute(stochasticprogram, attribute, value) for each pair.
StochasticPrograms.QuasiGradient.RawTerminationParameter — TypeRawTerminationParameterAn optimizer attribute used for raw parameters of the termination criterion. Defers to RawOptimizerAttribute.
StochasticPrograms.QuasiGradient.AfterMaximumIterations — TypeAfterMaximumIterationsFactory object for MaximumIterations. Pass to terminate in Quasigradient.Optimizer or set the Termination attribute. See ?MaximumIterations for parameter descriptions.
StochasticPrograms.QuasiGradient.MaximumIterations — TypeMaximumIterationsFunctor object for using maximum number of iterations as termination criterion in a quasigradient algorithm. Create by supplying a AfterMaximumIterations object through terminate to QuasiGradient.Optimizer or by setting the Termination attribute.
...
Parameters
maximum::Integer = 1000: Maximum number of iterations
...
StochasticPrograms.QuasiGradient.AtObjectiveThreshold — TypeAtObjectiveThresholdFactory object for ObjectiveThreshold. Pass to terminate in Quasigradient.Optimizer or set the Termination attribute. See ?ObjectiveThreshold for parameter descriptions.
StochasticPrograms.QuasiGradient.ObjectiveThreshold — TypeObjectiveThresholdFunctor object for using an objective threshold as termination criterion in a quasigradient algorithm. Create by supplying a AtObjectiveThreshold object through terminate to QuasiGradient.Optimizer or by setting the Termination attribute.
...
Parameters
reference::AbstractFloat = 0.0: Reference objective valueτ::AbstractFloat = 1e-6: Relative tolerance
...
StochasticPrograms.QuasiGradient.AtGradientThreshold — TypeAtGradientThresholdFactory object for GradientThreshold. Pass to terminate in Quasigradient.Optimizer or set the Termination attribute. See ?GradientThreshold for parameter descriptions.
StochasticPrograms.QuasiGradient.GradientThreshold — TypeObjectiveThresholdFunctor object for using a zero gradient threshold as termination criterion in a quasigradient algorithm. Create by supplying a AtGradientThreshold object through terminate to QuasiGradient.Optimizer or by setting the Termination attribute.
...
Parameters
τ::AbstractFloat = 1e-6: Numerical tolerance for zero gradient
...
Smoothing
StochasticPrograms.QuasiGradient.Unaltered — TypeUnalteredFactory object for using regular SubProblem in the quasi-gradient algorithm. Passed by default to subproblems to QuasiGradient.Optimizer.
StochasticPrograms.QuasiGradient.Smoothed — TypeSmoothedFactory object for using SmoothSubProblem through Moreau envelopes in the quasi-gradient algorithm. Pass to subproblems in QuasiGradient.Optimizer or by setting the SubProblems attribute. See SmoothSubProblem for parameter descriptions.
StochasticPrograms.QuasiGradient.SubProblem — TypeSubProblemQuasi-gradient subproblem.
StochasticPrograms.QuasiGradient.SmoothSubProblem — TypeSmoothSubProblemSubproblem smoothed using a Moreau envelope.
...
Parameters
μ::AbstractFloat = 1.0: Moreau smoothing parameter. Controls the smoothing approximation accuracy.
...