用Netlogo实现病毒传播对经济的影响分析
用Netlogo实现病毒传播对经济的影响分析
- 一、基本考虑
- 二、涉及要素
- 三、计算思路
- 四、程序设计
- (一)界面设计
- (二)具体代码
- 五、结果分析
- (一)“栅栏”模式
- (二)“放羊”模式
- 六、后续改进思路
一、基本考虑
新冠病毒的传播,已经形成了全球大流行。而针对新冠病毒的防治,各国政府的态度和策略在一开始区别是很大的。有些是举全国之力、以雷霆万钧之势抗击疫情,而有些则由于担忧大规模的隔离和禁足对经济产生的不良影响,一直犹豫不决。为了更直观的展示不同策略对经济可能产生的影响,需要定量化研究新冠疫情下不同策略的具体效果。
针对上面的需求,我们利用netlogo对相关问题进行建模。具体来说,我们考虑两种策略。一种是当新冠发生后,采取隔离和全员禁足的方式,我们称之为“栅栏”模式;另一种是不做隔离和禁足,人们还是按照之前的方式进行生活,我们称之为“放羊”模式。
二、涉及要素
具体在病毒传播方面,考虑的因素有以下几点:
- 1.初始人数:可设置的范围是0~10000,模拟一个区域、城市或国家的全部人口;
- 2.初始感染率:这里是一个假设的值,即程序开始运行时,城市中已感染的人数;(我们在这里建设为1%)
- 3.感染率(无防护措施):这个值用来控制健康人员在没有任何防护措施下,与感染者接触后患病的几率;(我们在这里假设为80%)
- 4.感染率(有防护措施):这个值用来控制健康人员在没有任何防护措施下,与感染者接触后患病的几率;(我们在这里假设为40%)
- 5.死亡率:这是每天的死亡人数,占所有的患病人的比率;(我们在这里假设为千分之4)
- 6.平均症状出现时间:这指的是每个感染者从感染开始到出现明显症状的时间;(我们在这里假设为7天)
- 7.平均治愈时间:这个值指的是每个感染者从进入医院开始,到治愈出院的时间;(我们在这里假设为20天)
在与经济相关方面,我们考虑两个因素:
- 1.平均每日GDP:这个值指的是正常活动的人,每天创造的GDP价值;(我们在这里假设为2)
- 2.平均治疗花销:这个值指的是接受治疗的人,每天的花费;(我们在这里假设为9)
三、计算思路
在病毒传播方面,采用简化的模型,人与人之间的接触是随机事件,当感染者与正常人接触后,根据设定的感染率来判定正常人是否受到感染;感染者在感染超过7天后,被放倒医院内,医院里的人员不再互相感染;每天按照死亡率随机的从感染者中选择死亡的人员;在医院治愈的病人,超过20天后认为治愈出院,治愈后的人默认具备免疫能力,不再感染。
在经济方面,正常活动的人员每天按照设定的“平均每日GDP”产生GDP,并计入全部的GDP中;在医院救治的人员每天按照“平均治疗花销”消费资金,并计入全部治疗花销中。
在上面假设的“栅栏”模式中,我们的agent在有病患期间都不活动,即不产生任何GDP,在确认没有病患后继续活动;而“放羊”模式则是在整个期间人员都不停止活动,因此会一直产生GDP。
我们的目的就是比照在同样运行半年时间后,“栅栏”模式创造的价值(即总GDP减去总花销),与“放羊”模式创造的价值两者到底哪个更高。
四、程序设计
我们的程序使用的是最新的Netlogo 6.1.1,可以从以下地址下载:
http://ccl.northwestern.edu/netlogo/download.shtml
使用netlogo进行开发其实还是很简单的,软件本身就给提供了丰富的模型库示例可以参考,同时社区中还有很多做的很棒的资源。但netlogo语言和我们用的C#、Python都不太一样,所以如果没有其他语言基础的,相对还更好上手一些。关于netlogo的学习,推荐看它官方提供的用户手册,个人感觉就很好用了。
(一)界面设计
我们的程序界面如下:
其中左面是我们前面提到的,在程序运行中相关的各种变量。中间是我们agent运行的窗口,右面是两个统计窗口。
Netlogo的界面搭建还是很简单的,它提供了成型的控件,选择好后直接添加即可。这里要注意的是,控件中定义到的变量是可以直接在程序中使用的,所以一定不要用中文,否则后面写代码就要出问题了。
以我们其中的一个参数为例:
这是一个滑块变量,可以在程序中随时调整取值,看程序也可以看出,这个是当做一个全局变量直接使用的。
再比如下面这个统计框的设置:
这是在程序运行中,对相关变量进行统计的,可以自己定义画笔,按照程序的步长进行更新,按照什么条件统计哪些数据需要在更新命令中明确说明。
(二)具体代码
在代码中需要注意的有以下几点:
- 一是程序的运行需要有初始的setup和循环运行的go,这是一般的netlogo程序都包含的两部分,通过设定响应的按钮来实现,在代码中要具体写程序逻辑;
- 二是程序中的函数都是以“to 函数名”开始,以“end”来结尾;
- 三是netlogo中最重要的就是“海龟”和“瓦片”两个概念,可以简单理解海龟就是agent,瓦片就是环境;对于这两个对象在netlogo中的具体相关参数和函数,可以自行查询手册;
- 四是除了系统给定的参数外,我们还可以自行设定参数,例如海龟的相关参数,使用“turtles-own[]”来进行设定,全局变量使用“globals[]”来设定;同时还可以自定义不同的瓦片区域,利用瓦片的坐标范围来定义即可;
- 五是在撰写代码中,还有一些需要注意的小地方,比如循环turtles时,die后面的不会执行;move-to是把某个turtles移动到指定的某个瓦片区域中;运算符和变量直接一定要用空格;统计选取等带条件时一定要用关键字with等。
具体代码较长,在这就不贴了,如果需要可以联系我!
五、结果分析
根据我们程序的运行后,相关结果如下所示:
(一)“栅栏”模式
可以看到,在“栅栏”模式下,总的患病人数大概在250~350之间;GDP的变化在隔离期内是没有增长的,总的GDP大致在2570000左右,而治疗费用的花销不到整个GDP的10%。
(二)“放羊”模式
在“放羊”模式下,总的患病人数达到了惊人的6000多人,占总人口的60%还多;GDP是一直在增长的,总量在2960000左右,而治疗花销的费用接近GDP总量的50%,也就是说产生的GDP有一半都用在治疗上了。
通过上述实验可以明显看出,虽然“放羊”模式产生的GDP总量的确略高于“栅栏”模式,但扣除花销后,产生的社会价值则远远低于“栅栏”模式。更不用说“放羊”模式中远远高于“栅栏”模式中的死亡人数了,毕竟生命的价值是绝不能用GDP来衡量的。
六、后续改进思路
虽然程序体现出了两种模式对经济影响的巨大差别。但其中的模型还有很多需要商榷的地方。
例如 经济模型的缺失(本程序中其实是没有经济模型的,特别是疫情对于不同产业结构、行业特点等经济影响的仿真),传播模型的粗陋(本程序中agent采用的是完全随机游走,这和实际生活中人的活动也是不一致的,这就导致很难模拟出社区传播这一特性),以及 二次传播的不合理(我们程序中默认的是治愈后不会再感染,而新冠对已治愈者是存在二次感染的)等等。这些都是后续需要持续改进的地方。
请从我的Github上进行代码下载https://github.com/samurasun/netlogo
用Netlogo实现病毒传播对经济的影响分析相关推荐
- 货币政策的目标、工具、中性利率、货币乘数及对宏观经济的影响分析
货币政策分析 什么是货币 根据流动性的不同,可将货币划分为狭义货币和广义货币. 狭义的货币是流动性最好的货币形式,包括流动中的纸币和硬币作用.非银行机构发行的旅行支票,商业银行中的活期存款和其他可签发 ...
- python和netlogo软件模拟病毒传播仿真模型(一)
目前国内在网络舆情仿真建模中所使用的仿真平台主要有 Netlogo.Anylogic.Matlab.Vensim 等,netlogo软件是一款比较通用的. 但是他是由logo语言构成,语言逻辑很让人抓 ...
- 病毒营销增长策略:Facebook和 Airbnb的5个病毒传播方法
爆发式增长是指业务像指数一样飙升,创业和创新届经常称其为指数增长. 什么是指数增长? 为什么指数增长成为创业与创新业界的流行语?类似于「独角兽」. 指数增长的定义是在给定数量的相等时间间隔内的变化率. ...
- 点成分享| 空气卫生的重要性和病毒传播方式
引言 本文为您从空气传播的感染途径角度出发,介绍净化空气的几种方法(重力沉降.过滤.加热.紫外杀菌),通过比较几种方法的使用场景,论证过滤和紫外线在空气净化的优势和可行性. 1 为什么空气卫生很重要? ...
- 基于轨迹数据的人口流向分析技术,精准病毒传播追踪
2019年12月,我国出现了新型冠状病毒引发的多起病例,全国逐渐开启疫情防疫监控,严重地区甚至实施封闭管理.而此次疫情正好恰逢春运期间,大规模的跨地区人口流动会助长病毒传播,甚至传染到全球范围.因此, ...
- 文献记录(part52)--基于度相关性的病毒传播模型及其分析
学习笔记,仅供参考,有错必纠 关键词:互联网拓扑:度相关性:病毒传播:DPR 算法:SIS-DVDI: 基于度相关性的病毒传播模型及其分析 摘要 近年来网络病毒传播已对网络安全构成严重威胁 . 研究表 ...
- 灰色产业链成病毒传播最大渠道 流量生意或迎来最后的疯狂
咳咳 嗯 有段时间的 最近吗 都放暑假了 没有什么好更新的 最近我们都在关心2020微软的更新问题 对我们的这类人还是有些要求的 我也不想到时候大家再跌跟头 吃亏什么的 今天就讲解一下吧 声明:我暑假 ...
- 病毒传播建模SEIR与网络传播
病毒传播建模SEIR与网络传播 转眼间,大三上半学期就过完了.趁着刚放假没几天,赶紧把在学校中的作业上传 一下.在网络空间安全数学基础中,老师讲了传播模型.这篇文章中,首先列出了老 师在传播模型一章中 ...
- 基于随机方法的新型肺炎病毒传播模型
原来这篇文章我写在知乎上,但不知为什么,在搜索引擎上搜索不到,再搬回来. https://zhuanlan.zhihu.com/p/104332809 以前并没有接触过传染病模型,所以根据自己的理解, ...
- 局域网网中的病毒传播
一.局域网病毒入侵原理及现象 一般来说,计算机网络的基本构成包括网络服务器和网络节点站(包括有盘工作站.无盘工作站和远程工作站).计算机病毒一般首先通过各种途径进入到有盘工作站,也就进入网络,然后开始 ...
最新文章
- ubuntu 下利用ndiswrapper安装无线网卡驱动
- android端与服务端差别,Android客户端和服务器端编程
- 环路的产生及RIP防环机制
- Java接口long类型精度丢失,解决前后端交互Long类型精度丢失问题
- 信息系统项目管理师论文_「高项论文」谨防信息系统项目管理师论文12个写作丢分点...
- 看一次广告听30分钟歌 你愿意为QQ音乐新功能买单吗?
- NSF和NSR技术原理
- Docker入门者手册
- NWT与HHTH两个公司的对比
- Listary Pro - 能极大幅度提高你 Windows 文件浏览与搜索速度效率的「超级神器」...
- 微信小程序体验版无法调用接口
- python字符串去掉最后的逗号_拼接字符串时去掉最后一个多余逗号
- FastAPI 是什么?
- ⌨RK61键盘使用方法
- Tesla Model S的设计失误
- python 日志输出为json格式文件_Py修行路 python基础 (二十一)logging日志模块 json序列化 正则表达式(re)...
- Esp32-diy桌面可交互机器人
- mysql association_Mybatis的一对多(collection)和一对一(association)查询
- [shell脚本] realtek平台 Mifi初始化时候,初始化wifi的黑白名单的sh脚本
- SpringBoot实现百度文库文档上传,通俗易懂适合萌新