人在仿真软件金宝app

金宝appSimulink &基于模型的设计

用Parsim并行模拟模型

在前段时间,我写了一系列帖子,以突出显示不同因素,在尝试并行运行模拟时要考虑。在R2017A中,我们通过引入新功能使其更加容易:Parsim

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

金宝appsimulink.simulationInput.

如果你要用并行计算工具箱要多次模拟一个模型,显然需要更改一些内容以使每次运行不同。这是通过金宝appsimulink.simulationInput.对象。

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

让我们拍摄这个简单的弹跳球模型,并尝试并行模拟不同的恢复系数。

弹力球

在本例中,我们将模拟从0.2到0.9的10个不同值的模型。为此,我创建了一个包含10个Simulink的数组。金宝app对象,并使用setBlockParameter用于指定每个模拟的恢复系数的方法。然后我可以简单地传递这个simulink.simulationInput阵金宝app列Parsim,我将收到作为输出一系列金宝appsimulink.simulationOutput.对象。

Parsim简单的例子

一个更现实的例子

让我们通过添加以下内容来让这个弹跳球的例子更加真实:

工作空间变量:之前Parsim,在并行模拟模型时的挑战之一是管理模型所需的变量。我试着提供一些技巧和技巧来帮助他们以前的文章.对于我们的弹跳球例子,我们不需要硬编码参数的值,比如在块对话框中的重力和恢复系数,而是让这些变量在MATLAB基础工作空间中,由MATLAB脚本创建。

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

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

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

文章仿真功能

有了这个设置,我们就可以创建我们的Simulink数组了。金宝app对象,并使用可遗憾的为工作区变量指定不同值的方法CR..对于后处理函数,我们将其句柄指定为模拟输入对象的postSimFcn属性。

这是它的样子:

Parsim例子

注意我如何使用usefastrestart.选项通过在每个工作人员上编译模型,更快地加速速度更快。

处理错误

这是我喜欢的一点Parsim是当模拟出错时它的行为。

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

Parsim错误输出

在没有需要重新模拟模型的情况下,理解出现问题非常有用。

如果您无法根据记录的数据弄清楚出错,您将很可能希望为模型添加更多仪器并在主机上重新模拟它。在这种情况下,您希望模拟输入对象的应用程序方法。顾名思义,
此方法将配置当前的MATLAB会话和模型,以便您可以在工作人员上模拟它。

现在轮到你了

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

|

评论

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