Covid-19:模拟Simulink中的指数扩展金宝app
更新(二○二○年十月十四日):GitHub存储库现在包含一个Matlab应用程序来模拟模型并可视化结果。我们将应用程序编译为Matlab Web App.并使用它在云中寄出它MATLAB的Web应用服务器。点击这里尝试在Web浏览器。
上周,我的同事马里亚诺Lizarraga Fernandez指出了我华盛顿邮报仿真COVID-19我们认为使用MathWorks产品来实现类似的东西会很有意思。下载188bet金宝搏
现在克利夫发表A.基于MATLAB的模拟器,是时候为我们发布使用Simulink,StateFlow和Simevents实现的模拟。金宝app
这里是什么结果看起来像随机的一组50“代理人”(绿色是感染之前,红色感染和蓝色的恢复):
让我们来看看我怎么这身打扮。
扩展冰壶模拟器
在思考我如何实施这种模拟时越过我思绪的第一件事是我可以重用我一起放入的一些算法卷曲的模拟器我发表前一段时间。
利用Stones的动态互相撞击已经实现的,我添加了反对边界盒和逻辑以跟踪感染传播的逻辑。
首先,让我们来看看在顶层。
这里是州流图表的样子:
细节
下面是它是如何工作:
- 里面Stateflow的,Simulink的金宝app国家整合代理商的运动
- 在每个时间步长,我们称之为一个MATLAB函数来检测,如果代理打到边境墙之一。如果一个代理了,我们就反转了其在墙的方向和速度的符号重新初始化在Simulink国家的累加模块与此更新速度。金宝app
- 每次步骤,我们都会调用Matlab函数来检测两个代理是否接触。如果他们这样做,我们使用Simulink函数计算新速度并在Simulink状态中重置Integrato金宝appr块。
- 如果出现这种情况,我们称之为Stateflow的图形功能,以确定是否感染得到传播。跟踪谁被感染的,我们使用一个全球性的数据存储
- 如果我们确定了新的代理已被感染后,Stateflow的图表调用生成SimEvents实体Simulink的功能金宝app
- 这种实体被发送到一个实体服务器的时间来恢复一个固定的量。
- 一旦恢复时间已经过去,实体服务器退出动作调用Simulink的功能,更新的全局数据存储相应。金宝app
结果
这是我减少了代理的初始速度的不同结果。看到对传播的影响很有意思:
现在轮到你了
下载我们的模拟器Matlab Central.或者直接从GitHub.让我们知道你的想法。
注释
要发表评论,请点击这里在您的帐户MathWorks公司签署或创建一个新的。