並列シミュレーションの実行
parsim
コマンドを使用すると、モデル (設計) の並列 (同時) シミュレーションを実行できます。ここでは、並列実行は複数のシミュレーションを異なるワーカーで同時に実行することを意味します。関数 parsim
により、モンテカルロ解析、パラメーター スイープ、モデルのテスト、実験設計、モデルの最適化などのシナリオで、異なる入力や異なるパラメーター設定を使用して同じモデルを簡単に実行することができます。モデルを小さなコンポーネントに分割することで単一のシミュレーションを並列で実行する機能や、複数のワーカーでこれらの個々の部分を同時に実行する機能は現在サポートされていません。
Simulink エディターから [複数のシミュレーション] パネルを使用して複数のシミュレーションを実行できます。モデル キャンバスから対象のブロック パラメーターを選択し、シミュレーションで使用する値を指定できます。[複数のシミュレーション] パネルで、シミュレーションを並列で実行する [並列の使用] などの構成を指定できます。設定したシミュレーションを実行するには、設計検討を選択してから、Simulink® ツールストリップの [シミュレーション] タブで [すべて実行] をクリックします。シミュレーションが完了したら、シミュレーション マネージャーで結果を表示および管理できます。詳細については、Multiple Simulations Panel: Simulate for Different Values of Stiffness for a Vehicle Dynamics SystemおよびConfigure and Run Simulations with Multiple Simulations Panelを参照してください。
関数 parsim
を使用してシミュレーションを並列で実行するには、ローカル ワーカーに Parallel Computing Toolbox™ が必要です。さらに、複数のコンピューター クラスター、クラウドおよびグリッドに MATLAB® Parallel Server™ を使用できます。Parallel Computing Toolbox および MATLAB Parallel Server がない場合、関数 parsim
はシミュレーションを逐次実行します。詳細については、Parallel Computing ToolboxおよびMATLAB Parallel Serverを参照してください。
並列プールが存在しない場合、関数 parsim
は既定のクラスター プロファイルからプールを作成します。既定以外のクラスターを使用するには、関数 parsim
を呼び出す前にそのクラスター プロファイルをもつプールを作成します。
この例では、一連のスイープ パラメーターについて複数のシミュレーションを並列で実行します。
mdl = "sldemo_suspn_3dof"; openExample(... "simulink_features/MultipleSimulationsWorkflowTipsExample",... supportingFile=mdl) Cfsweep = 2500*(0.05:0.1:0.95); numSims = numel(Cfsweep); simIn(1:numSims) = Simulink.SimulationInput(mdl); for idx = 1:numSims simIn(idx) = setBlockParameter(simIn(idx),... (mdl + "/Road-Suspension Interaction"),... "Cf",num2str(Cfsweep(idx))); end simOut = parsim(simIn);
parsim
の機能
関数 parsim
は、Simulink.SimulationInput
オブジェクトに基づいて、さまざまなパラメーターおよび値を使用してシミュレーションを実行します。各 SimulationInput
オブジェクトは、モデルの 1 つのシミュレーションを指定します。これらのオブジェクトの配列が複数のシミュレーションに対して作成されます。詳細については、Running Multiple Simulationsを参照してください。
Simulink.SimulationInput
オブジェクトでは次の関数とプロパティを使用できます。
setVariables
- ベース ワークスペース、データ ディクショナリまたはモデル ワークスペースでの変数の変更setBlockParameter
- ブロック パラメーターの変更setModelParameter
- モデル パラメーターの変更setPreSimFcn
- カスタマイズおよびクラスターでの後処理結果に対して各シミュレーションの前に実行する MATLAB 関数の指定setPostSimFcn
- カスタマイズおよびクラスターでの後処理結果に対して各シミュレーションの後に実行する MATLAB 関数の指定InitialState
- 初期状態の変更ExternalInput
- 数値配列、timeseries または Dataset オブジェクトのモデルへの外部入力としての指定
次のフローチャートは、関数 parsim
の実行時に発生するイベントの一般的な順序を示しています。
関数 parsim
を使用する場合、モデル ライブラリ ブロックに対する変更が上書きされる可能性があります。モデルが新しいワーカーで設定される場合、モデルはプロパティをワーカー ライブラリから直接継承します。モデル ライブラリ ブロックの変更をワーカーに転送するには、関数 parsim
の名前と値の引数 SetUpFcn
を使用します。
参考
オブジェクト
関数
applyToModel
|setBlockParameter
|setModelParameter
|setInitialState
|setExternalInput
|setVariable
|validate
|setPreSimFcn
|setPostSimFcn