مدل سازی انتشار ویروس با NumPy

مدل سازی انتشار ویروس با NumPy

در این مثال، نحوه استفاده از NumPy برای شبیه سازی انتشار ویروس در یک جمعیت را بررسی می کنیم.

فرض:

  • ویروس با نرخ ثابتی بین افراد سرایت می کند.
  • افراد آلوده برای مدت مشخصی مسری هستند و سپس بهبود می یابند.
  • نرخ بهبودی ثابت است.

هدف:

  • شبیه سازی تعداد افراد آلوده، بهبود یافته و در معرض خطر در طول زمان
  • نمایش منحنی اپیدمی (تعداد افراد آلوده در هر زمان)

مراحل:

1. تعریف پارامترها:

  • population_size: اندازه جمعیت
  • infection_rate: نرخ سرایت ویروس (احتمال ابتلا به ویروس در تماس با فرد آلوده)
  • recovery_rate: نرخ بهبودی (احتمال بهبودی در هر روز)
  • simulation_days: تعداد روزهای شبیه سازی
Python
import numpy as np

population_size = 10000
infection_rate = 0.05
recovery_rate = 0.02
simulation_days = 365

2. ایجاد آرایه ها:

  • infected: تعداد افراد آلوده در هر روز
  • recovered: تعداد افراد بهبود یافته در هر روز
  • susceptible: تعداد افراد در معرض خطر ابتلا در هر روز
Python
infected = np.zeros(simulation_days)
recovered = np.zeros(simulation_days)
susceptible = np.ones(simulation_days) * population_size

3. شبیه سازی:

  • یک فرد در روز اول به طور تصادفی آلوده می شود.
  • در هر روز، برای هر فرد:
    • اگر فرد آلوده است:
      • با احتمال recovery_rate بهبود می یابد.
      • با احتمال 1 - recovery_rate مسری باقی می ماند.
    • اگر فرد در معرض خطر است:
      • با احتمال infection_rate * susceptible[t] / population_size آلوده می شود.
Python
# آلوده کردن یک فرد به طور تصادفی در روز اول
infected[0] = 1

for t in range(1, simulation_days):
    # به روز رسانی وضعیت افراد آلوده
    for i in range(int(infected[t])):
        if np.random.rand() < recovery_rate:
            recovered[t] += 1
            infected[t] -= 1
        else:
            infected[t] += 1

    # به روز رسانی وضعیت افراد در معرض خطر
    new_infections = np.random.binomial(population_size, infection_rate * susceptible[t] / population_size)
    infected[t] += new_infections
    susceptible[t] -= new_infections

4. محاسبه شاخص های اپیدمی:

  • active_cases: تعداد افراد آلوده یا مسری در هر روز
Python
active_cases = infected + susceptible - recovered

5. نمایش منحنی اپیدمی:

  • از matplotlib برای رسم نمودار تعداد افراد آلوده، بهبود یافته و در معرض خطر در طول زمان استفاده کنید.
Python
import matplotlib.pyplot as plt

plt.figure(figsize=(12, 6))
plt.plot(infected, label='Infected')
plt.plot(recovered, label='Recovered')
plt.plot(active_cases, label='Active Cases')
plt.plot(susceptible, label='Susceptible')

plt.xlabel('Days')
plt.ylabel('Population')
plt.title('Epidemic Simulation')
plt.legend()
plt.grid(True)
plt.show()

این مثال نشان می دهد که چگونه می توان از NumPy برای شبیه سازی مدل های اپیدمیولوژیک ساده و تجزیه و تحلیل داده های مربوط به انتشار بیماری ها استفاده کرد.

نکات:

  • می توانید مدل را با اضافه کردن پارامترهای بیشتر مانند نرخ مرگ و میر، اقدامات پیشگیرانه و مداخلات درمانی پیچیده تر کنید.
  • می توانید از NumPy و سایر کتابخانه های پایتون مانند pandas و seaborn برای تجزیه و تحلیل و نمایش داده های شبیه سازی شده به رو
0/5 ( 0 امتیاز )
این مطلب در NumPy ارسال شده و با برچسب برچسب‌گذاری شده است.

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *