人在仿真软件金宝app

金宝appSimulink &基于模型的设计

COVID-19:在Simulink中模拟指数传播金宝app

更新(10/14/2020):GitHub存储库现在包含一个MATLAB应用程序来模拟模型和可视化结果。我们将应用程序编译为MATLAB Web应用程序并将其托管在云上使用MATLAB Web应用服务器点击这里在您的网络浏览器尝试它

上周,我的同事Mariano Lizarraga Fernandez给我指出《华盛顿邮报》模拟COVID-19我们认为使用MathWorks产品实现类似的东西会很有趣。下载188bet金宝搏

现在,克里夫发表了一基于matlab的仿真器,是时候发布我们使用Simulink、statflow和SimEvents实现的模拟了。金宝app

以下是随机选取50种“药剂”的结果(绿色表示感染前,红色表示感染,蓝色表示康复):

Covid 19模拟器

看看我是怎么把它们组合起来的。

扩展冰壶模拟器

当我考虑我将如何实现这个模拟时,我想到的第一件事是,我可能可以重用一些我为冰壶运动模拟器我不久前发表了一篇文章。

在已经实现的石头相互碰撞的动态中,我添加了边界框上的碰撞和跟踪感染传播的逻辑。

首先,让我们看看顶层。

Covid 19模拟器

以下是状态流程图:

Covid 19模拟器

细节

以下是它的工作原理:

  • 在statflow中,Simulink St金宝appate集成了代理的运动
  • statflow中的积分器块

  • 在每一个时间步,我们调用一个MATLAB函数来检测一个代理是否击中边界墙。如果有一个代理这样做了,我们将其速度符号在wall方向上反转,并在Simulink状态中用更新后的速度重新初始化Integrator块。金宝app
  • 在每一个时间步长,我们调用一个MATLAB函数来检测两个代理是否接触。如果有,我们使用Simulink函数计算新的速度,并在Simulink状态下重置积分器块。金宝app
  • 监测感染传播

  • 当这种情况发生时,我们调用Stateflow graphic函数来确定感染是否传播。为了跟踪谁被感染,我们使用了一个全局数据存储
  • 监测感染传播

  • 如果我们确定一个新的代理已被感染,状态流图将调用一个生成SimEvents实体的Simulink函数金宝app
  • 将此实体发送到实体服务器,等待固定的时间恢复。
  • 生病的代理注册

  • 一旦恢复时间结束,实体服务器退出操作将调用相应更新全局数据存储的Simulink函数。金宝app

注册愈合剂

结果

这是一个不同的结果,我降低了代理的初始速度。有趣的是它对传播的影响:

以较慢的速率传播。

现在轮到你了

下载我们的模拟器MATLAB中央或直接从GitHub让我们知道你的想法。

|
  • 打印
  • 发送电子邮件

评论

要留下评论,请点击在这里登录到您的MathWorks帐户或创建一个新帐户。