Benutzer-Werkzeuge

Webseiten-Werkzeuge


Seitenleiste

ws2021:simulation_infektionsgeschehen

Dies ist eine alte Version des Dokuments!


Simulation Infektionsgeschehen

Gruppenmitglieder: Nestan, Sarah, Jessica, Livia

1. Projektbeschreibung

Wir erstellen eine Simulation, die den Infektionsverlauf einer Pandemie nach verschiedenen Parametern untersucht und visuell darstellt. Wir orientieren uns dabei an der aktuellen Covid-19 Pandemie.

2. Modelle zur Darstellung einer Pandemie

Agentenbasiertes Modell

Wie jedes Modell ist auch das agentenbasierte Modell eine abstrakte Beschreibung eines Vorgangs. Bestimmte Aspekte werden vernachlässigt, andere werden hervorgehoben. Der Fokus liegt auf den Aspekten, die wichtig sind und untersucht werden sollen.

Beispiele für agentenbasierte Modellierung sind Simulationen von Staus, künstliche Wirtschaftssysteme, oder wie in unserem Fall die Simulation der Ausbreitung einer Krankheit.

Weitere Infos zum agentenbasierten Modell

SEIR-Modell

Das SEIR-Modell (Susceptible, Exposed, Infected, Recovered) ist ein mathematisches Modell, das die Ausbreitung von ansteckenden Krankheiten beschreibt. Am Anfang sind alle Agenten susceptible, ein Agent ist infiziert. Bei Kontakt mit dem infizierten Agenten wechselt der Zustand zu exposed, nach einer bestimmten Zeit zu infected und wieder nach einer bestimmten Zeit zu recovered. Nur Agenten mit dem Zustand „infected“ können andere anstecken. Recoverte Agenten sind immun und können sich nicht erneut anstecken.

Weitere Infos zum SEIR-Modell

3. Visualisierung mit Turtle & Plotly

Turtle

Zuerst haben wir unsere Simulation mit Turtle visualisiert, da wir uns damit bereits beschäftigt hatten und Turtle ein sehr leicht zu durschauendes Visualisierungs-Tool ist. Turtle hatte für uns jedoch den Nachteil, dass wir nicht zeitgleich zur Simulation die Graphen erstellen konnten. Später haben wir uns für plotly entschieden.

Hier könnt ihr über Turtle graphics lesen

Was ist Plotly?

Plotly-Tutorial

Plotly ist eine Python-Bibliothek für verschiedenste Grafiken. Mithilfe von Plotly ist es uns gelungen, die Darstellung unserer Agenten deutlich flüssiger zu gestalten. Zusätzlich können wir Graphen plotten, die die Veränderung der Anzahl der susceptible, infected und recovered Agenten aufzeichnen. Sie erleichtern somit die Auswertung der Simulationen.

4. Erklärung der Klassen

Klasse Agents

Die Klasse Agents ist eine Objektklasse und dient zur Erstellung der Agenten mit verschiedenen Attribute und Eigenschaften. In unserer Agentenklasse haben Agenten die Attribute Farbe, Position, Richtung, Geschwindigkeit und Tage. Die Agenten können ihren Zustand ändern, in dem sie ihre Farbe und Tage verändern, außerdem können sie sich bewegen.

Klasse Agents

Klasse World

Die Klasse World erstellt eine Umgebung von Agenten und ist zuständig für die Interaktion zwischen den Agenten. In der Klasse wird geprüft, ob die Änderung der Zustände nötig ist, in dem man die Begegnung zwischen zwei Agenten betrachtet. Außerdem werden in der World-Klasse Listen aktualisiert, die später für die Visualisierung nötig sind. In diesen Listen werden die Positionen von allen Agenten bzw. die Anzahl der Susceptibles, Exposed, Infected und Recovered gespeichert. In dieser Klasse kann man auch die Bewegungseinschränkung einstellen, genau so wie die Wahrscheinlichkeit bei der Quarantäne und die Ansteckungswahrscheinlichkeit.

Klasse World

Maincode

In der Maincode werden die Klassen und Ihre Funktionen aufgerufen und wird die Simulation mithilfe von Plotly visualisiert.

Maincode

5. Endergebnisse

Simulation ohne Maßnahmen

Die Agenten bewegen sich in eine zufällige Richtung mit einer zufälligen Geschwindigkeit. Am Anfang ist ein Agent ansteckend. Bei Kontakt mit diesem Agenten steckt sich ein gesunder, nicht immuner Agent zu 70% an.

Simulation mit Masken

Masken bewirken, dass die Ansteckungswahrscheinlichkeit bei Kontakt geringer ist. Wir haben in unserem Code die Ansteckungswahrscheinlichkeit auf 10% gesenkt. Die Auswirkung dieser Maßnahme ist im Graph deutlich zu erkennen.

Simulation mit Masken und Bewegungseinschränkung

Wir haben die niedrigere Ansteckungswahrscheinlichkeit beibehalten. Außerdem bewegt sich nur jeder zweite Agent. Das soll die verringerte Mobilität während der Pandemie darstellen, dadurch gibt es weniger Kontakte.

Simulation mit Quarantäne, ohne weitere Einschränkungen

Wir haben eine Quarantäne-Funktion hinzugefügt, bei der jeder zweite Agent nach vier Tagen nach der Infektion in Quarantäne geht. Wir haben uns für jeden zweiten Agent entschieden, da auch in Realität viele Infektionen nicht erkannt werden. Im Code kann man die Wahrscheinlichkeit einfach ändern, mit der die infizierten Agenten in Quarantäne gesetzt werden. Wenn der Agent 14 Tage in Quarantäne war, ist er recovered und begibt er sich wieder in das Haupt-Feld und bewegt sich normal weiter.

def changeCondition2(self,agent, quarantine = 0): 
 
        elif agent.day == 4*days:
            # change the condition to Infected if the agent has been exposed for 4 days
            agent.setInfected()
            self.number_infected += 1
            self.number_exposed -= 1
 
            if random.random() < quarantine:
                # move the agent to the quarantine and change its speed to zero
                agent.xpos = random.uniform(self.width+2*Agents.radius +10,self.width+30)
                agent.ypos = random.uniform(0,(self.height+Agents.radius)/2-Agents.radius)
                agent.xspeed = 0
                agent.yspeed = 0
 
        elif agent.day == 18*days:
            # move the agent who is in quarantine back to the main square after 14 days of being infected (18 days after the collision with infected)
            # set speed
            agent.xpos = random.uniform(0,self.width)
            agent.ypos = random.uniform(0,self.height)
            agent.xspeed = self.temp*random.uniform(-10,10)
            agent.yspeed = self.temp*random.uniform(-10,10)
            agent.day += 1

6. Fazit

7. Lustige Fehlversuche

8. Ausführliche Protokolle

9. Weitere Ideen für das Projekt

  • Möglichkeit einer Impfung einführen
  • Laufzeit verbessern
  • mehrere Agenten-Räume mit/ohne Einschränkung von Mobilität
  • interaktive Benutzeroberfläche

Ideen für das Projekt und Zwischenziele

Literatur und Hilfsmittel

Code als Zip-Datei

Verzeichnis der Python-Pakete

ws2021/simulation_infektionsgeschehen.1618312082.txt.gz · Zuletzt geändert: 2021/04/13 13:08 von jessica.03