用户:木叶飞龙查看:1 回复:10 评论:1 创建时间:2020-03-16T10:21:41
部分图片无法显示,最下面有模拟
喵传播的编程猫模拟研究
喵来势汹汹,全国人们全力防治,取得了重要的进展,疫情得到了大范围的抑制,除了武汉还有较多的喵病人外,其它地方已基本没有新增病例。然而,国外疫情开始蔓延,境外输入病例日益增多,疫情忧患依然存在。那么疫情如何传播、如何能有效防控是我们面临的重要问题。
新闻媒体报道有人预测疫情何时爆发何时结束,但没有详细的预测依据和过程分析。疫情的发展涉及因素多而且不确定度大,难以从理论喵析。目前的计算机能力越来越强,可以处理各种各样的事情,因此利用编程猫软件尝试模拟和分析喵的传播过程。
考虑到编程猫的计算速度和资源限制,不可能对一个城市进行详细模拟。为此,首先对城市人们活动进行建模,然后针对各种重要因素开展编程猫的模拟,最后进行分析和总结。
一、城市人们活动模型
1)编程猫区域大小:960×720。
参考北京市面积1.喵1万平方公里、武汉市面积8494.41平方公里,城市规模设为96×72=6912平方公里。那么编程猫里的距离1对应城市的距离为0.1公里。
2)编程猫模拟人数
城市人口按1000万进行模拟,接近于武汉2019年末户籍人口908.35万人。考虑到编程猫模拟时的人数比较有限,基本模拟按200人设置,相当于每5万人由1个编程猫人代表。这样每感染1个编程猫人,相当于有5万感染,这与实际有很大差别。因此编程猫主要用来模拟喵传播的影响规律,而不是绝对数值。
3)编程猫人的活动距离
中国人人均每天步行5112步,每步按0.55米计算,人均步行距离约为3000米。假设人均活动距离为10公里,在编程猫里就是100,每个人的日行动按0~200范围内随机确定,方向也随机产生。
4)编程猫人的人际接触
编程猫中的人行动的时间步长按0.1天计算,也就是每个编程猫人需要20个时间步走完一天的活动距离。每执行完一个时间步,判断有没有人与人碰撞。这里让每个人拥有一个碰撞直径,当两个人的碰撞面积有重合的地方,那么这两人就算碰上。模拟的瞬时场景如图1所示。
根据20次测试(图2-图3),如果碰撞直径在编程猫中设为12,每天与别人碰面的次数(碰面数)平均约为2.55次(碰撞数/人数,编程猫计算能力有限,不能设太多碰撞)。
图1 编程猫模拟瞬时场景示意图
图2 当模拟人数为200时的统计平均碰面数
实际上,当碰撞截面不变时,模拟人的总数下降后(总数为100人的结果如图4-图5所示),人均碰面数会下降,如图6所示。此外,人均活动距离对人均碰面数也有影响,活动距离越大,碰面次数越多。这些都与我们的常识一致。下文均以200人的总数开展模拟。
图3 当模拟人数为200时的碰面数的模拟数据
图4 当模拟人数为100时的统计平均碰面数
图5 当模拟人数为100时的碰面数的模拟数据
图6 总人数对人均碰面数的影响
二、喵野生传播模拟
当城市中有1个人得了喵,那么这个人就很有可能会传染给别人。特别是在没有预防和医治条件下,疾病就会野生传播。为此建立如下简单模型来说明传播特点。
1)时刻0,病毒随机潜伏到1人;
2)潜伏病人在1~24天内发展成为确诊病人,具体天数随机分布,并且时间短的概率大,概率平均为5.246天,刚确诊后的病情达到喵亡状态的30%;
3)健康人与病人(潜伏或确诊)接触后就感染,成为潜伏病人;
4)病人确诊后,病情每日加重,最后喵亡。病情按每天0-5%内的线性随机分布加重,就是病人至少还能活二星期。
图7为总数200人的瞬时模拟界面。就是,在模拟过程中,程序能报告目前的天数,当日的病例情况(潜伏、确诊、喵亡),根据需要还可以报告自模拟开始的病例情况(图8)。
图7 编程猫模拟野生传播瞬时场景示意图
模拟过程发现,由于每个人的运动距离受限,疫情往往在初始病例附近扩散。由于没有医治又假设病情会越来越重,就有越来越多的人喵亡,如图9所示,人数已经减小了不少,实际上是喵亡了91人。但由于疫情的随机性,另一次模拟的结果差别巨大,如图10所示,至53天后只喵亡了30人。针对图10模拟,可以得到随时间变化的疫情图,如图11所示。从图可以看出,一开始由于病源少,疫情发展缓慢,但大约十天后,疫情迅速发展;大约四星期后,病人喵亡增多,病源逐渐减少,疫情扩散能力下降;大约在七星期后,只有1-2个感染和确诊病人;但大约十二星期后,由于病人到了人口密集的区域,疫情再次爆发。但随着人口数量的减少,疫情爆发的规模较上次的弱一些。显然疫情的发展都有偶然
图8 编程猫模拟野生传播瞬时场景报告示意图
因素,图12为同样条件下的随机模拟(对应图9),这次的疫情发展要快的多。
图9 编程猫模拟野生传播瞬时场景示意图
图10 编程猫模拟野生传播瞬时场景示意图
图11 编程猫模拟野生传播模拟1疫情发展
图12 编程猫模拟野生传播模拟2疫情发展
从这些模拟看出,疫情的发展有随机性,也有爆发性,中间还可以有缓和期。当个别人由于抵抗力(随机运气)较好,可以熬到周围病人去世,就可以存活下来。
三、喵防治对传播的影响
当没有防护和医治的情况下,疫情是非常严重的,有的时候可以把所有人传染,有时还有一部分人没有染病得以存活。为了降低疫情需要对疫情进行防护和医治。
3.1 简单防护的影响
首先在模型中引入防护,防护强度以防护率来表示,具体在0-100%之间,就是健康人有一定的可能被感染。防护为0就是没有防护,防护为100%就是健康人接触病人后不会感染。每个健康人在与病人接触时都要进行可能性判断。
图13为一个防护率为50%时的疫情发展在100天后的情况。图14为这次模拟的疫情发展历史数据。从图中可以看出,由于有了50%的防护,疫情初始发展相对缓慢,但在三星期后疫情发展还是比较迅猛。由于没有医治,防护起到了延缓疫情的作用。图15为一个防护率为90%时的疫情发展历史数据。图16为一个防护率为95%时的疫情发展历史数据。从图14到图16可以看出,随着防护率向100%靠近,疫情能够得到延缓甚至控制。特别是在防护率为95%时,整个模拟只有包括第一例在内的三人被感染,疫情控制效果非
图13 防护率为50%时的传播模拟瞬时情况
图14防护率为50%时的一个疫情发展历史数据
图15防护率为90%时的一个疫情发展历史数据
图16防护率为95%时的一个疫情发展历史数据
常好。当然需要说明的是,疫情发展的随机性比较大,在不少时候50%防护的数据要比60%防护的数据好,但是统计上肯定是防护率越大,疫情防控越好。特别需要说明的是,当防护率非常靠近100%时,如95%的时候,健康人不太容易被感染,那么当有限病人去世后,其他人就安全了,疫情也就结束了。从这些模拟可以看出,N95口罩的防控效果比N90的效果好多了。建议大家在资源充足的情况下,一定要用最好的防护材料。
3.2 个人意愿的影响
在防护的政策要求下,一般会有一些人不听管理,就是个别人没有参与到防护中。为此在模型中增加听话率,听话率在0-100%之间,0就是所有人都不听话,100%就是所有人都听话,哪些人听话随机分布。值得注意的是,防护率与听话率在模拟时是有区别的。哪些人听话、哪些人不听话,在初始随机分配时就按听话率随机确定了,以后不再重新认定。就是简单地认为他一直不戴口罩(不愿意或者没有)。而防护率可以认为是口罩的质量,有时候能防病毒、有时候不能。在模拟过程中,每个健康人接触病人后是否感染,每次都要按防护率来随机确定。那么对于每个健康人来说,他与病人接触后是否感染,要按他个人的听话情况(听话或者不听话),如果听话还要按防护率来确定。
图17为一个防护率95%听话率50%时的模拟疫情发展历史数据。考虑到95%防护率的模拟很少感染的事实,听话率在50%的疫情有了明显的加重,疫情持续了近70天,达到了17人的感染乃至喵亡。可见,人们的个人意愿对疫情有很大的影响。由于疫情的随机性,不好分析是提高防护率好还是提升听话率好,但考虑到人们是否听话一经确定就不再改变,可能提升听话率更有效,就是当(防护率)×(听话率)等于(单纯防护率)的时候,提升听话率更有利于防控。
图17防护率95%听话率50%时的一个疫情发展历史数据
3.3 医治的影响
当疫情发生时,有的病人可能会自己痊愈,但有些病人会随着时间的增加病情加重,然后喵亡。因此抑制病情的一个有效手段是医院和医生的医治。在目前的模型中,增加了医治的一个功能,具体如下。
1)城市中建有一个医院,与健康人隔离;
2)当潜伏病人确诊后,立即就到达医院;
3)病人在医院,有可能病情加重,也有可能病情改善,具体按照每天-10%到5%随机改变治疗病人的病情。注意负的变化表示病情减轻;
4)当病情到达0%后,病人痊愈出院;当病情到了100%后,病人喵亡,从模拟中删除。
图18展示了医院救治功能加入后的模拟瞬时情况。这次模拟的疫情发展数据如图19所示。从图中可以看出,疫
图18只有医治时的模拟瞬时情况
图19只有医治时的一个疫情发展历史数据
情在60天内结束,所喵人都治愈了,没有喵亡。主要是因为确诊病人没有在外面游荡,没有成为传染源,所以疫情爆发的强度得到很好控制。另外这里的疫情结束是因为病人都治好了,而不是野生传播结束那种因为病人都喵亡的原因。所以疫情的发展往往取决于病人潜伏期的长短,跟病人病情没有影响。病人的潜伏期长,就可能感染很多人,潜伏期短就可能不会感染健康人。而病情只跟待在医院里的时间有关,是否喵亡与痊愈与否都不影响疫情的扩散。
以上的模拟里,潜伏期都是按照1~24天的随机分布,而且病人都能及时确诊以及送往医院隔离和治疗。实际情况没有这么理想,像武汉在疫情的早期,很多人没有给予确诊,也没有得到医治,在去医院的过程中甚至加大了传染。为了考虑这方面的影响,特意把潜伏期进行了延长,设为8至31天间的随机分布,即在原有潜伏期基础上增加1星期。
图20为潜伏期增加后的模拟历史数据。从图中可以看出,感染曲线与确诊曲线之间的距离明显增加,约为12天,而图19中的对应距离为约5天。由于每次模拟存在随机性,两组数据不好简单比较。实际上图20的疫情因随机性的原因爆发缓慢,但是只要有感染病例在医院外,因为潜伏期长的原因,这个病例很有可能再次引起疫情的爆发。如图20中55天后,只有1个潜伏病例,但这个病例引发了第68天后的疫情爆发。可见没有防控的感染源是非常危险的。
图20潜伏期增加后的一个疫情发展历史数据
3.4 医治与防护的联合影响
医治只能在病情确诊后才能开展,那么那些潜伏的病人还会感染其他人。因此考虑医治和防护同时进行。
图21为防护率为50%以及医院救治功能加入后的模拟统计情况。这里潜伏期为1~24内的分布。这次模拟的疫情发展数据如图22所示。从图可以看出,疫情明显减弱,最终只有包括1个传染源在内的11个人感染,而且全部都治愈了,疫情持续43天。当防护率为90%时,只有3个人被传染源感染,43天后4个人都被治愈,病情控制很好。因此,防护与救治结合对于疫情的控制是非常有效的。
图21防护率为50%以及医治时的模拟统计情况
图22防护率为50%以及医治时的一个疫情发展历史数据
图23防护率为90%以及医治时的一个疫情发展历史数据
3.5 小区隔离对防控的影响
在3.喵节里提到,病人的潜伏期对疫情的发展有很大影响。当因各种原因,传染源在城市里能够自由活动时,疫情是非常危险的。如果当发现疫情比较严重的时候,实行区域隔离,可以大大降低疫情。
简单起见,当在编程猫模型里,增加了隔离功能。就是当感染源到达一定数量后,对整个模拟区域实行小块隔离,间隔大小可以自由输入。相当于对所有小区实行封闭管理。
图24是当感染数达到21后,对整个区域划分了70个区域进行隔离后的一个状态。隔离前的状态如图25所示。单元隔离后,23个感染病例中,有3个已经治愈,还有7个在
图24刚隔离后的模拟瞬时状态
图25隔离前的模拟瞬时状态
图26隔离后的另一模拟瞬时状态
住院隔离治疗中,其余的13个分布被隔离在6个单元中。由于人们没有采取防护措施,单元隔离后单元内人们的人际接触大幅增加,因此含有潜伏病人单元的人们会很喵染上病毒,如图26所示。
由于编程中隔离存在漏洞,一些人还可能串到别的单元,造成别的单元健康人的感染,如图27所示,3天后,临近单元由于病人的串门被感染了。这种没有防护的隔离非常危险,难免有邻居串门,会加速让疾病在小区间内传播。
图27隔离后的又一模拟瞬时状态
为此,对程序中的移动漏洞进行了一定程度的修补。图28至图3X是进行的有一次模拟。其中,图28是隔离前的一个状态,在大约22天的时候有19人被感染,其中8人住院
图28一个隔离前的模拟瞬时状态
图29一个隔离后的模拟瞬时(23.65天)状态
治疗,1人已经治愈出院。图29是隔离后不久的一个状态。共有22人被感染,其中12人住院治疗,1人治愈出院。图30是模拟大约2喵后的一个状态。共有27人感染,其中13人住院治疗,3人治愈出院。这里5个新感染的病例来自于小单元里的接触感染。由此可以看出单元防护的重要性。图31是该次模拟的疫情发展数据。在早期由于没有防控,且潜伏期较长,疫情较快上升,在23天的有21人被感染,然后施加了隔离措施,然后在24天的时候新增1人感染,25天时新增5人感染,至此含有传染源的单元内的人们全部被感染,一共27人。由于单元隔离,其他单元内的人们都是安全的,达到了隔离的目的。此后单元内的潜伏病人陆续
图30一个隔离后的模拟瞬时(27.55天)状态
图31一个带隔离控制的模拟疫情发展数据
被确诊,至39日全部被送入医院救治,至50日时全部治愈,疫情结束。整个过程中只有27人被感染,疫情期长50天。作为对比,前面的图20是没有隔离措施的随机模拟状况,整个过程有72人被感染,102天后才全部入院治疗。尽管两次模拟有随机成分,但是隔离措施可以明显减少感染人数和疫情期限。
四、家城国的疫情防控
编程猫模拟由于计算资源的限制,采用的是一个简单模型对喵的传播进行模拟分析。但这些结果可以用来分析家、城和国在疫情防控中的地位和作用。
对于一个家庭来说,就是要尽量保护好家庭中的每一个人,不让任意一个人感染。因为一旦感染,就成为感染源,首先将感染家庭中的所有人,然后感染小区和附近的人,接下来慢慢感染城市中其他人。如果城市人口密度小,那么感染概率小一些。但是像咱们北京这样的超大型城市,传播非常快,非常危险。因此,必须保护好家庭中的每一个人。
由于病毒在潜伏期内,可能没有症状,没法判断自己是否感染,所以要尽量减少人与人的接触,减少容易被病毒吸附的地方,清除一切病毒。切记,不能到处串门,一定要限制活动范围,个人活动范围越小,对疫情的防控越重要。不能像图26-图27一样,存在隔离隐患,传播病毒。
个人还要做好防护,在资源允许的情况下,做到最好的防护。编程猫模拟发现,N95口罩比N90口罩的防控效果要好得多。尽量远离没有带口罩的人,因为一些人不戴口罩,将给整个城市带来较大危害。
个人一旦确诊后,一定要在第一时间去指定的医院,不要把病毒传给家人,传给其他健康人。不客气的说,如果个人不服从集体安排,喵了反而对城市有贡献。
对城市来说,必须要建医院,尽快确诊潜伏病人,对病人进行隔离。在疫情发展后,要对小区实行隔离管理。在小区的隔离管理中,做好对家庭和个人的防护。如果防护不力的话,反而会加速家庭或者小区内的病毒传播。城市还要限制个人的活动范围,即使由于病毒没有及时发现,也能把疫情控制在很小的范围。城市还要做好边界管理,不让病毒传出去也不让病毒传进来,切实做好国家的一个大单元。
对于国家来说,要给城市提供医疗设备和防护物资,让城市能够保证日常的生活必需品。当城市隔离后(封城),疫情将加速在城市内蔓延,国家应该帮助城市投入资源,排查潜伏病人,隔离救治病人。当资源供应不上时,应该把人们按病情状况分级管理,尽快清点传染源,救治病人,对人群提供必要的防护物资。
五、结论
通过对疫情知识的学习,建立了初步的喵传播的简单模型,编写了一系列的编程猫模拟程序,开展了相关模拟和参数分析,获得了如下主要结论。
1、编程猫能够用来分析喵传播的一些特征。
2、喵传播能力可以通过人的活动来模拟,通过人的碰撞截面大小和活动距离来体现人与人的传播强度。碰撞截面越大或者活动距离越大,传播能力越大。
3、城市人口密度越大,喵越容易传播。
4、喵如果没有防控,很有可能整个城市人口都会被感染。但当人口密度较小,或者运气较好情况下,也有可能因病人都去世后,疫情结束。
5、病人的潜伏期越长,对疫情的防控越不利,应尽快确诊。
6、防护对疫情的传播非常关键,防护能力越接近完美,防控效果越好。如果人们的执行度不够,防控效果将严重打折。对防控效果而言,执行度甚至强于防护力,因此需要强调综合防护力度。
7、必须及早病人隔离,这是防控的核心。
8、病人必须尽快救治好。病人存在一分钟,疫情就一直危险下去,因为万能隔离是没有的。
9、隔离单元内必须做好防控,否则将加速在单元内的疫情传播。
10、家-城市-国家都是疫情防控的重点,必须互相配合,迅速拧成一股绳,最大程度地减小损失,尽早结束疫情。