NatLabRockies / NatLabRockies/H2Integrate
Add storage lifecycle counting to the pyomo dispatch
Nobody has claimed this yet.
- Dominant language
- Python
- Stars
- 26
- Forks
- 44
- Avg merge
- 3d 22h
- Merged PRs (30d)
- 16
Description
Add storage lifecycle counting to the pyomo dispatch
The ability to count storage (battery) life cycles and add them into the pyomo optimization problem was a capability that existed in HOPP, but does not exist yet in H2I.
Proposed solution
It would need to be integrated throughout the pyomo dispatch structure: inputs, through to the objective function, and added as a variable in the PyomoRuleStorageMinOperatingCosts class.
Some of the code used in HOPP to achieve this is below:
# TODO: implement and test lifecycle counting
# if self.config.include_lifecycle_count:
# self.lifecycle_cost = (
# self.options.lifecycle_cost_per_kWh_cycle
# * self._system_model.value("nominal_energy")
# )
# self.cost_per_charge = self._financial_model.value("om_batt_variable_cost")[
# 0
# ] # [$/MWh]
# self.cost_per_discharge = self._financial_model.value("om_batt_variable_cost")[
# 0
# ] # [$/MWh]
Alternatives considered
Additional context
Contributor guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Research direction
Start with the Pyomo dispatch structure and the PyomoRuleStorageMinOperatingCosts class, then compare the provided HOPP lifecycle-counting example. Trace how inputs reach the objective function and determine how lifecycle counting should be represented there. Done means storage lifecycle costs are integrated throughout the dispatch and included in the optimization objective.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- python
- Domain
- backend
- Issue type
- Feature
- Difficulty
- 5/5
- Estimated time
- Over a week
- Activity status
- Stale
- Clarity
- Mostly clear
- Newbie friendliness
- 35/100