主要内容

使用Parsim记录并行模拟中的覆盖率

此示例演示如何使用SimulationInput对象和万博1manbetx帕西姆命令如果系统上安装了并行计算工具箱帕西姆命令并行运行模拟。否则,模拟将串行运行。

模型概述

这个slvnvdemo\u powerwindow\u parsim模型包括一个电动窗控制器和一个低阶对象模型。组件slvnvdemo\u电动车窗\u parsim/电动车窗\u控制\u系统/控制是参照模型的模型块slvnvdemo\u powerwindow\u控制器,它使用Stateflow®图表实现控制器。

mdl=“slvnvdemo\u powerwindow\u parsim”isModelOpen=bdIsLoaded(mdl);open_系统(mdl);

为多个模拟设置数据

使用情景数测试用例的数量决定了要运行的迭代次数。

sigEditBlk=[mdl“/输入”];numcase=str2double(get_param(sigEditBlk,“情景数”));

创建一个万博1manbetx模拟输入对象来定义要运行的模拟集。每个SimulationInput对象对应于一个模拟,并存储在阵列中斯明. 对于每个模拟,设置以下参数:

  • 活动场景指示要执行的信号编辑器块的哪个场景

  • 令人垂涎的打开覆盖率分析的步骤

  • CovSaveSingleToVokSpaceVar将覆盖率结果保存到工作区变量的步骤

  • CovSaveName指定变量的名称。

对于idx=numCases:-1:1 simIn(idx)=Simu万博1manbetxlink.SimulationInput(mdl);simIn(idx)=setBlockParameter(simIn(idx),sigEditBlk,“活动场景”,idx);simIn(idx)=setModelParameter(simIn(idx),“令人垂涎”,“开”);simIn(idx)=setModelParameter(simIn(idx),“CovSaveSingleToWorkspaceVar”,“开”);simIn(idx)=setModelParameter(simIn(idx),“CovSaveName”,“covdata”);终止

使用Parsim并行运行模拟

使用帕西姆函数并行执行模拟。传递SimulationInput对象数组,斯明,进入帕西姆函数作为第一个参数。设定展示进展选择在…上在MATLAB命令窗口中显示仿真的进度帕西姆命令是simOut,一系列万博1manbetx模拟输出物体。

simOut=parsim(simIn,“展示进步”,“开”);
[23-Feb-2021 16:43:19]检查并行池的可用性…使用“本地”配置文件启动并行池(parpool)…连接到并行池(工作线程数:4)。[23-Feb-2021 16:44:05]在并行工作线程上启动Simulink…[23-Feb-2021 16:44:54]在并行工作线程上配置模拟缓存文件夹。。。[23-Feb-2021 16:44:55]并行作业机上的加载模型…[23-Feb-2021 16:45:30]运行模拟…[2万博1manbetx3-Feb-2021 16:46:13]完成了两次模拟运行中的一次[23-Feb-2021 16:46:13]完成了两次模拟运行中的两次[23-Feb-2021 16:46:13]清理并行作业机。。。

每个万博1manbetx模拟输入对象包含存储为的记录的覆盖率结果cv.cvdatagroup物体. 这些覆盖率结果存储在名为covdata,如CovSaveName参数。使用帕西姆运行多个模拟意味着捕获错误,以便后续模拟可以继续运行。任何错误都会记录在错误信息SimulationOutput对象的属性。

covdata引用包含覆盖率结果的文件。当covdata由覆盖函数使用。

simOut(1).covdata
ans=…cvdata文件:/tmp/Bdoc21a_1606923_4016/tpe1039265/ex16619798/slcov_输出/slvnvdemo_powerwindow_parsim/slvnvdemo_powerwindow_parsim_cvdata_1.cvt日期:2021年2月23日16:46:12

计算累积覆盖率

从每个元素中获取覆盖率数据simOut并对结果进行累加。

coverageData=simOut(1).covdata;对于i=2:numcase coverageData=coverageData+simOut(i).covdata;终止

使用覆盖率高亮显示查看模型上的累积覆盖率结果。

cvmodelview(coverageData);开放式系统(“slvnvdemo\u电动车窗\u parsim/电动车窗\u控制系统”);

生成累积覆盖率报告。

cvhtml('累积cov_report.html',覆盖率数据);