Epidemie-Modell

Simulation eines Epidemie-Modells


Modell-Simulation einer Epidemie


Auf dieser Seite wird vorgestellt, wie man ein einfaches Simulations-Modell ↓ plant und ↓ berechnet, wie man es mit ↓ Tabellen-Kalkulation selbst programmieren kann, und wie das hier verwendete Modell als ↓ Web-App programmiert ist.

Modell



  Nach der Programmierung kann man mit dem Modell experimentieren:
Zuerst wird das Modell geeicht: Bei Vorgabe 'echter' Werte sollte es die bereits bekannte Realität zutreffend beschreiben.
Danach verändert man das Modell, um zu sehen, wie sich verschiedene Maßnahmen auswirken könnten - z.B. eine Verringerung der Ansteckungs-Rate oder eine bessere Behandlung der bereits Erkrankten.

Berechnungs-Formeln


Von einfachen Modellen wie diesem kann man keine besondere Genauigkeit erwarten. Sie geben jedoch die Wirkung der Faktoren (und möglicher Maßnahmen) im Trend korrekt an.


Berechnung der integralen Elemente (Container) für jeden Zeit-Schritt von (t-1) auf t
NichtImmun[t] = NichtImmun[t-1] - ΔKrank[t-1]
Krank[t] = Krank[t-1] + ΔKrank[t-1] - ΔImmun[t-1] - ΔTot[t-1]
Immun[t] = Immun[t-1] + ΔImmun[t-1]
Tot[t] = Tot[t-1] + ΔTot[t-1]
Gesamt[t] = NichtImmun[t] + Krank[t] + Immun[t]

Berechnung der differentiellen Elemente (Fluss) für jeden Zeit-Schritt:
ΔKrank[t] = Krank[t-1] * EffRate
  für EffRate = AnstRate * NichtImmun[t-1] / Gesamt[t-1]
ΔImmun[i] = ΔKrank[t-Dauer] * (1-TotRate)
ΔTot[t] = ΔKrank[t-Dauer] * Totrate



Die wenigen einfachen Formeln des Modells beschreiben nur die Veränderungen (Fluss), die Werte der Container ergeben sich zwanglos aus den Zu- und Abflüssen.
In günstigen Fällen entsprechen die Ergebnisse ungefähr jenen, die man mit Hilfe exakter Funktionen berechnen kann. Bedingung dafür ist, dass die Schrittweite des Modells (hier: 1 Tag) klein genug ist, so dass man die Änderungen während eines Intervalls (d.h. hier: innerhalb einiger Stunden) vernachlässigen kann.

Das Modell ist zwar mathematisch nicht exakt, lässt sich dafür jedoch einfach auf zusätzliche Einfluss-Faktoren erweitern, auf Faktoren, die sich während der Laufzeit verändern oder andere mathematisch schwer definierbare Einflüsse.

Beispiel: Man kann politische Maßnahmen simulieren, mit denen z.B. die AnsteckungsRate ab einem bestimmten Zeitpunkt verringert wird.

Beispiel: Man kann ein Ereignis simulieren, welches über einen begrenten Zeitraum die Sterblichkeit senkt oder erhöht (z.B. Kälte- oder Hitzewelle).

Sie sind eingeladen, solche und andere Einflüsse mit einem ↓ Tabellen-Kalkulations-Programm auszuprobieren.

Modell mit Tabellen-Kalkulation


In diesem Kapitel wird die Programmierung beschrieben. Voraussetzung ist Erfahrung mit einfacheren Aufgaben und gute (teilweise bereits fortgeschrittene) Kenntnisse der Tabellen-Kalkulation.

Alternativ steht ein fertiges Programm für LibreOffice oder OpenOffice mit diesem Link zum ↗ Download bereit.


 ABC
1Start1000 
2Dauer15Tage
3TotRate50% 
4AnstRate0.13/Tag


 ABC
6ZeileRefZTage
7=ZEILE(A7)=WENN((A7-$B$2)<$A$7;0;A7-$B$2)0
8=ZEILE(A8)=WENN((A8-$B$2)<$A$7;0;A8-$B$2)=C7+1
 ⇓⇓⇓⇓⇓⇓
372=ZEILE(A372)=WENN((A372-$B$2)<$A$7;0;A372-$B$2)=C371+1


 DEF
5=D372/$K$372  
6NotImmunΔKrankKrank
7=B110
8=D7-E7=F7*L7*$B$4=MAX(F7+E7-G7-I7;0)
 ⇓⇓⇓⇓⇓⇓
372=D371-E371=F371*L371*$B$4=MAX(F371+E371-G371-I371;0)


 GH
5 =H372/$K$372
6ΔImmunImmun
700
8 =WENN(B8>0;INDIREKT("E"&B8)*(1-$B$3);0) =H7+G8
 ⇓⇓⇓⇓
372 =WENN(B372>0;INDIREKT("E"&B372)*(1-$B$3);0) =H371+G372


 IJ
5 =J372/$B$1
6ΔTotTot
700
8=WENN(B8>0;INDIREKT("E"&B8)*$B$3;0)=J7+I7
 ⇓⇓⇓⇓
372=WENN(B372>0;INDIREKT("E"&B372)*$B$3;0)=J371+I371


 KL
5=K372/$B$1 
6GesamtRate
7=D7+F7+H7=WENN(K7>0;D7/K7;1)
8=D8+F8+H8=WENN(K8>0;D8/K8;1)
 ⇓⇓⇓⇓
372=D372+F372+H372=WENN(K372>0;D372/K372;1)



Zelle J5 gibt den Anteil der Verstorbenen relativ zur Gesamtzahl am Beginn des Modells an.
Zelle K5 gibt den Anteil der Überlebenden relativ zur Gesamtzahl am Beginn des Modells an.

Model als Web-App  (Live-Beispiel dieser Seite)



Mit diesem Link wird der Original Quelltext der WebApp in einem eigenen Browser-Tab geladen.
Alle verwendeten Resourcen sind in der Web-App enthalten, sie ist daher unabhängig verwendbar: Man kann den Text in einer Datei *.html am eigenen Arbeits-PC speichern und danach mit jedem modernen Browser verwenden.

Die Programmierung erfordert fortgeschrittene Kenntnisse und ist daher nicht als einfache Aufgabe geeignet. Daher werden hier keine Details kommentiert sondern lediglich Hinweise zu den verwendeten Methoden angegeben.



Das Diagramm ist als → SVG Objekt-Grafik programmiert und direkt (→ Inline) in den HTML-Quelltext eingebettet.

Die verwendeten Programme sind mit → Javascript erstellt. Der Javascript-Quelltext ist ebenfalls im HTML-Text enthalten. Javacript-Funktionen werden für mehrere Aufgaben eingesetzt: Lesen der SchiebeRegler, Berechnung des Modells, Änderung (Animation) der ObjektGrafik-Elemente, Anzeige der digitalen Ergebnisse.

Das Web-App verwendet ausschließlich freie und standard-konforme Methoden. Es funktioniert daher ohne Änderung auf jedem gängigen Betriebssystem und mit jedem modernen Browser.



Alle Komponenten werden vom Browser-Programm interpretiert und ausgeführt. Daher kann man das Modell nicht nur (so wie hier) von einem Webserver beziehen sondern auch als Datei auf jedem anderen PC ausführen.



Einige Regeln (z.B. Anzeige einer Überschrift) werden mit Javascript verändert, je nachdem ob die Web-App eingebettet (wie auf dieser Seite) oder alleinstehend ausgeführt wird.



Auch zur Animation der Grafik werden Javascript-Funktionen verwendet:
Mit Funktion model_draw() werden nach jeder neuen Berechnung des Modells die 6000 Koordinaten der 1500 Diagramm-Linien-Elementen geändert.

Dazu und zur nachfolgenden Umsetzung der SVG-Anweisungen in die Pixel-Grafik des Bildschirms (Rendern) ist relativ viel Prozessor-Arbeit erforderlich, daher erfolgt die Anzeige je nach PC-Leistung und -Auslastung evtl. ruckweise.



Javascript kann mit den Methoden des → DOM-Modells auf alle Elemente einer Webseite oder Objekt-Grafik zugreifen. In diesem Beispiel werden zahlreiche Elemente Live mit Javascript erzeugt und die Eigenschaften vieler Objekte werden zur Animation und zur digitalen Anzeige der Ergebnisse geändert.

Darüber hinaus bietet Javascript eine wachsende Zahl von neuen professionellen Technologien, z.B. → AJAX oder die API's für die Hardware von mobilen Geräten (Camera, Mikrofon, → GPS, ...). Diese Möglichkeiten werden vom hier vorgestellten App allerdings nicht verwendet.