主要内容

使用PARSIM的平行模拟:测试案例扫描

此示例显示了如何使用SimulationInput对象和信号编辑器块中的不同测试用例对应金宝app的多个Simulink®模拟对应于其他测试用例。Parsim命令。PARSIM命令使用并行计算工具箱™并行运行模拟,否则模拟以串行运行。

模型概述

该模型sldemo_suspn_3dof下面显示的基于道路的模拟车辆动力学 - 用于不同道路轮廓的悬架相互作用。车辆动力学以三个自由度捕获:垂直位移,滚动和音高。左右轮胎的道路轮廓数据被导入信号编辑器块中,作为不同的测试用例。道路悬浮互动子系统根据道路数据和当前车辆状态在四个轮胎位置计算车辆上的悬架力。在身体动力学子系统中,这些力以及所得的螺距和滚动矩用于以三个自由度确定车辆运动:垂直位移,滚动和音高。

使用不同的道路配置文件模拟悬架模型,以确定设计是否符合所需的性能目标。并行计算工具箱用于加快这些多个模拟,如下所示。

mdl ='sldemo_suspn_3dof';ismodelopen = bdisloaded(mdl);Open_System(MDL);

设置多个模拟所需的数据

使用信号编辑器块的numberOfScenarios参数确定信号编辑器块中的案例数。案例数用于确定步骤3中运行的迭代次数。

sigeditblk = [mdl'/公路概况'];数字= str2double(get_param(sigeditblk,,“数字”);

创建一个阵列金宝appSimulink.SimulationInput对象定义要运行的模拟集。每个仿真input对象对应于一个模拟,并将作为数组存储在变量中,。蒙版参数,Activescenario,指定信号编辑器块方案的扫描值。为每个仿真设置活动场景。

为了idx =数字:-1:1 in(idx)= simulink金宝app.simulationInput(mdl);在(idx)= setBlockParameter(in(idx),sigeditblk,“活活的塞纳里奥”,idx);结尾

请注意,在仿真input对象上指定模型参数不会立即将其应用于模型。指定的值将在模拟期间应用,并在模拟完成后恢复其原始值。

并行运行模拟

使用Parsim函数以并行执行模拟。模拟对象的数组,,最后一步中创建的Parsim功能是第一个参数。来自Parsim命令是一个数组金宝appsimulink.simulationOutput存储在变量中的对象出去。将“ ShowProgress”选项设置为“ ON”,以在MATLAB命令窗口上打印模拟的进度。

out = parsim(在“表演”'在');
[21-FEB-2021 01:43:41]检查并行池的可用性...使用“本地”配置文件开始并行池(PARPOOL)...连接到并行池(工人数量:6)。[21-FEB-2021 01:44:30]在平行工人上启动Si金宝appmulink ... [21-FEB-2021 01:45:05]在并行工人上配置模拟缓存文件夹... [21-FEB-2021 01:45:07]在平行工人上加载模型... [21-FEB-2021 01:45:13]运行模拟... [21-FEB-2021 01:45:26]完成了20个模拟运行中的1个[21--Feb-2021 01:45:26]完成了20次模拟运行中的2次[21-FEB-2021 01:45:26]完成了20个模拟运行中的3次[21-FEB-2021 01:45:26]完成了20个模拟的4个模拟。运行[21-FEB-2021 01:45:26]完成了20个模拟运行中的5次[21-FEB-2021 01:45:26]完成了20个模拟运行中的6个[21-FEB-2021 01:45:28]20个模拟运行中的7台[21-FEB-2021 01:45:29]完成了20个模拟运行中的8台[21-FEB-2021 01:45:29]完成了20次模拟运行中的9次[21-FEB-2021 01:45:29]完成了20次模拟运行中的10台[21-FEB-2021 01:45:29]完成了20次模拟运行中的11个[21-FEB-2021 01:45:29]完成了20个模拟运行中的12次[21-FEB---2021 01:45:31]完成了20个模拟运行中的13台[21-Feb-2021 01:45:31]完成了20个模拟运行中的14台[21-FEB-2021 01:45:31]完成了20个模拟运行中的15台[21-FEB-2021 01:45:31]模拟运行[21-FEB-2021 01:45:31]完成了20次模拟运行中的17台[21-FEB-2021 01:45:31]完成了20次模拟运行中的18次[21-FEB-2021 01:45:34]完成了20个模拟运行中的19个[21-FEB-2021 01:45:34]完成了20个模拟运行中的20个[21-FEB-2021 01:45:34]清理并行工人...

每个仿真图对象都包含已记录的信号以及仿真metadata。在运行多个模拟时使用Parsim,捕获错误,以便随后的模拟可以继续运行。任何错误都会在错误信息模拟图对象的属性。

情节结果

绘制从不同模拟的垂直车辆位移,以查看车辆如何执行到不同的道路轮廓。该信号以数据集格式的仿真图对象记录。使用得到从每个元素中获取包含时间和信号数据的时间表对象的方法出去

legend_labels =单元格(1,数字);为了i = 1:数字simout = out(i);ts = simout.logsout.get('Vertical_disp')。ts.plot;legend_labels {i} = ['跑 'num2str(i)];抓住全部结尾标题(“ 3-DOF悬架模型的响应”)xlabel(“时间)”);ylabel(“车辆垂直位移(M)”);传奇(legend_labels,'地点'“东北”);

关闭MATLAB工人

最后,如果以前没有打开,请关闭平行池和模型。

如果(〜ISMODELOPEN)CLOSS_SYSTEM(MDL,0);结尾删除(GCP(GCP)('nocreate');

也可以看看

||

相关话题