Skip to content

add water values example#1492

Merged
lkstrp merged 6 commits intomasterfrom
water-values
Feb 5, 2026
Merged

add water values example#1492
lkstrp merged 6 commits intomasterfrom
water-values

Conversation

@fneum
Copy link
Copy Markdown
Member

@fneum fneum commented Dec 13, 2025

No description provided.

@lkstrp lkstrp requested a review from brynpickering December 15, 2025 08:57
Copy link
Copy Markdown
Contributor

@brynpickering brynpickering left a comment

Choose a reason for hiding this comment

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

Nice example!

Just a couple of minor comments.

One other thing that this example could include is running a coarser full horizon run (12hrly?), setting the water value based on the result of that and then running rolling horizon at a higher resolution. This would show the benefit when trying to mitigate model distortions when doing temporal simplification (to reduce computational burden) since the rolling horizon is computationally easier to solve.

Copy link
Copy Markdown
Member

@lkstrp lkstrp left a comment

Choose a reason for hiding this comment

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

Similar to #1318, the model created by the example is too large

GurobiError: Model too large for size-limited license; visit https://gurobi.com/unrestricted for more information

We can either rewrite the example to get a smaller model, or add functionality to mark notebooks to not be run in the CI. But there is no guarantee that those stay up to date then

Copy link
Copy Markdown
Contributor

@lisazeyen lisazeyen left a comment

Choose a reason for hiding this comment

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

Really nice example @fneum! We are currently implementing the rolling horizon in the open TYNDP, so that's helpful. Maybe it makes sense to rename the jupyter-notebook? Since it does not really show the implementation of hydro storage to something like rolling-horizon-seasonal-storage?

For storage units the right shadow prices from which one would assign the marginal costs is n.storage_units_t.mu_energy_balance, is this correct? If so I can add this information in a text box to your example.

@lkstrp lkstrp added the docs Documentation improvements or features to be showcased in docs/ notebook label Jan 26, 2026
@fneum
Copy link
Copy Markdown
Member Author

fneum commented Feb 5, 2026

Sorry, I didn't see your comments earlier @lisazeyen!

Maybe it makes sense to rename the jupyter-notebook?

Hmm, I think the "water values" are a canonical concept in the literature that is now just transferred to long-duration storage. I would keep it.

For storage units the right shadow prices from which one would assign the marginal costs is n.storage_units_t.mu_energy_balance, is this correct?

Yes, exactly! But there's a complication for storage units in that their marginal cost is only assigned to dispatch (not charging). One has to split it up into two links and a store to model the charging bids as well.

The elastic demand is not required, just makes the example easier to construct.

@lkstrp lkstrp merged commit 34db3a0 into master Feb 5, 2026
27 checks passed
@lkstrp lkstrp deleted the water-values branch February 5, 2026 10:14
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

docs Documentation improvements or features to be showcased in docs/ notebook

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants