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$.
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
| Symbol | Meaning | Units |
|---|---|---|
| $\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 limits | m$^3$ |
| $\eta$ | Hydro generation coefficient | MWh/m$^3$ |
| $H^{\max}$ | Turbine capacity | MW |
| $c_{\mathrm{th}}$ | Thermal marginal cost | $/MWh |
| $P_{\mathrm{th}}^{\max}$ | Thermal capacity | MW |
| $a_{t,\omega}$ | Inflow in stage $t$, scenario $\omega$ | m$^3$ |
| $v_{t,\omega}$ | Reservoir storage at end of stage | m$^3$ |
| $q_{t,\omega}$ | Turbine release | m$^3$ |
| $s_{t,\omega}$ | Spill | m$^3$ |
| $p^{\mathrm{th}}_{t,\omega}$ | Thermal dispatch | MW |
| $V_t(v)$ | Water-value function | $ |
Objectiveexpected total cost
Minimize expected thermal generation cost over the horizon and scenario tree:
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:
where $v_{t-1, \omega'}$ is the ending storage from the predecessor scenario. Storage and release bounds:
Hydro generation is proportional to release:
Demand balance (hydro + thermal = load):
Thermal limit:
Bellman equationdynamic-programming recursion
The water-value function satisfies:
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:
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
Reservoir trajectory (scenario fan)
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.
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.
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.
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.
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.
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.