Skip to content

Surface unserved energy (balance slack) as a first-class dataset #10

Description

@micahpw

With the fixture now solved under DCPPowerModel; use_slacks = true (#4 / PR #9), the results store carries PSI's system balance slack variables:

  • SystemBalanceSlackUp — fills generation shortfall: this is unserved energy / load shed
  • SystemBalanceSlackDown — absorbs surplus; expected to stay ~zero in practice

Proposed work:

  1. Expose slack-up as an unserved-energy dataset through the Scenario API (and decide its display-group treatment — e.g. an 'Unserved Energy' technology in dispatch stacks, conventionally rendered as a red band at the top).
  2. Add a stressed fixture variant to actually exercise it — the standard RTS week solves with ~zero slack, so UE tests need a scenario that is genuinely short (e.g. a LOAD_SCALE env knob in generate.jl, or an outage week). Note any generate.jl change rotates the fixture cache key: bundle it with a deliberate refresh + baseline regen per the tests.yml procedure.
  3. Regression-test the sign/direction convention: shortage shows up as positive slack-up, never as silently-clipped load.

This also feeds the units design (#8): unserved energy is exactly the kind of cross-tool comparison quantity (MWh of shed load) where unit and sign conventions differ between tools and must be normalized at the parser boundary.

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementNew feature or request

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions