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

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

Answers (2)

交感神経優位なあかべぇ
simの繰り返しで、Simulinkモデルが開いたり閉じたりすることはありません。
計算実行以外のロスについてですが、Simulinkの実行時の前処理であるモデルのコンパイル(アクセラレータモードの実行では、特に時間がかかったように思います)に時間がかかっていると予想します。
こちらについては、高速リスタートの設定をONにすることで、初回時のみコンパイルを行うようにすることができます。
  2 Comments
浩祐 佐々木
浩祐 佐々木 on 12 Jul 2022
ご回答ありがとうございます.
お礼が遅くなってしまいすいません.
別ツールの組み合わせて最適化計算を行っているため,Simulinkモデル上で高速リスタートの設定をONにすることができません.
sim(’モデル名’,'FastRestart','on');
でスクリプト側でアクティベートできるという話を伺いましたが,当方が利用しているMatlab2015ではこのコマンドは実行できないようでした.
もしMatlab2015で上記のようなコマンドで高速リスタートを有効にするものがございましたらご教示いただけますと大変助かります.
交感神経優位なあかべぇ
ドキュメントにはありませんが、、、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');

Sign in to comment.


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

Categories

Find more on 一般分野への適用 in Help Center and File Exchange

Products


Release

R2015a

Community Treasure Hunt

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

Start Hunting!