Skip to content
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

Bug Fix Load Following Dispatch Strategy #341

Merged
merged 12 commits into from
Aug 29, 2024

Conversation

kbrunik
Copy link
Collaborator

@kbrunik kbrunik commented Aug 24, 2024

Bug Fix Load Following Dispatch Strategy

  • Cherry-picked 34cb0e1, but removed HPC call
  • Updated grid.py to calculate missed load, missed load percentage and load met using the desired_schedule even when curtailing at grid interconnection limit.
  • Updated example 04-load-following-battery to use curtailement_value_type = "grid" and updated explanation and outputs.

Related issue

Impacted areas of the software

Additional supporting information

Test results, if applicable

test_hybrid.py and test_detailed_pv_plant.py updated with cherry-picked commit 7cddc6a for CI integration tests.

Copy link
Collaborator

@genevievestarke genevievestarke left a comment

Choose a reason for hiding this comment

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

Looks good, just might want to touch base on what we want the default of this parameter to be

hopp/simulation/technologies/sites/site_info.py Outdated Show resolved Hide resolved
@kbrunik kbrunik marked this pull request as ready for review August 26, 2024 12:44
zip(lifetime_schedule, self.generation_profile)])
self.missed_load_percentage = sum(self.missed_load)/sum(lifetime_schedule)

if self.site.curtailment_value_type == "grid":
Copy link
Collaborator

Choose a reason for hiding this comment

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

why is this type called "grid"?

Copy link
Collaborator

Choose a reason for hiding this comment

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

Let's change this to interconnect_kw

self.missed_load_percentage = sum(self.missed_load)/sum(lifetime_schedule)

if self.site.curtailment_value_type == "grid":
lifetime_schedule: NDArrayFloat = np.tile([self.interconnect_kw],
Copy link
Collaborator

Choose a reason for hiding this comment

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

Why call this "lifetime_schedule"? Isn't this the maximum allowed generation?

Copy link
Collaborator

Choose a reason for hiding this comment

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

I guess it is legacy

Copy link
Collaborator

Choose a reason for hiding this comment

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

Thanks for the correction. I think this is much more clear.

self.missed_load_percentage = sum(self.missed_load)/sum(lifetime_schedule)

if self.site.curtailment_value_type == "grid":
lifetime_schedule: NDArrayFloat = np.tile([self.interconnect_kw],
Copy link
Collaborator

Choose a reason for hiding this comment

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

Thanks for the correction. I think this is much more clear.

@jaredthomas68 jaredthomas68 merged commit 8985f0a into NREL:develop Aug 29, 2024
4 checks passed
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.

5 participants