ProgressiveHedgingSolvers
includes implementations of the Progressive-hedging algorithm for two-stage stochastic recourse problems. All algorithm variants are based on the original progressive-hedging algorithm by Rockafellar and Wets. ProgressiveHedgingSolvers
interfaces with StochasticPrograms.jl, and a given recourse model sp
is solved effectively through
julia> using ProgressiveHedgingSolvers
julia> solve(sp,solver=ProgressiveHedgingSolver(IpoptSolver(print_level=0)))
Progressive Hedging Time: 0:00:06 (1315 iterations)
Objective: -855.8332803469432
δ: 9.436947935542464e-7
:Optimal
Note, that a QP capable AbstractMathProgSolver
is required to solve emerging subproblems. In addition, there are distributed variants of the algorithm: ProgressiveHedgingSolver(execution = Synchronous())
and ProgressiveHedgingSolver(execution = Asynchronous())
, which requires adding processes with addprocs
prior to execution.
The algorithm has a set of parameters that can be tuned prior to execution. For a list of these parameters and their default values, use ?
in combination with the solver object. For example, ?Adaptive
gives the parameter list for the adaptive penalty procedure. For a list of all solvers and their handle names, use ?ProgressiveHedgingSolver
.
- R. T. Rockafellar and Roger J.-B. Wets (1991), Scenarios and Policy Aggregation in Optimization Under Uncertainty, Mathematics of Operations Research, vol. 16, no. 1, pp. 119-147.