L-shaped solvers

Documentation for StochasticPrograms.jl's quasi-gradient solvers.

Index

API

StochasticPrograms.QuasiGradient.ProxType
Prox

An 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.StepSizeType
StepSize

An 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.SubProblemsType
SubProblems

An optimizer attribute for specifying if subproblems should be smoothed. Options are:

  • Unaltered: Subproblems are solved in their original state (default)
  • Smoothed: Subproblems are smoothed using Moreau envelopes ?SmoothSubProblem for parameter descriptions.
StochasticPrograms.QuasiGradient.TerminationType
Termination

An 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.OptimizerType
Optimizer(; <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-size

  • termination::AbstractTermination = AfterMaximumIterations(): Specify termination criterion

  • <keyword arguments>: Algorithm specific parameters, See ?LShaped for list of possible arguments and default values.

...

StochasticPrograms.QuasiGradient.set_prox_attributesMethod
set_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_attributesMethod
set_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_attributesMethod
set_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

Step

StochasticPrograms.QuasiGradient.set_step_attributesFunction
set_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.ConstantStepType
ConstantStep

Functor 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.DiminishingStepType
DiminishingStep

Functor 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.PolyakStepType
PolyakStep

Functor 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.BBStepType
BBStep

Functor 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_attributesFunction
set_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.NesterovProximalType
NesterovProximal

Functor 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 step
  • stabilizing_projection::Bool = false: Specify if an extra guarding projection should be performed to ensure first-stage feasibility

...

StochasticPrograms.QuasiGradient.DryFrictionProximalType
DryFrictionProximal

Functor 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 parameter
  • r::AbstractFloat = 1e-3: Dry-friction parameter

...

Termination

StochasticPrograms.QuasiGradient.set_termination_attributesFunction
set_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.ObjectiveThresholdType
ObjectiveThreshold

Functor 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

...

Smoothing