assume-framework / assume

ASSUME - Agent-based Simulation for Studying and Understanding Market Evolution
https://assume.readthedocs.io
22 stars 5 forks source link

Introduce market zones #391

Closed nick-harder closed 1 month ago

nick-harder commented 1 month ago

Pull Request

Related Issue

Closes #385 (if applicable)

Description

This PR introduces a mechanism to clear the market according to defined market zones while maintaining information about individual nodes. This allows for specific market zones within the energy market to be established, enabling a subsequent nodal-based market, such as redispatch, to be executed.

Market zones can be specified in the buses.csv file by associating nodes with particular zones using a zones_identifier column. This zones_identifier can then be referenced in the configuration file and utilized by the complex market clearing algorithm to create the bidding zones.

Currently, the transfer capacity between zones is calculated by summing the thermal capacities of lines between various zones. In future iterations, this will be enhanced to support the import of external transfer capacities or to calculate them based on the market clearing results.

Changes Proposed

Testing

Implemented an extended example_1d with 4 nodes and 2 market zones and executed all three (redispatch, nodal, zonal) examples.

Checklist

Please check all applicable items:

Additional Notes (if applicable)

[Any additional information, concerns, or areas you want reviewers to focus on]

Screenshots (if applicable)

image

nick-harder commented 1 month ago

Looks good. We could have a market_zones.rst or thelike which describes usage with buses.csv and so on and how this can be used for zonal and nodal clearing :)

@maurerle yes, I had that in mind, but me and Kim will be doing a case study in September using this funcitonality, and I believe some things might change, so the final documentation will follow there. I tried to describe as good as I can it in the docstrings. What I will prepare is a tutorial on using this functionality. And also a documentation on the configuration file with all the possible values and their explanation.