Implementation of SDDP (Stochastic Dual Dynamic Programming) using the StructJuMP modeling interface
Author JuliaStochOpt
22 Stars
Updated Last
1 Year Ago
Started In
March 2016


Documentation PackageEvaluator Build Status Social
Build Status Build Status Gitter
Coveralls branch Codecov branch

Generic interface for the Stochastic Dual Dynamic Programming (SDDP) algorithm as well as a generic implementation. The problem can either be provided using the StructJuMP modeling interface or using a lower level interface.

This package is used by the Entropic Cone package.


  • STABLEmost recently tagged version of the documentation.
  • LATESTin-development version of the documentation.


The master branch is aimed at JuMP v0.19. To try this package with JuMP v0.19, do:

] add StructJuMP#master
] add StructDualDynProg#master

Note that this package has not been updated yet to JuMP v0.19, see here.

Notes for choice of solvers

This package should work with any linear programming (LP) solver supported by MathProgBase. If some subproblems are infeasible, an infeasibility ray will be asked to the solver. In this case, it is advised to turn presolve off in CPLEX (i.e. CPLEX.CplexSolver(CPX_PARAM_REDUCE=0)) and to avoid using Clp since it often cannot find the infeasibility ray. If some subproblems are unbounded, an unbounded ray and a feasible solution will be asked for the solver. Again, avoid using Clp in that case. Hopefully subproblems shouldn't be unbounded if detectlb is left at true when calling SOI.stochasticprogram.