並列シミュレーションの実行
parsim
コマンドを使用すると、モデル (設計) の並列 (同時) Simulink® シミュレーションを実行できます。ここでは、並列実行は複数のシミュレーションを異なるワーカーで同時に実行することを意味します。parsim
により、モンテカルロ解析、パラメーター スイープ、モデルのテスト、実験設計およびモデルの最適化などのシナリオで異なる入力または異なるパラメーター設定をもつ同じモデルを実行しやすくなります。モデルを小さなコンポーネントに分割することで単一のシミュレーションを並列で実行する機能や、複数のワーカーでこれらの個々の部分を同時に実行する機能は現在サポートされていません。
parsim
を使用してシミュレーションを並列で実行するには、ローカル ワーカーに Parallel Computing Toolbox™ が必要です。さらに、複数のコンピューター クラスター、クラウドおよびグリッドに MATLAB® Parallel Server™ を使用できます。Parallel Computing Toolbox および MATLAB Parallel Server がない場合、parsim
はシミュレーションを逐次実行します。詳細については、Parallel Computing ToolboxおよびMATLAB Parallel Serverを参照してください。
並列プールが存在しない場合、parsim
は既定のクラスター プロファイルからプールを作成します。既定以外のクラスターを使用するには、parsim
を呼び出す前にそのクラスター プロファイルをもつプールを作成します。
この例では、一連のスイープ パラメーターについて複数のシミュレーションを並列で実行します。
% 1) Load model openExample('sldemo_suspn_3dof'); model = 'sldemo_suspn_3dof'; load_system(model); % 2) Set up the sweep parameters Cf_sweep = 2500*(0.05:0.1:0.95); numSims = numel(Cf_sweep); % 3) Create an array of SimulationInput objects and specify the sweep value for each simulation simIn(1:numSims) = Simulink.SimulationInput(model); for idx = 1:numSims simIn(idx) = simIn(idx).setBlockParameter([model '/Road-Suspension Interaction'], 'Cf', num2str(Cf_sweep(idx))) end % 4) Simulate the model 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