Main Content

計算コストの削減

計算コストは、シミュレーション時にプロセッサが実行するタイム ステップごとのタスクの数と複雑度を測定したものです。モデルの計算コストを下げると、シミュレーションの実行速度が上がり、ターゲット ハードウェアでリアルタイム シミュレーションを実行する際のオーバーランを防止するのに役立ちます。

データのログ記録と監視のガイドライン

データのログ記録と監視は、メモリと処理能力を消費する対話型の手続きです。計算コストを削減する方法の 1 つは、シミュレーション時に発生する対話型処理の量を削減することです。データのログ記録時と監視時に計算コストを制限するためのベスト プラクティスは次のとおりです。

  • Outport ブロックは、開発用コンピューター上で Simulink® モデルを介して解析データをログに記録する必要がある場合にのみ使用します。

  • Scope ブロックは、開発用コンピューター上で Simulink モデルを介してリアルタイム シミュレーションを行う際のデータを監視する必要がある場合にのみ使用します。

  • データをログに記録したり、変数を監視する必要がある場合、解析の要件で許可される限り、収集するデータ点の数を制限するか間引きします。

  • データは 1 回だけ記録します。

  • Simscape™ データ ログを使用している場合、ローカル設定を使用して、解析に必要な変数を含むブロックのみをログに記録するように制限します。

    メモ

    Simscape シミュレーション データ ログは、生成コードではサポートされていません。

データのログ記録と監視の効率の向上

モデルの構成とシミュレーション結果を確認し、モデルがデータを効率的にログに記録し、監視しているかどうかを判断します。

  1. このモデルを開くには、MATLAB® コマンド プロンプトで次を入力します。

    model = 'ssc_pneumatic_rts_zc_redux';
    open_system(model)

    モデルには 3 つの Scope ブロックと 1 つの Outport ブロックがあります。Power (kW) Scope、RPM Scope、Outport の各ブロックは、Measurements サブシステムからデータを受信します。

  2. モデルをシミュレートします。

    sim(model)

    モデルは Simscape シミュレーション データ ログ ノードを含む 5 つの変数をワークスペースに記録します。

  3. Pneu_rts_RPM_DATA のソースを判断するには、MATLAB ワークスペースで構造を開きます。または、コマンド ラインで次のように入力します。

    Pneu_rts_RPM_DATA.blockName
    ans =
    
        'ssc_pneumatic_rts_zc_redux/RPM'

    変数 blockName は、RPM Scope によってデータがログに記録されることを示します。モデルでは、yout にデータを記録する Outport は、Measurements サブシステムと RPM Scope ブロック間の信号に接続されています。

  4. Pneu_rts_RPM_DATAyout がログに記録するデータを比較するには、両方のデータセットを 1 つの Figure にプロットします。

    h1 = figure;
    plot(tout,yout)
    h1;
    hold on
    plot(Pneu_rts_RPM_DATA.time,Pneu_rts_RPM_DATA.signals.values,'r--')
    title('Speed')
    xlabel('Time (s)')
    ylabel('Speed (rpm)')
    h1Leg = legend({'yout','Pneu-rts-RPM-DATA'});

    データは同じです。つまり、同じデータを 2 回ログに記録していることになります。

リアルタイム シミュレーション時に、開発用コンピューター上で Simulink モデルを介して速度データをログ記録または監視する計算コストを削減するには、次を行います。

  • 速度データのログ記録のみが必要な場合、RPM Scope ブロックを削除します。

  • 速度データのログ記録と監視が必要な場合、Outport ブロックを削除します。

  • 速度データの監視のみが必要な場合、Outport ブロックを削除し、RPM Scope のデータのログ記録を無効にします。

ターゲット ハードウェア上でのリアルタイム シミュレーション時に、開発用コンピューターで Simulink モデルを介してログ記録または監視する必要がない場合は、RPM Scope ブロックと Outport ブロックの両方を削除します。

Scope ブロックと Outport ブロックを削除してコストを削減したいが、モデルをリアルタイム シミュレーション用に準備する間にデータのログも取りたいという場合は、必要なデータのみをログに記録するようモデルを構成します。これを行うには、MATLAB ワークスペースの simlog ノードを使用します。詳細は、選択したブロックのみのデータのログ作成を参照してください。

計算コストを削減するその他の手法

ログ記録や監視の対象とする信号の数を削減する以外に、以下の手法を使用して、シミュレーション時にプロセッサが実行するタイム ステップごとのタスクの数と複雑度を削減できます。

  • 大きなイメージや複雑なグラフィックスの使用を避ける。

  • 不要なエラー診断や警告診断を無効にする。

  • 許容誤差を再設定する。

  • 複雑なサブシステムを簡略化するか、ルックアップ テーブルで置き換える。

  • 非線形効果を線形化する。

  • 1 による乗算など、冗長な計算を削除する。

  • 微分代数方程式 (DAE) の数を減らす。

関連する例

詳細