Create a belief state

SDDP.jl includes an implementation of the algorithm described in Dowson, O., Morton, D.P., & Pagnoncelli, B.K. (2020). Partially observable multistage stochastic optimization. Operations Research Letters, 48(4), 505–512.

Given a SDDP.Graph object (see Create a general policy graph for details), we can define the ambiguity partition using SDDP.add_ambiguity_set.

For example, first we create a Markovian graph:

julia> using SDDP
julia> G = SDDP.MarkovianGraph([[0.5 0.5], [0.2 0.8; 0.8 0.2]])Root (0, 1) Nodes (1, 1) (1, 2) (2, 1) (2, 2) Arcs (0, 1) => (1, 1) w.p. 0.5 (0, 1) => (1, 2) w.p. 0.5 (1, 1) => (2, 1) w.p. 0.2 (1, 1) => (2, 2) w.p. 0.8 (1, 2) => (2, 1) w.p. 0.8 (1, 2) => (2, 2) w.p. 0.2

Then we add an ambiguity set over the nodes in the each stage:

julia> for t in 1:2
           SDDP.add_ambiguity_set(G, [(t, 1), (t, 2)])
       end

This results in the graph:

julia> GRoot
 (0, 1)
Nodes
 (1, 1)
 (1, 2)
 (2, 1)
 (2, 2)
Arcs
 (0, 1) => (1, 1) w.p. 0.5
 (0, 1) => (1, 2) w.p. 0.5
 (1, 1) => (2, 1) w.p. 0.2
 (1, 1) => (2, 2) w.p. 0.8
 (1, 2) => (2, 1) w.p. 0.8
 (1, 2) => (2, 2) w.p. 0.2
Partitions
 {(1, 1), (1, 2)}
 {(2, 1), (2, 2)}