Hydrothermal Scheduling

SDDP · Multi-stage SP

Reservoir Management · Water Value · Thermal Backup

Release the water in the reservoir now, or save it for later? Hydrothermal scheduling decides how to operate a system of hydroelectric reservoirs coupled with thermal generation over a medium-term horizon of weeks to a year, under stochastic inflows. Unlike short-term dispatch (economic dispatch), the central question is when to use stored water — a decision that couples today's generation cost to the expected value of water in future periods. The canonical solution method, Stochastic Dual Dynamic Programming (SDDP), was developed by Pereira & Pinto in 1991 and remains the industry standard in large hydro systems from Brazil to Norway to Canada.

The problem

Water value · temporal coupling · uncertainty

A hydroelectric reservoir is a battery measured in cubic meters. In a wet month, inflows may exceed what the turbines can convert to electricity, and water must be spilled (lost). In a dry month, inflows may be insufficient to meet demand and expensive thermal backup must run. The operator's problem is to decide, each period, how much water to release (generating hydro power now) versus how much to store (saving it for future, potentially more valuable, periods).

The core trade-off is immediate cost vs expected future cost. Releasing water now substitutes for expensive thermal generation today. Keeping water raises the probability that future thermal costs are even lower (because inflows might come and we will have plenty), but it also risks spilling if the reservoir overtops. The optimal policy is characterized by a water-value function $V_t(v)$: the expected cost-to-go at time $t$ given reservoir level $v$. A hydro unit dispatches if and only if the immediate thermal-cost savings exceed the marginal water value — the derivative $dV_t/dv$.

Historical note
Pereira & Pinto (1991) introduced Stochastic Dual Dynamic Programming (SDDP) in Mathematical Programming — a breakthrough that made hydrothermal scheduling tractable on continental scales. SDDP builds the water-value function implicitly through Benders cuts computed on a scenario tree, rather than explicitly discretizing reservoir levels (which suffers the curse of dimensionality at $>$4 reservoirs). The Brazilian system operator (ONS) has run SDDP-based tools since the mid-1990s; NorGrid (Norwegian hydro), BC Hydro (Canada), and Colombian XM all use SDDP descendants. Shapiro et al. (2013) is the definitive modern SDDP reference; the textbook Birge & Louveaux (2011) situates it within the broader stochastic programming literature.

Real hydrothermal systems have multiple reservoirs, cascaded (upstream releases flow to downstream), with different storage capacities, inflow correlations, and environmental constraints (minimum flows for fisheries, ramp rates for boat navigation, recreational- use levels). The full multi-reservoir multi-stage stochastic program is extremely high-dimensional; SDDP's advantage over straight dynamic programming is that it never explicitly discretizes the state space. The in-browser solver below handles a single reservoir, 12 weekly stages, 3 inflow scenarios with backward- induction DP on a discretized reservoir level — pedagogically transparent but not how production tools work.

Mathematical formulation

Multi-stage stochastic program on reservoir state

Notation

Sets, parameters, decision variables
SymbolMeaningUnits
$\mathcal{T}$Stages (weeks)
$\Omega_t$Inflow scenario set at stage $t$
$D_t$Load in stage $t$MW
$V^{\min}, V^{\max}$Reservoir storage limitsm$^3$
$\eta$Hydro generation coefficientMWh/m$^3$
$H^{\max}$Turbine capacityMW
$c_{\mathrm{th}}$Thermal marginal cost$/MWh
$P_{\mathrm{th}}^{\max}$Thermal capacityMW
$a_{t,\omega}$Inflow in stage $t$, scenario $\omega$m$^3$
$v_{t,\omega}$Reservoir storage at end of stagem$^3$
$q_{t,\omega}$Turbine releasem$^3$
$s_{t,\omega}$Spillm$^3$
$p^{\mathrm{th}}_{t,\omega}$Thermal dispatchMW
$V_t(v)$Water-value function$

Objectiveexpected total cost

Minimize expected thermal generation cost over the horizon and scenario tree:

$$\min \; \mathbb{E}\left[ \sum_{t \in \mathcal{T}} c_{\mathrm{th}} \, p^{\mathrm{th}}_{t,\omega} \, \tau_t \right] \qquad \text{(1)}$$

where $\tau_t$ is stage duration (hours). No investment cost is modeled here — the hydro assets already exist.

Constraints (per stage $t$ and scenario $\omega$)

Reservoir balance: the master constraint coupling stages:

$$v_{t,\omega} \;=\; v_{t-1, \omega'} + a_{t,\omega} - q_{t,\omega} - s_{t,\omega} \qquad \text{(2)}$$

where $v_{t-1, \omega'}$ is the ending storage from the predecessor scenario. Storage and release bounds:

$$V^{\min} \le v_{t,\omega} \le V^{\max}, \quad 0 \le q_{t,\omega}, s_{t,\omega} \qquad \text{(3)}$$

Hydro generation is proportional to release:

$$p^{\mathrm{h}}_{t,\omega} \;=\; \eta \, q_{t,\omega}, \quad p^{\mathrm{h}}_{t,\omega} \le H^{\max} \qquad \text{(4)}$$

Demand balance (hydro + thermal = load):

$$p^{\mathrm{h}}_{t,\omega} + p^{\mathrm{th}}_{t,\omega} \;=\; D_t \qquad \text{(5)}$$

Thermal limit:

$$0 \le p^{\mathrm{th}}_{t,\omega} \le P_{\mathrm{th}}^{\max} \qquad \text{(6)}$$

Bellman equationdynamic-programming recursion

The water-value function satisfies:

$$V_{t-1}(v) \;=\; \min_{q, s} \left\{ c_{\mathrm{th}} \, (D_t - \eta q) \, \tau_t + \mathbb{E}_\omega\big[ V_t(v + a_{t,\omega} - q - s) \big] \right\} \qquad \text{(7)}$$

subject to (3)–(6). Solving this recursion backward from the terminal stage yields $V_t(v)$ for every $t$ and every feasible storage $v$. The optimal operating policy is:

$$q^*_t(v) \;=\; \arg\min_{q} \left\{ -c_{\mathrm{th}} \, \eta \, q + \mathbb{E}_\omega\big[ V_t(v + a_{t,\omega} - q) \big] \right\}$$

that is, release until the marginal thermal-cost saving equals the marginal water value $dV_t/dv$.

SDDP — Pereira & Pinto (1991)

Stochastic Dual Dynamic Programming does not discretize the state space. Instead it constructs a piecewise-linear outer approximation of $V_t(v)$ using Benders cuts from sampled forward trajectories:

(i) Forward pass: sample an inflow trajectory, solve the stage LPs forward given current cuts.
(ii) Backward pass: using the sampled forward trajectory, compute dual variables on (2) and add one new Benders cut to each stage's outer approximation of $V_t$.
(iii) Repeat until confidence interval of upper bound (sampled expected cost) and lower bound (initial stage's LP objective) close.

SDDP runs on systems with dozens of reservoirs and annual horizons. Brazilian ONS runs SDDP daily on 180+ reservoirs. The only practical alternative at that scale is stochastic MPC combined with forward simulation.

Real-world data

Brazilian NEWAVE / DECOMP

The Brazilian system operator (ONS) publishes monthly inflow scenarios and runs NEWAVE (long-term) and DECOMP (medium-term) SDDP tools on the country's 160+ reservoir system. The input data are among the most comprehensive public hydrothermal datasets.

Norwegian SINTEF ReOpt / EMPS

SINTEF maintains the EMPS (EFI's Multi-area Power market Simulator) which underpins Norwegian hydro planning. Norway's hydro share (95%+ of generation) makes water-value forecasting a core system operation.

PSR SDDP / MSP2000

PSR Inc. distributes SDDP, MSP2000 and related commercial tools used by 50+ utilities and ISOs worldwide. Tanzania, Colombia, Chile, Turkey, New Zealand all run SDDP-family tools operationally.

Illustrative single-reservoir (this page)

The in-browser solver handles a single reservoir with capacity 1,200 m$^3 \times 10^6$ (scaled), 12 weekly stages, 3 inflow scenarios per stage (dry / normal / wet with equal probability), 200-MW turbine capacity, and 500-MW thermal backup at $60/MWh. Weekly load cycles sinusoidally around 800 MW.

Interactive solver

Backward-induction DP · scenario fan visualization

System parameters

70
60%
60
0.35
Adjust parameters and press Solve.

Reservoir trajectory (scenario fan)

Reservoir storage over 12 weeks · gold = mean policy · thin blue = wet-scenario realizations · thin red = dry
Stacked dispatch · blue = hydro · red = thermal · white = load

Solution interpretation

Reading the policy from the reservoir trajectory

The scenario fan shows how the reservoir evolves under different realizations of uncertainty. If the operator follows the optimal policy, dry-year trajectories (thin red lines) fall off the mean path as the reservoir draws down to avoid thermal shortage; wet-year trajectories (thin blue) rise and may hit capacity, triggering spill. The spread of the fan is a direct visual measure of the system's exposure to hydrological uncertainty.

The dispatch chart shows what the operator actually does each week on the mean-inflow trajectory: hydro fills what it can at zero marginal cost (plus shadow water value), thermal fills the gap. The ratio of hydro to thermal depends on season: inflow-rich weeks see heavy hydro and idle thermal; low-inflow weeks rely on thermal. The thermal fraction over a year is the most-watched KPI in hydro-heavy systems.

Under high thermal cost, the optimal policy pushes more hydro sooner (cheaper to burn water now than gas). Under high inflow variability, the policy reserves more storage — a buffer against the bad-case scenarios. Under low initial reservoir, the policy is cautious early and accepts higher thermal cost to rebuild storage. All three behaviors emerge from the water-value function's shape: steep near the empty boundary (high penalty for running dry), flat near the full boundary (wasted capacity if over-full).

Extensions & variants

Multi-reservoir SDDP

Cascaded hydro systems where upstream releases become downstream inflows. State becomes a vector; SDDP's big advantage: it scales to 100+ reservoirs without discretizing. Brazilian ONS runs SDDP on 160+ reservoirs daily.

Refs: Pereira & Pinto (1991); Shapiro, Tekaya, Da Costa & Soares (2013).

Risk-averse SDDP (CVaR)

Replaces expected cost with Conditional Value-at-Risk (CVaR) for risk-averse operation. Key when dry-year costs are catastrophic and decision-makers have asymmetric preferences.

Refs: Philpott & de Matos (2012); Shapiro, Tekaya, Soares (2011).

Environmental & fishery constraints

Real hydro systems face minimum-flow requirements for aquatic ecosystems, maximum ramp rates for boat/recreation safety, and seasonal reservoir-level bounds for land use. These become added constraints in the stage LPs without changing the SDDP structure.

Refs: Cerisola, Latorre & Ramos (2012); BC Hydro planning documents.

Hydro + renewable integration

In renewable-heavy systems, hydro provides the fast-ramping backup to wind/solar. Medium-term scheduling must jointly forecast inflows and renewable generation; stochastic coupling expands the uncertainty set considerably.

Refs: Helseth, Gjelsvik, Mo & Fosso (2013); de Queiroz (2016).

Hydro in electricity markets

Hydro operators in competitive markets bid strategically, using their storage to arbitrage time-varying prices. Bi-level formulations with hydro at the upper level and market clearing at the lower level capture strategic behavior.

Refs: Fleten & Kristoffersen (2008); Wallace & Fleten (2003).

Pumped-storage optimization

Pumped-storage reservoirs can pump water up during low-price hours and generate during peaks. The arbitrage math is essentially battery storage optimization but with inflow uncertainty on top.

Refs: Kazempour, Conejo & Ruiz (2011); standard SDDP handbooks.

Key references

[1]
Pereira, M. V. F., & Pinto, L. M. V. G. (1991).
“Multi-stage stochastic optimization applied to energy planning.”
Mathematical Programming, 52(1–3), 359–375. doi:10.1007/BF01582895
[2]
Shapiro, A., Tekaya, W., da Costa, J. P., & Soares, M. P. (2013).
“Risk-neutral and risk-averse Stochastic Dual Dynamic Programming method.”
European Journal of Operational Research, 224(2), 375–391. doi:10.1016/j.ejor.2012.08.022
[3]
Birge, J. R., & Louveaux, F. (2011).
Introduction to Stochastic Programming (2nd ed.).
Springer Series in Operations Research and Financial Engineering. doi:10.1007/978-1-4614-0237-4
[4]
Philpott, A. B., & de Matos, V. L. (2012).
“Dynamic sampling algorithms for multi-stage stochastic programs with risk aversion.”
European Journal of Operational Research, 218(2), 470–483. doi:10.1016/j.ejor.2011.10.056
[5]
Cerisola, S., Latorre, J. M., & Ramos, A. (2012).
“Stochastic dual dynamic programming applied to non-convex hydrothermal models.”
European Journal of Operational Research, 218(3), 687–697. doi:10.1016/j.ejor.2011.11.040
[6]
Fleten, S.-E., & Kristoffersen, T. K. (2008).
“Short-term hydropower production planning by stochastic programming.”
Computers & Operations Research, 35(8), 2656–2671. doi:10.1016/j.cor.2006.12.022
[7]
Helseth, A., Gjelsvik, A., Mo, B., & Fosso, O. B. (2013).
“A model for optimal scheduling of hydro thermal systems including pumped-storage and wind power.”
IET Generation, Transmission & Distribution, 7(12), 1426–1434. doi:10.1049/iet-gtd.2012.0639
[8]
de Queiroz, A. R. (2016).
“Stochastic hydro-thermal scheduling optimization: An overview.”
Renewable and Sustainable Energy Reviews, 62, 382–395. doi:10.1016/j.rser.2016.04.065
[9]
Wallace, S. W., & Fleten, S.-E. (2003).
“Stochastic programming models in energy.”
In Handbooks in Operations Research and Management Science, Vol. 10. Elsevier. doi:10.1016/S0927-0507(03)10010-2
[10]
Kazempour, S. J., Conejo, A. J., & Ruiz, C. (2011).
“Strategic generation investment using a complementarity approach.”
IEEE Transactions on Power Systems, 26(2), 940–948. doi:10.1109/TPWRS.2010.2069573
In-browser solver uses backward-induction DP on a discretized reservoir level with 12 weekly stages and 3 inflow scenarios. Production hydro tools (PSR SDDP, MSP2000, NEWAVE, EMPS) handle hundreds of reservoirs via Benders cuts without discretization.