EPIDEMIOLÓGIAI MODELL – KÓRHÁZI KAPACITÁS ÉS HALÁLOZÁS OKAI ÉS KÖVETKEZMÉNYEI
----------
import numpy as np
import matplotlib.pyplot as plt
print("=" * 80)
print("SEIR + KÓRHÁZI KAPACITÁS + HALÁLOZÁSI MODELL")
print("Egészségügyi rendszerterhelés szimuláció")
print("=" * 80)
# -----------------------------
# PARAMÉTEREK
# -----------------------------
N = 1_000_000
beta = 0.35 # fertőzés
sigma = 0.2 # lappangás
gamma = 0.1 # gyógyulás
hospital_rate = 0.12 # fertőzöttek hány %-a kerül kórházba
base_mortality = 0.01 # alap halálozás
overload_mortality = 0.05 # túlterhelés esetén
hospital_capacity = 3000 # ágyak száma
T = 300
print(f"Népesség: {N}")
print(f"Kórházi kapacitás: {hospital_capacity} ágy")
print(f"Alap halálozás: {base_mortality}")
print(f"Túlterhelési halálozás: {overload_mortality}")
# -----------------------------
# KEZDŐÁLLAPOT
# -----------------------------
S = N - 100
E = 50
I = 50
R = 0
D = 0
history = {
"S": [], "E": [], "I": [],
"R": [], "D": [],
"H": []
}
# -----------------------------
# SZIMULÁCIÓ
# -----------------------------
print("\nSzimuláció indul...")
for t in range(T):
# új fertőzések
new_exposed = beta * S * I / N
new_infected = sigma * E
new_recovered = gamma * I
# kórházi igény
hospital_demand = hospital_rate * I
# túlterhelés
overload_factor = 1.0
if hospital_demand > hospital_capacity:
overload_factor = hospital_demand / hospital_capacity
# halálozás
deaths = base_mortality * I
if overload_factor > 1:
deaths += (overload_mortality * (overload_factor - 1)) * I
deaths = min(deaths, I)
# frissítés
S -= new_exposed
E += new_exposed - new_infected
I += new_infected - new_recovered - deaths
R += new_recovered
D += deaths
# mentés
history["S"].append(S)
history["E"].append(E)
history["I"].append(I)
history["R"].append(R)
history["D"].append(D)
history["H"].append(hospital_demand)
if t % 25 == 0:
print(
f"t={t:3d} | "
f"I={I:8.0f} | "
f"Kórházi igény={hospital_demand:8.0f} | "
f"Halottak={D:8.0f}"
)
print("\nSzimuláció befejezve.")
# -----------------------------
# EREDMÉNYEK
# -----------------------------
plt.figure(figsize=(12, 7))
plt.plot(history["S"], label="Fogékony (S)")
plt.plot(history["E"], label="Lappangó (E)")
plt.plot(history["I"], label="Fertőzött (I)", linewidth=2)
plt.plot(history["R"], label="Gyógyult (R)")
plt.plot(history["D"], label="Halálozás", linewidth=2)
plt.plot(history["H"], '--', label="Kórházi igény")
plt.axhline(hospital_capacity, color='red', linestyle=':', label="Kapacitás")
plt.title("SEIR modell kórházi kapacitás és halálozás figyelembevételével")
plt.xlabel("Idő")
plt.ylabel("Populáció")
plt.legend()
plt.grid()
plt.show()
# -----------------------------
# ÖSSZEGZÉS
# -----------------------------
peak_hospital = max(history["H"])
print("\nÖSSZEGZÉS")
print("-" * 40)
print(f"Összes halálozás: {D:.0f}")
print(f"Csúcs kórházi igény: {peak_hospital:.0f}")
print(f"Kapacitás túllépés: {'IGEN' if peak_hospital > hospital_capacity else 'NEM'}")
mortality_rate = D / N
print(f"Halálozási arány: {mortality_rate:.2%}")
------------
================================================================================
SEIR + KÓRHÁZI KAPACITÁS + HALÁLOZÁSI MODELL
Egészségügyi rendszerterhelés szimuláció
================================================================================
Népesség: 1000000
Kórházi kapacitás: 3000 ágy
Alap halálozás: 0.01
Túlterhelési halálozás: 0.05
Szimuláció indul...
t= 0 | I= 54 | Kórházi igény= 6 | Halottak= 0
t= 25 | I= 779 | Kórházi igény= 84 | Halottak= 65
t= 50 | I= 11112 | Kórházi igény= 1201 | Halottak= 991
t= 75 | I= 70771 | Kórházi igény= 8289 | Halottak= 54777
t=100 | I= 60472 | Kórházi igény= 7411 | Halottak= 241206
t=125 | I= 33627 | Kórházi igény= 4131 | Halottak= 305762
t=150 | I= 18410 | Kórházi igény= 2273 | Halottak= 315756
t=175 | I= 8075 | Kórházi igény= 1004 | Halottak= 318990
t=200 | I= 3143 | Kórházi igény= 392 | Halottak= 320330
t=225 | I= 1167 | Kórházi igény= 146 | Halottak= 320839
t=250 | I= 426 | Kórházi igény= 53 | Halottak= 321027
t=275 | I= 154 | Kórházi igény= 19 | Halottak= 321095
Szimuláció befejezve.
ÖSSZEGZÉS
----------------------------------------
Összes halálozás: 321119
Csúcs kórházi igény: 9165
Kapacitás túllépés: IGEN
Halálozási arány: 32.11%
Halálozási okok; a rendszer alulkalibrált, a kiszolgáló szakszemélyzet képzetlen, túlterhelt, a kórházak elavultak. a fertőzési csúcs alatt a kórházi igény túlcsúszása a halálozás „megugrása” túlterheléskor
görbék szétválása (rendszer-instabilitás)
--------------------
Nincsenek megjegyzések:
Megjegyzés küldése