病毒传播模拟实验2-清零还是共存?

简介: 两年前,我曾经用python写过一个病毒传播的模拟器,用一个简化的数学模型来演示病毒的传播,并用模拟实验解释了为什么做好个人防护、减少出行和对感染者集中隔离可以有效阻断病毒的传播。

大家好,这里是crossin


两年前,我曾经用python写过一个病毒传播的模拟器,用一个简化的数学模型来演示病毒的传播,并用模拟实验解释了为什么做好个人防护、减少出行和对感染者集中隔离可以有效阻断病毒的传播。


具体模拟逻辑和参数说明详见:

【实验模拟】对疫情,我们可以放松警惕了吗?


现在模拟一个传播性更强但致病性大减的病毒2号,看看不同的防疫模式会带来什么样的结果。


详细内容见视频:


病毒2号具有更强的传播性,但是致病性大幅降低。


除此之外还要2个重要的变化:

  1. 假设我们模拟的区域是一个非封闭城市,会不断有新增输入病例产生
  2. 被感染后康复的人,同样有可能再度被感染


调整之后进行模拟:(红色曲线为感染病例数,绿色为康复人数)


感染数 56297    病亡数 13


策略同之前一样,当病例到达一定数量就进行全面防控,清零后再解除。但因为有新增输入,所以疫情会出现反复。相比之前的病毒,同样策略下,感染人数要多出很多,但病亡人数却大大减少。


如果不采取防控措施呢?

感染数 89975    病亡数 1313


因为设定了重复感染的可能。即便所有人都感染了一遍,疫情也不会结束。由于感染人数太多,且不断重复感染,即便病亡率很小,最终造成的绝对病亡人数也很多。而这还只是我们限定的时间段内的结果。


从以上实验对比来看,对于这个病毒2号,启用全面防控的效果依旧要远远好过放任不管。


所以,清零要优于共存了吗?


要知道,良好的防疫措施是需要投入人力物力成本的。而对于很多人来说,不出门工作就意味着没有收入,整个社会的产出也随之减少。


将以上设定也加入到这个模拟实验中,抽象出资源总量这样一个数值:

  1. 每个人每天出行,可以产出1点资源
  2. 每个人每天消耗 0.5 点资源,如果进入发病期,再多消耗 0.1 点,重症多消耗 0.5 点
  3. 进入方舱每天额外消耗 0.1 点资源,入院消耗 0.3 点
  4. 另外,因为防控和检测都需要成本,所以从进入防控状态开始,每天每人消耗 0.1 点资源


然后,再来对比下上述两种模式。(浅绿浅红色的柱状图表示“资源总量”的变化)



正常时资源总量持续上升,在防控状态下,模型中资源总量会不断减少。疫情反复出现,曲线就反复的下降。



如果放弃管控限制,能出门工作的都照常出门,除非出现重症或进了医院。的确是可以在很大程度上缩小对资源增长的影响。但与无疫情时的增速还是不能比,而且如前面所说,这种方式带来的影响是会长期持续的。


经济发展虽不能和人的生命相提并论,但如果没有足够的经济实力作为后盾,高标准的防控也难以持续。况且,这里说的资源,还不仅仅是经济,也包括医疗资源、民生资源等等,过度的消耗一样可能带来次生伤害。


所以全面防控也不能说没有问题。


那有没有更好的防疫方式呢?还真有。就是现在很多城市在使用的方式:精准防控。


之前模拟时,一旦疫情达到一定规模,就限制所有人的出行。现在我把它优化一下,只隔离病例接触过的密接人群。


现实中,这个操作被称为流调。流调和检测难免出现遗漏,所以这里加一个概率参数,流调准确度。


感染数 13015    病亡数 3


在新的机制下,模拟出的效果要好很多,不但将疫情控制住了,对于资源的消耗也大幅降低。即使反复出现输入病例也在可控范围之内。


但是,又来但是了……这一操作的前提是,流调的准确度足够高,且效率足够快。


感染数 81078    病亡数 30


这里将流调准确率下调一点,一旦不能做到及时隔离被感染人群,漏洞就会越来越大,疫情越来越严重。


现在,你能不能告诉我,这样一个纯模拟的实验环境中,使用怎样一种策略才是最优解?


我不知道你们怎么想,至少我是无法给出一个完美的结论。


而如果放在现实中,这道题就更加复杂了。我们需要面对更多、更复杂的参数。你选择什么指标,采信哪种数据,决定了你将得出什么结论。就连我这个实验模型,如果微调几个参数,也有可能得出大相径庭的结果。


在这种情况下,我不是很理解为什么有些键盘前的 非专业人士可以很笃定说出一种方案胜过另一种方案。


病毒在变异,防疫的措施也需要不断更新,需要根据实际情况做科学的调整。过去全面清零未必等于将来一直要全面清零,假如将来要共存也不等于此刻就要共存。不应该把防疫问题变成一个站队的问题。


就我这个虚拟世界中的模拟实验中来说:

  • 任何一种极端的方案都不是一个好选择。
  • 无论采用合种方案,执行是否到位直接影响结果
  • 提高疫苗接种率,尤其是高危人群的接种率,就相当于降低了传播性和重症率,这不管对于哪种方案都是有效的。


另外,虽然没有在我们这个模型中体现,但同样很重要的一点就是对基本民生的保障。模拟程序中的“人”只是不用吃喝拉撒的数据,但放到现实中,这就是我们每个人的生活。


最后,虽然我没能给大家展示一个完美的解决方案,但是跑出了一个很糟糕的情况:


感染数 67608    病亡数 55


一开始,因为某些原因产生了大量病例,流调效率跟不上,却还依然不实事求是调整策略,把名义上的精准防控做成了实际上的不精准防控。后来实在严重了之后,仓促转为全面防控,却漏洞百出,时不时有阳性外溢,加上没有解决好基本生活保障,产生过多计划外的接触。


最终的结果就是:既消耗大量的资源,也没能控制住疫情,还让区域内的人不停受罪。若做成这样,那真的不如躺平算了,地球上有些国家和地区的确也是这么选择的。可你说,这是防疫策略本身的问题吗?


以上就是我个人基于这个病毒传播模型做的模拟实验和一些思考,程序是python写的,已经开源,你可以拿去自己调整参数运行。


视频中的所有结果和推论都只针对程序中的虚拟模型,不作为对现实情况的仿真。但希望能引起大家一些思考,可以更理性地去看待疫情和防疫,当然更希望疫情可以早日彻底结束,我们不需要再来讨论这事。


最后感叹一下,两年前的模拟实验1,曾经被人民日报转载:

数据模型告诉你,现在可以放松了吗?- 人民日报

两年后的模拟实验2,发都发不出来了:



感谢转发点赞的各位~

相关文章
|
22天前
|
存储 数据安全/隐私保护 索引
SV39多级页表的硬件机制
【10月更文挑战第26天】SV39多级页表机制包括三级页表结构,每个页表项64位,通过SATP寄存器控制地址转换。地址转换过程涉及三级页表查找,最终生成物理地址。页表项包含有效位和访问权限位等标志,用于内存管理和访问控制。物理页帧的分配和回收确保内存的有效利用。
|
1月前
|
SQL 缓存 Java
JVM知识体系学习三:class文件初始化过程、硬件层数据一致性(硬件层)、缓存行、指令乱序执行问题、如何保证不乱序(volatile等)
这篇文章详细介绍了JVM中类文件的初始化过程、硬件层面的数据一致性问题、缓存行和伪共享、指令乱序执行问题,以及如何通过`volatile`关键字和`synchronized`关键字来保证数据的有序性和可见性。
26 3
|
2月前
ARM64技术 —— MMU处于关闭状态时,内存访问是怎样的?
ARM64技术 —— MMU处于关闭状态时,内存访问是怎样的?
|
6月前
|
消息中间件 调度 数据安全/隐私保护
xenomai内核解析--任务同步互斥机制(一)--优先级倒置
本文是关于Xenomai实时操作系统中资源管理和优先级倒置问题的概述。Xenomai使用`xnobject`和`xnregistry`管理任务间的同步互斥资源,如信号量、互斥锁等。资源管理涉及访问控制和资源保存,确保共享资源的正确调度。文章还介绍了优先级倒置现象,即高优先级任务因低优先级任务持有资源而被阻塞。为解决此问题,Xenomai采用了优先级继承策略,临时提升低优先级任务的优先级,以防止持续的优先级反转。文章后续将深入分析`xnsynch`模块和优先级倒置解决方案。
155 1
xenomai内核解析--任务同步互斥机制(一)--优先级倒置
|
NoSQL iOS开发 MacOS
记一次 rr 和硬件断点解决内存踩踏问题
借助 rr 来定位查询语句结果不一致的问题。
645 0
|
存储
驱动开发:内核读写内存多级偏移
让我们继续在`《内核读写内存浮点数》`的基础之上做一个简单的延申,如何实现多级偏移读写,其实很简单,读写函数无需改变,只是在读写之前提前做好计算工作,以此来得到一个内存偏移值,并通过调用内存写入原函数实现写出数据的目的。以读取偏移内存为例,如下代码同样来源于本人的`LyMemory`读写驱动项目,其中核心函数为`WIN10_ReadDeviationIntMemory()`该函数的主要作用是通过用户传入的基地址与偏移值,动态计算出当前的动态地址。
126 0
|
存储 小程序 C语言
条件分支和循环机制、标志寄存器及函数调用机制
条件分支和循环机制、标志寄存器及函数调用机制
95 0
西门子S7-1200的运动控制功能、系统使能指令块、错误确认指令块、回参考点或设置参考点指令块的参数含义
今天我们来介绍西门子S7-1200的运动控制功能。西门子S7-1200的运动控制指令是通过使用相关工艺数据块和CPU的专用脉冲串输出来控制轴的运动。
西门子S7-1200的运动控制功能、系统使能指令块、错误确认指令块、回参考点或设置参考点指令块的参数含义
KONGSBERG RCU502 设置和访问数字的存储器指令
KONGSBERG RCU502 设置和访问数字的存储器指令
94 0
KONGSBERG RCU502 设置和访问数字的存储器指令
龙芯2K驱动开发——使用中断触发读取GPIO电平值上传给读取进程
龙芯2K驱动开发——使用中断触发读取GPIO电平值上传给读取进程
479 0
龙芯2K驱动开发——使用中断触发读取GPIO电平值上传给读取进程