Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >专栏 >干货 | AnyLogic建模仿真介绍+武汉疫情案例实战

干货 | AnyLogic建模仿真介绍+武汉疫情案例实战

作者头像
短短的路走走停停
发布于 2020-03-06 07:18:56
发布于 2020-03-06 07:18:56
7.1K0
举报
文章被收录于专栏:程序猿声程序猿声
文案 向柯玮 审核修改 邓发珩

前言

多方法?系统仿真?都是些啥啊?

别急,今天就让小玮陪你一起走进一款多方法仿真软件AnyLogic,来了解了解多方法仿真是什么以及简单的使用AnyLogic这样的多方法仿真软件。

目录

  • 前言
  • 目录
  • 系统评估方法
    • 测量方法
    • 解析方法
    • 仿真方法
  • 为什么要使用仿真建模
  • 仿真建模方法
    • 系统动力学
    • 离散事件
    • 智能体
  • AnyLogic的基本使用
    • 什么是AnyLogic
    • 下载安装
  • 案例简介

系统评估方法

这是一个非常直观的概念,大家可以从字面上就可以知道系统评估的意思,没错就是对我们的系统的结果进行一定程度上的评估。

常用的评估方法只要有以下三种。

测量方法

利用测量工具。直接获得系统指标值。例:使用尺子测量长度。使用秒表获得100米跑时间。

解析方法

利用公式。简单计算获得系统指标值。例:计算圆周长公式 L = 2×π×r 单服务系统(到达泊松分布,服务指数分布)。平均等待时间W=λb²/(1-λb)。

仿真方法

利用计算机。对系统的结构、功能和行为 等进行动态性比较逼真的模拟仿 真获得系统相关指标值。例:利用AnyLogic仿真建模。

为什么要使用仿真建模

我们可以通过一个例子来说明我们为什么要使用仿真建模。

去银行办理业务,平均每小时10位客户,柜台只有1名柜员,平均服务时间为5分钟,我们需要求出平均的等待时间。

在这里我们可以使用数学公式

但是我们可以知道这只是假设每个人都是独立的前来,如果是几个人一块儿来呢?

如果柜员有多个呢?如果服务时间有不同的分布呢?这些问题综合起来,即便是一个很简单的系统,我们也很难获得一个解析解

而且,在现实生活往往会更加的复杂

  • 只有一些特定的员工可以做一些交易
  • 客户可能被引导给其他员工
  • 出纳员可能共享资源
  • 如打印机或复印机
  • 不同的员工可能有不同的技术和能力
  • 等等……

这些让我们几乎不可能从原来的方法中获得我们满意的结果。

这个时候,有可预见的复杂性和保证结果的分析方法就是:仿真建模

仿真建模方法

介绍使用仿真建模的原因,下面我们来讨论讨论建模的方法。

系统动力学

通常用于长期、战略性模型。假设被构建对象高度聚合:人、产 品、事件及其他离散物品在模型中 用数量代表。

比如说现在武汉疫情的变化趋势,我们就可以通过系统动力学来进行建模。

离散事件

我们周围的世界表现是“连续 的”,分析连续的过程是,合适的 做法是对连续的本质进行抽象,只 考虑那些系统过程中“重要的”时 刻和时间。

比如说供应链中的问题,我们就可以通过离散事件来进行建模。

智能体

以个体为中心的建模。确定智能体(人、建筑物、产品等),定义其行为(驱动力、状态、行为等),将其放到一个中心环境中,或可建立连接。则系统层(整体)行为就展现为 很多个体行为交互的结果。

比如说我们之前举的银行办理业务的模型,我们就可以通过智能体来进行建模。

AnyLogic的基本使用

前面介绍了一些关于仿真建模的基本知识,现在我们来介绍咱们的工具。

什么是AnyLogic

正所谓工欲善其事,必先利其器,有一款高效的建模工具,会对我们的工作产生巨大的便利,那么今天给大家介绍的就是一款建模神器AnyLogic。

这是一款100%基于java的软件,所以为了建立一个比较酷炫的模型,还是很有必要了解一定的java知识。

下载安装

首先我们前往AnyLogic官网[1],点击右上角的download进行下载。

在安装的过程中我们要注意不要点击install,而是点击下面的按钮,这样我们就可以选择软件语言,当然,我们也可以在这里直接点击install,在进入软件之后再调节语言,但是能简便一点是一点嘛。

设置好安装路径之后就可以打开软件了。点击新建模型,设置好模型名称和模型路径,我们就相当于正式进入了AnyLogic模型的建设了。

把鼠标放在左侧图标处,我们就可以看到我们的工具箱。有很多东西,在接下来,我们通过一个简单的例子来让大家熟悉熟悉基本操作。

案例简介

本次我们的案例是武汉疫情的SIR简易模型,我们采用的方法是系统动力学。本次案例的效果如下:

在本例中,我们简单的把疫情的几个模块分为

  • 易感染者
  • 感染者
  • 移出者(包括死亡者和治愈者)

参数有:

  • 总人口=5000
  • 接触人数=10
  • 传染概率=0.1
  • 疾病周期=10

在最初,我们认为

  • 易感染者=总人口-1(初始只有一个感染者)
  • 感染者=(初始为1)
  • 移出者=(初始为0)

这个过程中,我们认为:

  • 感染者的增加规律为(接触人数感染者/总人口传染概率*易感染者)
  • 移出者的增加规律为(感染者/疾病周期)

(这些不是很严谨的设法,只是单纯做个案例讲解--)

下面我们开始。

把鼠标放在左侧,我们可以看到系统动力学的选项,点一下就可以看见系统动力学的工具栏。

首先用左键拖动一个存量出来,然后按住ctrl键并用左键拖动存量,我们可以发现,我们复制了一个存量出来,我们需要三个存量,所以我们需要再拖一次。

在这里我们需要解释一下存量的意思,顾名思义,其实就是储存变量的意思,其实就是编程意义上的变量,那么我们在之前说的参数其实就是常变量。

这些模型我们是可以随意变化大小的,我们做一些调整,然后给这些存量进行命名。

然后我们再拖动参数图像出来,按照我们之前的参数设置,一共应该有4个参数,拖出来,复制,命名。

这个时候我们不要急,我们现在需要给这些存量进行赋初始值,对参数赋默认值。用鼠标点击存量在右侧窗口我们可以看到赋值处。依次填入我们的初始值。

对于参数,我们需要点击前面的那个点,点击后面的文字是不起作用的,需要点击前面的点,记住奥。同样的填入初始值。

其实在这个面板,大家就可以更加清晰的理解到这个参数的意义了吧?因为看到了类型嘛。很容易就可以和程序联系起来。

但是,到目前为止,我们还不够,我们要让各个存量,参数之间建立联系,这个时候,我们就需要借助流量这个东西了。

双击从一个存量中间的点拉到另外一个存量中间的点,我们就可以看到生成了一个箭头。

我们是可以对箭头进行命名的,先点击箭头,然后就可以命名了。

在这里我们介绍一下流量的意思,就是类似于一个管道,把一个存量中的东西按照一定的规则转移到另外一个存量中去。

我们点击箭头,可以出现以下界面。

在flow位置就是我们的规则,在之前我们已经介绍了从易感染者到感染者的规则是(接触人数感染者/总人口传染概率*易感染者),填进去就可以了。

但是,这个时候我们会发现在flow的边框那里出现了一个红色的小x,这是因为我们还没有让流量和我们相应的参数建立起关系。

点击处于灰色位置的X,我们就可以让参数和流量建立起联系了,当我们把所有的联系建好了以后,我们会出现如图所示的画面。

在这个时候,我们差不多已经建立了一个简单的模型,我们点击运行就可以看到我们的程序了(要记住点击左下角的启动按钮),会出现下面的画面。

但是呢,我们可能觉得这个还不是很酷炫,我们还可以加一些数据分析的东西进去。

回到我们的主程序,选择工具栏中的分析。

选择时间折线图或者别的图,其实原理都是一样的,我们在这里介绍一下时间折线图的使用。

还是老样子,我们把时间折线图拖出来,就可以设置我们的参数名称以及值的大小。

我们发现,这里面只有两个值让我们填,那么有的时候如果我们有更多的怎么办呢?其实点击下方的“+”好就可以了。

再次运行程序就差不多完成了本次的建模,其实还有更多更复杂的操作,在这个位置,我们先不介绍了,以后有机会会再给大家介绍的。

最终的一些展示。

中国加油,武汉加油!

参考资料

[1]

AnyLogic官网: https://www.anylogic.com/

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2020-02-27,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 程序猿声 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
@这位没带口罩的朋友,你让我感染新冠的风险升高百倍!马普所建模计算结果,认真的
但你不知道的是,如果你和对方交谈中,只有你一个人戴口罩,那么感染的风险会增加百倍!
量子位
2021/12/24
3260
@这位没带口罩的朋友,你让我感染新冠的风险升高百倍!马普所建模计算结果,认真的
最大规模新冠临床研究:近9000个病例,男性风险更高,总体病死率3.06%,R0值3.77
这篇论文采用了来自 30 个省级行政单位 8866 名患者的数据,其中包括确诊患者 4021 名(占比 45.35%),其余为疑似患者。数据截止到 2020 年 1 月 26 日 [注],这是当前样本规模最大的新冠疫情临床回顾性研究。
机器之心
2020/02/24
5600
最大规模新冠临床研究:近9000个病例,男性风险更高,总体病死率3.06%,R0值3.77
用Python预测疫情发展
什么是传染病动力学?numpy和matplotlib用python实现传染病模型SI模型SIS模型SIR模型SEIR模型
用户3577892
2020/06/12
2.6K0
用Python预测疫情发展
疫情之下,这是你也能上手的Python新冠病毒传播建模教程(附代码)
目前,尚未发现经医疗研究标准确认的特效药。此外,很多重要的流行病学指标仍属未知,如基本传染数 R0(在流行病学上,基本传染数指在没有外力介入,同时所有人都没有免疫力的情况下,一个感染到某种传染病的人,会把疾病传染给其他多少个人的平均数)。新型冠状病毒还存在很多的不确定性。
CDA数据分析师
2020/02/24
1.9K0
新冠病毒爆发如何预防?用Python模拟病毒应对策略(附代码)
2019年末,在中国武汉爆发的冠状病毒疫情冲击了整个金融市场和实体经济。这座总人口超过千万,春运期间流动人口超过500万的巨型城市的灾难在世界各地引发了一连串蝴蝶效应,也在全球普通民众中引发恐慌。
1480
2020/03/12
1.6K2
新冠病毒爆发如何预防?用Python模拟病毒应对策略(附代码)
南大孵化,南栖仙策独创AI决策平台,快速搭建疫情模型
新型肺炎疫情防控战火热进行中,除了逆行的医护人员外,AI 领域也力求为疫情防控工作贡献自己的一份力量。
机器之心
2020/02/24
8270
南大孵化,南栖仙策独创AI决策平台,快速搭建疫情模型
斯坦福发布“防疫公司”模拟器:“照明开关法”或为美国社交隔离最优解
《瘟疫公司》的开发者曾被邀请去美国疾控中心进行讲座。它让全球玩家对病毒的感染和传播机制有了基本的知识储备、感性认识和危机意识,是款很棒的科普性游戏。在疫情爆发后,已在国内外官方平台下架。
新智元
2020/04/01
1.1K0
斯坦福发布“防疫公司”模拟器:“照明开关法”或为美国社交隔离最优解
新型冠状病毒传染性有多强?何时达到峰值?来看一下数学和统计建模结果
「在家待着就能为国家做贡献」其实不只是一句玩笑话。在疫情肆虐的这几天里,国内外的流行病学家、统计学家似乎都没闲着。他们基于疫情爆发初期的一些数据建立了传播动力学模型,给出了关于疫情传播速率的见解和峰值预测,可能为有关部门的防疫决策提供重要参考。
GitHubDaily
2020/02/21
3520
新型冠状病毒传染性有多强?何时达到峰值?来看一下数学和统计建模结果
我用秒杀Excel的大数据分析工具,告诉你疫情什么时候结束
FineBI是一款商业智能产品,定位于自助大数据分析的BI工具,能够帮助企业的业务人员和数据分析师,开展以问题导向的探索式分析;
大数据分析不是事儿
2020/03/05
1.4K1
使用SIR模型对2019新型冠状病毒的疫情发展进行分析
新型冠状病毒的确诊人数依旧在持续上升。在对传染病模型的研究上有很多模型比如:SI、SIS、SERS、SIR等,本文将利用SIR模型对这次新型冠状病毒的发展情况进行研究。
刘早起
2020/04/22
1.6K0
最新R0值3.11,疫情何时高峰难预测,这是你该知道的最新进展
据卫健委最新数据,1 月 28 日 0-24 时,全国范围内的 31 个省(区、市)报告新增确诊病例 1459 例,新增疑似病例 3248 例。
机器之心
2020/02/24
5860
最新R0值3.11,疫情何时高峰难预测,这是你该知道的最新进展
武汉,排查结果出来了!数据分析立了大功
会上,中华预防医学会社会医学分会主任委员卢祖洵介绍,从5月14日0时至6月1日24时,武汉市集中核酸检测9899828人,没有发现确诊病例,检出无症状感染者300名、检出率为0.303/万,追踪密切接触者1174名。其核酸检测结果均为阴性,对无症状感染者和密切接触者均进行了医学隔离观察。目前武汉市无症状感染者在全人群的占比极低,没有发现无症状感染者传染他人的情况。
陈学谦
2020/06/05
4930
如果新冠病毒是在亚美尼亚爆发会发生什么?程序员用Python进行模拟
2019年末,在中国武汉爆发的冠状病毒疫情冲击了整个金融市场和实体经济。这座总人口超过千万,春运期间流动人口超过500万的巨型城市的灾难在世界各地引发了一连串蝴蝶效应,也在全球普通民众中引发恐慌。
大数据文摘
2020/02/24
4030
如果新冠病毒是在亚美尼亚爆发会发生什么?程序员用Python进行模拟
含纳维-斯托克斯方程(气象学)实例,微分方程 VS 机器学习
微分方程(DE)与机器学习(ML)类数据驱动方法都足以驱动 AI 领域的发展。二者有何异同呢?本文进行了对比。
气象学家
2021/01/08
2.2K0
含纳维-斯托克斯方程(气象学)实例,微分方程 VS 机器学习
全球科学家争相预测,尚未出现的疫情拐点,最好和最坏的情况分别是什么?
昨天,疫情数据有了新的好消息:新增治愈出院病例首次超过新增确诊病例。这意味着“出”的开始比“进”的多了,也代表着医院床位的紧张将得到缓解。
大数据文摘
2020/02/24
7630
全球科学家争相预测,尚未出现的疫情拐点,最好和最坏的情况分别是什么?
Robot-走近机器人动力学建模与仿真
云机器人就是云计算与机器人学的结合。而机器人则是云机器人的主要终端,云可以为机器人提供数据监控以及分析服务,同时也可从远端遥操作机器人的动作。腾讯云社区为大家了解和使用腾讯云服务提供了优秀的平台。而对于机器人部分,下面给出关于机器人关键技术之一的动力学建模与仿真的介绍。
ZC_Robot机器人技术
2020/05/09
14.7K2
Robot-走近机器人动力学建模与仿真
拐点何时出现?这是北大面向新冠疫情的数据可视化分析与模拟预测
2019 年在武汉爆发的新型冠状病毒肺炎(国家卫健委简称 NCP)传播迅猛,已被世界卫生组织(WHO)定为「国际关注的突发公共卫生事件」。对疫情的控制,自 1 月 24 日武汉宣布封城之后,各个省市也陆续通过启动重大突发公共卫生事件一级响应来控制人口流动;同时,各省市医疗队伍驰援武汉,武汉的防控措施也急速加强;但全国疫情,特别是湖北省的状况依然让人揪心。公众非常关心疫情的发展趋势,期待「拐点」的出现;疫情防控部门希望不断总结经验教训,评估现有措施的有效性。该疫情的发展成为了涉及到我国政治经济民生的一件大事。
机器之心
2020/02/24
7030
拐点何时出现?这是北大面向新冠疫情的数据可视化分析与模拟预测
Wolfram System Modeler 系统动力学建模|现在可与商业模拟库一起使用
系统动力学(SD)是一种非常强大和灵活的建模范式,非常适合于解决战略性商业、经济和公共政策问题。几年前,德国BSL管理支持公司的管理顾问和开发人员Guido Wolf Reichert在为德国一个大都市的公共交通系统建模时,发现现有的 SD 软件的技术极限。在寻找替代品时,他发现了Wolfram System Modeler。
WolframChina
2021/05/08
1.7K0
Wolfram System Modeler 系统动力学建模|现在可与商业模拟库一起使用
Nature/Science等研究模型模拟仿真警告:新冠肺炎全球爆发或已不可避免
截至目前,欧洲多国相继报告首例新冠肺炎确诊病例。在中东地区,新冠疫情已经蔓延至11国,其中伊朗最为严重,同时伊朗副总统在2月27日检测呈阳性。而这些数字以目前中国数据作为参考,可以统计发现全球疫情的形势不容乐观。
AI科技大本营
2020/03/05
9480
R语言实现传染病传播模拟
今天我们给大家介绍一个传染病模拟的模型包EpiModel。此包提供了三种疾病传播模型:确定性,划分模型(DCMs)、随机个体接触模型(ICMs)和随机网络模型。首先我们看下包的安装:
一粒沙
2020/03/31
2.6K1
R语言实现传染病传播模拟
推荐阅读
@这位没带口罩的朋友,你让我感染新冠的风险升高百倍!马普所建模计算结果,认真的
3260
最大规模新冠临床研究:近9000个病例,男性风险更高,总体病死率3.06%,R0值3.77
5600
用Python预测疫情发展
2.6K0
疫情之下,这是你也能上手的Python新冠病毒传播建模教程(附代码)
1.9K0
新冠病毒爆发如何预防?用Python模拟病毒应对策略(附代码)
1.6K2
南大孵化,南栖仙策独创AI决策平台,快速搭建疫情模型
8270
斯坦福发布“防疫公司”模拟器:“照明开关法”或为美国社交隔离最优解
1.1K0
新型冠状病毒传染性有多强?何时达到峰值?来看一下数学和统计建模结果
3520
我用秒杀Excel的大数据分析工具,告诉你疫情什么时候结束
1.4K1
使用SIR模型对2019新型冠状病毒的疫情发展进行分析
1.6K0
最新R0值3.11,疫情何时高峰难预测,这是你该知道的最新进展
5860
武汉,排查结果出来了!数据分析立了大功
4930
如果新冠病毒是在亚美尼亚爆发会发生什么?程序员用Python进行模拟
4030
含纳维-斯托克斯方程(气象学)实例,微分方程 VS 机器学习
2.2K0
全球科学家争相预测,尚未出现的疫情拐点,最好和最坏的情况分别是什么?
7630
Robot-走近机器人动力学建模与仿真
14.7K2
拐点何时出现?这是北大面向新冠疫情的数据可视化分析与模拟预测
7030
Wolfram System Modeler 系统动力学建模|现在可与商业模拟库一起使用
1.7K0
Nature/Science等研究模型模拟仿真警告:新冠肺炎全球爆发或已不可避免
9480
R语言实现传染病传播模拟
2.6K1
相关推荐
@这位没带口罩的朋友,你让我感染新冠的风险升高百倍!马普所建模计算结果,认真的
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档