This packages aims at providing an implementation of SDDP that is both efficient and modular/flexible. It features the following:
- Support for unfeasible problem by generating a feasibility cut.
- Support for unbounded problem by using an unbounded ray.
- Support for a variety of cut pruning algorithm through the CutPruners package.
- Support for any linear or conic solvers available through MathProgBase; see JuliaOpt's webpage for a list.
- Support modeling the problem using the StructJuMP modeling interface.
- Support specifying the problem using a low-level interface. This is used for example by the EntropicCone package.
The packages is built on top of StochOptInterface (SOI).
It implements an representation of stochastic programming implementing SOI in the StructProg
submodule
and provides the following function for transforming a StructJuMP
model into an instance of this representation:
StructDualDynProg.StochOptInterface.stochasticprogram(m::StructDualDynProg.StructProg.JuMP.Model, num_stages, solver, pruningalgo::StructDualDynProg.StructProg.CutPruners.AbstractCutPruningAlgo, cutgen::StructProg.AbstractOptimalityCutGenerator, detectlb::Bool, newcut::Symbol)
This packages also provides an implemention of the SDDP algorithm that can be run on any stochastic program implementing the SOI interface:
SDDP.Algorithm
Pages = ["quickstart.md", "tutorial.md"]
Depth = 2