System Element Modeling Overview
Purpose
This spec describes the physical components of a hydrothermal power system as modeled by Cobre: what each element represents, its decision variables, how it connects to other elements, and its role in the optimization objective. It serves as the conceptual foundation between the SDDP algorithm description and the full LP formulation — the reader should understand what is being optimized before seeing how the constraints are assembled.
Reading order: SDDP algorithm → this spec → LP formulation → equipment formulations
For variable naming conventions and index sets, see notation conventions.
Variable Units Convention
All decision variables in Cobre use rate units: electrical quantities in MW, hydraulic flows in m³/s. Storage (hm³) is inherently an absolute quantity. The block duration [hours] enters the LP as an external multiplier — it appears in the objective function coefficients and in the water balance conversion factor, but not in the variable bounds or constraint matrix.
This is a deliberate design decision with consequences across the formulation:
| Aspect | Consequence |
|---|---|
| Objective function | All cost terms are scaled by : the coefficient for a $100/MWh thermal is |
| Variable bounds | Block-invariant — a 500 MW capacity bound is the same regardless of block duration |
| Constraint matrix | Clean coefficients: load balance has ±1, production function uses [MW/(m³/s)] directly |
| Duals | Load balance dual has units $/MW. To obtain the marginal cost (CMO) in $/MWh, divide by |
| Cut coefficients | Unaffected — coupling state variables (storage in hm³, AR lags in m³/s) are independent of this choice |
Why not absolute units (MWh, hm³ per block)? The alternative — internalizing into the variables — was evaluated and rejected for three reasons:
-
FPHA incompatibility: The FPHA hyperplane relates instantaneous rates to storage level. Converting to absolute units does not eliminate from the FPHA constant term, and introduces a scaling factor on flow coefficients.
-
Constraint matrix quality: With rate units, the constraint matrix (excluding the objective row) spans ~3 orders of magnitude (–, –, conversion factors ~–). Absolute units inflate this to ~5 orders via the 278 factor in FPHA rows. A tighter constraint matrix improves simplex pivot stability.
-
Block-varying bounds: Absolute units make every variable bound depend on ( instead of ), complicating LP construction and making the LP structure vary with block configuration.
The objective row does carry large coefficients — up to for deep deficit in monthly problems. Modern LP solvers handle objective scaling effectively through internal prescaling, and this is where the scaling challenge is most tractable.
Output convention: All output reports and user-facing marginal costs must apply the conversion. See Output Schemas.
1. System Architecture Overview
A hydrothermal power system in Cobre consists of interconnected physical elements that work together to meet electricity demand at minimum cost under inflow uncertainty:
The optimizer determines generation and flow decisions at each stage to minimize total expected cost (thermal generation + deficit penalties + regularization costs) while respecting physical constraints and preparing for uncertain future inflows.
2. Buses (Regional Subsystems)
Physical Meaning
A bus represents a node in the power network where electrical energy balance must be maintained. The granularity is user-defined: a bus may represent a large regional subsystem, a single substation, or any aggregation level in between. The model scales from a handful of buses to hundreds or thousands without structural changes.
Example: In studies of the Brazilian interconnected system (SIN), buses typically correspond to the four major regions (Southeast/Midwest, South, Northeast, North), but finer decompositions are equally valid.
Decision Variables
| Variable | Units | Description |
|---|---|---|
| MW | Load deficit (unserved energy) at bus , block , segment | |
| MW | Excess generation at bus , block |
Connections to Other Elements
Each bus serves as the energy balance node where:
- Inflows: Generation from hydro plants, thermal plants, and import contracts connected to the bus
- Outflows: Demand, export contracts, pumping station consumption, and transmission to other buses
Key Parameters
| Parameter | Units | Description |
|---|---|---|
| MW | Load demand at bus , block | |
| $/MWh | Deficit cost (value of unserved energy), segment | |
| $/MWh | Excess generation penalty (regularization) | |
| MW | Deficit segment depth |
Role in Objective Function
- Deficit cost: Very high penalty ($1,000–10,000/MWh) representing value of lost load
- Excess cost: Small regularization term to eliminate spurious slack generation
LP Constraint Preview
For each bus and block , the load balance constraint enforces:
For the assembled constraint, see LP formulation.
3. Transmission Lines
Physical Meaning
A transmission line represents the interconnection between two buses, allowing power transfer subject to capacity limits and transmission losses. Lines are bidirectional.
Decision Variables
| Variable | Units | Description |
|---|---|---|
| MW | Direct flow on line (source → target), block | |
| MW | Reverse flow on line (target → source), block |
Modeling note: Cobre uses two non-negative variables (, ) rather than a single signed variable. This simplifies bound handling and naturally prevents simultaneous bidirectional flow through regularization costs.
Connections to Other Elements
Each line connects exactly two buses:
- Source bus: Exports , receives
- Target bus: Receives , exports
Key Parameters
| Parameter | Units | Description |
|---|---|---|
| MW | Capacity limit (direct direction); may vary by stage via exchange factors | |
| MW | Capacity limit (reverse direction); may vary by stage via exchange factors | |
| — | Transmission efficiency: | |
| $/MWh | Exchange cost (regularization) |
Role in Objective Function
The exchange cost is a regularization term (typically $0.01–1.00/MWh) that prevents degenerate solutions with unnecessary power circulation and guides the solver toward physically meaningful flow patterns.
LP Constraint Preview
Capacity bounds:
Load balance contribution at source bus:
For detailed constraints, see equipment formulations.
4. Thermal Plants
Physical Meaning
A thermal plant represents dispatchable generation using fuel (natural gas, coal, oil, biomass, nuclear). Thermal plants have fuel costs modeled with piecewise-linear cost curves.
Decision Variables
| Variable | Units | Description |
|---|---|---|
| MW | Generation at thermal plant , block , cost segment |
The total generation is .
Connections to Other Elements
- Bus connection: Each thermal plant connects to exactly one bus, contributing to its energy balance
- No cascade coupling: Unlike hydro plants, thermals are independent of each other
Key Parameters
| Parameter | Units | Description |
|---|---|---|
| , | MW | Generation bounds (capacity, minimum stable load) |
| $/MWh | Marginal cost for segment (fuel + O&M) | |
| MW | Segment capacity |
Role in Objective Function
Thermal costs represent actual operating expenses ($50–500/MWh depending on fuel type) and constitute the primary controllable cost in the objective function.
LP Constraint Preview
Segment bounds (cost curve linearization): for all .
Total generation bounds:
Note: Cobre uses a continuous LP relaxation — there are no binary commitment variables. The minimum generation bound represents either “fully off” (0) or “minimum stable” operation. This is a deliberate modeling choice: the LP may dispatch a thermal at an intermediate level between zero and , which is physically unrealistic but acceptable for the long-term planning horizon targeted by SDDP.
For detailed constraints, see equipment formulations.
GNL Thermal Plants (Deferred)
Implementation Status: The data model is fully specified (see Input System Entities §4); implementation is deferred. GNL thermals are currently rejected by input validation.
GNL (Gas Natural Liquefeito) plants require dispatch anticipation: the dispatch decision must be committed stages ahead due to fuel ordering lead times. This introduces additional state variables — a committed dispatch pipeline of values that shift forward at each stage:
| State Variable | Description |
|---|---|
| Dispatch committed for stage | |
| Dispatch committed for stage | |
… up to lag_stages ahead |
These state variables link stages through the Bellman recursion alongside hydro storage and AR lags. When implemented, GNL thermals will be the only non-hydro elements with state variables in the SDDP formulation.
5. Hydro Plants
Hydro plants are the central elements of the SDDP formulation because:
- Reservoir storage creates temporal coupling (water saved today is available tomorrow)
- Inflows are stochastic (uncertain future rainfall/snowmelt)
- The water value (opportunity cost of using water now vs. saving it) emerges from the optimization
Physical Meaning
A hydro plant converts the potential energy of stored water into electricity. Each plant has a reservoir (storage), turbines (conversion), and spillways (excess water release). Hydro plants are typically arranged in cascades where upstream releases become downstream inflows.
Operating Status
Cobre distinguishes two hydro plant subsets based on their operational state:
| Subset | Symbol | Description |
|---|---|---|
| Operating | Plants that can generate electricity; subject to generation constraints | |
| Filling | New plants under commissioning, filling dead volume; no generation |
Most plants are in . Filling hydros have target storage constraints instead of generation constraints. Some plants have negligible storage capacity (run-of-river) and must pass all inflows through turbines and spillways within the same stage.
Decision Variables
| Variable | Units | Description |
|---|---|---|
| hm³ | End-of-stage reservoir storage (state variable) | |
| m³/s | AR lag for inflow model (state variable, see note below) | |
| m³/s | Turbined flow (through generators), block | |
| m³/s | Spillage (released without generation), block | |
| m³/s | Diversion flow (bypassed to separate channel), block | |
| m³/s | Evaporation (see note below), block | |
| m³/s | Water withdrawal (see note below), block | |
| MW | Hydro generation, block | |
| m³/s | Total outflow: (downstream channel flow) |
State variables ( and ) link stages through the Bellman recursion. The storage tracks reservoir volume and is a true decision variable within each stage (the optimizer chooses its end-of-stage value). The AR lags carry inflow history for the PAR(p) model: they are state variables in the SDDP sense (passed between stages and subject to Benders cuts), but are fixed at the beginning of each stage to the realized inflow values — they are not free for the optimizer to choose. All other variables are control variables determined within each stage.
Evaporation and withdrawal: and are parameter-driven quantities computed from input data (reservoir surface area, withdrawal schedules). They appear in the LP as fixed contributions to the water balance, with slack variables to ensure feasibility when the computed values cannot be physically sustained (e.g., drought reducing available water below the withdrawal commitment).
Connections to Other Elements
- Bus connection: Each hydro plant connects to one bus for energy delivery
- Cascade topology: Upstream plants’ outflows () become downstream plants’ inflows, with optional water travel time delay
- Diversion targets: Some plants can divert water to a separate downstream plant (not the immediate cascade successor), bounded by
- Pumping stations: May receive pumped water (increasing storage) or supply water to pumps (decreasing storage)
Key Parameters
| Parameter | Units | Description |
|---|---|---|
| , | hm³ | Storage bounds (useful volume) |
| , | m³/s | Turbined flow bounds (machine limits) |
| , | m³/s | Outflow bounds (environmental flow, flood control) |
| , | MW | Generation bounds (user-defined, not derived from flow) |
| m³/s | Maximum diversion flow | |
| MW/(m³/s) | Productivity (constant model) | |
| — | FPHA hyperplane coefficients for plane | |
| m³/s | Incremental inflow (stochastic, from PAR model) | |
| , | hm³, m³/s | Incoming state (from previous stage) |
Water Balance Phenomena
The reservoir dynamics account for all water flows in and out of the plant:
| Term | Direction | Description |
|---|---|---|
| Initial | Incoming storage from previous stage | |
| Inflow | Incremental inflow (lateral catchment, stochastic) | |
| Inflow | Upstream cascade outflows (with travel time delay) | |
| Inflow | Diverted water received from other plants | |
| Inflow | Pumped water received from pumping stations | |
| Outflow | Turbined + spillage + diversion (released downstream) | |
| Outflow | Evaporation (reservoir surface loss; can be negative for net precipitation) | |
| Outflow | Water withdrawal (consumptive use, removed from system) | |
| Outflow | Pumped water extracted by pumping stations |
Note: Outflow is the water released to the downstream channel (affects tailrace level). Withdrawal and diversion exit through different paths and do not affect the main tailrace.
Production Function (Water to Power)
Cobre supports three models for converting turbined flow to electrical generation, in increasing order of complexity:
-
Constant Productivity: — simple linear relationship with fixed [MW/(m³/s)], suitable for plants with stable head.
-
Linearized Head (simulation-only): Adjusts productivity based on head variation with storage level. Requires hydro geometry data (Volume-Height-Area curve). This model is excluded from training because the bilinear term () requires re-fixing between iterations, changing the LP and breaking SDDP convergence guarantees. See hydro production models §3.
-
FPHA (Função de Produção Hidrelétrica Aproximada): Piecewise-linear approximation via hyperplanes that captures head variation with storage level and accounts for tailrace effects from spillage. Each plane :
Training models: Only
constant_productivityandfphaare valid during training (policy construction). The linearized head model is available during simulation (policy evaluation) only.
The production model can vary by stage or season per hydro — see Input Hydro Extensions §2 for model selection modes.
For the complete FPHA formulation and model comparison, see hydro production models.
Operational Constraints (Soft)
Several hydro constraints are enforced as soft constraints with slack variables and penalties:
| Constraint | Meaning | Slack Variable |
|---|---|---|
| Minimum storage (dead volume) | ||
| Minimum turbined flow (equipment limits) | ||
| Minimum outflow (environmental flow) | ||
| Maximum outflow (flood control) | ||
| Minimum generation (grid services) | ||
| feasible | Evaporation within physical limits | |
| met | Water withdrawal commitment | |
| (filling terminal) | Filling target at last filling stage |
Soft constraints allow the optimizer to violate bounds when physically necessary (e.g., drought conditions preventing minimum outflow), with high penalty costs signaling undesirable operation. Maximum storage () is a hard physical limit — excess water is handled by emergency spillage, not a slack variable. For the penalty priority ordering and cost magnitudes, see Penalty System §2. For the complete constraint formulations, see equipment formulations.
Dead-Volume Filling
Cobre models the commissioning of new hydro plants with a filling period during which the reservoir accumulates water to reach the dead volume (). During this period:
- The hydro has no generation: , (hard constraint)
- Storage is allowed below (the min storage slack is inactive)
- Outflow is limited to spillage (turbines not operational)
- Environmental flow must be met via spillage, with
outflow_violation_belowslack if impossible - A terminal filling constraint at the last filling stage enforces with the highest penalty in the system ()
For the full filling model description, see Input System Entities §3 and Penalty System §7.
Role in Objective Function
- Spillage cost: Small regularization ($0.001–0.01 per m³/s·h) to prefer turbining over spilling
- FPHA turbined cost: Regularization applied only to hydros using the FPHA production model. Must be >
spillage_costfor the same plant to prevent interior FPHA solutions. See Penalty System §2. - Diversion cost: Small regularization, typically higher than spillage (water leaves main cascade)
- Slack penalties: High costs for constraint violations — storage below dead volume, outflow violations, generation violations, evaporation violations, water withdrawal shortfall. See Penalty System for the full penalty taxonomy and priority ordering.
- No generation cost: Hydro generation has zero marginal fuel cost — its “cost” is the opportunity cost of depleting storage, captured through the value function
LP Constraint Preview
Water balance (reservoir dynamics):
where includes all inflow and outflow terms listed above.
AR lag fixing (inflow history): for all
Outflow definition:
Generation constraint (depends on production model):
- Constant productivity:
- FPHA: for each plane
For the fully assembled constraints, see LP formulation.
6. Non-Controllable Generation Sources
Physical Meaning
A non-controllable source represents intermittent generation (wind farms, solar plants, small run-of-river hydros, etc.) whose available output depends on external conditions (weather, river flow) rather than dispatch decisions. The solver receives a stochastic availability value per scenario from the scenario pipeline, and can only curtail generation below that availability — it cannot dispatch upward beyond what nature provides.
Non-controllable sources have near-zero marginal cost. The cost of curtailing available generation is a regularization penalty (Category 3 in the Penalty System), analogous to spillage_cost for hydros — curtailment discards available “free” energy.
Operative States
Non-controllable sources have lifecycle stages controlled by entry_stage_id and exit_stage_id:
| State | Condition | LP Variables |
|---|---|---|
non_existing | Before entry_stage_id | None |
operating | Between entry_stage_id and exit_stage_id | generation, curtailment (derived) |
decommissioned | After exit_stage_id | None |
Decision Variables
| Variable | Units | Description |
|---|---|---|
| MW | Generation at non-controllable source , block |
Curtailment is not a separate LP decision variable — it is derived as , where is the stochastic available generation for the current (stage, scenario). The implementation may equivalently formulate curtailment as a reward for dispatching (negative cost on ) rather than a penalty on ; either is valid.
Connections to Other Elements
- Bus connection: Each source connects to exactly one bus, contributing generation to its energy balance
Key Parameters
| Parameter | Units | Description |
|---|---|---|
| MW | Installed capacity (hard physical upper bound) | |
| MW | Available generation for current (stage, scenario), from scenario pipeline. Bounded by | |
| $/MWh | Curtailment cost (regularization penalty) |
Role in Objective Function
The curtailment cost is a small regularization term ($0.001–0.01/MWh) that incentivizes the solver to use all available generation before curtailing.
LP Constraint Preview
Generation bounds (hard constraints, no slack variables):
Load balance contribution at connected bus: (generation injected).
Note: Unlike hydro and thermal plants, non-controllable sources have no stage-varying operational bounds beyond the stochastic availability. Their output is entirely determined by the scenario model. See Input System Entities §7 for the data model.
For detailed constraints, see equipment formulations.
7. Pumping Stations
Physical Meaning
A pumping station transfers water from one reservoir (source) to another (destination), consuming electrical power in the process. Pumping enables elevation transfer, basin transfer, and storage arbitrage (pumping during low-demand periods, generating during high-demand).
Decision Variables
| Variable | Units | Description |
|---|---|---|
| m³/s | Pumped water flow at station , block |
Connections to Other Elements
- Source hydro: Water is withdrawn from this reservoir
- Destination hydro: Water is added to this reservoir
- Bus connection: Pumping consumes power at the connected bus
Key Parameters
| Parameter | Units | Description |
|---|---|---|
| m³/s | Minimum pumped flow | |
| m³/s | Maximum pumped flow | |
| MW/(m³/s) | Power consumption rate |
Role in Objective Function
Important: Pumping stations do not have a direct cost term in the objective function. The cost of pumping is implicitly captured through the energy consumed, which appears as load in the power balance.
LP Constraint Preview
Flow bounds:
Water balance impact: Source hydro: (water removed); Destination hydro: (water added).
Load balance impact at connected bus: (power consumed).
For detailed constraints, see equipment formulations.
8. Import/Export Contracts
Physical Meaning
Contracts represent agreements to buy (import) or sell (export) electricity with external systems outside the modeled region, providing flexibility during shortages and revenue opportunity for surplus.
Each contract is unidirectional: it is either an import contract or an export contract, identified by a type field. This matches the data model in Input System Entities §6, where each contract has a single price_per_mwh and a single limits.min_mw/limits.max_mw pair.
Decision Variables
| Variable | Units | Description |
|---|---|---|
| MW | Dispatched power for contract , block |
Notation: (Greek chi) is used for contracts to avoid confusion with cost parameter and flow variable .
Connections to Other Elements
Each contract connects to exactly one bus, contributing to its energy balance:
- Import contracts (): Add to the bus (power entering the system)
- Export contracts (): Remove from the bus (power leaving the system)
Key Parameters
| Parameter | Units | Description |
|---|---|---|
| , | MW | Minimum and maximum contract dispatch limits |
| $/MWh | Contract price: positive for imports (cost), negative for exports (revenue) |
Role in Objective Function
Because import prices are positive and export prices are negative, this single summation naturally adds import costs and subtracts export revenue.
LP Constraint Preview
Capacity bounds:
For detailed constraints, see equipment formulations.
9. Summary: Physical Elements to LP Components
The following table maps each physical system element to its LP representation:
| Physical Element | State Variables | Control Variables | Key Constraints | Objective Role |
|---|---|---|---|---|
| Bus | — | , | Load balance | Deficit penalty (high), Excess penalty (low) |
| Transmission Line | — | , | Capacity bounds | Exchange cost (regularization) |
| Thermal Plant | — | Generation bounds, Segment limits | Fuel cost | |
| Thermal (GNL) | Generation bounds + commit pipeline | Fuel cost (deferred) | ||
| Hydro Plant | , | , , , | Water balance, Generation function | Spillage/diversion cost (regularization) |
| Non-Controllable | — | Availability bound | Curtailment penalty (regularization) | |
| Pumping Station | — | Flow bounds (min/max) | None (cost via energy consumption) | |
| Contract | — | Dispatch bounds (min/max) | Import cost or Export revenue |
Key insight: The hydro storage variables and AR lag variables are the only state variables that currently link stages through the Bellman recursion. When GNL support is implemented, the committed dispatch pipeline will add thermal state variables as well. All other elements contribute control variables that are determined within each stage. This structure enables SDDP’s decomposition: the stage subproblem optimizes all control variables given the incoming state, and Benders cuts approximate the future cost as a function of the outgoing state.
Cross-References
- Notation conventions — variable naming conventions and index sets used throughout
- LP formulation — fully assembled LP constraints combining all elements
- Equipment formulations — detailed per-equipment constraint derivations
- Hydro production models — FPHA and linearized head alternatives for the hydro production function
- Deferred features — GNL thermal dispatch anticipation and battery storage (planned)