Block Formulation Variants
Purpose
This spec defines the two block formulations supported by Cobre — parallel and chronological — which determine how intra-stage time periods (e.g., peak, off-peak, or hourly resolution) are handled in the LP. The choice of block formulation affects water balance constraints, LP size, and the ability to model intra-stage storage dynamics.
For the variable and set definitions used here, see notation conventions. For how blocks integrate into the full LP, see LP formulation. For the system elements that participate in block constraints, see system elements.
1. Parallel Blocks (Default)
In parallel blocks mode, all blocks within a stage are independent — there is no intra-stage storage dynamics.
1.1 Water Balance (Parallel)
A single water balance constraint spans all blocks:
where:
- is the block weight
- = inflows from upstream − outflows − evaporation − withdrawal
This formulation assumes the reservoir can freely redistribute water across blocks within the stage.
1.2 Characteristics
| Aspect | Description |
|---|---|
| LP size | Smaller (one water balance per hydro) |
| Storage dynamics | End-of-stage only |
| Use case | Long-term strategic planning |
| Configuration | block_mode: "parallel" per stage in stages.json (see Input Scenarios §1.5) |
2. Chronological Blocks
In chronological blocks mode, blocks are sequential within each stage, enabling modeling of intra-stage storage dynamics (e.g., daily cycling patterns within a monthly stage).
2.1 Additional Variables
| Variable | Domain | Units | Description |
|---|---|---|---|
| hm³ | Storage at end of block |
The end-of-stage storage (state variable) is:
2.2 Block 1 Water Balance
where is the time conversion for block 1.
2.3 Subsequent Blocks Water Balance
For :
2.4 State Variable Definition
Only end-of-stage storage is a state variable:
Inter-block storages for are internal LP variables — not state variables. This ensures:
- Cuts are computed with respect to end-of-stage storage only
- State dimension does not increase with number of blocks
2.5 Dual Extraction for Cuts
In chronological mode, the storage fixing constraint binds the incoming storage LP variable to its trial value (see LP Formulation §4a). The dual of this fixing constraint gives the storage cut coefficient directly:
By the LP envelope theorem, this dual automatically captures all downstream effects through the chain of inter-block water balances (), FPHA constraints, and generic constraints. No special handling or dual combination is required. See Cut Management §2.
2.6 Characteristics
| Aspect | Description |
|---|---|
| LP size | Larger ( additional vars/cons) |
| Storage dynamics | Intra-stage cycling modeled |
| Use case | Short-term planning with storage cycling |
| Configuration | block_mode: "chronological" per stage in stages.json (see Input Scenarios §1.5) |
3. Comparison Summary
| Aspect | Parallel Blocks | Chronological Blocks |
|---|---|---|
| Water balance | 1 per hydro per stage | per hydro per stage |
| Inter-block storage | Not modeled | Explicit continuity |
| State variables | End-of-stage only | End-of-stage only |
| LP variables | Fewer | More |
| LP constraints | Fewer | More |
| Intra-stage dynamics | None | Full |
4. Policy Compatibility Validation
When running in simulation-only, warm-start, or checkpoint resume modes, the block configuration in the current input data must be compatible with the policy (cuts) that was previously trained. Specifically:
-
block_modemust match per stage — cuts trained with parallel blocks encode a different LP structure (water balance, inter-block constraints) than cuts trained with chronological blocks. Using a policy with mismatched block mode produces incorrect future cost evaluations. -
Block count and durations must match per stage — the number of blocks, their ordering, and their durations (τ_k) affect the LP structure from which cut coefficients were derived. Any change invalidates the existing cuts.
This is a hard validation error — the solver must reject the run if any mismatch is detected.
Scope note: Block configuration is one of many input properties that must be validated for policy compatibility. Other properties include the number of hydro plants, state variable dimensions, AR orders, and system topology. A comprehensive policy compatibility validation specification is planned — see Deferred Features §C.9. Requirements for what metadata the training phase must persist alongside the policy will be defined during the architecture review of Training Loop, Simulation Architecture, and Checkpointing.
5. Future Work: Fine-Grained Temporal Resolution
The current block formulations use a single level of temporal decomposition within each stage: the user defines blocks with durations τ_k, and the LP operates at that resolution in both training and simulation.
A more sophisticated approach — used in commercial tools like PSR’s SDDP (v17.3+) — decomposes each stage into representative typical days, each containing chronological hourly (or sub-hourly) blocks. This enables:
- Accurate modeling of daily cycling patterns (peak/off-peak storage arbitrage)
- Proper representation of intermittent renewable generation profiles
- Separate temporal resolutions for training (aggregated blocks) and simulation (full typical-day profiles)
This feature is deferred because it requires:
- New input data schemas (day-type definitions, weights, hourly profiles)
- Separation of the objective time-weighting (day weight × block duration) from the water balance conversion (block duration only)
- Research into how day types chain within a stage (sequential vs. independent with weighted-average storage)
- Validation against reference implementations
See Deferred Features §C.10 for the full description.
Cross-References
- Notation conventions — variable and set definitions (, , , , )
- System elements — hydro plant element description and decision variables
- LP formulation — how block formulations integrate into the assembled LP
- Cut management — cut coefficient extraction from fixing constraint duals (§2)
- Hydro production models — production function constraints that operate within each block
- Input scenarios — per-stage
block_modefield instages.json(§1.5) - Training loop — training phase that produces the policy (must persist block configuration metadata)
- Simulation architecture — simulation phase that must validate policy compatibility
- Checkpointing — checkpoint format that stores policy metadata for resume validation
- Deferred features — policy compatibility validation (§C.9), fine-grained temporal resolution (§C.10)