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> G
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 Partitions {(1, 1), (1, 2)} {(2, 1), (2, 2)}