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)