Notation Conventions
Purpose
Section titled “Purpose”This spec defines the complete mathematical notation used across all Cobre specification documents: index sets, parameters, decision variables, and dual variables. It serves as the canonical reference for symbol meanings, ensuring consistency across all math and data model specs.
1. General Notation Conventions
Section titled “1. General Notation Conventions”This document follows SDDP.jl notation conventions for consistency with the broader SDDP literature:
| Convention | Meaning |
|---|---|
| Stage index | |
| Scenario realization at stage | |
| State variables at end of stage | |
| Incoming state (from previous stage) | |
| Value function (cost-to-go) at stage | |
| Epigraph variable approximating | |
| Dual variables (row Lagrange multipliers) | |
| Cut intercept and coefficients | |
| Iteration counter |
2. Index Sets
Section titled “2. Index Sets”| Symbol | Description |
|---|---|
| Stages | |
| Blocks within stage | |
| Buses | |
| Hydro plants | |
| Operating hydros (can generate) | |
| Filling hydros (no generation) | |
| Hydros using FPHA production model | |
| Hydros using constant productivity (complement of within ) | |
| Thermal plants | |
| Non-controllable generation sources | |
| Transmission lines | |
| All contracts () | |
| , | Import/export contracts |
| Pumping stations | |
| Generic constraints | |
| Deficit segments for bus | |
| FPHA planes for hydro | |
| Upstream hydros of | |
| Scenario realizations at stage |
3. Parameters
Section titled “3. Parameters”3.1 Time and Conversion
Section titled “3.1 Time and Conversion”| Symbol | Units | Description |
|---|---|---|
| hours | Duration of block | |
| - | Block weight (fraction of stage) | |
| hm³/(m³/s) | Time conversion: m³/s over stage → hm³ |
Time Conversion Factor Derivation
Section titled “Time Conversion Factor Derivation”The factor converts a flow rate in m³/s to a volume in hm³ accumulated over the stage duration.
Fundamental Relationship:
Unit Conversion Chain:
- Flow rate: [m³/s]
- Time period: [hours]
- Target volume: [hm³] = m³
For a stage with multiple blocks: If the stage has blocks with durations hours, and the flow is assumed constant across the stage (parallel blocks), the total time is hours:
Dimensional Analysis:
Worked Example (Monthly Stage):
| Block | Name | Duration (h) |
|---|---|---|
| 1 | LEVE | 200 |
| 2 | MÉDIA | 300 |
| 3 | PESADA | 228 |
| Total | 728 |
Verification: A constant inflow of m³/s over the month yields:
Direct calculation: ✓
3.2 Load and Costs
Section titled “3.2 Load and Costs”| Symbol | Units | Description |
|---|---|---|
| MW | Load at bus , block | |
| $/MWh | Deficit cost at bus , segment | |
| MW | Deficit segment depth | |
| $/MWh | Excess generation cost | |
| $/MWh | Thermal cost at plant , segment | |
| $/(m³/s·h) | Spillage cost | |
| $/(m³/s·h) | Diversion cost | |
| $/MWh | Exchange (transmission) cost | |
| $/MWh | Contract price (signed: + import cost, − export revenue) |
3.3 Hydro Parameters
Section titled “3.3 Hydro Parameters”| Symbol | Units | Description |
|---|---|---|
| hm³ | Incoming storage (state from previous stage) | |
| , | hm³ | Storage bounds |
| , | m³/s | Turbined flow bounds |
| , | MW | Generation bounds |
| , | m³/s | Outflow bounds |
| MW/(m³/s) | Productivity (constant model) | |
| - | FPHA plane coefficients (already -scaled) | |
| - | FPHA least-squares fit-correction factor; scales the fitted plane set, distinct from the Benders cut intercept . See Hydro Production Models. |
3.4 Transmission and Contract Parameters
Section titled “3.4 Transmission and Contract Parameters”| Symbol | Units | Description |
|---|---|---|
| , | MW | Line capacity (direct/reverse) |
| - | Line efficiency | |
| , | MW | Contract capacity bounds |
3.5 Inflow Model Parameters
Section titled “3.5 Inflow Model Parameters”| Symbol | Units | Description |
|---|---|---|
| m³/s | Seasonal mean inflow for season | |
| - | AR coefficient for season , lag | |
| m³/s | Residual standard deviation for season | |
| m³/s | Incoming AR lag (state) |
4. Decision Variables
Section titled “4. Decision Variables”4.1 Per-Block Variables
Section titled “4.1 Per-Block Variables”Per-block variables are indexed by :
| Variable | Domain | Units | Description |
|---|---|---|---|
| MW | Deficit at bus , segment | ||
| MW | Excess generation at bus | ||
| MW | Direct flow on line | ||
| MW | Reverse flow on line | ||
| MW | Thermal generation at plant , segment | ||
| m³/s | Turbined flow at hydro | ||
| m³/s | Spillage at hydro | ||
| MW | Hydro generation at plant | ||
| m³/s | Diversion/bypass flow (to separate channel) | ||
| - | m³/s | Total downstream outflow: | |
| free | m³/s | Evaporation (can be negative for condensation) | |
| signed | m³/s | Water withdrawal; pinned to a signed target (negative = inter-basin return/addition); the realized value cannot cross zero past the target | |
| m³/s | Pumped flow at station | ||
| MW | Contract dispatch (import if , export if ); is a take-or-pay floor |
4.2 Stage-Level State Variables
Section titled “4.2 Stage-Level State Variables”| Variable | Domain | Units | Description |
|---|---|---|---|
| hm³ | End-of-stage storage | ||
| - | hm³ | Average storage during stage: | |
| fixed | m³/s | AR lag (fixed by state transition) | |
| fixed | MW | Slot of plant ‘s anticipated-thermal ring buffer at stage (fixed by state transition); slot 0 matures here. | |
| MW | Anticipated-thermal commitment placed at stage for delivery at stage | ||
| $ | Future cost (cost-to-go approximation) |
4.3 Slack Variables
Section titled “4.3 Slack Variables”Slack variables for soft constraints:
| Variable | Domain | Units | Constraint |
|---|---|---|---|
| hm³ | Storage below minimum | ||
| hm³ | Per-stage filling-floor shortfall | ||
| m³/s | Turbined flow below minimum | ||
| m³/s | Outflow below minimum | ||
| m³/s | Outflow above maximum | ||
| MW | Generation below minimum | ||
| , | m³/s | Evaporation violation | |
| m³/s | Water withdrawal violation | ||
| m³/s | Inflow non-negativity (if enabled) |
5. Dual Variables and Reduced Costs
Section titled “5. Dual Variables and Reduced Costs”Cut coefficients in SDDP are state sensitivities. This section describes how the incoming state is carried in the LP for efficient solver updates, and how the resulting sensitivities — row duals for true constraints, reduced costs for the pinned state columns — map to cut coefficients.
5.1 LP Formulation Strategy for Efficient Hot-Path Updates
Section titled “5.1 LP Formulation Strategy for Efficient Hot-Path Updates”In the SDDP algorithm, each subproblem solve requires setting the incoming state values (storage volumes and AR lags from the previous stage). For computational efficiency with solvers like HiGHS, Cobre gives each incoming-state coordinate its own LP column and pins it by setting equal lower and upper column bounds:
This design allows the hot path to update incoming state values by patching column bounds (and, for the realized-inflow noise, a single row RHS) without rebuilding the constraint matrix — only scalar values change between solves, not LP structure. The cut coefficient for each state coordinate is then the reduced cost of its pinned column (§5.4).
5.2 Water Balance: LP Form
Section titled “5.2 Water Balance: LP Form”The water balance is mathematically:
For LP implementation, the incoming storage is carried as a dedicated LP variable (the storage_in column) rather than a constant, and all LP variables are collected on the LHS with a zero RHS:
LP Structure:
- LHS: Linear combination of LP variables (storage , incoming storage , flows , , , etc.)
- RHS: — the incoming state is not a constraint RHS; it is pinned separately on the column (§5.1)
- Constraint type: Equality ()
5.3 AR Lag Pinning: LP Form
Section titled “5.3 AR Lag Pinning: LP Form”For autoregressive inflow state variables, the lag column is pinned to the incoming value by equal column bounds:
LP Structure:
- Column: (the
inflow_lagscolumn), bounds set equal to the incoming lag value - Pin value: Incoming lag (set via column bounds in the hot path)
- No constraint row: pinning is a bound, not an equality row
5.4 Cut Coefficient Derivation from Duals
Section titled “5.4 Cut Coefficient Derivation from Duals”The SDDP cut at stage has the form:
where is the intercept and are the coefficients with respect to state variables.
Key principle: For an incoming-state column pinned at , the column’s reduced cost represents:
where is the optimal objective value — the marginal cost of increasing the pinned bound. By KKT parity this equals the multiplier the equivalent equality row would have carried.
Storage Reduced Cost ()
Section titled “Storage Reduced Cost (cˉhin\bar{c}^{in}_hcˉhin)”The incoming storage column is pinned at (see LP Formulation §4a). Its reduced cost measures: “How does optimal cost change if incoming storage increases by 1 hm³?”
Economic interpretation:
- More incoming storage means more water available for generation
- Water has value (can displace thermal generation or avoid deficit)
- Therefore, increasing decreases cost:
- By LP convention (minimization), this gives , hence
Cut coefficient:
The reduced cost is divided by the column’s prescaler factor to recover the original-unit sensitivity (§12 of LP Formulation); no sign change is needed. By the LP envelope theorem, the reduced cost automatically captures all downstream effects — water balance, FPHA hyperplanes, and generic constraints — without manual combination of duals from multiple constraint types. See Cut Management §2.
AR Lag Reduced Cost ()
Section titled “AR Lag Reduced Cost (cˉh,ℓlag\bar{c}^{lag}_{h,\ell}cˉh,ℓlag)”The lag column is pinned at . Its reduced cost measures: _“How does optimal cost change if incoming lag increases by 1 m³/s?”_
Economic interpretation:
- Higher historical inflow (in the PAR model) correlates with higher expected current inflow
- Higher inflows reduce cost (more hydro generation possible)
- Therefore, (increasing the lag decreases cost)
Cut coefficient:
The cut coefficient for lag is the reduced cost of the pinned lag column, divided by its prescaler factor: . No sign change is needed.
5.5 Summary Table
Section titled “5.5 Summary Table”| Symbol | Source | Pinned value / RHS | Cut Coefficient |
|---|---|---|---|
| Reduced cost of pinned column | (captures all downstream effects) | ||
| Reduced cost of pinned column | |||
| Load balance (row dual) | Marginal cost of energy | ||
| Water balance (row dual) | - | Not used directly for cut coefficients | |
| FPHA hyperplane (row dual) | - | Captured via automatically | |
| Generic constraint (row dual) | - | Captured via automatically | |
| Benders cut (row dual) | Cut activity indicator |
5.6 Implementation Notes
Section titled “5.6 Implementation Notes”The key property: since incoming state coordinates are pinned at equal column bounds, each column’s reduced cost is the bound sensitivity directly, so no sign change is needed when mapping to cut coefficients — only the per-column prescaler unscaling (; likewise for AR lags). Cut coefficient extraction reads the reduced costs of the contiguous incoming-state column regions (storage_in, inflow_lags, and, when present, anticipated_state).
Verification check: In a typical hydrothermal system:
- (water has value, more storage reduces cost)
- (cut value increases as storage decreases — future is more expensive with less water)
- The cut correctly penalizes low storage
Cross-References
Section titled “Cross-References”- LP Formulation — Complete LP subproblem using this notation
- SDDP Algorithm — Algorithm overview and cut generation process
- Cut Management — Cut coefficient computation and aggregation details
- PAR Inflow Model — Detailed PAR(p) model using inflow parameters defined here
- Hydro Production Models — FPHA plane coefficients () and productivity ()
- Equipment Formulations — Thermal, contract, pumping variable notation
- What Cobre Solves — methodology principles (reproducibility, determinism, declaration order invariance, code as ground truth, agent-readability) that frame this book