人在仿真软件金宝app

金宝appSimulink &基于模型的设计

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

在一个以前的文章我引入了一个模型,模拟像COVID-19这样的现象的指数级传播。随着新闻中越来越多的关于消除限制计划的讨论,我认为使用不同的消除限制场景运行多个模拟并观察潜在的结果会很有趣。

你可以下载这个项目MATLAB中央GitHub

这是一个示例结果所示仿真管理器:我进行了250次模拟,改变了代理的初始速度。这个参数与人们遵守限制规则的程度类似。你可以看到,对于极端的病例,结果是直接的:在缓慢的速度下,所有人都被监禁,几乎没有人被感染。相反,如果速度太快,每个人都会被感染。最有趣的是在中间。如您所见,对于一个初始速度范围,结果是很难预测的。

仿真管理器

让我们看看我是如何使用的parsim仿真管理器运行这些模拟,利用我电脑上的所有核心,并产生上面的图像。

如果你不熟悉帕西姆,我建议你早点来这里帖子在这里我引入了这个函数。

管理仿真数据

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

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

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

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

当需要使用parsim模拟模型时,我可以指定要调优的参数金宝app仿真软件。SimulationInput对象和对象setVariable方法。

下面是我的代码,准备将传递给parsim的模拟输入对象数组:

准备模拟输入

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

文章仿真功能

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

此功能将接收输入金宝appsimulink.simulationOutput.对象由模型生成,并且应该生成Simulink。金宝appparsim将为该模拟返回的SimulationOutput对象。这通常有两种用法:

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

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

文章仿真功能

在这段代码中,我计算在模拟的最后一个时间步骤中,有多少代理从未被感染,以及有多少代理已被感染,现在已免疫。

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

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

可视化的结果

模拟并行

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

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

parsim

选项2 - parsim背景:Parsim有一个在后台运行的选项。有了这个选项,parsim将立即返回MATLAB提示符,这样您就可以在并行工作人员运行模拟时在MATLAB中做其他工作。在本例中,parsim返回一个数组金宝appsimulink.simulation.futures..当这些未来对象的状态属性更改为“完成”时,可以使用FetchOutput.方法检索仿真输出对象。

Parsim在背景中

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

batchsim

现在轮到你了

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

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

使用Parsim进行多次仿真

|

评论

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