Simulinkモデ​ルの連続実行時の高速​化について

조회 수: 7(최근 30일)
浩祐 佐々木
浩祐 佐々木 2022년 7월 7일
とあるパラメータの最適化のためSimulinkをMatlabからfor loop内で下記コマンドで実行しております
sim('model_name')
一回一回の計算時間はとても短いのですが,for loop数が多いため計算実行以外のロスがあると思っております.これらを極力減らし高速化を図りたいと思っています.
ご質問させていただきたいこと;
上記のような実行の場合,都度バックグラウンドでSimulinkモデルを開いて,閉じてが行われていますでしょうか?
その場合,for loop内ではSimulinkモデルを開いた状態にしておいて当該処理に関する時間ロスをなくせないかと思っております.
補足:
アクセラレータモードによる短縮は既に実行しております
ご回答およびアドバイスいただけますと幸いです.
以上よろしくお願いいたします.

답변(2개)

交感神経優位なあかべぇ
simの繰り返しで、Simulinkモデルが開いたり閉じたりすることはありません。
計算実行以外のロスについてですが、Simulinkの実行時の前処理であるモデルのコンパイル(アクセラレータモードの実行では、特に時間がかかったように思います)に時間がかかっていると予想します。
こちらについては、高速リスタートの設定をONにすることで、初回時のみコンパイルを行うようにすることができます。
  댓글 수: 2
交感神経優位なあかべぇ
ドキュメントにはありませんが、、、MATLAB R2015aの高速リスタートのパラメーターはInitializeInteractiveRunsのようです。(R2021aでもInitializeInteractiveRunsの設定は有効でしたが、いつ無効になるか分かりませんので、新しいバージョンにした際は、FastRestartを使用することをおすすめします。)
ですので、下記のようにスクリプトを作成すれば、R2015aでも、高速リスタート設定で実行できます。
set_param('モデル名', 'InitializeInteractiveRuns', 'on');
try
for idx = 1 : 4
sim('モデル名');
end
catch ME
set_param('モデル名', 'InitializeInteractiveRuns', 'off');
throw(ME);
end
set_param('モデル名', 'InitializeInteractiveRuns', 'off');

댓글을 달려면 로그인하십시오.


Toshinobu Shintai
Toshinobu Shintai 2022년 7월 7일
本ケースにおいては、RSimを用いることが最も高速化できる手段になります。

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!