Main Content

並列シミュレーションの実行

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 を使用します。

参考

オブジェクト

関数

ツール

関連するトピック