Skip to content

Pre-solve feasibility check for balance groups and coupling constraints (fail usefully, not opaquely) #2414

Description

@Flix6x

Context

Since the built-in storage fallback scheduler was retired (#2252), an infeasible storage problem fails with its failure reason. For contradictions within a single device, #2252 also added pre-solve validation (validate_power_constraints, plus a fix so stock-less devices no longer disable validation for subsequent devices), so those fail with a clear per-time-step message.

Problem

Contradictions across devices are still reported only as a bare InfeasibleProblemException carrying the solver's termination string. Typical cases (cf. the flex-models of #2323 and #2329):

Per-device column checks cannot see these — they need a check over each balance group / coupling group as a whole.

Proposal

Add a pre-solve feasibility check per balance group and coupling group, e.g. per time step:

  • sum of members' feasible flow intervals (after applying coupling ratios) must admit 0 (for internal nodes) or intersect the group's/site's hard capacity interval;
  • report violations through the existing create_constraint_violations_message machinery, naming the group and time steps, like the per-device validation added in Feat/retire fallback scheduler #2252.

This is interval arithmetic over already-built constraint frames, so it should stay cheap relative to the solve.

Why 1.1.0

Not release-blocking for v1.0.0: behaviour is correct (the problem is infeasible); this is about the difference between failing usefully and failing opaquely, which grew in importance now that no fallback schedule cushions such failures.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

Labels

No labels
No labels

Type

No type

Projects

No projects

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions