Skip to content

Fix: properly assign status to non-committable assets in mixed asset set - #1766

Merged
fneum merged 6 commits into
masterfrom
fix/rh-committable-filter
Jul 14, 2026
Merged

Fix: properly assign status to non-committable assets in mixed asset set#1766
fneum merged 6 commits into
masterfrom
fix/rh-committable-filter

Conversation

@FabianHofmann

Copy link
Copy Markdown
Collaborator

Closes #1644

Changes proposed in this Pull Request

When a network has both committable and non-committable assets with ramp limits, rolling-horizon optimization with unit commitment can lead to false-positive infeasibility. This is caused as status default 0, is propagated to non-commitables and not correctly set to 1 - meaning they were treated as turned off in each horizon. The fix treats non-committable components as always "on".

Checklist

  • Code changes are sufficiently documented; i.e. new functions contain docstrings and further explanations may be given in docs.
  • Unit tests for new features were added (if applicable).
  • A note for the release notes docs/release-notes.md of the upcoming release is included.
  • PR description is written by me. Any potentially verbose AI-generated content is marked (see Contributing guidelines).
  • I consent to the release of this PR's code under the MIT license.

…ts (#1644)

At a rolling-horizon window seam, non-committable generators/links/processes
carry no commitment status, so c.da.status returned 0 for them. This zeroed
their ramp allowance and flipped the shut-down ramp term, producing impossible
ramp bounds and spurious infeasibility when the network mixed committable and
non-committable components. Gate s_init with c.da.committable so non-committable
components are treated as always on (status=1) at the seam.

@luciana-marques luciana-marques left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Nice catch! We did have (a lot of) infeasibilities related to ramping in our workflow, but I have not thought it could be a matter of having committable and non-committable units in the rolling horizon approach. To test this we would need to change the version of pypsa (we are thinking about doing it, but it all depends on the time we have). I will keep you posted. Thanks!

lkstrp
lkstrp previously requested changes Jun 30, 2026
Comment thread pypsa/optimization/constraints.py
Mirror the s_init seam fix to s_init_ext so extendable non-committable
assets are treated as online at rolling-horizon seams. Fold the two seam
regression tests into one parametrized test.
@FabianHofmann
FabianHofmann requested a review from lkstrp July 1, 2026 06:30
@fneum
fneum enabled auto-merge (squash) July 13, 2026 10:26
@FabianHofmann
FabianHofmann dismissed lkstrp’s stale review July 14, 2026 10:48

addressed. approval by fneum instead

@fneum
fneum merged commit 2737338 into master Jul 14, 2026
30 checks passed
@fneum
fneum deleted the fix/rh-committable-filter branch July 14, 2026 10:48
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.

Infeasibility when dealing with linearized unit commitment w/ rolling horizon.

4 participants