Wie kann man aus Wirkungsnetzwerken simulationsfähige Stock-Flow-Modelle bauen?

in #de-stem6 years ago

Wirkungsnetzwerke, oder besser Causal Loop Diagram (CLD), sind einerseits qualitative Modelle einer Situation, andererseits Vorstufen von Stock-Flow-Modellen, deutsch auch als Bestand-Fluss-Modell genannt. Hier soll gezeigt werden, wie man von einem CLD zum zugehörigen Stock-Flow-Modell kommt.

Zuerst ist das Wirkungsnetzwerk

In meinen Beitrag Die Kunst, Causal Loop Diagrams zu zeichnen habe ich ein paar nützliche Hinweise zum Entwickeln von CLD gegeben. Ein mögliches CLD, das der Manager einer Hühnerfarm anfertigt, könnte z.B. so aussehen:

huhneicld.JPG

Die beiden Pfeile haben positive Polarität, d.h.

je mehr Hühner desto mehr Eier, je weniger Hühner desto weniger Eier

und

je mehr Eier desto mehr Hühner, je weniger Eier desto weniger Hühner.

Flüsse

Mathematisch würde man sagen: die beiden Funktionen sind monoton wachsend (1). Es ist klar, dass sowohl "Hühner" als auch "Eier" Bestände sind. Die Frage ist daher, wie kann ein Bestand einen anderen Bestand beeinflussen? Das ist selbstverständlich ausschliesslich über einen Fluss möglich! Beispielsweise können sich zwei Bankkonten nur durch Transaktionen gegenseitig beeinflussen. Geld fliesst vom einen in das andere Konto. Anschaulich ist dieses Beispiel, weil beide Bestände in Anzahl (gleicher) Geldeinheiten gemessen werden. Wie ist das aber bei unserem Huhn/Ei-Problem? Was fliesst denn von den Hühnern zu den Eiern?

Zeichnen wir einmal die Bestände als Kästchen und die Flüsse als Röhren in die Kästchen, dann hätten wir folgendes Modell:

K1024_huhneifirst.JPG

Die Flüsse heissen "legen" und "brüten". Wir stellen uns vor, dass der Fluss der Hühner durch das Brüten kontrolliert wird, desgleichen wird der Eierzufluss durch das Legen kontrolliert.

Wie man ein solches Modell im insightmaker baut, habe ich in meinem Beitrag System Dynamics - das Werkzeut der Systemdenker erklärt. Sie können auf das fertige Huhn-Ei-Modell aber auch direkt zugreifen, indem Sie dem Link folgen.

Weitere Hilfsgrössen

Aber wie kommen wir jetzt von Hühnern zu Eier? Dazu benötigen wir eine Rate, ganz ähnlich, wie bei einem Zinsmodell, wo auch ein (Zins-)Fluss in den Bestand "Kapital" fliesst. Nehmen wir an, die durchschnittliche Legerate pro Huhn und Tag sei ein Ei, dann hat die Legerate die Einheit und hängt also vom Bestand "Hühner" ab. Multiplizieren wir diese Rate mit dem Hühnerbestand, kürzen die die Hühner weg und es bleibt die Rate . Summieren wir diese pro Tag auf, erhalten wir im Bestand die Einheit "Ei".

Auch für den Fluss "brüten" benötigen wir eine Rate. Bei einer Brutdauer von 21 Tagen wäre die Brutrate daher Huhn pro Anzahl gelegter Eier und pro 21 Tagen, die Einheit somit .

Da das Huhn während der Brutphase keine Eier legt, müssten wir die Legerate korrigieren. Sie wird ebenfalls betragen.

Die Bestände müssen noch mit irgendeinem Anfangsbestand belegt werden. Ich nehme einmal ein Huhn und kein Ei.

K1024_huhnei.JPG

Nun können wir die Simulation laufen lassen und erhalten für die ersten 45 Tage folgende Entwicklung der Huhn-Ei-Population:

K1024_huhneigrafik.JPG

Wie ist das jetzt zu verstehen? Das Huhn legt doch alle 21 Tage ein Ei und brütet es dann 21 Tage lang aus. Somit müssten nach 21 Tage der Eierbestand auf 1 hochschnellen, nach 42 Tagen müsste der Hühnerbestand auf 2 gehen und der Eierbestand auf 0 zurückfallen, etc. Unser Modell ist aber stetig. Das bedeutet, dass jeden Tag 1/21 = 0.0476 Ei dem Eierbestand zugefügt wird. Und jeder Tag schlüpfen aus 0.0476 Ei auch 0.0476 Huhn. Noch besser: Diese 0.0476 Huhn legt jeden Tag einen Einundzwanzigstel von 0.0476 Ei.

Der Übergang vom Fluss zum Bestand kommt einer mathematischen Integration gleich. Der (Netto-)Fluss ist die Ableitung des Bestandes. Damit besteht das Modell eigentlich aus zwei gewöhnlichen Differentialgleichungen der Form


Sie mögen über dieses Resultat von gebrochenen Hühnern und Eiern nur den Kopf schütteln, aber für grosse Hühnerfarmen mit Tausenden von Hühnern stimmt das Resulat eben. Lassen wir das Modell über z.B. ein Jahr, also 365 Tagen laufen, so steht die Kurve bei ca. 12 Millionen Hühnern und ebenso vielen Eiern. Da spielt es dann keine Rolle mehr, ob es 12'273'835,0476 oder 12'102'512,0476 Hühner sind. Das Gehege hat für beide Bestände ungefähr dieselben Ausmasse.

Zwei Schlussbemerkungen

  1. Das Modell befriedigt nicht ganz, weil ja eigentlich die Eier in gewissem Sinn in die Hühner fliessen, d.h. aus einem Ei wird ein Huhn. Daher müsste die Röhre vom Bestand der Eier ind den Bestand der Hühner fliessen. Umgekehrt ist es aber nicht der Fall: legt ein Huhn ein Ei, verschwindet das Huhn nicht.
    Weiter werden in der Praxis die Eier fast vollständig abgezogen und nur wenige zum Züchten verwendet. Dieser Tatsache könnten wir Rechnung tragen, indem wir z.B. die Legerate wieder auf 1 und die Brutrate sehr, sehr klein setzen.

  2. Im CLD tauchen die Flussgrössen nicht auf, denn sie sind in einem CLD nicht hilfreich. Das gibt vielen System Dynamics Experten die Gelegenheit, CLD als "ungenau" abzutun und für Stock-Flow-Modelle zu werben, zu deren Entwicklung Beratung benötigt wird. Solche Marketingmassnahmen werden aber den CLD nicht gerecht. CLD leisten als Blaupausen von Stock-Flow-Modellen sehr wertvolle Dienste.

Fussnote (1): Ein Pfeil stellt eine Funktion dar. Z.B. ordnet die Funktion Hühner --> Eier einer Anzahl Hühner eine Anzahl Eier zu, ist also ein Folge. Das habe ich in http://www.anchor.ch/komplexitat/wie-nuetzlich-sind-wirkungsnetzwerke-im-systemischen-kontex/ näher beschrieben.

Sort:  

Da frag ich mich ob man nicht lieber bei einer Heuristik bleiben sollte anstatt den Versuch des Modellierens eines komplexen Sachverhaltes zu unternehmen?

In diesem und im Blogg-Artikel ist die Kausalität bekannt, da sie offensichtlich ist. Huhn->Ei und Ei->Huhn oder Infektionsrate-> Population Infizierter. Aber bei den meisten multifaktoriell bedingten Phänomenen wie einer nicht infektiösen Krankheit wie T2 Diabetes oder Klimaerwärmung zeigt doch allein der Versuch des modellierens, das Unverständnis von Komplexität und allen Emergenzen daraus (wie praktische Unvorhersagbarkeit).

Dient System-Denken nicht also eher dazu, zu zeigen wo System-Modellierung (die immer eine Prediktion impliziert) nicht angewandt werden kann. Anstatt sie als prediktives Werkzeug zu verstehen?

vielen Dank und Liebe Grüße

Du hast recht, so ein Modell kann keine Emergenzen generieren. Natürlich kann man Wahrscheinlichkeiten modellieren oder Zufälligkeiten einbauen, was dann stochastischen Differentialgleichungssystemen entspricht. Aber Neues entsteht nie. Dennoch bedient sich z.B. die Meteorologie Differentialgleichungsmodellen, um die (grundsätzlich unvorhersehbare) Wetterentwicklung zu prognostizieten.
Der Nutzen von mathematischen Modellen ist unbestritten. Gerde dieser Beizrag zeigt, dass man z.B. logistische Anforderungen eines Betriebs anschaulich simulieren kann.
Die meisten System Dynamics Anwendungen haben das Ziel, Policies zu entwickeln, damit ein System (während der stabilen Phasen) seinen Zweck effektiv erfüllen kann.
Der Hauptnutzen hingegen liegt m.E. darin, Fern- und Nebenwirkungen von Entscheidungen zu studieren. Du kannst in einem umfangreichen System Dynamics Modell durchaus Auswirkungen von Entscheidunngen beobachten, an die Du sonst nie gedacht hättest!

Der Hauptnutzen hingegen liegt m.E. darin, Fern- und Nebenwirkungen von Entscheidungen zu studieren.

vielen Dank da hatte ich die Naturwissenschaftler Brille auf, hatte nur Katastrophen im Sinn.
Ja habe meine Abschluss Arbeit über mathematische Modellierung von emergenten/super additiven toxikologischen Schadeffekten in Multi Agenten System geschrieben deshalb kam mir die Frage auf. Ohne mathematische Kenntnisse kann ich da wohl noch nicht so differenzieren. Aber mit der Artikelreihe hier wird das sicher :)
vielen Dank für die Erläuterung!

Aber in Multiagentenmodellen lassen sich Emergenzen genau so wenig erzeugen, wid in System Dynamics Modellen. Oder täusche ich mich da? Die beiden Modellierungsmethoden sind nämlich in gewissem Sinne dual zueinander.

Coin Marketplace

STEEM 0.35
TRX 0.12
JST 0.040
BTC 70733.96
ETH 3563.16
USDT 1.00
SBD 4.76