Main Content

parsim

動的システムを並列または逐次で複数回シミュレーションする

説明

simOut = parsim(in) は、SimulationInput オブジェクト in で指定された入力を使用してモデルをシミュレートします。関数 parsim は、SimulationInput オブジェクトの配列を使用して複数のシミュレーションを実行します。

simOut = parsim(in,Name=Value) は、SimulationInput オブジェクトで指定された入力と 1 つ以上の名前と値の引数を使用して指定されたオプションを使用してモデルを並列にシミュレートします。

関数 parsim でシミュレーションを並列実行するには、Parallel Computing Toolbox™ のライセンスが必要です。関数 parsim は、並列プールを作成できない場合や Parallel Computing Toolbox が使用されていない場合はシミュレーションを逐次実行します。

すべて折りたたむ

ラピッド アクセラレータ モードでモデル vdp をシミュレートします。

モデルを読み込みます。

openExample('simulink_general/VanDerPolOscillatorExample')
mdl = "vdp";
load_system(mdl)

このステップでラピッド アクセラレータ ターゲットが作成されます。

Simulink.BlockDiagram.buildRapidAcceleratorTarget(mdl);

SimulationInput オブジェクトを作成し、関数 setModelParameter を使用して RapidAcceleratorUpToDateCheck"off" に設定します。

in = Simulink.SimulationInput(mdl);
in = setModelParameter(in,SimulationMode="rapid-accelerator");
in = setModelParameter(in,RapidAcceleratorUpToDateCheck="off");
 

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

out = parsim(in);

変数をスイープしてモデル CSTR を並列でシミュレートします。スイープを実行するために SimulationInput オブジェクトの配列が使用されます。

スイープ値を指定します。

FeedTempSweep = 250:10:300;

SimulationInput オブジェクトの配列を作成します。

for i = length(FeedTempSweep):-1:1
in(i) = Simulink.SimulationInput('CSTR');
in(i) = in(i).setVariable('FeedTemp0',FeedTempSweep(i));
end

モデルを並列でシミュレートします。

out = parsim(in, 'ShowSimulationManager', 'on')
[29-Jun-2022 15:05:52] Checking for availability of parallel pool...
Starting parallel pool (parpool) using the 'Processes' profile ...
Connected to the parallel pool (number of workers: 6).
[29-Jun-2022 15:07:01] Starting Simulink on parallel workers...
[29-Jun-2022 15:07:34] Configuring simulation cache folder on parallel workers...
[29-Jun-2022 15:07:35] Loading model on parallel workers...
[29-Jun-2022 15:07:49] Running simulations...
[29-Jun-2022 15:08:24] Completed 1 of 6 simulation runs
[29-Jun-2022 15:08:24] Completed 2 of 6 simulation runs
[29-Jun-2022 15:08:24] Completed 3 of 6 simulation runs
[29-Jun-2022 15:08:27] Completed 4 of 6 simulation runs
[29-Jun-2022 15:08:28] Completed 5 of 6 simulation runs
[29-Jun-2022 15:08:28] Completed 6 of 6 simulation runs
[29-Jun-2022 15:08:28] Cleaning up parallel workers...

out = 

1x6 Simulink.SimulationOutput array


入力引数

すべて折りたたむ

並列シミュレーションの入力とコンフィギュレーション。Simulink.SimulationInput オブジェクトの配列として指定します。

名前と値の引数

引数のオプションのペアを Name1=Value1,...,NameN=ValueN として指定します。Name は引数名、Value は対応する値です。名前と値の引数は他の引数の後に表示されなければなりませんが、ペアの順序は重要ではありません。

R2021a より前は、名前と値をそれぞれコンマを使って区切り、Name を引用符で囲みます。

例: ShowProgress="on"

並列プールに添付する追加ファイル。文字ベクトルの cell 配列として指定します。関数 parsim では、From File ブロックを使用したサブディレクトリ内の MAT ファイルからのデータの読み込みはサポートされません。

シミュレーションの進行状況を表示するオプション。"on" または "off" として指定します。"on" に設定すると、シミュレーションの進行状況が MATLAB® コマンド ウィンドウに表示されます。"off" に設定すると、進行状況は非表示になります。

メモ

進行状況を表示している場合、最後のいくつかのシミュレーションが完了する前に、メッセージ 'Cleaning up parallel workers..' が表示されることがあります。このメッセージはシミュレーションの完了に依存しません。future から出力が取得されたときにシミュレーションは完了します。詳細については、Simulink.Simulation.Future を参照してください。

シミュレーションをバックグラウンドで実行するオプション。"off" または "on" として指定します。"on" に設定すると、シミュレーションが非同期に実行され、MATLAB コマンド プロンプトは使用可能な状態で維持されます。バックグラウンドで実行されているシミュレーションを終了するには、Simulink.Simulation.Future オブジェクトの関数 cancel を使用します。

引数 'RunInBackground'"on" として指定すると、関数 parsimSimulink.Simulation.Future オブジェクトを返します。Simulink.Simulation.Future オブジェクトは、SimulationOutput オブジェクトにアクセスするために使用します。

シミュレーションの開始前にワーカーごとに 1 回実行される関数。関数ハンドルとして指定します。

例: SetupFcn=@()openProject("Modelex/Model_example.prj")

メモ

buildRapidAcceleratorTargetSetupFcn で使用され、モデルに外部入力が指定されている場合、LoadExternalInput"off" に設定するか、指定されている外部入力がワーカー上で使用できることを確認し、コンパイル エラーを回避します。

シミュレーションの実行後にワーカーごとに 1 回実行される関数。関数ハンドルとして指定します。

モデルの依存関係を管理するオプション。"on" または "off" として指定します。ManageDependencies"on" に設定されているときは、必要に応じてモデルの依存関係が自動的に並列ワーカーに送信されます。ManageDependencies"off" に設定されているときは、モデルの依存関係を並列プールに明示的に付加します。

高速リスタートを使用するオプション。"off" または "on" として指定します。UseFastRestart"on" に設定されている場合、シミュレーションは高速リスタートを使用してワーカーで実行されます。

Simscape™ コンポーネントのプロパティ (Simscape Multibody™Solid ブロックの重心と慣性など) が変わるパラメーター スイープを実行する場合は、Simscape ブロック パラメーターを実行時に構成可能として指定します。詳細については、Simscape 実行時パラメーターについて (Simscape)を参照してください。

メモ

関数 parsim では、To File ブロックを含むモデルの高速リスタートはサポートされません。

変数を並列ワーカーに転送するオプション。"off" または "on" として指定します。TransferBaseWorkspaceVariables"on" に設定されている場合、モデルに使用される変数とベース ワークスペースに定義されているすべてのものが並列ワーカーに転送されます。

大規模なシミュレーションでは TransferBaseWorkspaceVariables オプションは推奨されません。不要なベース ワークスペース データを転送すると、むだなネットワークやメモリの使用につながります。代わりに、プロジェクト起動スクリプト、モデル コールバック関数、または名前と値の引数 SetupFcn を使用してベース ワークスペース データを定義することを検討してください。

シミュレーション マネージャーを開くオプション。"off" または "on" として指定します。ShowSimulationManager"on" に設定すると、シミュレーション マネージャーを使用してシミュレーションを監視できます。

シミュレーション エラーが発生した場合に残りのシミュレーションをスキップするオプション。"off" または "on" として指定します。StopOnError"on" に設定すると、シミュレーション エラーが発生した場合にシミュレーションの実行が停止します。

出力引数

すべて折りたたむ

シミュレーション結果。Simulink.SimulationOutput オブジェクトの配列として返されます。それぞれのオブジェクトに、シミュレーションでログ記録されたすべてのデータが格納されています。配列のサイズは Simulink.SimulationInput オブジェクトの配列のサイズと等しくなります。

すべてのシミュレーション出力 (ログ記録された時間、状態、および信号) が単一の Simulink.SimulationOutput オブジェクトで返されます。ログ記録するデータは、[コンフィギュレーション パラメーター] ダイアログ ボックスの [データのインポート/エクスポート] ペインを使用して指定します。To WorkspaceScope ブロックなどのブロックを使用して、信号をログ記録できます。[信号とスコープのマネージャー] は、信号を直接ログ記録できます。

拡張機能

バージョン履歴

R2017a で導入