Parsimを使用した並列シミュレ,ションのカバレッジの記録
この例では,SimulationInputオブジェクトおよびparsim
コマンドを使用して,異なるテストケースに対応する仿真金宝app软件®の複数の並列シミュレーションのカバレッジを記録する方法について説明します。システム上に并行计算工具箱がescンストルされている場合,parsim
コマンドはシミュレ,ションを並列実行します。そうでない場合,シミュレ,ションは逐次実行されます。
モデルの概要
slvnvdemo_powerwindow_parsim
モデルには,パワ,ウィンドウコントロ,ラ,および低次のプラントモデルが含まれます。コンポ,ネントslvnvdemo_powerwindow_parsim power_window_control_system /控制
は,Stateflow®チャ,トでコントロ,ラ,を実装するモデルslvnvdemo_powerwindow_controller
を参照する模型ブロックです。
mdl =“slvnvdemo_powerwindow_parsim”;isModelOpen = bdIsLoaded(mdl);open_system (mdl);
複数のシミュレ,ションのデ,タ設定
信号编辑器ブロックでNumberOfScenarios
パラメ,タ,を使用して,テストケ,スの数を特定します。テストケ,スの数によって実行する反復回数が決まります。
sigEditBlk = [mdl .' /输入'];numCases = str2double(get_param(sigEditBlk),“NumberOfScenarios”));
オブジェクトの配列を作成し,実行するシミュレ,ションのセットを定義します。各SimulationInputオブジェクトは 1 つのシミュレーションに対応し、配列金宝app仿真软件。SimulationInput
思敏
に格納されます。各シミュレーションで、以下のパラメーターを設定します。
ActiveScenario
。信号编辑器ブロックのどのシナリオを実行するかを示します。CovEnable
。カバレッジ解析をオンにします。CovSaveSingleToWokspaceVar
。カバレッジの結果をワ,クスペ,ス変数に保存します。CovSaveName
。変数の名前を指定します。
为simIn(idx) = Simulink.SimulationI金宝appnput(mdl);simIn(idx) = setBlockParameter(simIn(idx), sigEditBlk,“ActiveScenario”, idx);simIn(idx) = setModelParameter(simIn(idx),“CovEnable”,“上”);simIn(idx) = setModelParameter(simIn(idx),“CovSaveSingleToWorkspaceVar”,“上”);simIn(idx) = setModelParameter(simIn(idx),“CovSaveName”,“covdata”);结束
Parsimを使用したシミュレ,ションの並列実行
関数
を使用して,シミュレ,ションを並列実行します。最初の引数としてSimulationInputオブジェクトの配列parsim
思敏
を関数parsim
に渡します。ShowProgress
オプションを在
に設定し,matlabコマンドウィンドウにシミュレ,ションの進行状況を表示します。parsim
コマンドからの出力はsimOut
であり,金宝app仿真软件。SimulationOutput
オブジェクトの配列です。
simOut = parsim(simIn,“ShowProgress”,“上”);
[11-Feb-2022 23:58:53]检查并行池的可用性…使用“本地”配置文件启动并行池(parpool)…连接到并行池(worker数量:4).[11-02-22 23:59:28]在并行worker上启动Simulink…金宝app[12-Feb-2022 00:00:01]在并行工作上配置模拟缓存文件夹…[12-Feb-2022 00:00:02]加载模型在并行工人…[12-Feb-2022 00:00:27]运行模拟…[12-Feb-2022 00:00:54]完成2次模拟运行中的1次[12-Feb-2022 00:00:54]清理并行工人…
各
オブジェクトには,ログ記録されたカバレッジの結果が金宝app仿真软件。SimulationInput
として格納されます。これらのカバレッジの結果は,事前にcv.cvdatagroup
对象CovSaveName
パラメ,タ,によって指定されたとおり,covdata
という名前のフィ,ルドに格納されます。parsim
を使用して複数のシミュレーションを実行した場合,後続のシミュレーションを継続して実行できるようにエラーがキャプチャされます。エラ,はすべてSimulationOutputオブジェクトのErrorMessage
プロパティに記録されます。
covdata
はカバレッジの結果が記載されたファ@ @ルを参照します。カバレッジ関数によってcovdata
が使用されるときに,参照ファ。
simOut (1) .covdata
…cvdata文件:/tmp/Bdoc22a_1880208_260907/tp4ea516a8/ex16619798/slcov_output/slvnvdemo_powerwindow_parsim/slvnvdemo_powerwindow_parsim_cvdata_1。cvt日期:12-Feb-2022 00:00:54
累積カバレッジの計算
simOut
の各要素からカバレッジデ,タを取得し,結果を累積します。
coveragdata = simOut(1).covdata;为i = 2: numCases coverageData = coverageData + simOut(i).covdata;结束
カバレッジの強調表示を使用して,モデル上で累積されたカバレッジの結果を参照します。
cvmodelview (coverageData);open_system (“slvnvdemo_powerwindow_parsim / power_window_control_system”);
累積カバレッジレポ,トを生成します。
cvhtml (“cummulative_cov_report.html”, coverageData);