家伙在simu金宝applink上

金宝app基于模型的设计

同行模拟模型与Parsim变得容易

不久前,我写了一系列帖子,以突出试图并行运行模拟时要考虑的不同因素。在R2017A中,我们引入了新功能,使其变得更加容易:Parsim

让我们看看它是如何工作的!

金宝appSimulink.SimulationInput

如果您要使用并行计算工具箱为了多次模拟模型,显然您需要更改一些东西,以使每个运行都不同。这是通过金宝appSimulink.SimulationInput目的。

通过创建一个金宝appSimulink.SimulationInput通过模拟,您可以定义每次运行的特定属性,包括初始状态,模型参数,块参数,输入信号和模型使用的变量。

让我们以这个简单的弹跳模型,并尝试并行模拟它以获得不同的恢复系数。

弹跳球

在这种情况下,我们将模拟10个不同值的模型,从0.2到0.9。为此,我创建了一个10个simulink的数组。模拟对象,并使用金宝appsetBlockParameter为每个模拟指定恢复原状系数的方法。然后,我可以简单地将此simulink的数组传递给SimulationIn金宝appputParsim,我将作为输出收到一个数组金宝appsimulink.simulationOutput对象。

Parsim简单示例

一个更现实的例子

让我们通过添加以下内容使这个弹跳的球示例更现实:

工作区变量:Parsim,在并行模拟模型时面临的挑战之一是管理模型所需的变量。我试图提供技巧和技巧来帮助您这篇文章。对于我们的弹跳示例,而不是用块对话框中的重力和恢复系数等参数的值进行硬编码,而是将这些变量是由MATLAB脚本创建的MATLAB基本工作区中的变量。

带有工作空间变量的弹跳球模型

输出处理:在大多数情况下,模拟会产生大量数据。如果您在远程群集上进行模拟,则可能要避免传输所有这些数据。相反,您可以后处理已记录的数据并将其简化为您真正感兴趣的数据。

对于后处理,我们需要创建一个接收作为输入模拟输出对象的函数,并返回结构输出。例如,我可以使用记录的位置来计算计算机停止弹跳需要多长时间,以及它进行了多少篮板。

邮政仿真功能

使用该设置,我们可以创建simulink.simulationInput对象的数组,并使金宝app用setVaria为工作区变量指定不同值的方法cr。对于后处理功能,我们将其指定为模拟输入对象的postsimfcn属性。

这是它的样子:

Parsim示例

注意我也如何使用USEFASTRESTART通过仅在每个工人上编制一次模型来加快速度的选项。

处理错误

我喜欢的事情之一Parsim是当模拟出现错误时的行为。

在这种情况下,simulink.si金宝appmulationOutput对象包含所有记录的数据,直到发生错误为止,并且错误信息描述错误原因的字段。

PARSIM错误输出

这对于不需要重新模拟模型而不需要重新映射的情况非常有用。

如果您无法根据已记录的数据弄清楚出了什么问题,那么您很可能希望在模型中添加更多仪器,并在主机机器上重新模拟它。在这种情况下,您将喜欢仿真输入对象的ApplyTomodel方法。顾名思义,
此方法将配置您当前的MATLAB会话和模型,以便您可以像在工作人员上一样对其进行仿真。

现在轮到你了

尝试新的Parsim在R2017a中功能,让我们知道您在下面的评论中的想法。

|

注释

要发表评论,请单击这里登录您的数学帐户或创建一个新帐户。