[PYTHON] Einfache Simulation einer Virusinfektion

Einführung

Der folgende Artikel wurde am 14. März 2020 in der Washington Post veröffentlicht.

Die japanische Version ist unten.

*** Warum sich Ausbrüche wie das Coronavirus schnell ausbreiten können und wie sie die Kurve "abflachen" können ***
https://www.washingtonpost.com/graphics/2020/health/corona-simulation-japanese/

Nach dem einfachen Prinzip des Ball-zu-Ball-Kontakts Ein Artikel, in dem vorgestellt wird, wie die Anzahl der mit dem Virus infizierten Personen zunimmt und abnimmt. Ich denke, es war sehr leicht zu verstehen.

Übrigens haben einige Leute es in Python (Jupyter Lab) reproduziert.

*** Ich habe COVID19_simulator mit JupyterLab erstellt ***
https://qiita.com/yasubei/items/ca48528daac456e339d3

ich habe es selbst gemacht

Übrigens bin ich ...

Ich wollte verschiedene Parameter manipulieren und mich selbst simulieren Um den Prozess zu vereinfachen, ignorieren Sie den Sprung, wenn die Kugeln kollidieren, und betrachten Sie die Überlappung der Kugeln als Infektion.

Ich habe *** Python-Version (mit Modul Pygame) *** und *** HTML & JavaScript-Version *** gemacht.

Beide sind im Grunde der gleiche Prozess, aber es gibt Unterschiede im Zeichenmechanismus Die JavaScript-Version, die in einem Webbrowser ausgeführt wird, ist erheblich schneller als die Python-Version.

Da die Ausgangsposition und der Bewegungsbetrag des Balls anhand von Zufallszahlen bestimmt werden, ändert sich das Ausführungsergebnis jedes Mal. Für den ersten infizierten Ball wird nur einer der Bälle ausgewählt, die ganz links platziert sind.

Mit dem Standardparameter (300 Bälle) Die Python-Version konvergiert in etwa 10 bis 15 Sekunden und die JavaScript-Version in etwa 5 bis 10 Sekunden.

Eine Bewegung und Zeichnung aller Bälle wird als Drehung bezeichnet.

Usw. kann frei angegeben werden.

Während der Ausführung

Wird am unteren Bildschirmrand angezeigt. Die Grafik zeigt den Übergang der Anzahl infizierter Bälle und der Anzahl der wiederhergestellten Bälle Es wird in Echtzeit angezeigt.

Wenn Sie die Bewegung langsam sehen möchten, erhöhen Sie das Anzeigegewicht.

Selbst unter den gleichen Bedingungen werden jedes Mal unterschiedliche Ergebnisse erzielt. Es kann interessant sein, die Ausführung viele Male zu wiederholen und das Erscheinungsverhältnis des gezeichneten Diagramms zu überprüfen.

Demo

Die HTML- und JavaScript-Version befindet sich ebenfalls unter der folgenden URL und kann von jedem ausgeführt werden. Es ist eine gute Idee, mit verschiedenen Parametern herumzuspielen. (Es kann auch von einem Smartphone ausgeführt werden.)

ScreenShot.png

Postskriptum 2020/04/25

*** IHASHI28 Educational ch. *** führte auch ein Beispiel für Simulationsergebnisse ein.

Recommended Posts

Einfache Simulation einer Virusinfektion
Simulation von Comp Gacha
Ein einfaches Beispiel für pivot_table.
Einfache FPS-Messung von Python
Simulation des Inhalts der Brieftasche
Implementierung eines einfachen Partikelfilters
Erklärung und Implementierung von einfachem Perzeptron