Stochastic Dual Dynamic Programming in Julia



Documentation Build Status Coverage
Build Status Codecov branch


This package is unregistered so you will need to Pkg.clone it as follows:



The documentation is still very incomplete, however the user-facing API from the examples should be stable enough to use.

If you are stuggling to figure out how to use something, raise a Github issue!

However, you can find some documentation at https://odow.github.io/SDDP.jl/latest/

In addition, most functions are documented, and this can be accessed via the Julia help. e.g.:

julia>? @state

Some other resources include:


We need your examples! We're trying to collate a large array of examples to test the correctness (and later, performance) of the package. Either make a PR or go to the examples folder and click Upload Files and Github will walk you through the process. Bonus points for models where you know the optimal first stage objective value.


We need your bug reports! We've only stressed a few code paths on real-world models. If you run into any problems, file an issue here.


Q. How do I make the constraint coefficients random?

A. Due to the design of JuMP, it's difficult to efficiently modify constraint coefficients. Therefore, you can only vary the right-hand-side of a constraint using the @rhsnoise macro.

As a work around, we suggest you either reformulate the model so the uncertainty appears in the RHS, or model the uncertainty as a markov process. Take a look at the asset management example to see an example of this. Make sure you keep in mind that a new value function is built at each markov state which increases the computation time and memory requirements.

Other Packages

SDDP.jl isn't the only Julia package for solving multi-stage stochastic programs. You may want to checkout StructDualDynProg.jl or StochDynamicProgramming.jl to see if they better suit your needs.


@lkapelevich wrote an extension for SDDP.jl to solve multi-stage stochastic programs with binary state variables. Check it out at https://github.com/lkapelevich/SDDiP.jl!

Citing SDDP.jl

If you use SDDP.jl, we ask that you please cite the following paper:

	title = {{SDDP}.jl: a {Julia} package for {Stochastic} {Dual} {Dynamic} {Programming}},
	url = {http://www.optimization-online.org/DB_HTML/2017/12/6388.html},
	journal = {Optimization Online},
	author = {Dowson, Oscar and Kapelevich, Lea},
	year = {2017}

First Commit


Last Touched

19 days ago


119 commits

Used By: