人在仿真软件金宝app

金宝appSimulink &基于模型的设计

用parsim并行模拟模型很容易

前段时间,我写了一系列的文章来强调并行运行模拟时需要考虑的不同因素。在R2017a中,我们引入了一个新函数,使它变得非常简单:parsim

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

金宝app仿真软件。SimulationInput

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

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

让我们以这个简单的弹跳球模型为例,尝试用不同的恢复系数并行地模拟它。

弹力球

在本例中,我们将模拟从0.2到0.9的10个不同值的模型。为此,我创建了一个包含10个Simulink的数组。金宝app对象,并使用setBlockParameter方法为每个仿真指定恢复系数。然后我可以简单地传递这个Simulink数组。金宝appSimulationInput来parsim,我将接收一个数组作为输出金宝app仿真软件。SimulationOutput对象。

Parsim简单的例子

一个更现实的例子

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

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

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

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

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

文章仿真功能

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

这是它的样子:

Parsim例子

注意我是怎么用的UseFastRestart选项,以加快事情甚至更多的编译模型,每个工人只一次。

处理错误

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

在这个例子中,就是Simulink。金宝appSimulationOutputobject contains all the logged data until the error happened, and aErrorMessage描述错误原因的字段。

Parsim错误输出

这对于理解哪里出了问题而不需要重新模拟模型是非常有用的。

如果不能根据记录的数据找出出错的原因,则很可能需要向模型添加更多的检测,并在主机上重新模拟它。在这种情况下,您将喜欢模拟输入对象的applytommodel方法。顾名思义,
这个方法将配置您当前的MATLAB会话和模型,以便您可以模拟它,就像它在工作人员上做的那样。

现在轮到你了

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

|

评论

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