Verteilung der Energie


Die Energie, die innerhalb der Energiegemeinschaft erzeugt wird, wird auf die Verbraucher aufgeteilt. In dieser Viertelstunde wurden von 8 Erzeugern 1.492 Wh erzeugt und von 16 Verbrauchern 6.061 Wh verbraucht. Die Aufteilung auf die Erzeuger und Verbraucher ist in den folgenden Tabellen dargestellt.

Erzeuger

Erzeugungdynstat
Bach194194194
Brahms919191
Chopin115115115
Haydn229229229
Liszt183183183
Mahler126126126
Mozart270270270
Wagner284284284
Summe149214921492


0 1600 3200 4800 6400 8000 Erzeugung Verbrauch Energie-Gemeinschaft

Verbraucher

Verbrauchdynstat
Brecht3217997
Busch60815097
Fontane41410297
Goethe62115397
Grün3328297
Heine751875
Herder1814597
Hesse571457
Jandl53113197
Kleist50512497
Lenau1092797
Lessing3699197
Mörike3899697
Rilke3418497
Schiller59514697
Storm61315197
Summe606114921492

Die nächsten
Viertelstundenwerte

Quellcode

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