Advanced functions¶
This page gives an overview of the functions implemented in the package.
In the following, model
will design a SPModel
storing the definition of a stochastic problem, and param
a SDDPparameters instance which stores the parameters specified for SDDP. See quickstart for more information about these two objects.
Work with PolyhedralFunction¶
Get Bellman value at a given point¶
To estimate the Bellman value at a given position xt
with a PolyhedralFunction
Vt
vx = get_bellman_value(model, param, t, Vt, xt)
This is a lower bound of the true value.
Get optimal control at a given point¶
To get optimal control at a given point xt
and for a given alea xi
:
get_control(model, param, lpproblem, t, xt, xi)
where lpproblem
is the linear problem storing the evaluation of Bellman function at time \(t\).
Save and load pre-computed cuts¶
Assume that we have computed Bellman functions with SDDP. These functions are stored in a vector of PolyhedralFunctions
denoted V
These functions can be stored in a text file with the command:
StochDynamicProgramming.dump_polyhedral_functions("yourfile.dat", V)
And then be loaded with the function:
Vdump = StochDynamicProgramming.read_polyhedral_functions("yourfile.dat")
Build LP Models with PolyhedralFunctions¶
We can build a vector of JuMP.Model
with a vector of PolyhedralFunction
to perform simulation. For this, use the function:
problems = StochDynamicProgramming.hotstart_SDDP(model, param, V)
SDDP hotstart¶
If cuts are already available, we can hotstart SDDP while overloading the function solve_SDDP
:
V, pbs = solve_SDDP(model, params, 0, V)
Cuts pruning¶
The more SDDP run, the more cuts you need to store. It is sometimes useful to delete cuts which are useless for the computation of the approximated Bellman functions.
To clean a single PolyhedralFunction
Vt
:
Vt = exact_prune_cuts(model, params, Vt)
To clean a vector of PolyhedralFunction
V
:
prune_cuts!(model, params, V)