Die Energie, die innerhalb der Energiegemeinschaft erzeugt wird, wird auf die Verbraucher aufgeteilt. In dieser Viertelstunde wurden zum Beispiel von 8 Erzeugern 2.458 Wh erzeugt und von 16 Verbrauchern 4.891 Wh verbraucht. Die Aufteilung auf die Erzeuger und Verbraucher ist in den folgenden Tabellen dargestellt.
Erzeugung | dyn | stat | |
Bach | 51 | 51 | 51 |
Brahms | 528 | 528 | 528 |
Chopin | 356 | 356 | 356 |
Haydn | 513 | 513 | 513 |
Liszt | 10 | 10 | 10 |
Mahler | 320 | 320 | 320 |
Mozart | 94 | 94 | 94 |
Wagner | 586 | 586 | 586 |
Summe | 2458 | 2458 | 2458 |
---|
Verbrauch | dyn | stat | |
Brecht | 482 | 242 | 177 |
Busch | 146 | 73 | 146 |
Fontane | 470 | 236 | 177 |
Goethe | 505 | 254 | 177 |
Grün | 428 | 215 | 177 |
Heine | 47 | 24 | 47 |
Herder | 232 | 117 | 177 |
Hesse | 170 | 85 | 170 |
Jandl | 291 | 146 | 177 |
Kleist | 285 | 143 | 177 |
Lenau | 461 | 232 | 177 |
Lessing | 150 | 75 | 150 |
Mörike | 547 | 275 | 177 |
Rilke | 501 | 252 | 177 |
Schiller | 117 | 59 | 117 |
Storm | 59 | 30 | 59 |
Summe | 4891 | 2458 | 2458 |
---|
Dieser Code stellt sicher, dass Erzeugung und Verbrauch in der Energiegemeinschaft eindeutig zugeordnet werden können. Die dynamische Verteilung ordnet die Energie proportional zum Verbrauch bzw Erzeugung zu. Wer mehr verbraucht bekommt mehr. Die statische Verteilung gewährt jedem Teilnehmer den gleichen Anteil. Wird dieser nicht benötigt, so wird dieser Anteil gleichmäßig unter den verbliebenen Verbrauchern aufgeteilt.
erzeuger = matrix(
"Bach" => 1,
"Brahms" => 2,
"Chopin" => 3,
"Haydn" => 4,
"Liszt" => 5,
"Mahler" => 6,
"Mozart" => 7,
"Wagner" => 8
)
verbraucher = matrix(
"Brecht" => 1,
"Busch" => 2,
"Fontane" => 3,
"Goethe" => 4,
"Grün" => 5,
"Heine" => 6,
"Herder" => 7,
"Hesse" => 8,
"Jandl" => 9,
"Kleist" => 10,
"Lenau" => 11,
"Lessing" => 12,
"Mörike" => 13,
"Rilke" => 14,
"Schiller" => 15,
"Storm" => 16
)
gesamterzeugung = matrixsumme( erzeuger)
gesamtverbrauch = matrixsumme( verbraucher)
## statische Aufteilung
ergebniserzeuger = erzeuger
ergebnisverbraucher = verbraucher
matrixsortieren( ergebnisverbraucher)
matrixsortieren( ergebniserzeuger)
## statische Aufteilung auf die Verbraucher
summeverbraucht = 0
verbleibendezeilen = anzahl( verbraucher)
fürjeden ( ergebnisverbraucher als schlüssel => wert) {
ergebnisverbraucher[ schlüssel] =
wenn ( gesamterzeugung - summeverbraucht) / verbleibendezeilen >= verbraucher[ schlüssel]
dann verbraucher[ schlüssel]
sonst ( gesamterzeugung - summeverbraucht) / verbleibendezeilen
summeverbraucht += ergebnisverbraucher[ schlüssel]
verbleibendezeilen--
}
## statische Aufteilung auf die Erzeuger
summeerzeugt = 0
verbleibendezeilen = anzahl( erzeuger)
fürjeden ( ergebniserzeuger als schlüssel => wert) {
ergebniserzeuger[ schlüssel] =
wenn ( gesamtverbrauch - summeerzeugt) / verbleibendezeilen >= erzeuger[ schlüssel]
dann erzeuger[ schlüssel]
sonst ( gesamtverbrauch - summeerzeugt) / verbleibendezeilen
summeerzeugt += ergebniserzeuger[ schlüssel]
verbleibendezeilen--
}
## dynamische Aufteilung
ergebniserzeuger = erzeuger
ergebnisverbraucher = verbraucher
wenn ( gesamtverbrauch > gesamterzeugung)
dann
anteilerzeuger = 1
anteilverbraucher = gesamterzeugung / gesamtverbrauch
sonst
anteilerzeuger = gesamtverbrauch / gesamterzeugung
anteilverbraucher = 1
## dynamische Aufteilung auf die Verbraucher
fürjeden ( verbraucher als schlüssel => wert)
ergebnisverbraucher[ schlüssel] = wert * anteilverbraucher
## dynamische Aufteilung auf die Erzeuger
fürjeden ( erzeuger als schlüssel => wert)
ergebniserzeuger[ schlüssel] = wert * anteilerzeuger