Anders项勇 发表于 2020-2-5 10:25:48

【2020】--病毒的群体传播计算机模拟

【2020】”春节宅家一起造“线上小创马 ”活动。


最近武汉新型冠状病毒肆虐,让全国人民揪心。想利用mind+的图形化功能模拟病毒的传播及防治。大家听从国家安排,不要外出、聚众,戴好口罩,注意隔离防治。


原理:模拟一个多人群体,然后用一个被传染人作为传染源,在群体中随意移动,判断与群体里面的每个个体的距离传播病毒。被传染的人又会变为新的传播源传播。通过模拟会看到如果不进行隔离,病毒传播将难以控制,这也是这次武汉、湖北要封城的根本原因。

步骤1:模拟被传播的群体
使用mind+的克隆,模拟群体,模拟一个80-100人的群体。因为要采集每个克隆体的坐标,但是mind+对每个单独的克隆体没有单独的坐标,所以这里利用一个私有变量作为坐标的索引,用另外两个列表存储生成克隆体时的X、Y坐标。但是不能让每个克隆体在随机移动,并实时获取坐标,这个高手有方法的话可以研究告知下。

步骤2:传染源代码编写

传染源让其随机移动。同时一直循环判断与列表中形成的坐标的距离计算(就是到每个克隆体的距离),小于一定值就克隆病毒,并公告传播病毒。这里因为循环判断有时间的延迟,所以有时靠近了克隆体,但是还没循环判断到这个序列的坐标,就会导致没有传播,这个还不能解决。


步骤3:模拟病毒代码编写
把上面的克隆病毒移动到被感染人,报告“一级传染”。同时把被感染人的坐标及时取出。然后用这个坐标到坐标库中去循环判断其他人离自己的距离,如果距离小于一定值即克隆病毒,报告“二级传染”,即被传染人再次传给其他人。但有时会触发远距离的误报,原因应该是两个循环需要消耗时间。本来想用并发来处理,结果mind+的并发好像是只能在有主板的硬件上传模式才能调用出来。如有高手会处理请赐教。


步骤4:总结
用计算机模拟了病毒在人群传播的模型,类似的群体模型都可以用这种方式来处理,虽然还有不尽如意的地方。请高手赐教。请大家听从国家安排,不要外出、聚众,戴好口罩,注意隔离防治。天佑中华!
演示视频:https://v.qq.com/x/page/j3060nyk9i3.html

DFrJ5KYVQaH 发表于 2020-2-6 09:32:39

不错想法,很现实的模拟

且歌且行 发表于 2020-2-16 08:49:54

模拟很形象{:6_213:}

kylinpoet 发表于 2020-2-18 03:31:43

这个好,必须支持。

Anders项勇 发表于 2020-2-19 17:44:09

谢谢大家支持!

gada888 发表于 2020-2-23 12:07:26

有想法
页: [1]
查看完整版本: 【2020】--病毒的群体传播计算机模拟