In this paper we present SDDP.jl, an open-source library for solving multistage stochastic optimization problems using the Stochastic Dual Dynamic Programming algorithm. SDDP.jl is built upon JuMP, an algebraic modelling language in Julia. This enables a high-level interface for the user, while simultaneously providing performance that is similar to implementations in low-level languages. We benchmark the performance of SDDP.jl against a C++ implementation of SDDP for the New Zealand Hydro-Thermal Scheduling Problem. On the benchmark problem, SDDP.jl is approximately 30% slower than the C++ implementation. However, this performance penalty is small when viewed in context of the generic nature of the SDDP.jl library compared to the single purpose C++ implementation.
A modified version of this paper is now published at INFORMS Journal on Computing: https://doi.org/10.1287/ijoc.2020.0987