Reservoir- und Speicherknoten
Last updated
Last updated
description: Diese Seite beschreibt das Verhalten und die Konfiguration der Pywr-Reservoirknoten in WaterStrategy.
Reservoir- und Speicherknoten sind mit Zuweisungsstrafen (Kosten) belegt. Negative Kosten bedeuten, dass sich im Reservoir Wasser ansammelt, und positive Kosten bedeuten stattdessen, dass das Reservoir Wasser abgibt. Bei der Zuweisung kann es sich um Konstanten (konstante Parameter) oder um Profile (monatlich, täglich, wöchentlich) handeln, die sich mit der Zeit ändern. Außerdem können die Zuweisungsstrafen unterschiedliche Höhen haben, die durch unterschiedliche Steuerkurven auf der Grundlage des Reservoirvolumens definiert werden. Zwar wirken sich die Strafen bei der Zuteilung von Reservoir und Speicher auf die Speicherung von Wasser aus, doch aufgrund eines Kostengleichgewichts im System werden Wasseraustritte aus diesen Knoten unter Berücksichtigung der Zuweisungsstrafen für flussabwärts gelegene Knoten verursacht.
Im Folgenden werden verschiedene Beispiele vorgestellt.
Konstante Zuweisungsstrafe
In diesem Beispiel werden konstante Werte als Zuweisungsstrafen für verschiedene Knoten in einem Netzwerk verwendet. Abbildung 1 zeigt ein einfaches Netzwerk, das Einzugsgebiet-, Speicher-, Nachfrage- und Ausgangsknoten umfasst.
Abbildung 1. Einfaches Pywr-Modell, implementiert in WaterStrategy
Der Einzugsgebietsknoten umfasst eine Zuflusszeitreihe, die in Abbildung 2 dargestellt ist. Die maximale Kapazität des storage node beträgt 2000000 Mm3, und der Bedarf des Bedarfsknotens beträgt __1234567890__mm3/Tag.
Abbildung 2. Zeitreihen für Zuflüsse, die dem Einzugsgebiet zugeordnet sind
Dieses einfache Netzwerk hat zwei Zuweisungsstrafen für die Speicher- und Bedarfsknoten. Die Zuweisungsstrafe für storage node ist -5, und für den Demand-Node ist -1234567890. Abbildung 3 zeigt das simulierte Volumen von storage node und das Nachschubvolumen des Bedarfsknotens.
![Ein Diagramm mit einer Linie
Beschreibung wird automatisch generiert](../.gitbook/assets/3.png)
Abbildung 3. Simuliertes Volumen für den storage node und Wasserversorgung für den Bedarfsknoten. Strafe für Speicherzuweisung = -5, Strafe für Bedarfszuweisung = -10
Abbildung 3 zeigt, dass der Bedarf von __1234567890__□ mm3/Tag während der Simulation immer erfüllt wird. Das liegt daran, dass die Zuweisungsstrafe für den Bedarfsknoten höher ist als die Strafe für den storage node. Wenn die Zuweisungsstrafe für den storage node nicht festgelegt wird, entsprechen die Ergebnisse ebenfalls denen in Abbildung 3. Wenn nun die Zuweisungszuweisungen umgekehrt werden, d. h. der Zuweisungszuschlag für die Speicherzuweisung ist -__1234567890__□ und der Zuschlag für die Bedarfszuweisung ist -5, wird __1234567890__das Wasser zurückhalten, und es gibt kein Angebot für den Bedarfsknoten (Abbildung 4).
![Ein Diagramm mit einer Linie, die nach oben geht
Beschreibung wird automatisch generiert](../.gitbook/assets/4.png)
![Ein Diagramm mit einer Linie
Beschreibung wird automatisch generiert](../.gitbook/assets/5.png)
Abbildung 4. Simuliertes Volumen für den storage node und Wasserversorgung für den Bedarfsknoten. Strafe für Speicherzuweisung = -10, Strafe für Bedarfszuweisung = -5
Strafe für die Profilzuweisung
In diesem Beispiel wird ein monatliches Profil als Zuweisungsstrafe für storage node (Abbildung 5) und eine konstante Zuweisungsstrafe in Höhe von -10 für den Bedarfsknoten verwendet. Das Netzwerk in Abbildung 1 veranschaulicht die Verwendung eines Pywr MonthlyProfileParameters. Jeder andere Pywr-Profilparameter kann auf die gleiche Weise verwendet werden.
Abbildung 5. Monatliche Strafe für die Profilzuweisung.
Von Mai bis September ist die Zuweisungsstrafe niedriger als die Strafe im Bedarfsknoten, was dazu führt, dass die storage node nur in den Monaten veröffentlicht wird, in denen der Bedarf gedeckt werden muss (siehe Abbildung 6).
![Ein Diagramm mit einer Linie, die nach oben geht
Beschreibung wird automatisch generiert](../.gitbook/assets/7.png)
Abbildung 6. Simuliertes Volumen für den storage node und Wasserversorgung für den Bedarfsknoten mithilfe eines monatlichen Profilparameters
Knoten mit gleichen Zuweisungsstrafen
Wie in Abschnitt 1.1 erwähnt, werden Zuweisungsstrafen verwendet, um Versorgungsprioritäten in einem Netzwerk darzustellen. Bei Wasserknappheit und dem Vorhandensein von zwei oder mehreren Knoten mit gleicher Priorität ist es nicht möglich, eine proportionale Versorgung mit Zuweisungsstrafen zu erzielen. Abbildung 7 zeigt ein Beispiel für eine Wasserknappheit in einem Netzwerk mit zwei Bedarfsknotenpunkten mit gleichem Bedarf und gleichen Prioritäten.
Abbildung 7. Einfaches Pywr-Modell, implementiert in WaterStrategy mit gleichen Zuweisungsstrafen
Wenn wir das Netzwerk in Abbildung 7 betreiben, erhalten wir nicht das gleiche Angebot für die Knoten Nachfrage 1 und 2 (Abbildung 8), da dies davon abhängt, dass der Solver das Problem der Wasserzuteilung löst. Im Beispiel in Abbildung 7 weist der Solver dem Knoten Demand 2 mehr Wasser zu, wie in Abbildung 8 zu sehen ist.
![Ein Diagramm mit Zahlen und einer Linie
Beschreibung wird automatisch generiert](../.gitbook/assets/10.png)
Abbildung 8. Wasserversorgung der Bedarfsknotenpunkte mit gleichen Zuordnungsprioritäten.
Zwar ist es nicht möglich, gleiche Zuweisungsstrafen zu verwenden, um ein gleiches Angebot zu erreichen, aber in WaterStrategy kann ein „AggregatedNode“ verwendet werden, um das gewünschte Verhalten einer proportionalen Versorgung bei Wasserknappheit zu erreichen (siehe Abbildung 9).
Abbildung 9. Einfaches Pywr-Modell, implementiert in WaterStrategy mit gleichen Zuweisungsstrafen unter Verwendung eines „AggragtedNode“
In diesem Fall muss der Benutzer im Attribut „Knoten“ des „AggregatedNode“ die Knoten mit einer gleichen Zuweisungsstrafe eingeben und im Attribut „Factors“ das erforderliche Angebotsverhältnis zwischen den Knoten eingeben. Beispielsweise sollten für einen gleichen Angebotsanteil in zwei Knoten die Faktoren\ [0.5, 0.5], siehe Abbildung __1234567890__2].
Abbildung 10. Knoten- und Faktorenattribut in einem aggregierten Knoten.
Beachten Sie, dass der „AggregatedNode“ mit keinem Knoten im Netzwerk verbunden ist (Abbildung 9). Wenn wir dieses neue Netzwerk betreiben, erhalten wir eine gleiche Wasserversorgung für die Knoten Demand 1 und 2 (siehe Abbildung 11).
![Ein Diagramm mit Zahlen und einer Linie
Beschreibung wird automatisch generiert](../.gitbook/assets/14.png)
Abbildung 11. Wasserversorgung der Bedarfsknoten mit gleichen Zuordnungsprioritäten und einem aggregierten Knoten.
Pywr hat keinen expliziten Knoten, um ein Wasserkraftwerk zu modellieren. Alternativ können Benutzer einen „Link“ -Knoten, einen Pywr-Parameter und einen Rekorder kombinieren, um ein Wasserkraftwerk zu modellieren. Der Parameter kann ein „HydropowerTargetParameter“ und der Rekorder ein „HydropowerRecorder“ sein. Der Zielparameter für Wasserkraft ist ein Parameter, der zur Berechnung des Durchflusses verwendet wird, der zur Erreichung eines bestimmten Ziels für die Erzeugung von Wasserkraft erforderlich ist. Er soll an einem Knoten verwendet werden, der eine Turbine darstellt, wo für jeden Zeitschritt ein bestimmtes Produktionsziel erforderlich ist. Der Wasserkraftrekorder berechnet und speichert die Stromerzeugung anhand der Wasserkraftgleichung. Dieser Rekorder speichert in jedem Zeitschritt eine Reihe von Daten zur Stromerzeugung aus Wasserkraft. Um die Benutzerinteraktion mit Pywr zu erleichtern, enthält WaterStrategy einen „Turbine“ -Knoten, der eine Schnittstelle (Abbildung 12) zur Eingabe der Informationen der Wasserkraftanlage anzeigt und intern einen „HydropowerTargetParameter“ und einen „HydropowerRecorder“ erstellt.
Abbildung 12. Schnittstelle in WaterStrategy zur Eingabe technischer Daten für Turbinenknoten.
Reservoirwasserkraftwerke oder Laufwasserkraftwerke können in WaterStrategy mithilfe eines „Turbine“ -Knotens modelliert werden. Der einzige Unterschied besteht darin, dass für Stauwasserkraftwerke ein storage node definiert werden muss, um die Pegelschwankungen im Reservoir für die Leistungsberechnung zu berücksichtigen. Die Wasserhöhe für die Leistungsberechnung wird anhand der angegebenen Wasserhöhe im „Speicher“ berechnet_Knoten“ und „Turbine_„Höhe“ -Werte. Wenn ein Wert von storage node mit einer Wasserhöhe angegeben wird, entspricht die Förderhöhe dem Höhenunterschied zwischen dem Wasser und der Turbine. Wenn der Parameter für die Wasserhöhe „Keine“ lautet, entspricht die Förderhöhe einfach der Turbinenhöhe.