此示例演示如何使用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,“情景数”));
创建一个
对象来定义要运行的模拟集。每个SimulationInput对象对应于一个模拟,并存储在阵列中万博1manbetx模拟输入
斯明
. 对于每个模拟,设置以下参数:
活动场景
指示要执行的信号编辑器块的哪个场景
令人垂涎的
打开覆盖率分析的步骤
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”);终止
使用
函数并行执行模拟。传递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',覆盖率数据);