This package implements the Stochastic Dual Dynamic Programming (SDDP) algorithm with Julia. It relies upon MathProgBase and JuMP.

A complete overview of this algorithm could be found here.

At the moment the plan is to create a type such that :

  • you can fix linear time \(t\) cost function (then convex piecewise linear)
  • you can fix linear dynamic (with a physical state \(x\) and a control \(u\))
  • the scenarios are created by assuming that the noise \(\xi_t\) is independent in time, each given by a table (value, probability)

Then it is standard SDDP :

  • fixed number of forward passes
  • iterative backward passes
  • no clearing of cuts
  • stopping after a given number of iterations / computing time

Once solved the SDDP model should be able to :

  • give the lower bound on the cost
  • simulate trajectories to evaluate expected cost
  • give the optimal control given current time state and noise

We have a lot of ideas to implement further :

  • spatial construction (i.e : defining stock one by one and then their interactions)
  • noise as AR (eventually with fitting on historic datas)
  • convex solvers
  • refined stopping rules
  • cut pruning
  • paralellization