Hier werden die Unterschiede zwischen zwei Versionen gezeigt.
Beide Seiten der vorigen Revision Vorhergehende Überarbeitung Nächste Überarbeitung | Vorhergehende Überarbeitung | ||
ws2021:simulation_infektionsgeschehen [2021/04/13 13:12] 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 84: | Zeile 84: | ||
change condition of one agent in case of a collision with the infected Agent | 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> | </code> | ||
Zeile 103: | Zeile 113: | ||
**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|}} | ||
Zeile 134: | 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. | ||