Inflow Non-Negativity Solution Methods
Purpose
Section titled “Purpose”This chapter defines the four methods available for handling negative inflow realizations produced by the PAR(p) model, including their LP formulations, objective function modifications, and trade-offs.
1. Problem Statement
Section titled “1. Problem Statement”The PAR(p) model’s inflow equation — using the AR coefficient — can produce a negative realization:
When the innovation is sufficiently negative (e.g., ), the total can become negative. That is not itself a physical impossibility: is incremental inflow — a plant’s natural flow minus its upstream plants’ — so a genuinely negative value is real hydrology (a reach that loses water over the period), and the same case arises whether the realization comes from PAR(p) noise or from replaying a negative window of historical/observed data directly (inflow_history/recent_observations; see PAR(p) Inflow Model). What the methods below solve is the LP’s water-balance consequence of : absorbing it without the other water-balance variables (storage, release, spillage — all bounded ) being driven infeasible.
2. Penalty Classification
Section titled “2. Penalty Classification”The inflow non-negativity penalty prices a Category 1 recourse slack (Penalty System — Category 1): the slack adds water to the hydro’s water balance, so every subproblem stays feasible when a negative inflow realization leaves the balance without a solution. Its cost is ordered with the constraint-violation penalties: converted to an energy-equivalent cost in $/MWh, it lies above the thermal and contract costs and below deficit (Penalty System — Penalty Priority Ordering).
Since inflow is defined per stage (not per block), the inflow non-negativity penalty appears outside the block summation in the objective, alongside storage violation penalties:
where is the total stage duration in hours. The product is the volume of water the slack adds, in (m³/s)·h, so is a cost per (m³/s)·h of added water.
3. Method: none
Section titled “3. Method: none”LP Formulation: Standard AR constraint (unchanged):
Implications:
- LP may become infeasible when causes water balance violation
- Useful only for debugging or when the AR model guarantees positive outputs
4. Method: penalty
Section titled “4. Method: penalty”Additional Variables:
| Variable | Domain | Units | Description |
|---|---|---|---|
| m³/s | Inflow non-negativity slack |
Water-balance term: the slack enters the hydro’s water balance beside the realized inflow, every term on the left-hand side (LP Formulation §4):
so the slack adds hm³ of water over the stage, in block . The realized-inflow row (LP Formulation §5) is unchanged: the AR equation keeps the realization . A PreFilling hydro’s frozen identity row carries no slack. Interpretation: the water reaching the reservoir is . The LP uses the slack whenever the water balance cannot be met otherwise, or whenever the added water is worth more than its cost; nothing ties it to the sign of the realization.
Objective Function Addition (outside block summation):
where is the penalty cost of hydro and is the total stage duration in hours.
Advantages:
- LP always feasible
- Clear cost signal for negative inflow events
- Preserves AR dynamics for positive realizations
Disadvantages:
- Adds one slack column per hydro
- Slightly affects marginal water values
5. Method: truncation
Section titled “5. Method: truncation”Scenario Generation:
LP Formulation: Standard AR constraint with the already-truncated value:
Advantages:
- No additional LP variables or constraints
- Straightforward formulation
Disadvantages:
- Biases the distribution: Shifts mean upward
- Breaks AR dynamics: When truncation occurs, temporal correlation is disrupted
- May affect long-term storage dynamics
6. Method: truncation_with_penalty — Hybrid Design
Section titled “6. Method: truncation_with_penalty — Hybrid Design”The two preceding methods each handle one side of the problem well but leave the other unaddressed: pure truncation keeps the LP lean but biases the inflow distribution upward; pure penalty preserves distribution fidelity but relies entirely on LP slack to absorb every negative excursion. The hybrid combines both mechanisms to cover the full range of noise excursions efficiently.
6.1 Formulation: clamp outside the LP, slack inside the LP
Section titled “6.1 Formulation: clamp outside the LP, slack inside the LP”The PAR(p) noise is clamped outside the LP before the scenario is patched in, exactly as in the truncation method:
Inside the LP, penalty slack columns are added to the water-balance constraint, exactly as in the penalty method:
Additional Variables:
| Variable | Domain | Units | Description |
|---|---|---|---|
| m³/s | Inflow non-negativity slack |
Water-balance term: as in §4, with the clamped on the realized-inflow row.
Objective Function Addition (outside block summation):
6.2 Why the hybrid
Section titled “6.2 Why the hybrid”Clamping and slack columns serve complementary roles that together preserve relatively complete recourse:
- Clamping handles the common case cheaply. Most negative excursions are small — the noise term dips slightly below zero for a handful of stages in a scenario tree. Clamping those excursions to zero outside the LP adds no LP variables and no solver work. The inflow handed to the LP is always non-negative, so the water-balance constraint is never violated by the noise term alone.
- Slack columns absorb rare large excursions without rejecting the scenario. When the PAR(p) model produces an extreme realisation, the deterministic base and lag contribution combined with the noise term can still yield a zero inflow after clamping, and the LP’s water-balance may still be infeasible without relief. The slack column lets the solver add water to the stage’s balance at a known cost rather than declaring infeasibility. The stage is kept in the training set; the penalty signal propagates into future-cost cuts.
- Together they guarantee LP feasibility (Category 1 recourse) across the full noise distribution, without biasing the distribution upward beyond what truncation already does for small excursions.
6.3 Reference design
Section titled “6.3 Reference design”The literature formulates the same problem using a dimensionless noise-adjustment slack . This reference design is presented here so readers familiar with the Brazilian stochastic-dispatch literature can map between the two formulations.
Additional Variables:
| Variable | Domain | Units | Description |
|---|---|---|---|
| - | Noise adjustment slack (dimensionless) |
Modified AR Constraint (two parts):
Part A — Modified noise term:
where is the original (possibly very negative) noise realization.
Part B — Inflow with adjusted noise:
Non-negativity constraint:
Interpretation: The optimizer chooses to be the minimum adjustment needed to make :
Objective Function Addition (outside block summation):
The penalty is proportional to , which is the actual inflow adjustment in m³/s. Note that varies by season, so the effective penalty for a given noise adjustment is larger in high-variability seasons and smaller in low-variability seasons. This is by design — a given noise adjustment represents a larger physical inflow correction when is large.
Relation to the clamp-plus-slack formulation: both price added water at per (m³/s)·h, and they differ in two ways. The clamp-plus-slack formulation lifts a negative realization to zero outside the LP, at no cost, while the reference design pays for that lift through . And the reference design’s adjustment changes itself, which the AR lags of later stages carry, while the slack adds water beside an unchanged realized-inflow row, so the lags carry the clamped realization (the raw one under penalty). The clamp-plus-slack formulation adds no noise-adjustment constraint to the LP.
7. Comparison Summary
Section titled “7. Comparison Summary”| Method | LP Size | Bias | AR Preservation | Feasibility |
|---|---|---|---|---|
none | Base | None | Full | May fail |
penalty | +1 column per hydro | Minimal | Full | Guaranteed |
truncation | Base | Upward | Partial | Guaranteed |
truncation_with_penalty | +1 column per hydro | Upward | Partial | Guaranteed |
8. Reference
Section titled “8. Reference”Cross-References
Section titled “Cross-References”- LP Formulation — Objective function structure and penalty taxonomy, where prices a Category 1 recourse slack
- PAR(p) Inflow Model — Defines the PAR(p) model that produces the inflow realizations handled here
- Penalty System — Penalty hierarchy and cascade resolution
- Scenario Generation — The noise term in the inflow equation comes from the fixed opening tree (pre-generated noise vectors), not from per-iteration random sampling
- Configuring inflow non-negativity — the software-layer setting that selects which of these four methods a study uses and where the penalty cost is authored