# Is stochastic dual dynamic programming (SDDP) a deterministic solution algorithm or does it have a stochastic component to it?

I am currently working on a paper in which I am statistically comparing dynamic optimization algorithms like SDDP, Actor-Critics etc. In this regard, should I be running SDDP algorithm for my deterministic multi-stage optimization problem once (if it is a deterministic solver) or should I be running it multiple times (like 50 times in case it has a stochastic component to it)?

It is very important to note that my problem is a deterministic (not stochastic) multi stage optimization problem, meaning it has only one scenario.

• SDDP for single scenario problem is just nested Benders. So it is deterministic in your case. However, for more general problems (multiple-scenarios ones), it is stochastic, since it involves sampling. Commented Jun 22, 2023 at 14:50
• Check here odow.github.io/SDDP.jl/stable. @Oscar Commented Jun 22, 2023 at 19:29
• Nested Benders is not necessarily deterministic. Commented Jun 26, 2023 at 5:29

It depends on the implementation.

Irrespective of whether the model has one scenario or many, it's possible to code an implementation of SDDP that is deterministic in the sense that it will return the same optimal policy if run multiple times with the same random seed.

It's also possible to code an implementation that is stochastic and potentially returns different optimal policies each time.

Even if your SDDP code is deterministic, it also depends on whether the underlying optimization solver is reproducible. For example, in Gurobi's default configuration it may choose a non-deterministic concurrent algorithm when solving an LP: https://www.gurobi.com/documentation/10.0/refman/method.html This can cause you to visit a different sequence of states in the forward pass and add a different sequence of cuts.

• So is HiGHS linear programming solver deterministic Commented Jun 26, 2023 at 5:55
• and if it is deterministic then can I say that nested benders decomposition deterministic Commented Jun 26, 2023 at 5:58
• You can't say anything based on the theoretical algorithm. It depends on your actual implementation. Commented Jun 26, 2023 at 8:55
• Just run your problem multiple times and see if you get different sequences of iterates. Commented Jun 26, 2023 at 8:56
• Commented Jun 26, 2023 at 8:58