传染病模型python代码
时间: 2024-09-14 07:01:43 浏览: 42
传染病SEIR传播动力模型python代码
传染病模型是一种数学模型,通常用于研究疾病如何在人口中传播。在Python中,我们可以使用诸如SimPy、NetworkX等库来模拟这类动态过程。下面是一个简单的SIR(Susceptible-Infected-Recovered)模型的Python代码示例:
```python
import numpy as np
import matplotlib.pyplot as plt
import simpy
# 定义模型参数
beta = 0.5 # 疾病传播率
gamma = 1 # 治愈率
N = 1000 # 总人数
I0 = 1 # 初始感染者数
def infect(env, infected):
while True:
with env.timeout(gamma):
yield env.timeout
infected.recover()
def susceptible(env, susceptible, infected):
while True:
if susceptible == 0:
break
rate = beta * infected / N
delay = env.timeout(np.random.exponential(1/rate))
yield env.timeout, delay
susceptible -= 1
infected += 1
# 创建环境并初始化变量
env = simpy.Environment()
susceptible_list = [i for i in range(N)] # 易感人群
infected = 0
# 创建感染者进程
infected_process = env.process(infect(env, infected))
# 创建易感人群转换成感染者的过程
for s in susceptible_list:
env.process(susceptible(env, s, infected))
# 启动模拟
env.run(until=50) # 运行50个时间单位
# 绘制结果
plt.plot([i for i in range(len(susceptible_list))], susceptible_list)
plt.plot([i for i in range(len(susceptible_list), len(susceptible_list)+infected*50, 50], [0] + [i for _ in range(infected)], 'ro')
plt.xlabel('Time (days)')
plt.ylabel('Number of individuals')
plt.title('SIR Model Simulation')
plt.legend(['Susceptible', 'Infected'])
plt.show()
阅读全文