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:02]
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>
 +def changeCondition2(self,​agent,​ quarantine = 0):   # quarantine = probability of infected Agents going into quarantine ​
  
- <​code>​ 
-def changeCondition2(self,​agent,​ quarantine = 0):  
         elif agent.day == 4*days:         elif agent.day == 4*days:
             # change the condition to Infected if the agent has been exposed for 4 days             # change the condition to Infected if the agent has been exposed for 4 days
Zeile 99: Zeile 124:
             self.number_infected += 1             self.number_infected += 1
             self.number_exposed -= 1             self.number_exposed -= 1
 +            ​
             if random.random() < quarantine:             if random.random() < quarantine:
                 # move the agent to the quarantine and change its speed to zero                 # move the agent to the quarantine and change its speed to zero
Zeile 105: Zeile 131:
                 agent.xspeed = 0                 agent.xspeed = 0
                 agent.yspeed = 0                 agent.yspeed = 0
 +                ​
         elif agent.day == 18*days:         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)             # 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)
Zeile 117: 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.1618311767.txt.gz · Zuletzt geändert: 2021/04/13 13:02 von jessica.03