メインコンテンツ

複数のシミュレーションの実行

複数の並列シミュレーションおよび大量のデータのログ記録が含まれるワークフローについて、parsim 関数または batchsim 関数を使用するか、Simulink® エディターの [複数のシミュレーション] パネルでシミュレーションを実行できます。この方法は、モデルのテスト、実験の設計、モンテカルロ解析、モデルの最適化などのシナリオで役立ちます。

コマンド ライン ワークフロー (parsim 関数または batchsim 関数) の場合、Simulink.SimulationInput オブジェクトの配列を使用してシミュレーション セットを作成し、複数のシミュレーションを実行できます。代わりに、Simulink の [複数のシミュレーション] パネルを使用することもできます。

[複数のシミュレーション] パネルでは、設計検討を作成してシミュレーションの値を指定できます。このパネルでは、ブロック パラメーターの値とシミュレーション用の変数を指定できます。

Parallel Computing Toolbox™ をお持ちの場合、parsim 関数と batchsim 関数、および [複数のシミュレーション] パネルを使用してシミュレーションを並列実行することもできます。

メモ

プールがまだ開かれていない状態でシミュレーションを初めて実行すると、シミュレーションの開始までにさらに時間を要します。その後の並列シミュレーションは速くなります。

Simulink エディターを使用した複数のシミュレーション

[複数のシミュレーション] パネルでは、ブロック パラメーターと変数のさまざまな値について複数のシミュレーションを設定できます。モデル キャンバスから対象のブロック パラメーターを選択し、シミュレーションで使用する値を指定できます。シミュレーション用の変数を指定することもできます。設定したシミュレーションを実行するには、設計検討を選択してから、Simulink ツールストリップの [シミュレーション] タブで [すべて実行] ボタンをクリックします。詳細については、Use Multiple Simulations Panel to Run Design Study with Different Parameter Valuesの例を参照してください。

Parallel Computing Toolbox を使用した複数のシミュレーション

並列実行時には、parsim 関数と [複数のシミュレーション] パネルは各シミュレーションを並列プール ワーカーに分散させて、全体のシミュレーション時間を短縮します。parsim 関数と [複数のシミュレーション] パネルを使用すると並列プールが作成されます。このプールでは、ファイルの依存関係を特定したり、アクセラレータ モードとラピッド アクセラレータ モードのシミュレーションのビルド アーティファクトを管理したりできます。

batchsim 関数は、シミュレーションを計算クラスターにオフロードします。シミュレーションはこのクラスターで実行されるため、バッチ ジョブの処理中に他のタスクを実行できます。また、クライアントの MATLAB® セッションを閉じて、バッチ ジョブに後でアクセスすることもできます。

batchsim 関数は、Parallel Computing Toolbox™ ライセンスを使用して、計算クラスター上でシミュレーションを実行します。batchsim 関数は、並列プールを作成できない場合、シミュレーションを逐次実行します。Parallel Computing Toolbox のライセンスがない場合は、batchsim 関数でエラーが発生します。

sim 関数を使用した複数のシミュレーション

Parallel Computing Toolbox のライセンスがない場合、parsim 関数と [複数のシミュレーション] パネルは sim コマンドと同様に機能します。シミュレーションは逐次実行されます。

Simulink.SimulationInput オブジェクトを使用した複数のシミュレーション

コマンド ライン ワークフローでは、Simulink.SimulationInput オブジェクトを使用してモデルを変更し、その変更した状態でシミュレーションを並列実行できます。Simulink.SimulationInput オブジェクトの値を変更すると、モデルの値がオーバーライドされるため、モデルの変更を未保存 (ダーティ) にすることなくモデルを変更できます。Simulink.SimulationInput オブジェクトにより、PreSimFcn 関数と PostSimFcn 関数をそれぞれ使用して、各シミュレーションの開始時と終了時に MATLAB 関数が実行されるように指定することもできます。Simulink.SimulationInput オブジェクトを使用する場合、モデル パラメーターはシミュレーションの終了後に復元されます。家の熱モデルの parsim を使用した並列シミュレーションの実行を参照してください。Simulink.SimulationInput オブジェクトを使用すると、モデルで次の設定を変更できます。

  • 初期状態

  • 外部入力

  • モデル パラメーター

  • ブロック パラメーター

  • 変数

シミュレーション マネージャーによるシミュレーションの監視

シミュレーション マネージャーを使用すると、複数の並列シミュレーションを監視できます。並列実行中に実行の進行状況が表示されます。パラメーター、経過時間、診断といった、すべての実行の詳細を確認できます。シミュレーション マネージャーは、結果をシミュレーション データ インスペクターで解析して比較するオプションを備えているため、便利なツールとして機能します。実行を選択して、その値をモデルに適用することもできます。詳細については、シミュレーション マネージャーを参照してください。

parsim/batchsim 関数の機能

  • シミュレーション出力オブジェクトにエラーを出力するため、デバッグが容易

  • ラピッド アクセラレータと高速リスタートに対応

  • ファイルのログ記録に対応 (ビッグ データを促進するため)

  • ローカル並列プールに加えて MATLAB Parallel Server™ に対応

  • ベース ワークスペースの変数をワーカーに転送できる

  • 透明性のエラーを回避する

複数のシミュレーションのデータ ログ

結果として得られる Simulink.SimulationOutput オブジェクトには、シミュレーション出力が含まれており、エラー メッセージとシミュレーション メタデータが取得されています。[データのインポート/エクスポート]、[データセットのデータをファイルにログ] コンフィギュレーション パラメーターを選択すると、Simulink により、結果として得られる MAT ファイルに格納されている Dataset ごとに Simulink.SimulationData.DatasetRef オブジェクトが作成されます。DatasetRef オブジェクトは、Dataset 要素のデータにアクセスするために使用できます。Simulink.SimulationInput オブジェクトを使用して実行されるシミュレーションでは、DatasetRef オブジェクトは SimulationOutput オブジェクトの一部として返されます。このため、すぐにアクセスでき、その作成は必要ありません。

並列シミュレーションでは、MATLAB のメモリ容量を超えるログ データが生成されることがあります。並列シミュレーションのメモリ要件を緩和するために、永続ストレージにログを取ることを検討してください。[データのインポート/エクスポート]、[データセットのデータをファイルにログ] コンフィギュレーション パラメーター (LoggingToFile) を選択すると、Simulink の並列シミュレーションでは次の処理が行われます。

  • データのログが Dataset 形式で MAT ファイルに記録される

  • Simulink.SimulationData.DatasetRef オブジェクトが各シミュレーションのデータセット要素 (logsout など) ごとに作成される

DatasetRef オブジェクトを使用して、特定の信号のデータにアクセスできます。ログ データを永続ストレージからモデルにストリーミングするために使用する matlab.io.datastore.SimulationDatastore オブジェクトを作成できます。

参考

| | | | | | | | | |

トピック