人在仿真软件金宝app

金宝appSimulink &基于模型的设计

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

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

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

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

仿真经理

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

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

管理模拟数据

您可能知道,有多种方法可以指定模型所需的数据。这样的选择数据词典模型的工作空间,基本工作空间,以及金宝appsimulink.simulationInpul.object在美国,人们对选择什么感到困惑是可以理解的。对于这个项目,我可能已经使用了这些方法的任何组合,并得到我想要的结果。下面是我决定使用的,以及为什么。

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

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

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

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

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

准备仿真输入

我希望这能更清楚地说明我在MATLAB脚本中定义模型工作区的原因:我需要来自模型工作区的值来创建模拟输入对象。在这个项目中,我有固定数量的具有默认初始位置的代理。在模拟输入对象中,我要做的是用一个随机扰动修改它们的初始位置并给它们分配初始速度。

后仿真功能

在上面的屏幕截图中,你可能注意到我使用了setPostsimfcn.方法的模拟输入对象,我传递给它函数句柄我想在模拟完成后在每个工人上执行。

此函数将接收作为输入的金宝app仿真软件。SimulationOutput由模型生成的对象,并且应该生成Parsim将返回此模拟的Simulink.simulationOutput对象。金宝app这通常可以用两种方式使用:

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

可以想象,当运行大量的模拟(每个模拟都记录大量的数据)时,第二种选择非常有用。在我的例子中,我的后模拟函数是这样的:

后仿真功能

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

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

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

可视化结果

并行模拟

现在,是时候运行这些模拟了。我想强调3种可能的方法。您可以阅读更多关于多个模拟工作流程在这里

选项1 - parsim:默认情况下,parsim是一个阻塞函数;只有当所有模拟都完成时,它才会返回命令提示符。

Parsim

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

parsim背景

方案3 -批量生产:Batchsim.,我们更进一步,让所有的东西都在并行集群上管理。在这种情况下,一个并行工作者成为head worker,负责将模拟分派给其他并行工作者并收集结果。它需要多一个worker,但是它的优点是您可以关闭MATLAB并稍后重新连接以获得作业和获取结果。

Batchsim.

现在轮到你了

从中下载项目Matlab Central.或者GitHub.请在下面的评论中告诉我们你的想法。你会注意到,该项目还包括一个MATLAB应用程序,可以使用Simulink编译器部署…金宝app稍后会有更多细节。

下面是仿真管理器可视化的实时视频,我正在使用6个并行工作器运行250个仿真。

多重模拟使用parsim

|

注释

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