Skip to content

Add multi-metrics for RA#99

Draft
abdelrahman-ayad wants to merge 30 commits into
mainfrom
aa/multi_metrics
Draft

Add multi-metrics for RA#99
abdelrahman-ayad wants to merge 30 commits into
mainfrom
aa/multi_metrics

Conversation

@abdelrahman-ayad
Copy link
Copy Markdown
Collaborator

@abdelrahman-ayad abdelrahman-ayad commented May 20, 2026

Summary

  • This PR expands the use of Resource Adequacy metrics to use a multi-metrics approach. Users can select one or more metric (EUE, LOLE, NEUE, or a combination) with a corresponding threshold to be used in stress periods selection.
  • An upcoming PR will extend the available stress metrics to assess duration, frequency, and magnitude of shortfalls.

Technical details

Implementation notes

  • EUE is no longer used for determining the shoulder periods in function get_houlder_periods(), in case EUE is not defined as a stress metric
  • If EUE is not included as a stress metric, PRAS-informed PRM update is blocked, and fixed-increment update is used, similar to setting GSW_PRM_UpdateMethod=1

Switches added/removed/changed

  • GSw_PRM_StressThreshold -> GSw_PRM_StressThresholdMetrics: This switch now defines the / delimited stress metric switches to be used for evaluation. For each Metric, a dedicated switch is added to define the HierarchyLevel, Criterion, and the PeriodAggMethod. Current tested metrics are EUE, LOLE, and NEUE.

  • GSw_PRM_StressThresholdEUE: Switch to define the EUE stress metric hierarchy, threshold, and PeriodAggMethod.

  • GSw_PRM_StressThresholdLOLE: Switch to define the LOLE stress metric hierarchy, threshold, and PeriodAggMethod.

  • GSw_PRM_StressThresholdNEUE: Switch to define the NEUE stress metric hierarchy, threshold, and PeriodAggMethod.

Metric Switch Definition RA dimension Example
LOLE GSw_PRM_StressThresholdLOLE Expected (average) count of periods experiencing shortfall over the study period. It is expressed in terms of event-hours Frequency transgrp_36_LOLE_sum: The LOLE threshold is set at 36 events-hour over the study period (2.4 events-hour per year for 15 years of weather data), aggregated using sum over transgrp
EUE GSw_PRM_StressThresholdEUE Expected (average) total energy shortfall over the study period, expressed in energy units (MWh per year) Energy transgrp_10000_EUE_sum: The EUE threshold is set at 10000 MWh over the study period, aggregated using sum over transgrp
NEUE GSw_PRM_StressThresholdNEUE Normalized expected (average) total energy shortfall over the study period expressed in parts-per-million (ppm) Energy transgrp_1_NEUE_sum: The NEUE threshold is set at 1 ppm aggregated using sum over transgrp

Relevant sources or documentation

Slides deck reviewing Resource Adequacy multi-metrics:
RA multi metrics slides deck

Validation, testing, and comparison report(s)

To check

  • Pacific (EUE, LOLE, NEUE, EUE/NEUE/LOLE)
  • [] USA_defaults (EUE, LOLE, NEUE, EUE/NEUE/LOLE)

Checklist for author

Details to double-check

  • Included comparison reports for appropriate test cases
  • Documentation updated if necessary
  • Code formatting standardized
  • Reusable functions used where possible instead of copy/pasted code

General information to guide review

  • Zero impact on results of default case
  • No large data file(s) added/modified
  • No substantive impact on runtime for full-US reference case
  • No substantive impact on folder size for full-US reference case
  • No change to process flow (runreeds.py, reeds/core/solve/solve.py)
  • No change to code organization
  • No change to package requirements (environment.yml or Project.toml)

Did you use LLM tools (chatbot or copilot) in the preparation of this PR? If so, describe how

  • I used Claude to plan the changes in runreeds.py and stress_periods.py

@abdelrahman-ayad abdelrahman-ayad self-assigned this May 20, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant