同行模拟模型与Parsim变得容易
不久前,我写了一系列帖子,以突出试图并行运行模拟时要考虑的不同因素。在R2017A中,我们引入了新功能,使其变得更加容易:Parsim
让我们看看它是如何工作的!
金宝appSimulink.SimulationInput
如果您要使用并行计算工具箱为了多次模拟模型,显然您需要更改一些东西,以使每个运行都不同。这是通过金宝appSimulink.SimulationInput目的。
通过创建一个金宝appSimulink.SimulationInput通过模拟,您可以定义每次运行的特定属性,包括初始状态,模型参数,块参数,输入信号和模型使用的变量。
让我们以这个简单的弹跳模型,并尝试并行模拟它以获得不同的恢复系数。
在这种情况下,我们将模拟10个不同值的模型,从0.2到0.9。为此,我创建了一个10个simulink的数组。模拟对象,并使用金宝appsetBlockParameter为每个模拟指定恢复原状系数的方法。然后,我可以简单地将此simulink的数组传递给SimulationIn金宝appputParsim,我将作为输出收到一个数组金宝appsimulink.simulationOutput对象。
一个更现实的例子
让我们通过添加以下内容使这个弹跳的球示例更现实:
工作区变量:前Parsim,在并行模拟模型时面临的挑战之一是管理模型所需的变量。我试图提供技巧和技巧来帮助您这篇文章。对于我们的弹跳示例,而不是用块对话框中的重力和恢复系数等参数的值进行硬编码,而是将这些变量是由MATLAB脚本创建的MATLAB基本工作区中的变量。
输出处理:在大多数情况下,模拟会产生大量数据。如果您在远程群集上进行模拟,则可能要避免传输所有这些数据。相反,您可以后处理已记录的数据并将其简化为您真正感兴趣的数据。
对于后处理,我们需要创建一个接收作为输入模拟输出对象的函数,并返回结构输出。例如,我可以使用记录的位置来计算计算机停止弹跳需要多长时间,以及它进行了多少篮板。
使用该设置,我们可以创建simulink.simulationInput对象的数组,并使金宝app用setVaria为工作区变量指定不同值的方法cr。对于后处理功能,我们将其指定为模拟输入对象的postsimfcn属性。
这是它的样子:
注意我也如何使用USEFASTRESTART通过仅在每个工人上编制一次模型来加快速度的选项。
处理错误
我喜欢的事情之一Parsim是当模拟出现错误时的行为。
在这种情况下,simulink.si金宝appmulationOutput对象包含所有记录的数据,直到发生错误为止,并且错误信息描述错误原因的字段。
这对于不需要重新模拟模型而不需要重新映射的情况非常有用。
如果您无法根据已记录的数据弄清楚出了什么问题,那么您很可能希望在模型中添加更多仪器,并在主机机器上重新模拟它。在这种情况下,您将喜欢仿真输入对象的ApplyTomodel方法。顾名思义,
此方法将配置您当前的MATLAB会话和模型,以便您可以像在工作人员上一样对其进行仿真。
现在轮到你了
尝试新的Parsim在R2017a中功能,让我们知道您在下面的评论中的想法。
注释
要发表评论,请单击这里登录您的数学帐户或创建一个新帐户。