Skip to content

Commit a759c9d

Browse files
authored
Merge branch 'master' into offwind-fix
2 parents 07771f0 + a465b6b commit a759c9d

13 files changed

Lines changed: 2144 additions & 2791 deletions

config/config.default.yaml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1100,7 +1100,6 @@ clustering:
11001100
aggregate_to_tyndp: false
11011101
simplify_network:
11021102
to_substations: false
1103-
exclude_carriers: []
11041103
remove_stubs: true
11051104
remove_stubs_across_borders: false
11061105
cluster_network:
@@ -1148,6 +1147,7 @@ solving:
11481147
transmission_losses: 2
11491148
linearized_unit_commitment: true
11501149
horizon: 365
1150+
overlap: 0
11511151
post_discretization:
11521152
enable: false
11531153
line_unit_size: 1700

config/schema.default.json

Lines changed: 39 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -541,13 +541,6 @@
541541
"description": "Aggregates all nodes without power injection (positive or negative, i.e. demand or generation) to electrically closest ones.",
542542
"type": "boolean"
543543
},
544-
"exclude_carriers": {
545-
"description": "List of carriers which will not be aggregated. If empty, all carriers will be aggregated.",
546-
"items": {
547-
"type": "string"
548-
},
549-
"type": "array"
550-
},
551544
"remove_stubs": {
552545
"default": true,
553546
"description": "Controls whether radial parts of the network should be recursively aggregated. Defaults to true.",
@@ -589,9 +582,19 @@
589582
"type": "array"
590583
},
591584
"consider_efficiency_classes": {
585+
"anyOf": [
586+
{
587+
"type": "boolean"
588+
},
589+
{
590+
"items": {
591+
"type": "number"
592+
},
593+
"type": "array"
594+
}
595+
],
592596
"default": false,
593-
"description": "Aggregated each carriers into the top 10-quantile (high), the bottom 90-quantile (low), and everything in between (medium).",
594-
"type": "boolean"
597+
"description": "Aggregate each carrier into efficiency classes defined by quantile boundaries. If True, uses [0.1, 0.9] as default quantiles (labels: Q0, Q10, Q90). If a list of floats, defines custom quantile boundaries, e.g. [0.1, 0.5, 0.9]."
595598
},
596599
"aggregation_strategies": {
597600
"description": "Configuration for `clustering.aggregation_strategies` settings.",
@@ -5225,6 +5228,11 @@
52255228
"description": "Number of snapshots to consider in each iteration. Defaults to 100.",
52265229
"type": "integer"
52275230
},
5231+
"overlap": {
5232+
"default": 0,
5233+
"description": "Number of overlapping snapshots between consecutive iterations in rolling horizon optimization. Defaults to 0, which means no overlap.",
5234+
"type": "integer"
5235+
},
52285236
"post_discretization": {
52295237
"description": "Configuration for `solving.options.post_discretization` settings.",
52305238
"properties": {
@@ -7399,13 +7407,6 @@
73997407
"description": "Aggregates all nodes without power injection (positive or negative, i.e. demand or generation) to electrically closest ones.",
74007408
"type": "boolean"
74017409
},
7402-
"exclude_carriers": {
7403-
"description": "List of carriers which will not be aggregated. If empty, all carriers will be aggregated.",
7404-
"items": {
7405-
"type": "string"
7406-
},
7407-
"type": "array"
7408-
},
74097410
"remove_stubs": {
74107411
"default": true,
74117412
"description": "Controls whether radial parts of the network should be recursively aggregated. Defaults to true.",
@@ -7725,6 +7726,11 @@
77257726
"description": "Number of snapshots to consider in each iteration. Defaults to 100.",
77267727
"type": "integer"
77277728
},
7729+
"overlap": {
7730+
"default": 0,
7731+
"description": "Number of overlapping snapshots between consecutive iterations in rolling horizon optimization. Defaults to 0, which means no overlap.",
7732+
"type": "integer"
7733+
},
77287734
"post_discretization": {
77297735
"description": "Configuration for `solving.options.post_discretization` settings.",
77307736
"properties": {
@@ -11739,13 +11745,6 @@
1173911745
"description": "Aggregates all nodes without power injection (positive or negative, i.e. demand or generation) to electrically closest ones.",
1174011746
"type": "boolean"
1174111747
},
11742-
"exclude_carriers": {
11743-
"description": "List of carriers which will not be aggregated. If empty, all carriers will be aggregated.",
11744-
"items": {
11745-
"type": "string"
11746-
},
11747-
"type": "array"
11748-
},
1174911748
"remove_stubs": {
1175011749
"default": true,
1175111750
"description": "Controls whether radial parts of the network should be recursively aggregated. Defaults to true.",
@@ -11787,9 +11786,19 @@
1178711786
"type": "array"
1178811787
},
1178911788
"consider_efficiency_classes": {
11789+
"anyOf": [
11790+
{
11791+
"type": "boolean"
11792+
},
11793+
{
11794+
"items": {
11795+
"type": "number"
11796+
},
11797+
"type": "array"
11798+
}
11799+
],
1179011800
"default": false,
11791-
"description": "Aggregated each carriers into the top 10-quantile (high), the bottom 90-quantile (low), and everything in between (medium).",
11792-
"type": "boolean"
11801+
"description": "Aggregate each carrier into efficiency classes defined by quantile boundaries. If True, uses [0.1, 0.9] as default quantiles (labels: Q0, Q10, Q90). If a list of floats, defines custom quantile boundaries, e.g. [0.1, 0.5, 0.9]."
1179311802
},
1179411803
"aggregation_strategies": {
1179511804
"description": "Configuration for `clustering.aggregation_strategies` settings.",
@@ -12099,6 +12108,11 @@
1209912108
"description": "Number of snapshots to consider in each iteration. Defaults to 100.",
1210012109
"type": "integer"
1210112110
},
12111+
"overlap": {
12112+
"default": 0,
12113+
"description": "Number of overlapping snapshots between consecutive iterations in rolling horizon optimization. Defaults to 0, which means no overlap.",
12114+
"type": "integer"
12115+
},
1210212116
"post_discretization": {
1210312117
"description": "Configuration for `solving.options.post_discretization` settings.",
1210412118
"properties": {

doc/release_notes.rst

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,16 +8,20 @@ Release Notes
88

99
Upcoming Release
1010
================
11-
* Updated unit commitment parameters. Bugfix scales start-up costs with nominal power capacitiy.
1211

1312
* Bugfix: Disregard CORINE land cover data for offshore technologies since its scope is not sufficiently large and codes are already defined by offshore shapes.
1413

14+
* Pin grpcio<1.78 to silence warnings that are cluttering the log (https://github.com/PyPSA/pypsa-eur/pull/2080).
15+
16+
* Updated unit commitment parameters. Bugfix scales start-up costs with nominal power capacitiy.
17+
1518
* Bugfix: Rolling horizon optimisation also in :mod:`solve_network`, not only in :mod:`solve_operations_network`. Drop cyclicity constraints with setting ``rolling_horizon: true``.
1619

1720
* Bugfix: Handle CO2Stop ID columns correctly across versions.
1821

1922
* Add configuration schema updater that allows changes to be made in soft-forks without touching base PyPSA-Eur files (#2014).
2023

24+
* The ``clustering: consider_efficiency_classes`` option now accepts a list of quantile boundaries (e.g. ``[0.1, 0.5, 0.9]``) in addition to a boolean. Labels are derived from quantile percentages (e.g. ``Q0``, ``Q10``, ``Q90``). The default behaviour (``true``) is unchanged, using ``[0.1, 0.9]`` quantiles.
2125
* Existing battery storage capacities from the powerplantmatching dataset can now be added to the network as ``StorageUnit`` components, using plant-level duration data with fallback to ``electricity: max_hours: battery`` and cost-table round-trip efficiency.
2226

2327
* Adjust ``powerplants_filter`` to include power plants operational in 2025.

0 commit comments

Comments
 (0)