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”));
オブジェクトの配列を作成し,実行するシミュレ,ションのセットを定義します。各SimulationInputオブジェクトは 1 つのシミュレーションに対応し、配列万博1manbetx仿真软件。SimulationInput
思敏
に格納されます。各シミュレーションで、以下のパラメーターを設定します。
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を使用したシミュレ,ションの並列実行
関数
を使用して,シミュレ,ションを並列実行します。最初の引数としてSimulationInputオブジェクトの配列parsim
思敏
を関数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);