主要内容

Parsimを使用した並列シミュレ,ションのカバレッジの記録

この例では,SimulationInputオブジェクトおよびparsimコマンドを使用して,異なるテストケースに対応する仿真万博1manbetx软件®の複数の並列シミュレーションのカバレッジを記録する方法について説明します。システム上に并行计算工具箱が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”));

万博1manbetx仿真软件。SimulationInputオブジェクトの配列を作成し,実行するシミュレ,ションのセットを定義します。各SimulationInputオブジェクトは 1 つのシミュレーションに対応し、配列思敏に格納されます。各シミュレーションで、以下のパラメーターを設定します。

  • ActiveScenario。信号编辑器ブロックのどのシナリオを実行するかを示します。

  • CovEnable。カバレッジ解析をオンにします。

  • CovSaveSingleToWokspaceVar。カバレッジの結果をワ,クスペ,ス変数に保存します。

  • CovSaveName。変数の名前を指定します。

simIn(idx) = Simulink.SimulationI万博1manbetxnput(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を使用したシミュレ,ションの並列実行

関数parsimを使用して,シミュレ,ションを並列実行します。最初の引数としてSimulationInputオブジェクトの配列思敏を関数parsimに渡します。ShowProgressオプションをに設定し,matlabコマンドウィンドウにシミュレ,ションの進行状況を表示します。parsimコマンドからの出力はsimOutであり,万博1manbetx仿真软件。SimulationOutputオブジェクトの配列です。

simOut = parsim(simIn,“ShowProgress”“上”);
[12-八月2022 21:47:26]检查并行池的可用性…使用'Processes'配置文件启动并行池(parpool)…连接到并行池(工人数量:4).[12-08-2022 21:48:15]在并行工人上启动Simulink…万博1manbetx[12-Aug-2022 21:49:10]在并行工作者上配置模拟缓存文件夹…并行工作人员的加载模型…运行模拟…[12-Aug-2022 21:50:17]完成2次模拟运行中的1次[12-Aug-2022 21:50:17]清理并行工人…

万博1manbetx仿真软件。SimulationInputオブジェクトには,ログ記録されたカバレッジの結果がcv.cvdatagroup对象として格納されます。これらのカバレッジの結果は,事前にCovSaveNameパラメ,タ,によって指定されたとおり,covdataという名前のフィ,ルドに格納されます。parsimを使用して複数のシミュレーションを実行した場合,後続のシミュレーションを継続して実行できるようにエラーがキャプチャされます。エラ,はすべてSimulationOutputオブジェクトのErrorMessageプロパティに記録されます。

covdataはカバレッジの結果が記載されたファ@ @ルを参照します。カバレッジ関数によってcovdataが使用されるときに,参照ファ。

simOut (1) .covdata
…cvdata文件:/tmp/Bdoc22b_2039835_224037/tpb8f43d22/slcover -ex16619798/slcov_output/slvnvdemo_powerwindow_parsim/slvnvdemo_powerwindow_parsim_cvdata_1。cvt日期:2022年8月12日21:50:17

累積カバレッジの計算

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);