Benders Decomposition
Overview
Stochastic Dual Dynamic Programming (SDDP) solves large multistage stochastic optimization problems by decomposing them into smaller single-stage subproblems. This decomposition is rooted in Benders decomposition (also known as the L-shaped method), which splits a monolithic problem into a master problem and subproblems connected through linear inequalities called cuts.
In the hydrothermal dispatch context, a direct formulation over all stages, scenarios, and equipment would produce an LP with millions of variables and constraints. Benders decomposition breaks this into stage subproblems, each solved independently for a given incoming state and scenario realization.
The Stage Subproblem
Each stage solves an LP of the form:
where is the incoming state (reservoir volumes, AR inflow lags) fixed from the previous stage, captures the immediate cost (thermal generation, penalties, regularization), and approximates the expected future cost from stages through .
The full LP structure — objective terms, constraint families, slack variables, and variable bounds — is described in LP Formulation.
How Cuts Approximate Future Cost
The true future cost function is convex but unknown. SDDP builds a piecewise-linear lower approximation through iterative cut generation:
Each cut is a supporting hyperplane derived from dual variables of the backward pass. When the stage subproblem is solved at a trial state under scenario , the optimal dual multipliers of the state-linking constraints yield:
- Slope: (sensitivity of future cost to incoming state)
- Intercept:
Notation note: The matrix form above is the standard Benders decomposition notation from the stochastic programming literature. In Cobre’s formal specs, the cut coefficients are expressed directly in terms of LP dual variables: (the storage fixing constraint dual) and (the lag-fixing constraint dual), without explicit technology matrices. Both conventions are mathematically equivalent — the matrix form is compact for general derivations, while the direct-dual form is more practical for implementation. See Cut Coefficient Derivation below.
In the hydrothermal problem, the state variables are reservoir storage volumes and AR inflow lags , so the cut coefficients come from the storage fixing dual and the lag-fixing constraint dual .
Cut Coefficient Derivation
The key insight is how dual variables map to cut coefficients. Cobre introduces an explicit incoming-state LP variable for each state dimension, fixed to the trial value via an equality constraint:
By the LP envelope theorem, the dual of each fixing constraint equals the total derivative of the optimal objective with respect to the fixed value, accounting for all downstream effects:
| Fixing constraint | Dual | Cut coefficient |
|---|---|---|
For storage, the dual captures contributions from the water balance, FPHA hyperplane constraints, and any generic constraints that reference incoming storage — all aggregated automatically by the LP solver through the single incoming-storage variable. No manual dual combination is required.
The cut intercept ensures the cut passes exactly through the trial point:
where is the optimal stage objective value.
Single-Cut Aggregation
In the backward pass, each trial state is evaluated against all scenario realizations. The resulting per-scenario cuts are aggregated into one cut per trial point using probability-weighted expectation:
where is the probability of scenario (uniform for the fixed opening tree: ). The aggregated cut is added to stage ’s cut pool. This single-cut formulation keeps the LP compact: after iterations the LP has cuts, regardless of the number of scenarios per iteration.
The Forward-Backward Iteration
SDDP alternates between two passes:
-
Forward pass: Simulate scenario paths from stage 1 to , solving each stage LP with the current cut approximation. This produces trial states and a statistical upper bound on optimal cost.
-
Backward pass: Traverse from stage back to stage 1. At each stage, solve subproblems for all scenario realizations at each trial state, extract dual multipliers, aggregate them into new cuts, and add each cut to the stage’s cut pool. The first-stage objective (including ) provides a deterministic lower bound.
Cuts accumulate over iterations, progressively tightening toward the true . The algorithm converges when the gap between lower and upper bounds falls below a tolerance.
Why the LP Formulation Matters
The quality of Benders cuts depends directly on the LP formulation:
- Recourse slacks (deficit, excess) guarantee feasibility for every scenario, ensuring duals always exist. Without relatively complete recourse, the backward pass would encounter infeasible subproblems.
- Penalty magnitudes shape the value function. Correct priority ordering ensures that cuts propagate economically meaningful signals across stages.
- State variable identification determines which dual multipliers contribute to cut coefficients. Every constraint linking the current stage to the incoming state produces a component of .
Related Topics
- LP Formulation — complete stage subproblem: objective, constraints, penalties, and Benders cut interface
- Cut Management — cut selection, deletion, and storage strategies
- SDDP Theory — the iterative algorithm structure
- Forward-Backward Pass — detailed mechanics of the forward simulation and backward cut generation passes
Further Reading
- Pereira, M. V. F. and Pinto, L. M. V. G. (1991). “Multi-stage stochastic optimization applied to energy planning.” Mathematical Programming, 52(1-3), 359-375.
- Benders, J. F. (1962). “Partitioning procedures for solving mixed-variables programming problems.” Numerische Mathematik, 4(1), 238-252.
- Birge, J. R. and Louveaux, F. V. (2011). Introduction to Stochastic Programming. Springer, 2nd edition.
- SDDP.jl documentation: https://sddp.dev/stable/
- Cut Management (spec): ../specs/math/cut-management.md