Benutzer-Werkzeuge

Webseiten-Werkzeuge


ws2021:simulation_infektionsgeschehen

Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen gezeigt.

Link zu dieser Vergleichsansicht

Beide Seiten der vorigen Revision Vorhergehende Überarbeitung
Nächste Überarbeitung
Vorhergehende Überarbeitung
ws2021:simulation_infektionsgeschehen [2021/04/13 13:08]
jessica.03 [5. Endergebnisse]
ws2021:simulation_infektionsgeschehen [2021/04/13 21:34] (aktuell)
jessica.03 [3. Visualisierung mit Turtle & Plotly]
Zeile 33: Zeile 33:
 **Turtle** **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.+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. ​Deshalb ​haben wir uns für plotly entschieden.
 {{:​ws2021:​agent_visualisation_with_turtle.mp4|}} {{:​ws2021:​agent_visualisation_with_turtle.mp4|}}
  
Zeile 50: Zeile 50:
 **Klasse Agents** **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.+Die Klasse Agents ist eine Objektklasse und dient zur Erstellung der Agenten mit verschiedenen ​Attributen ​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 Agents]]
Zeile 62: Zeile 62:
 **Maincode** **Maincode**
  
-In der Maincode werden die Klassen und Ihre Funktionen aufgerufen und wird die Simulation mithilfe von Plotly visualisiert.+In dem Maincode werden die Klassen und Ihre Funktionen aufgerufen und die Simulation ​wird mithilfe von Plotly visualisiert.
  
 [[Maincode]] [[Maincode]]
Zeile 79: Zeile 79:
  
 {{:​ws2021:​pandemiesimulation_mit_masken.mp4|}} {{:​ws2021:​pandemiesimulation_mit_masken.mp4|}}
 +<code Python>​ 
 +def changeCondition1(self,​agent1,​ agent2, probability = 0.1): # probability of agents getting infected 
 +    '''​ 
 +    change condition of one agent in case of a collision with the infected Agent 
 +    '''​ 
 +    if self.checkForCollision(agent1,​ agent2): 
 +        # check if one of the Agents is infected and the other one susceptible,​ in that case susceptible Agent gets exposed 
 +        if agent1.isSusceptible() and agent2.isInfected() and random.random() < probability:​ 
 +            agent1.setExposed() 
 +            self.number_exposed += 1 
 +            self.number_susceptible -= 1 
 +        elif agent1.isInfected() and agent2.isSusceptible() and random.random() < probability:​ 
 +            agent2.setExposed() 
 +            self.number_exposed += 1 
 +            self.number_susceptible -= 1 
 +</​code>​ 
 +       
 **Simulation mit Masken und Bewegungseinschränkung** **Simulation mit Masken und Bewegungseinschränkung**
  
Zeile 85: Zeile 101:
  
 {{:​ws2021:​masken_bewegungseinschraenkung_mov.mp4|}} {{:​ws2021:​masken_bewegungseinschraenkung_mov.mp4|}}
 +<code Python>
 +def lessMovement(self,​ n = 2):
 +    '''​
 +    set speed of every n-th Agent to 0
 +    '''​
 +    for i in range(0,​self.number_of_agents,​n):​
 +        self.agents_list[i].xspeed = 0
 +        self.agents_list[i].yspeed = 0
 +</​code>​
  
 **Simulation mit Quarantäne,​ ohne weitere Einschränkungen** **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.+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. Im Graphen erkennt man einen deutlich flacheren Verlauf als ohne Quarantäne.
  
 {{:​ws2021:​quarantaene_mov.mp4|}} {{:​ws2021:​quarantaene_mov.mp4|}}
 <code Python> <code Python>
-def changeCondition2(self,​agent,​ quarantine = 0): +def changeCondition2(self,​agent,​ quarantine = 0):   # quarantine = probability of infected Agents going into quarantine ​
  
         elif agent.day == 4*days:         elif agent.day == 4*days:
Zeile 119: Zeile 144:
  
 ===== 6. Fazit ===== ===== 6. Fazit =====
 +
 +Unser Modell kann zur Veranschaulichung des Infektionsgeschehens während einer Pandemie, wie z.B. der Covid-19-Pandemie dienen und zeigen, wie dieses beeinflusst werden kann.
 +
 +Im Verlauf des Projekts haben wir unsere ​ Fähigkeiten und Fertigkeiten im Programmieren mit Python konstant weiterentwickelt und sind mit den Herausforderungen gewachsen, die die Aufgabe an uns gestellt hat.
 +
 +Die größten Schwierigkeiten waren hierbei einerseits die Programmierung der Agentenbewegung und andererseits das Verstehen der Visualisierungsoberfläche Plotly. Unser Projekt hat mit einem Code begonnen, der im Laufe unserer Arbeit immer komplexer wurde. Am Ende mussten wir daher besonders an der Übersichtlichkeit arbeiten. Dies ist uns durch das Umschreiben des Codes in eine Klasse gelungen.
 +Schließlich haben wir eine Simulation erstellt, die das Infektionsgeschehen einer Pandemie in einem kleinen Maßstab und vereinfacht darstellt und anhand von Graphen visualisiert.
  
  
ws2021/simulation_infektionsgeschehen.1618312082.txt.gz · Zuletzt geändert: 2021/04/13 13:08 von jessica.03