回到首页 返回首页
回到顶部 回到顶部
返回上一页 返回上一页

2020--病毒的群体传播计算机模拟 简单

头像 Anders项勇 2020.02.04 1254 0

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

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

步骤1 模拟被传播的群体

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

project-image

步骤2 传染源代码编写

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

project-image

步骤3 模拟病毒代码编写

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

project-image

步骤4 总结

用计算机模拟了病毒在人群传播的模型,类似的群体模型都可以用这种方式来处理,虽然还有不尽如意的地方。请高手赐教。

请大家听从国家安排,不要外出、聚众,戴好口罩,注意隔离防治。天佑中华!


步骤5 演示视频

评论

user-avatar