Kurs:Räumliche Modellbildung/letzteAnpassung
Kontaktmodell mit Excle (20.05.2021)
BearbeitenGefordert ist die Darstellung eines Kontaktmodells mit einem Tabellenkalkulationssystem. Dabei sollen sich 5 Personen in einem zweidimensionalen Raum zufällig bewegen. Ähnlich wie im Kontaktmodell der kontinuierlichen Modellbildung wird eine gesunde Person infiziert, wenn sie den Mindestabstand zu einer infizierten Person unterschreitet. Unsere Gruppe hat mit dem Tabellenkalkulationsprogramm MS Excel gearbeitet. Dabei wurden insgesamt 6 Tabellenblätter erstellt - eine allgemeine Informationsseite und dann noch jeweils eine Seite für jede Person. Die 5 Personen bewegen sich in 20 Zeitschritten in einem Raum mit 20m Länge und 10m Breite - .
Zyklus 1
BearbeitenIm ersten Schritt wird allen 5 Personen eine zufällige, aber feste Startposition im Raum zugordnet. In jedem weiteren Zeitschritt erfolgt mittels des Befehls Zufallsbereich (-1;1) eine zufällige Bewegung mit maximaler Schrittweite 1. Eine Person kann also in einem Zeitschritt 1 Meter nach links/rechts/oben/unten gehen oder auch stehen bleiben.
Person 1 wird als infiziert (rot) gesetzt, während die anderen vier Personen zu Beginn gesund sind (grün). In der ersten Spalte steht der aktuelle Zeitpunkt und in den beiden folgenden Spalten sind die x- und y-Koordinaten abzulesen. Ausgehend davon sollen nun die Abstände von allen Personen untereinander ermittelt werden. Dazu wird im ersten Tabellenblatt (Person 1) die euklidische Norm herangezogen, um den Abstand zu den anderen vier Personen zu messen. Ist der Abstand zwischen Person 1 und Person 2/3/4/5 größer als 2 Meter oder genau gleich 2 Meter, so gilt diese Person als gesund. Wird jedoch der Abstand kleiner als 2 Meter so ändert sich der Status der Person auf infiziert. Daraus ergibt sich folgende Ausgangssituation für Peron 1:
Zeitpunkt | x-Koordinate | y-Koordinate | Abstand zu P2 | Abstand zu P3 | Abstand zu P4 | Abstand zu P5 | Status P2 | Status P3 | Status P4 | Status P5 |
---|---|---|---|---|---|---|---|---|---|---|
0 | 10 | 5 | 6,32455532 | 4,123105626 | 8,062257748 | 4,242640687 | Gesund | Gesund | Gesund | Gesund |
1 | 11 | 5 | 7,071067812 | 2,236067977 | 7,810249676 | 4,242640687 | Gesund | Gesund | Gesund | Gesund |
Zeitpunkt | x-Koordinate | y-Koordinate | Abstand zu P1 | Abstand zu P3 | Abstand zu P4 | Abstand zu P5 | Status P1 | Status P3 | Status P4 | Status P5 |
---|---|---|---|---|---|---|---|---|---|---|
0 | 4 | 3 | 6,32455532 | 10,04987562 | 14,31782106 | 5,830951895 | Infiziert | Gesund | Gesund | Gesund |
1 | 4 | 4 | 7,071067812 | 9 | 14,31782106 | 5,656854249 | Infiziert | Gesund | Gesund | Gesund |
Zeitpunkt | x-Koordinate | y-Koordinate | Abstand zu P1 | Abstand zu P2 | Abstand zu P4 | Abstand zu P5 | Status P1 | Status P2 | Status P4 | Status P5 |
---|---|---|---|---|---|---|---|---|---|---|
0 | 14 | 4 | 4,123105626 | 10,04987562 | 5,830951895 | 8,062257748 | Infiziert | Gesund | Gesund | Gesund |
1 | 14 | 3 | 3,16227766 | 10,04987562 | 8,062257748 | 9,219544457 | Infiziert | Gesund | Gesund | Gesund |
Zeitpunkt | x-Koordinate | y-Koordinate | Abstand zu P1 | Abstand zu P2 | Abstand zu P3 | Abstand zu P5 | Status P1 | Status P2 | Status P3 | Status P5 |
---|---|---|---|---|---|---|---|---|---|---|
0 | 17 | 9 | 8,062257748 | 14,31782106 | 5,830951895 | 10,04987562 | Infiziert | Gesund | Gesund | Gesund |
1 | 18 | 10 | 9,219544457 | 15,23154621 | 8,062257748 | 11,04536102 | Infiziert | Gesund | Gesund | Gesund |
Zeitpunkt | x-Koordinate | y-Koordinate | Abstand zu P1 | Abstand zu P2 | Abstand zu P3 | Abstand zu P4 | Status P1 | Status P2 | Status P3 | Status P4 |
---|---|---|---|---|---|---|---|---|---|---|
0 | 7 | 8 | 4,242640687 | 5,830951895 | 8,062257748 | 10,04987562 | Infiziert | Gesund | Gesund | Gesund |
1 | 7 | 9 | 6,403124237 | 5,830951895 | 9,219544457 | 11,04536102 | Infiziert | Gesund | Gesund | Gesund |
Analog zum Tabellenblatt der Person 1, werden nun die weiteren Tabellenblätter der anderen vier Personen gebildet und die Zeitschritte werden bis zum Zeitpunkt t=20 erweitert. So erhalten wir in dem Tabellenblatt einer Person die Abstände zu den anderen vier Personen. Fast man alle Tabellenblätter zusammen, so ergeben sich alle Abstände der 5 Personen untereinander. Diese Information werden im ersten Tabellenblatt gebündelt, wo die Ergebnisse der einzelnen Person zusammengefasst werden. Ändert sich der Status einer einzelnen Person auf infiziert, so ändert sich auch der allgemeine Status auf der Informationsseite auf infiziert. Ist jedoch der Status einer Person in allen Tabellenblättern gesund (das heißt der Abstand zu allen anderen Personen beträgt mehr als 2 Meter), dann gilt diese Person auch insgesamt als gesund.
Zeitpunkt | Person 1 | Person 2 | Person 3 | Person 4 | Person 5 |
---|---|---|---|---|---|
0 | Infiziert | Gesund | Gesund | Gesund | Gesund |
1 | Infiziert | Gesund | Gesund | Gesund | Gesund |
Fazit & Optimierung
BearbeitenDas Kontaktmodell im zweidimensionalen Raum war etwas aufwendig zu erstellen, doch am Ende haben wir eine schöne Verknüpfung der einzelnen Tabellenblättern erhalten. Mit Hilfe der verschiedenen Farben (grün = gesund, rot = infiziert) ist es gelungen eine übersichtliche Darstellung der Infektionsstadien in den jeweiligen Zeitpunkten zu modellieren. Durch den Befehl Zufallsbereich(-1;1) erhalten wir immer wieder neue Laufwege der 5 Personen und dementsprechend auch unterschiedliche Ergebnisse.
Betrachtet man sich jedoch das obige Bild so fällt auf, dass eine bereits infizierte Person im nächsten Zeitschritt wieder als gesund eingestuft werden kann. Dieser Fehler ergibt sich daraus, dass der aktuelle Status einer Person immer nur auf die aktuelle Lage der anderen Personen bezieht und nicht ob die Person selbst eventuell vorher schon infiziert war. Diesem Problem wollen wir uns im nächsten Zyklus widmen.
Zyklus 2
BearbeitenIm zweiten Zyklus wollen wir unser Modell so verbessern, dass bereits infizierte Personen auch in den restlichen Zeitschritten infiziert bleiben. Dazu erweitern wir die Statusabfrage durch einen Oder-Befehl. Die Kombination des Befehls Wenn mit dem Befehl Oder überprüft nun, ob der Abstand von 2 Personen unter 2 Meter ist oder ob die Person im vorherigen Status bereits infiziert war. Tritt einer der beiden Fälle ein, so gilt die Person als infiziert. War die Person im vorherigen Zeitschritt gesund und hat sie sich einer anderen Person nicht mehr als 2 Meter genähert so bleibt diese Person weiterhin gesund. Optisch wird nun zusätzlich noch die Unterschreitung des Mindestabstands von 2 Metern mit gelb hervorgehoben.
Analog zum ersten Zyklus wird so für jede Person ein eigenes Tabellenblatt erstellt und der Status in Bezug auf die anderen vier Personen wird in gesund oder infiziert kategorisiert. Im Informationsblatt werden ebenfalls wieder alle Einträge der einzelnen Personen gebündelt und wir erhalten den aktuellen Status aller 5 Personen in 20 Zeitschritten.
Fazit & Optimierung
BearbeitenDie angestrebte Optimierung des ersten Zyklus ist uns mit der Hinzunahme einer zusätzlichen Abfrage gelungen. Dies wird sowohl in den einzelnen Tabellenblättern der Personen, als auch auf der allgemeinen Informationsseite sichtbar: Ist eine Person als infiziert gekennzeichnet, so bleibt sie das auch in den weiteren Zeitschritten. Betrachtet man sich jedoch das Modell genauer so fällt bei den Befehlen auf, dass sich eine Person genau dann infiziert, wenn sie sich einer anderen Person weniger als 2 Meter nähert. Daraus folgt, dass sich im aktuellen Modell auch eine gesunde Person infizieren kann, wenn sie einer anderen gesunden Person zu nahe kommt. Da dies in der Realität so keinen Sinn macht, erweitern wir unser Modell um einen dritten Zyklus.
Zyklus 3
BearbeitenIm bisherigen Modell ist es möglich, dass eine gesunde Person eine weitere gesunde Person ansteckt, wenn sich beide Personen um weniger als 2 Meter nähern. Diese Codierung basiert auf einem fehlerhaften Modell wie es in der untenstehenden Galerie ("Altes Modell") dargestellt ist. Daher wird die Abfrage um weitere Aspekte ergänzt. Es gibt zwei Möglichkeiten, dass der Status einer Person als infiziert gilt:
- Die Person ist bereits infiziert.
- Die Person ist gesund, unterschreitet jedoch den Abstand von 2 Metern zu einer infizierten Person.
Im Umkehrschluss gibt zwei Möglichkeiten, dass der Status einer Person als gesund gilt:
- Die Person ist gesund, trifft auf eine infizierte Person, hält aber den Mindestabstand ein.
- Die Person ist gesund und tritt auf eine weitere gesunde Person.
Daraus ergibt sich ein neues, komplexeres Modell für den dritten Zyklus.
-
Altes Modell (Zyklus 2)
-
Neues Modell (Zyklus 3)
Wandelt man das neue Modell in einen Befehl in Excel um, so müssen wir den bisherigen Befehl bestehend aus einem Wenn-Befehl und einem Oder-Befehl um einen Und-Befehl erweitern. Konkret erhalten wir dann folgenden Befehl (Abgleich Person 2 und 3 im ersten Zeitschritt):
=WENN(ODER(Information!D2="Infiziert";UND(Information!D2="Gesund";Information!$C2="Infiziert";'Person 2'!F3<2));"Infiziert";"Gesund")
Person 3 soll gilt als infiziert, wenn sie im vorherigen Zeitschritt bereits infiziert war (1) oder wenn sie gesund ist, jedoch Person 2 zu nahe kommt und Person 2 infiziert ist (2). Durch die Hinzunahme der Abfrage, ob Person 2 auch wirklich infiziert ist können nun nur noch gesunde Personen von infizierten Personen angesteckt werden. Analog zu den ersten beiden Zyklen wird auch hier wieder jeder Status einer Person zunächst einzeln betrachtet und dann im ersten Tabellenblatt gebündelt zusammengefasst. Durch die zufällige Bewegung der Personen erhalten wir beim Drücken von F9 immer wieder ein neues Modell. Je nach Laufrichtung kann es zum Beispiel sein, dass am Ende alle fünf Personen infiziert sind oder aber auch, dass Person 1 keine der anderen vier Personen infiziert.
Fazit & Optimierung
BearbeitenDurch die Kombination der Wenn-, Oder- und Und-Befehle kann nun eine gesunde Person wirklich nur von einer infizierten Person angesteckt werden. Je nach Bewegungsrichtung ergeben sich so verschiedenste Szenarien.
Als Ausblick für einen möglichen vierten Zyklus wäre es denkbar noch ein Zufallsexperiment beim Zusammentreffen von zwei Personen zu verknüpfen. Dies soll bewirken, dass sich eine Person nicht mit 100%iger Wahrscheinlichkeit ansteckt, wenn sie einer anderen infizierten Person zu nahe kommt.