Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

Notation

This page defines the complete mathematical notation used across the Cobre documentation: index sets, parameters, decision variables, and dual variables. It is the canonical reference for symbol meanings, ensuring consistency across all mathematical and data model content.

1. General Notation Conventions

This document follows SDDP.jl notation conventions for consistency with the broader SDDP literature:

ConventionMeaning
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 (Lagrange multipliers)
Cut intercept and coefficients
Iteration counter

2. Index Sets

SymbolDescriptionTypical SizeNotes
Stages60-1205-10 year monthly horizon
Blocks within stage1-243 typical (LEVE/MÉDIA/PESADA)
Buses4-104-5 for SIN subsystems
Hydro plants160All plants in system
Operating hydros (can generate)Most/all plants typically operating
Filling hydros (no generation)0Usually 0; rare for new plants under commissioning
Hydros using FPHA production model50Subset with fitted hyperplanes
Hydros using constant productivityComplement of within
Thermal plants130
Non-controllable generation sources0Renewable curtailment entities
Transmission lines10Regional interconnections
All contracts ()10Unified contract set
, Import/export contracts5
Pumping stations5
Generic constraints50User-defined
Deficit segments for bus 1Multiple segments optional
FPHA planes for hydro 125Typical value; depends on grid resolution
Upstream hydros of 1-2Immediate upstream in cascade
Scenario realizations at stage 20Standard branching factor

3. Parameters

3.1 Time and Conversion

SymbolUnitsDescription
hoursDuration of block
-Block weight (fraction of stage)
hm³/(m³/s)Time conversion: m³/s over stage → hm³

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:

  1. Flow rate: [m³/s]
  2. Time period: [hours]
  3. Target volume: [hm³] =

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):

BlockNameDuration (h)
1LEVE200
2MÉDIA300
3PESADA228
Total728

Verification: A constant inflow of m³/s over the month yields:

Direct calculation:

3.2 Load and Costs

SymbolUnitsDescription
MWLoad at bus , block
$/MWhDeficit cost at bus , segment
MWDeficit segment depth
$/MWhExcess generation cost
$/MWhThermal cost at plant , segment
$/(m³/s·h)Spillage cost
$/(m³/s·h)Diversion cost
$/MWhExchange (transmission) cost
, $/MWhContract import cost / export revenue

3.3 Hydro Parameters

SymbolUnitsDescription
hm³Incoming storage (state from previous stage)
, hm³Storage bounds
, m³/sTurbined flow bounds
, MWGeneration bounds
, m³/sOutflow bounds
MW/(m³/s)Productivity (constant model)
-FPHA plane coefficients

3.4 Transmission and Contract Parameters

SymbolUnitsDescription
, MWLine capacity (direct/reverse)
-Line efficiency
, MWContract capacity bounds

3.5 Inflow Model Parameters

Note on Periodicity: The PAR(p) model uses periodic parameters that repeat with a cycle length . Common configurations:

  • Monthly stages: (seasons = months)
  • Weekly stages: (seasons = weeks)
  • Custom resolution: = number of distinct periods in the cycle

We use “season as a generic term for the position within the cycle, avoiding the term “month” which is resolution-specific. The mapping converts stage index to season index .

SymbolUnitsDescription
m³/sSeasonal mean inflow for season
-AR coefficient for season , lag
m³/sResidual standard deviation for season
m³/sIncoming AR lag (state)

4. Decision Variables

Notation Convention:

  • Generation variables use with entity subscript: (hydro at plant ), (thermal at plant )
  • Flow variables use intuitive single letters: (turbined), (spillage), (diversion/bypass)
  • Total outflow is explicitly defined: (downstream channel flow)
  • Contract variables use (chi) with direction superscript: ,
  • Slack variables use with constraint-type superscript

Symbol Selection Rationale:

  • (turbined): from “vazão turbinada” (Portuguese) or “discharge through turbines”
  • (spillage): standard hydrology notation
  • (diversion): “bypass” or “desvio” — avoids confusion with demand or deficit
  • (outflow): total downstream flow affecting tailrace level
  • (withdrawal): “retirada” — consumptive removal from the system
  • (contract): Greek chi, visually distinct from cost symbol

4.1 Per-Block Variables

Per-block variables are indexed by :

VariableDomainUnitsDescription
MWDeficit at bus , segment
MWExcess generation at bus
MWDirect flow on line
MWReverse flow on line
MWThermal generation at plant , segment
m³/sTurbined flow at hydro
m³/sSpillage at hydro
MWHydro generation at plant
m³/sDiversion/bypass flow (to separate channel)
-m³/sTotal downstream outflow:
freem³/sEvaporation (can be negative for condensation)
m³/sWater withdrawal (consumptive use)
m³/sPumped flow at station
MWContract import
MWContract export

4.2 Stage-Level State Variables

VariableDomainUnitsDescription
hm³End-of-stage storage
-hm³Average storage during stage:
fixedm³/sAR lag (fixed by state transition)
$Future cost (cost-to-go approximation)

4.3 Slack Variables

Slack variables for soft constraints:

VariableDomainUnitsConstraint
hm³Storage below minimum
hm³Filling target shortfall
m³/sTurbined flow below minimum
m³/sOutflow below minimum
m³/sOutflow above maximum
MWGeneration below minimum
, m³/sEvaporation violation
m³/sWater withdrawal violation
m³/sInflow non-negativity (if enabled)

5. Dual Variables

Dual variables are essential for cut coefficient computation in the SDDP backward pass. This section describes how state-linking constraints are formulated in the LP for efficient solver updates, and how the resulting dual variables map to cut coefficients.

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, we formulate constraints so that:

Design Principle: All incoming state variables are isolated on the right-hand side (RHS) of their respective constraints.

This allows the hot path (forward/backward passes) to update subproblems by simply modifying row bounds via changeRowBounds() without rebuilding constraint matrices. The LP matrix coefficients remain constant across all subproblem solves within a stage.

5.2 Water Balance: LP Form

The water balance is mathematically:

For LP implementation, we rearrange to isolate on the RHS:

Expanding the net flows and collecting all LP variables on the LHS:

LP Structure:

  • LHS: Linear combination of LP variables (storage , flows , , , etc.)
  • RHS: Incoming state only (set via row bounds in hot path)
  • Constraint type: Equality ()

5.3 AR Lag Constraints: LP Form

For autoregressive inflow state variables, the constraint fixes the current-stage lag variable to the incoming value:

LP Structure:

  • LHS: Single LP variable (coefficient = 1)
  • RHS: Incoming lag value (set via row bounds in hot path)
  • Constraint type: Equality ()

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 a constraint written as , the dual variable represents:

where is the optimal objective value. This is the marginal cost with respect to increasing the RHS.

Storage Dual ()

For the storage fixing constraint (see LP Formulation §4a):

The dual 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

Cut coefficient:

No sign change is needed because the incoming state appears directly on the RHS with coefficient . By the LP envelope theorem, this dual automatically captures all downstream effects — water balance, FPHA hyperplanes, and generic constraints — without manual combination of duals from multiple constraint types. See Cut Management.

AR Lag Dual ()

For the lag fixing constraint:

The dual 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 dual variable directly, since appears on the RHS with coefficient . No sign change or scaling is needed.

5.5 Summary Table

SymbolConstraint (LP Form)RHSCut Coefficient
(storage fixing) (captures all downstream effects)
(direct)
Load balanceMarginal cost of energy
Water balance-Not used directly for cut coefficients
FPHA hyperplane -Captured via automatically
Generic constraint -Captured via automatically
Benders cut Cut activity indicator

5.6 Implementation Notes

The hot-path solver update pattern (modifying RHS via changeRowBounds for incoming state, extracting duals via getRowDual for cut coefficients) is documented in the Solver HiGHS Implementation and Solver Abstraction specs. The key property: since incoming state variables appear on the RHS of fixing constraints with coefficient , no sign change is needed when mapping duals to cut coefficients (; for AR lags, is used directly). Cut coefficient extraction is a single contiguous slice read: dual[0..n_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