Skip to content

Feature/bdew load profiles 2025 #78

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 25 commits into from
Apr 9, 2025
Merged

Conversation

p-snft
Copy link
Member

@p-snft p-snft commented Apr 7, 2025

Add BDEW profiles released in 2025 including new, more modular structure as discussed in #77.

  • Implement
    • Base SLPs
    • Holidays
    • Other resolutions than 15 minutes
  • Document
  • Add tests
from demandlib.bdew import H25

time_index = pd.date_range(
    start="2020-01-01 00:00",
    end="2020-04-12 12:15",
    freq="15min",
)

profile_h25 = H25(time_index)

Changes with respect to the API for SLP 2000:

  • You can create SLPs for arbitrary time ranges with arbitrary time resolution.
  • Pre-factors of the dynamisation function unchanged, the annual average of the SLPs is about 1 GWh/a. (Depending on work days, holidays, etc. This is also the reason why I did not change the scaling factors of te dynamic profile.)
  • You cannot give annual demands to scale the SLPs. (Just multiply the value yourself, e.g. 0.02 * H25(time_index) to have a H25 SLP for 20 MWh/a.)

Closes #77

@p-snft p-snft self-assigned this Apr 7, 2025
@p-snft p-snft linked an issue Apr 7, 2025 that may be closed by this pull request
@p-snft
Copy link
Member Author

p-snft commented Apr 7, 2025

@maurerle: Before I start with docs and tests, what do you think?

Copy link
Contributor

@maurerle maurerle left a comment

Choose a reason for hiding this comment

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

I did not spend too much time with this yet, so far it looks good.

The new API allows to create BDEW profiles from arbitrary timeindex length - which is nice!
And makes totally sense, given the shape of the new data.

On the other hand, it does not allow to integrate the new profiles easily into the existing API, so

e_slp.get_profiles('h0').head()
e_slp.get_profiles('h25').head()

does not work easily..

But it might be enough to somehow also provide functions which give:

bdew.H25(index15m)
bdew.H0(index15m)

and only "use" new API, which would require some tinkering for handling time indices from different years, but seems the best approach on the long run..?

@p-snft p-snft marked this pull request as ready for review April 8, 2025 18:27
This is a performance optimisation. The values where not changed anyway.
@p-snft
Copy link
Member Author

p-snft commented Apr 8, 2025

Everything implemented, 100 % coverage. If nobody objects, I'll merge this tomorrow.

@p-snft p-snft merged commit 3af49cd into dev Apr 9, 2025
12 checks passed
@p-snft p-snft deleted the feature/bdew-load-profiles-2025 branch April 9, 2025 07:43
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging this pull request may close these issues.

Add new standard load profiles from 2025
2 participants