[PYTHON] Implementieren Sie mit OpenModelica das mathematische Modell "SIR-Modell" von Infektionskrankheiten (siehe Wirkung des Impfstoffs)

Fügen wir die Wirkung des Impfstoffs zum grundlegenden SIR-Modell hinzu

Ein Modell mit der Wirkung eines Impfstoffs, das dem im vorherigen Artikel erstellten Modell "Implementierung eines mathematischen Modells" SIR-Modell "von Infektionskrankheiten mit Open Modelica" hinzugefügt wurde. Lassen Sie uns erstellen.

Voraussetzungen für dieses Impfstoffmodell

Als Parameter können "Impfstoffeffekt = Wirksamkeit des Impfstoffs selbst (Verhältnis, das sich von S nach R verschieben kann)" und "Impfstoffrate = Impfrate (Verhältnis der Impfungen insgesamt)" eingestellt werden.

parameter Real vaccine_effect = 1.0 "Effect of Vaccine";
parameter Real vaccine_rate = 0.7 "Vaccination rate";

Der Gleichungsteil ist wie folgt Es ist so einfach, wie S im ersten Teil des SIR-Modells mit konstanter Geschwindigkeit in R zu ändern und I nicht zu beeinflussen. Wenn der Antikörper im Laufe der Zeit verloren geht oder wenn der Impfstoff während der Infektion verabreicht wird, kann dieses Modell nicht damit umgehen, aber es ist nur eine Frage der Wirkung der Impfung.

equation
  Vy = vaccine_effect * vaccine_rate;
  Sy = Si - Si * Vy;
  Iy = Ii;
  Ry = Ri + Si * Vy;

Der gesamte Code für den Impfstoff sieht so aus.

class cl_Vaccine
  extends Modelica.Blocks.Icons.Block;
  parameter Real vaccine_effect = 1.0 "Effect of Vaccine";
  parameter Real vaccine_rate = 0.7 "Vaccination rate";
  Modelica.Blocks.Interfaces.RealInput Si "Connector of initial S(Susceptible)" annotation(
      Placement(visible = true, transformation(origin = {-100, 60}, extent = {{-20, -20}, {20, 20}}, rotation = 0), iconTransformation(origin = {-120, 60}, extent = {{-20, -20}, {20, 20}}, rotation = 0)));
  Modelica.Blocks.Interfaces.RealInput Ii "Connector of initial I (Infectious)" annotation(
      Placement(visible = true, transformation(origin = {-100, 0}, extent = {{-20, -20}, {20, 20}}, rotation = 0), iconTransformation(origin = {-120, 0}, extent = {{-20, -20}, {20, 20}}, rotation = 0)));
  Modelica.Blocks.Interfaces.RealInput Ri "Connector of initial R (Removed)" annotation(
      Placement(visible = true, transformation(origin = {-100, -62}, extent = {{-20, -20}, {20, 20}}, rotation = 0), iconTransformation(origin = {-120, -62}, extent = {{-20, -20}, {20, 20}}, rotation = 0)));
  Modelica.Blocks.Interfaces.RealOutput Sy "Output connector of S(Susceptible)" annotation(
      Placement(visible = true, transformation(origin = {100, 60}, extent = {{-10, -10}, {10, 10}}, rotation = 0), iconTransformation(origin = {110, 62}, extent = {{-10, -10}, {10, 10}}, rotation = 0)));
  Modelica.Blocks.Interfaces.RealOutput Iy "Output connector of I (Infectious)" annotation(
      Placement(visible = true, transformation(origin = {100, 0}, extent = {{-10, -10}, {10, 10}}, rotation = 0), iconTransformation(origin = {110, 0}, extent = {{-10, -10}, {10, 10}}, rotation = 0)));
  Modelica.Blocks.Interfaces.RealOutput Ry "Output connector of R (Removed)" annotation(
      Placement(visible = true, transformation(origin = {100, -60}, extent = {{-10, -10}, {10, 10}}, rotation = 0), iconTransformation(origin = {110, -60}, extent = {{-10, -10}, {10, 10}}, rotation = 0)));
  Modelica.Blocks.Interfaces.RealOutput Vy "Output connector of Vaccination rate" annotation(
      Placement(visible = true, transformation(origin = {0, -100}, extent = {{-10, -10}, {10, 10}}, rotation = -90), iconTransformation(origin = {0, -110}, extent = {{-10, -10}, {10, 10}}, rotation = -90)));
  equation
    Vy = vaccine_effect * vaccine_rate;
    Sy = Si - Si * Vy;
    Iy = Ii;
    Ry = Ri + Si * Vy;
  annotation(
      Icon(graphics = {Text(origin = {-22, 24}, extent = {{-52, 32}, {94, -72}}, textString = "Vac")}, coordinateSystem(initialScale = 0.1)));
end cl_Vaccine;

Simulationsergebnisse mit Impfung

Cl_vaccine wird vor das grundlegende SIR-Modell gestellt, die Impfrate auf 50% und der Impfstoff selbst so eingestellt, dass der Impfstoff auf 100% Antikörperträger geändert werden kann. Dies entspricht der Einstellung der Anfangswerte von S, I und R des Grundmodells auf (499,5, 1, 499,5). 10_SIR_vaccine_model.png

Den Simulationsergebnissen zufolge kann die maximale Anzahl infizierter Personen mit einer Impfrate von 50% auf etwa 1/20 reduziert werden. Bei der Impfrate von 70% war sie sogar um fast eine Größenordnung niedriger. 11_SIR_vaccine_graph.png

Zusammenfassung

Durch die Modellierung mit OpenModelica war es meiner Meinung nach einfach, einem einfachen Modell für Infektionskrankheiten Elemente hinzuzufügen und es zu simulieren. Die hier vorgestellte Idee ist sehr umstritten. Wenn Sie also größere Probleme haben, würde ich mich freuen, wenn Sie mir einen Rat geben könnten.

Recommended Posts

Implementieren Sie mit OpenModelica das mathematische Modell "SIR-Modell" von Infektionskrankheiten (siehe Wirkung des Impfstoffs)
Implementieren Sie mit Open Modelica das mathematische Modell "SIR-Modell" von Infektionskrankheiten
Implementieren Sie das mathematische Modell "SIR-Modell" von Infektionskrankheiten in OpenModelica (das die Sterblichkeitsrate und die Reinfektionsrate widerspiegelt).
Implementieren Sie mit OpenModelica das mathematische Modell "SIR-Modell" von Infektionskrankheiten (Beispiel für wiederholte Regulierung und Entspannung)
Einführung eines mathematischen Vorhersagemodells für Infektionskrankheiten (SIR-Modell)
Mathematisches Vorhersagemodell für Infektionskrankheiten (SIR-Modell): Fallstudie (1)
Mathematisches Modell von Infektionskrankheiten
Implementieren Sie einen Teil des Prozesses in C ++
Summe der Variablen in einem mathematischen Modell
[SIR-Modellanalyse] Spitzenwert der Infektionszahlen in Japan und auf der ganzen Welt ♬
Lösung mathematischer Modelle von Epidemien von Infektionskrankheiten in Python
Geben Sie das Beleuchtungsmodell für SCN-Material in Pythonista an
Zählen Sie die Anzahl der Parameter im Deep-Learning-Modell
Implementieren Sie die Lösung der Riccati-Algebra in Python
[SIR-Modellanalyse] Spitzenwert der Infektionszahlen in Japan und auf der ganzen Welt ♬ Teil 2