欢迎光临散文网 会员登陆 & 注册

Python 模拟病毒传播(2020年7月6日)

2021-02-28 15:23 作者:阿-岳同学  | 我要投稿

效果图

动态图
静态图


主要思路

首先创建一个二维数组表示人群,内部元素全都是[1, 7]内的随机整数,这每一个数表示一个人,数字越大表示抵抗力越强,数字越小表示抵抗力越弱。

创建完成后就开始随机将人群中的几个人转为感染状态,不管抵抗力强弱,随机感染。

然后开始进入了“人群运动 + 病毒扩散”的无限循环。先人群运动,再病毒扩散。

人群运动:就是模拟人群里每个人的社交活动,例如出门外出,拜访朋友,旅游购物等等……这个模拟的没有那么真实,原理上只是很简单的随机抽两个人并让它们交换位置,并执行n次。如果把已经被感染的人交换了出去,被感染的人进入到了一大片没有感染的区域中,那么这片区域很可能就要发生扩散式感染了。

病毒扩散:遍历每一个人,如果当前这个人的抵抗力数小于某一范围内被感染的人数,(这个范围是:以当前这个人为圆心,一个元素间隔为单位长度,以r为半径的圆内,包括圆上,排除他自己的人)则这个人就被感染,并在遍历完所有人的时候修改所有人的感染状态。

感染规则图


如图:中间橘色的点表示被遍历时所判定的人,感染判定半径为2,则所有绿色的点和红色的点都是能够对此人造成影响的人,如果这些人中感染的人数过多了,人数超过了他的抵抗力系数,那么他就被感染了,图中有两个人被感染,即如果此人的抵抗力系数小于2,那么这个人就被感染了。

参数调整:

  1. 可以自定义数组的长宽来设定人群的数量

  2. 可以通过调整元素内部的随机整数范围来调整人均抵抗力分布范围

  3. 可以通过调整感染半径r来表示病毒的传播能力,或者人与人之间采防护措施的程度。

  4. 可以通过调整人群运动的执行次数n来表示人群活动能力。

制作背景

大以上学期期末,想到一种模拟病毒传播的模型,想到就开始动手做了。

源代码




Python 模拟病毒传播(2020年7月6日)的评论 (共 条)

分享到微博请遵守国家法律