Repository navigation
Runtime availability mask for deferrable loads #1024
Replies: 1 comment
|
Hey, thanks for raising this. I dug into the optimizer code to check your read on the internals, and you're basically right. There genuinely is a horizon-length per-timestep mask already: The gap is exactly what you guessed: the only user-facing input that shapes that mask is the single contiguous A minimal version would look like: an optional new runtime param, list of lists (one sublist per deferrable load, each length == horizon), default Worth noting this is basically the same ask as #391 from back in Dec 2024 (list of eligible timesteps to allow more than one operating window per day), and David actually responded there already that it's "a nice option... more intuitive... a matter of improving the ease of use of the code." So there seems to be maintainer appetite for this in principle, it's just never landed. Might be worth treating these two threads as the same feature rather than tracking separately. A couple of things that'd need thought if this gets built, not blockers, just wrinkles:
None of that is a reason not to do it, just scope to be aware of. Whether this gets picked up is David's call obviously, I'm just a contributor here too. Happy to help turn this into a proper issue/spec (maybe consolidating with #391) if there's interest in taking it forward. |
Uh oh!
There was an error while loading. Please reload this page.
Hi,
would you consider exposing an optional runtime availability mask for deferrable loads?
At the moment, start_timesteps_of_each_deferrable_load and end_timesteps_of_each_deferrable_load only allow one continuous operating window.
A common use case is a temporary lockout in the middle of the planning horizon:
available → unavailable → available
For a 15-minute horizon, the desired availability could look like:
[1, 1, 0, 0, 0, 1, 1, 1]
In my case, this is used for a thermal load. During a user-defined lockout period, the load must not run, but it should still remain visible to the optimizer before and after that period. Otherwise, the later energy demand is missing from battery, PV and grid planning.
From what I can see, much of the required structure already exists: the optimizer uses horizon-length internal window masks to constrain deferrable-load power. It seems that the main missing part is a validated runtime input for supplying such a mask directly.
Would it be possible to expose an optional mask per deferrable load, while keeping the current start/end parameters as the default and fully backward compatible?
The mask could accept only 0/1 values and must match the prediction horizon length. Minimum on/off times near mask boundaries may need some additional validation.
Thanks for considering it.
Best regards
Markus
All reactions