Summary
Infeasibility in eq_rsc_INVlim for geohydro_allkm for Western interconnect at county-level resolution. At p35023 in 2015, the right-hand side of eq_rsc_INVlim for geohydro_allkm_9 bin1 is negative by ~0.447 MW, so the model has no feasible value for INV_RSC (which is constrained to be ≥ 0).
Branch / commit: yc_pbitl (in ReEDS-2.0)
Case / scenario: cases_pbitl.csv → pbitl1_Western_Default_Stress
Solve year where it fails: 2015
Region / tech: county p35023, geohydro_allkm
Steps to reproduce:
- Check out branch yc_pbitl (which I think is consistent with ReEDS main on this constraint)
- Run county-level Western Interconnect
- Model is infeasible at the 2015 solve
Observation
eq_rsc_INVlim enforces:
m_rsc_dat * geo_discovery >= sum(INV_RSC) + capacity_exog_rsc
geo_discovery(i,r,t) is the fraction of the geothermal supply curve treated as "discovered" in year t (e.g., 0.10–0.15 in early years, monotonically increasing toward 1).
In p35023 in 2015, the left-hand side m_rsc_dat * geo_discovery evaluates to slightly less than the right-hand-side terms, producing a negative RHS of ~0.447 MW and making the constraint infeasible together with the prescribed builds requirement (eq_forceprescription_power).
Solutions considered
A. Inflate m_rsc_dat so RHS becomes positive — e.g., extend the year-aware capacity top-up logic from commit 77fb3a6 in b_inputs.gms to add enough geothermal m_rsc_dat to bin1 so prescribed builds always fit, after accounting for geo_discovery.
- Pros: confirmed to resolve the p35023 infeasibility; works within the same framework used for wind and solar; no equation changes needed
- Cons: the "extra" MW added to bin1 are made-up numbers that show up later in capacity reports; piling everything into bin1 can mislead the optimizer's cost ranking across bins; treats the symptom rather than addressing why the constraint produced negative RHS in the first place
B. Disable eq_rsc_INVlim for offending bins via flag_eq_rsc_INVlim
- Pros: targeted; preserves data
- Cons: bin loses physical upper bound; may concentrate prescribed builds in one bin; conceptually a patch
C. Set geo_discovery = 1 wherever a bin has negative RHS
- Pros: trivially feasible
- Cons: opens all bins in the region (geo_discovery is region-level, not bin-level); requires updating
rsc_capacity_scalar to stay consistent
D. Reformulate eq_rsc_INVlim so geo_discovery is applied symmetrically to both sides of the supply-curve accounting, by also scaling the capacity_exog_rsc term by rsc_capacity_scalar. Equivalent form:
(m_rsc_dat - exog) * geo_discovery >= sum(INV_RSC)
- Pros: mathematically clean; no parameter fabrication; no special-case logic; backward-compatible (non-geothermal techs have rsc_capacity_scalar = 1, so unchanged); auto-converges as geo_discovery → 1
- Cons: touches the model equation itself, so future maintainers must understand the new convention; the conceptual interpretation of
geo_discovery relative to existing capacity should be confirmed with the modeling team
Suggested Solution: D
Two synchronized changes:
c_supplymodel.gms — eq_rsc_INVlim: multiply the capacity_exog_rsc term by rsc_capacity_scalar.
d_solveoneyear.gms — rhs_eq_rsc_INVlim pre-solve calculation: apply the same geo_discovery factor to the exogenous term to match the new equation.
Validation
Labels: bug
Summary
Infeasibility in
eq_rsc_INVlimforgeohydro_allkmfor Western interconnect at county-level resolution. At p35023 in 2015, the right-hand side ofeq_rsc_INVlimfor geohydro_allkm_9 bin1 is negative by ~0.447 MW, so the model has no feasible value forINV_RSC(which is constrained to be ≥ 0).Branch / commit: yc_pbitl (in ReEDS-2.0)
Case / scenario: cases_pbitl.csv → pbitl1_Western_Default_Stress
Solve year where it fails: 2015
Region / tech: county p35023, geohydro_allkm
Steps to reproduce:
Observation
eq_rsc_INVlimenforces:geo_discovery(i,r,t)is the fraction of the geothermal supply curve treated as "discovered" in year t (e.g., 0.10–0.15 in early years, monotonically increasing toward 1).In p35023 in 2015, the left-hand side
m_rsc_dat * geo_discoveryevaluates to slightly less than the right-hand-side terms, producing a negative RHS of ~0.447 MW and making the constraint infeasible together with the prescribed builds requirement (eq_forceprescription_power).Solutions considered
A. Inflate
m_rsc_datso RHS becomes positive — e.g., extend the year-aware capacity top-up logic from commit 77fb3a6 inb_inputs.gmsto add enough geothermalm_rsc_datto bin1 so prescribed builds always fit, after accounting forgeo_discovery.B. Disable
eq_rsc_INVlimfor offending bins viaflag_eq_rsc_INVlimC. Set
geo_discovery = 1wherever a bin has negative RHSrsc_capacity_scalarto stay consistentD. Reformulate
eq_rsc_INVlimsogeo_discoveryis applied symmetrically to both sides of the supply-curve accounting, by also scaling thecapacity_exog_rscterm byrsc_capacity_scalar. Equivalent form:geo_discoveryrelative to existing capacity should be confirmed with the modeling teamSuggested Solution: D
Two synchronized changes:
c_supplymodel.gms—eq_rsc_INVlim: multiply thecapacity_exog_rscterm byrsc_capacity_scalar.d_solveoneyear.gms—rhs_eq_rsc_INVlimpre-solve calculation: apply the samegeo_discoveryfactor to the exogenous term to match the new equation.Validation
Labels: bug