parsim
動的システムを並列または逐次で複数回シミュレーションする
説明
は、simOut
= parsim(in
)SimulationInput
オブジェクト in で指定された入力を使用してモデルをシミュレートします。関数 parsim
は、SimulationInput
オブジェクトの配列を使用して複数のシミュレーションを実行します。
は、simOut
= parsim(in
,Name=Value
)SimulationInput
オブジェクトで指定された入力と 1 つ以上の名前と値の引数を使用して指定されたオプションを使用してモデルを並列にシミュレートします。
関数 parsim
でシミュレーションを並列実行するには、Parallel Computing Toolbox™ のライセンスが必要です。関数 parsim
は、並列プールを作成できない場合や Parallel Computing Toolbox が使用されていない場合はシミュレーションを逐次実行します。
例
ラピッド アクセラレータでの parsim
の使用
ラピッド アクセラレータ モードでモデル 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);
parsim を使用したモデルの並列シミュレーション
変数をスイープしてモデル 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
入力引数
in
— 並列シミュレーションの入力とコンフィギュレーション
Simulink.SimulationInput
オブジェクトの配列
並列シミュレーションの入力とコンフィギュレーション。Simulink.SimulationInput
オブジェクトの配列として指定します。
名前と値の引数
引数のオプションのペアを Name1=Value1,...,NameN=ValueN
として指定します。Name
は引数名、Value
は対応する値です。名前と値の引数は他の引数の後に表示されなければなりませんが、ペアの順序は重要ではありません。
R2021a より前は、名前と値をそれぞれコンマを使って区切り、Name
を引用符で囲みます。
例: ShowProgress="on"
AttachedFiles
— 並列プールに付加するファイル
文字ベクトルの cell 配列
並列プールに添付する追加ファイル。文字ベクトルの cell 配列として指定します。関数 parsim
では、From File ブロックを使用したサブディレクトリ内の MAT ファイルからのデータの読み込みはサポートされません。
ShowProgress
— シミュレーションの進行状況を表示するオプション
"on"
(既定) | "off"
シミュレーションの進行状況を表示するオプション。"on"
または "off"
として指定します。"on"
に設定すると、シミュレーションの進行状況が MATLAB® コマンド ウィンドウに表示されます。"off"
に設定すると、進行状況は非表示になります。
メモ
進行状況を表示している場合、最後のいくつかのシミュレーションが完了する前に、メッセージ 'Cleaning up parallel workers..'
が表示されることがあります。このメッセージはシミュレーションの完了に依存しません。future
から出力が取得されたときにシミュレーションは完了します。詳細については、Simulink.Simulation.Future
を参照してください。
RunInBackground
— シミュレーションをバックグラウンドで実行するオプション
"off"
(既定値) | "on"
シミュレーションをバックグラウンドで実行するオプション。"off"
または "on"
として指定します。"on"
に設定すると、シミュレーションが非同期に実行され、MATLAB コマンド プロンプトは使用可能な状態で維持されます。バックグラウンドで実行されているシミュレーションを終了するには、Simulink.Simulation.Future
オブジェクトの関数 cancel
を使用します。
引数 'RunInBackground'
を "on"
として指定すると、関数 parsim
は Simulink.Simulation.Future
オブジェクトを返します。Simulink.Simulation.Future
オブジェクトは、SimulationOutput
オブジェクトにアクセスするために使用します。
SetupFcn
— シミュレーションの開始前にワーカーごとに 1 回実行される関数
関数ハンドル
シミュレーションの開始前にワーカーごとに 1 回実行される関数。関数ハンドルとして指定します。
例: SetupFcn=@()openProject("Modelex/Model_example.prj")
メモ
buildRapidAcceleratorTarget
が SetupFcn
で使用され、モデルに外部入力が指定されている場合、LoadExternalInput
を "off"
に設定するか、指定されている外部入力がワーカー上で使用できることを確認し、コンパイル エラーを回避します。
CleanupFcn
— シミュレーションの実行後にワーカーごとに 1 回実行される関数
関数ハンドル
シミュレーションの実行後にワーカーごとに 1 回実行される関数。関数ハンドルとして指定します。
ManageDependencies
— モデルの依存関係を管理するオプション
"on"
(既定値) | "off"
モデルの依存関係を管理するオプション。"on"
または "off"
として指定します。ManageDependencies
が "on"
に設定されているときは、必要に応じてモデルの依存関係が自動的に並列ワーカーに送信されます。ManageDependencies
が "off"
に設定されているときは、モデルの依存関係を並列プールに明示的に付加します。
UseFastRestart
— 高速リスタートを使用するオプション
"off"
(既定値) | "on"
高速リスタートを使用するオプション。"off"
または "on"
として指定します。UseFastRestart
が "on"
に設定されている場合、シミュレーションは高速リスタートを使用してワーカーで実行されます。
Simscape™ コンポーネントのプロパティ (Simscape Multibody™ の Solid ブロックの重心と慣性など) が変わるパラメーター スイープを実行する場合は、Simscape ブロック パラメーターを実行時に構成可能として指定します。詳細については、Simscape 実行時パラメーターについて (Simscape)を参照してください。
メモ
関数 parsim
では、To File ブロックを含むモデルの高速リスタートはサポートされません。
TransferBaseWorkspaceVariables
— 変数を並列ワーカーに転送するオプション
"off"
(既定値) | "on"
変数を並列ワーカーに転送するオプション。"off"
または "on"
として指定します。TransferBaseWorkspaceVariables
が "on"
に設定されている場合、モデルに使用される変数とベース ワークスペースに定義されているすべてのものが並列ワーカーに転送されます。
大規模なシミュレーションでは TransferBaseWorkspaceVariables
オプションは推奨されません。不要なベース ワークスペース データを転送すると、むだなネットワークやメモリの使用につながります。代わりに、プロジェクト起動スクリプト、モデル コールバック関数、または名前と値の引数 SetupFcn
を使用してベース ワークスペース データを定義することを検討してください。
ShowSimulationManager
— シミュレーション マネージャーを開くオプション
"off"
(既定値) | "on"
シミュレーション マネージャーを開くオプション。"off"
または "on"
として指定します。ShowSimulationManager
を "on"
に設定すると、シミュレーション マネージャーを使用してシミュレーションを監視できます。
StopOnError
— シミュレーション エラーが発生した場合に残りのシミュレーションをスキップするオプション
"off"
(既定値) | "on"
シミュレーション エラーが発生した場合に残りのシミュレーションをスキップするオプション。"off"
または "on"
として指定します。StopOnError
を "on"
に設定すると、シミュレーション エラーが発生した場合にシミュレーションの実行が停止します。
出力引数
simOut
— シミュレーション結果
Simulink.SimulationOutput
オブジェクトの配列
シミュレーション結果。Simulink.SimulationOutput
オブジェクトの配列として返されます。それぞれのオブジェクトに、シミュレーションでログ記録されたすべてのデータが格納されています。配列のサイズは Simulink.SimulationInput
オブジェクトの配列のサイズと等しくなります。
すべてのシミュレーション出力 (ログ記録された時間、状態、および信号) が単一の Simulink.SimulationOutput
オブジェクトで返されます。ログ記録するデータは、[コンフィギュレーション パラメーター] ダイアログ ボックスの [データのインポート/エクスポート] ペインを使用して指定します。To Workspace や Scope ブロックなどのブロックを使用して、信号をログ記録できます。[信号とスコープのマネージャー] は、信号を直接ログ記録できます。
拡張機能
自動並列サポート
Parallel Computing Toolbox™ を使用して自動的に並列計算を実行することで、コードを高速化します。
Parallel Computing Toolbox をインストールしている場合、parsim
を使用すると、MATLAB ではローカル マシンでワーカーの並列プールが自動的に開きます。MATLAB は使用可能なワーカーでシミュレーションを実行します。クラスターへのスケール アップなど、並列基本設定を使用して並列動作を制御します。
詳細については、Running Multiple Simulationsを参照してください。
バージョン履歴
R2017a で導入
参考
オブジェクト
ツール
関数
MATLAB コマンド
次の MATLAB コマンドに対応するリンクがクリックされました。
コマンドを MATLAB コマンド ウィンドウに入力して実行してください。Web ブラウザーは MATLAB コマンドをサポートしていません。
Select a Web Site
Choose a web site to get translated content where available and see local events and offers. Based on your location, we recommend that you select: .
You can also select a web site from the following list:
How to Get Best Site Performance
Select the China site (in Chinese or English) for best site performance. Other MathWorks country sites are not optimized for visits from your location.
Americas
- América Latina (Español)
- Canada (English)
- United States (English)
Europe
- Belgium (English)
- Denmark (English)
- Deutschland (Deutsch)
- España (Español)
- Finland (English)
- France (Français)
- Ireland (English)
- Italia (Italiano)
- Luxembourg (English)
- Netherlands (English)
- Norway (English)
- Österreich (Deutsch)
- Portugal (English)
- Sweden (English)
- Switzerland
- United Kingdom (English)