Simulin金宝appk上的家伙

金宝app基于Simulink和模型的设计

Covid-19:使用并行模拟来研究感染传播

在一个以前的帖子,我介绍了一种模拟模拟Covid-19等现象的指数扩展。随着关于解构计划的新闻中的越来越多的话题,我认为在不同的解构场景中运行多种模拟并观察潜在的结果是有趣的。

您可以下载项目Matlab Central.或者GitHub.

这是一个示例结果所示仿真经理:我跑了250次模拟,其中我改变了代理的初始速度。此参数类似于人们尊重监禁规则。你可以看到,对于极端情况,结果很简单:速度慢,每个人都在禁闭,几乎没有人被感染。在相反的情况下,大速度,每个人都被感染了。最有趣的是中间。正如您所看到的,对于一系列初始速度,结果难以预测。

仿真经理

让我们看看我是如何使用的Parsim仿真经理使用计算机上的所有内核进行运行这些模拟并产生上述图像。

如果您不熟悉Parsim,我建议您之前访问过邮政我介绍了这个功能的地方。

管理模拟数据

您可能知道,有多种方法可以指定模型所需的数据。选择选项数据词典模型工作区,基础工作区,和金宝appsimulink.simulationInput对象,可以对选择的是什么,可以理解。对于这个项目,我可能已经使用这些方法的任何组合并获得了我想要的结果。这是我决定使用的,为什么。

首先,我决定为模型工作区中的模型所需的所有参数存储一组默认值。在开发模型时,它允许我更新图表,而无需基于基础工作区中定义的任何特定变量(“尽可能地保持更新状态的模型”是我在教导Simulink时重复的第一个和主要建议之一)。金宝app

正如您所知,模型工作区有四个数据源的选项:模型文件,MAT文件,MATLAB文件(MATLAB脚本)和MATLAB代码。我选择了一个matlab脚本。

模型工作区设置在模型资源管理器中

使用Parsim模拟模型时,我可以指定要使用的参数金宝appsimulink.simulationInpul.对象和对象可遗漏的方法。

这是我的代码,准备要传递给Parsim的模拟输入对象数组:

准备仿真输入

我希望这变得更清楚为什么我在Matlab脚本中定义了模型工作区:我需要模型工作区的值来创建模拟输入对象。在项目中,我有一个固定数量的具有默认初始位置的代理。在模拟输入对象中,我所做的是用随机干扰来修改它们的初始位置,并为它们分配初始速度。

后仿真功能

在上面的屏幕截图中,你可能注意到我使用了setPostsimfcn.模拟输入对象的方法,我传递给它处理功能在仿真完成后,我希望在每个工人身上执行。

此功能将接收输入金宝appsimulink.simulationOutput.由模型生成的对象,并且应该生成Parsim将返回此模拟的Simulink.simulationOutput对象。金宝app这通常可以用两种方式使用:

  • 进行记录数据的后处理和添加结果原始仿真输出对象
  • 进行记录数据的后处理和代替原始仿真输出对象

正如您可以想象的那样,在运行大量模拟时,该第二选项变得有用的每个日志数据。在我的情况下,这里是我的模拟后功能的样子:

后仿真功能

在这段代码中,我计算在模拟的最后一次步骤中的代理,从未被感染,并且已经被感染了多少并且现在免疫。

可视化仿真管理器中的结果

通过所有设置,我可以将结果可视化,因为在模拟管理器中的并行工作人员上完成了各个模拟。由于我添加了从未感染到仿真输出对象的代理数量,因此我可以创建一个将显示此数字与代理的初始速度的散点图。

可视化结果

并行模拟

此时,是时候运行这些模拟了。我想突出3种可能的方法来做这件事。您可以在多个模拟工作流程上阅读更多这里

选项1 - Parsim:默认情况下,Parsim是一个阻塞功能;只有在完成所有模拟时,它将返回命令提示符。

Parsim

选项2 - Parsim在背景中:Parsim可以选择在后台运行。使用此选项,Parsim将立即返回MATLAB提示,以便您可以在MATLAB中执行其他工作,而并行工作人员正在运行模拟。在这种情况下,Parsim返回一个数组金宝appsimulink.simulation.futures.。当这些未来对象的状态属性更改为“完成”时,可以使用FetchOutput.检索模拟输出对象的方法。

Parsim在背景中

选项3 - Batchsim:Batchsim.,我们正在进一步迈出一步,让所有内容都在并行群集中进行管理。在这种情况下,一个并行工作者成为头部工作者,负责将模拟调度到其他平行工人并收集结果。它需要一个工作者,但它有优势,您可以关闭matlab并稍后重新连接以获取作业并获取结果。

Batchsim.

现在轮到你了

从中下载项目Matlab Central.或者GitHub.让我们知道您在以下评论中的思考。您会注意到该项目还包括一个可以使用Simulink编译器部署的Matlab应用程序...更多详细信息即将到来。金宝app

以下是使用6个平行工人运行250次模拟的模拟管理器可视化的实时视频。

使用Parsim进行多次仿真

|

注释

要发表评论,请点击这里登录您的MathWorks帐户或创建新的。