人在仿真软件金宝app

金宝appSimulink &基于模型的设计

并行模拟模型的技巧

更新:在MATLAB中R2017a的功能PARSIM介绍了。为了更好地体验并行模拟模型,我们建议使用PARSIM而不是parfor中的SIM。查看最近的博客文章用parsim并行模拟模型很容易为更多的细节。

---------------

正如我在本博客中多次提到的,使用并行计算工具箱可以帮你节省很多时间。今天我想分享一些技巧来帮助您开始并行运行模拟。

串口参数扫描

在进行并行之前,让我们先看看模拟模型的标准循环。有很多方法可以设置MATLAB和Simulink来进行参数扫描。金宝app我看到的最常见的简单设置如下所示:

  • 使用以下命令加载模型load_system
  • 使用脚本初始化MATLAB基础工作区
  • 定义一个要扫过的值向量
  • 在循环中,索引到参数向量中
  • 模拟使用sim卡

对于本例,我们使用简单的质量-弹簧-阻尼模型进行仿真。

拟模拟模型

我们有一个初始化脚本,初始化三个变量。

初始化脚本

我们用这个代码做参数扫描。

连续运行

金宝app仿真软件和透明度

在模拟内部模型时parfor, parfor如何管理需要考虑的变量有一些复杂的地方。要开始讨论这个主题,我建议阅读有关的文档页面parfor循环中变量的分类,透明度

让我用几句话继续说明你将在这些文档页面中学到的重要教训:

  • 并行工作者是独立的MATLAB会话,parfor向其发送代码和数据以进行处理。
  • 为了提高效率,parfor将变量分类为许多类别,并且只发送它认为需要的变量
  • 发送给工人的代码不会在他们的基本工作空间中执行,而是在一个特殊的函数工作空间中执行
  • Simulink模型所需要的变量对parfo金宝appr来说是“不可见的”,因此不会自动发送给工作人员
  • 默认情况下,Simuli金宝appnk会在基本工作区中查找所需的变量

因为这些事实,使simulink运行在parfor内部需要一些金宝app技巧。让我们看看在parfor内部模拟模型的两种技术。

基本工作区中的参数扫描

在第一种技术中,我们通过违反透明使用来抵消Simulink不透明的事实金宝appevalin和/或assignin.是的……我喜欢危险的生活!

为了尽可能地提高效率,我们首先使用spmd语句将在参数扫描期间保持不变的模型所需的数据放入工作者的基本工作空间。然后在parfor循环中,我们在基本工作区中放入每次迭代和调用都会更改的数据sim卡

基本工作空间的平行扫描

在功能工作区中的参数扫描

在第二种技术中,我们做相反的事情。我们通过在函数工作区中做所有的事情来隐藏Si金宝appmulink不透明的事实。

函数工作区中的并行扫描

调用sim的函数将SrcWorkspace参数设置为指向当前工作区:

调用sim

关于未来的笔记

请放心,我们正在积极工作的功能,使模拟模型内部parfor在未来更容易。然而,由于我们不幸地被迫生活在现在,我想分享一些这些复杂的东西可能会帮助你们中的一些人建立他们的环境来并行地模拟模型。

现在轮到你了

尝试设置你的模型并行模拟,让我们知道如何通过留下一个这里的评论

|

评论

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