Replace bioenergy and MSW stores with generators
Closes # (if applicable).
Changes proposed in this Pull Request
As the Generator component is extended in https://github.com/PyPSA/PyPSA/pull/1047, it can replace the Store components for bioenergy and municipal solid waste. The extension of the Generator allows for a more efficient representation of finite resources, such as biomass, by eliminating the need for storage consistency constraints. Additionally, the desired model behavior to enforce the use of unsustainable bioenergy types and municipal solid waste is addressed through the new e_sum_min attribute.
Checklist
- [x] I tested my contribution locally and it works as intended.
- [x] Code and workflow changes are sufficiently documented.
- [x] Changed dependencies are added to
envs/environment.yaml. - [x] Changes in configuration options are added in
config/config.default.yaml. - [x] Changes in configuration options are documented in
doc/configtables/*.csv. - [x] Sources of newly added data are documented in
doc/data_sources.rst. - [ ] A release note
doc/release_notes.rstis added.
Validator Report
I am the Validator. Download all artifacts here. I'll be back and edit this comment for each new commit.
General
Plots comparison
| Main branch | Feature branch |
|---|---|
Files comparison
| Status | NRMSE | MAE (norm) | |
|---|---|---|---|
| market_values.csv | :warning:Changed | 0.000 | 0.06 |
| weighted_prices.csv | :warning:Changed | 0.446 | 0.37 |
| metrics.csv | :warning:Changed | 0.000 | 0.12 |
| price_statistics.csv | :warning:Changed | 0.001 | 0.15 |
| nodal_capacities.csv | :warning: NaN mismatch | ||
| nodal_supply_energy.csv | :warning: NaN mismatch | ||
| nodal_cfs.csv | :warning: NaN mismatch | ||
| supply.csv | :warning: NaN mismatch | ||
| costs.csv | :warning: NaN mismatch | ||
| nodal_costs.csv | :warning: NaN mismatch | ||
| capacities.csv | :warning: NaN mismatch | ||
| curtailment.csv | :warning: NaN mismatch | ||
| supply_energy.csv | :warning: NaN mismatch | ||
| cfs.csv | :warning: NaN mismatch | ||
| energy.csv | :warning: NaN mismatch | ||
| prices.csv | :white_check_mark: Almost equal | 0.024 | 0.03 |
NRMSE: Normalized (combined-min-max) Root Mean Square Error MAE (norm): Mean Absolute Error on normalized data (min-max) Status Threshold: MAE (norm) > 0.05 and NRMSE > 0.3
Model Metrics
Benchmarks
Comparing replace_stores_gens (996236d) with master (acf089f).
Branch is 10 commits ahead and 0 commits behind.
Last updated on 2024-11-04 14:56:46 CET.
Proposed changes make sense, but some adjustments are necessary:
* The new minimum version of PyPSA should be specified in the `environment.yaml` since this PR uses a new feature. * A release note should be added, especially since there are some hidden changes (i.e. forced use of MSW, changed carrier name for biomass transport) * Do you actually still need the operational limit GlobalConstraint for MSW? If you want all MSW to be used, you could also just set `e_sum_min = e_sum_max`, right?
Thanks for the review @fneum!
- Isn't the requirement
pypsa>=0.31already specified in theenvironment.yamlanyway? - Done
- I think you need it for setups with
biomass_spatial:trueandbiomass_transport:falsewhen the MSW transport is mimicked using the additional Generator component. In that case the usage of MSW at a bus can be less than the bus' MSW potential (p_sum_min <= p_sum_max), as long as the difference is transported to and used at another bus using that same additional Generator as compensation. Therefore, the GlobalConstraint is still required to ensure the usage of the aggregate MSW potential.