主要内容

parsim

R2026b

以并行或串行方式进行多次动态系统仿真

描述

simOut = parsim(in) 使用在 SimulationInput 对象 in 中指定的输入以并行方式运行模型的多个仿真。parsim 函数使用 SimulationInput 对象数组作为输入来运行多个仿真。

simOut = parsim(in,Name=Value) 使用在 SimulationInput 对象中指定的输入和使用一个或多个名称-值参量指定的选项以并行方式运行模型的多个仿真。

futureOut = parsim(designStudy) 使用 simulink.multisim.DesignStudy 对象运行大量仿真。

parsim 函数需要 Parallel Computing Toolbox™ 许可证才能并行运行仿真。如果无法创建并行池或未使用 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);

通过扫描变量以并行方式仿真模型 CSTR。执行扫描时,使用了 SimulationInput 对象的数组。

指定扫描值。

FeedTempSweep = 250:10:300;

创建 SimulationInput 对象的数组。

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

以并行方式仿真模型。

out = parsim(in, 'ShowSimulationManager', 'on')
[18-Apr-2025 12:01:28] Checking for availability of parallel pool...
Starting parallel pool (parpool) using the 'Processes' profile ...
18-Apr-2025 12:02:44: Job Queued. Waiting for parallel pool job with ID 1 to start ...
Connected to parallel pool with 4 workers.
[18-Apr-2025 12:03:20] Starting Simulink on parallel workers...
[18-Apr-2025 12:04:22] Configuring simulation cache folder on parallel workers...
[18-Apr-2025 12:04:23] Loading model on parallel workers...
[18-Apr-2025 12:04:40] Running simulations...
[18-Apr-2025 12:05:32] Completed 1 of 6 simulation runs
[18-Apr-2025 12:05:33] Received simulation output (size: 20.27 KB) for run 2 from parallel worker.
[18-Apr-2025 12:05:33] Completed 2 of 6 simulation runs
[18-Apr-2025 12:05:33] Received simulation output (size: 20.23 KB) for run 1 from parallel worker.
[18-Apr-2025 12:05:33] Completed 3 of 6 simulation runs
[18-Apr-2025 12:05:33] Received simulation output (size: 20.66 KB) for run 3 from parallel worker.
[18-Apr-2025 12:05:36] Completed 4 of 6 simulation runs
[18-Apr-2025 12:05:36] Received simulation output (size: 35.89 KB) for run 4 from parallel worker.
[18-Apr-2025 12:05:43] Completed 5 of 6 simulation runs
[18-Apr-2025 12:05:43] Received simulation output (size: 37.81 KB) for run 6 from parallel worker.
[18-Apr-2025 12:05:43] Completed 6 of 6 simulation runs
[18-Apr-2025 12:05:43] Received simulation output (size: 39.53 KB) for run 5 from parallel worker.
[18-Apr-2025 12:05:43] Cleaning up parallel workers...

out = 

1x6 Simulink.SimulationOutput array


输入参数

全部折叠

并行仿真的输入和配置,指定为 Simulink.SimulationInput 对象数组。

大量并行仿真的输入和配置,指定为 simulink.multisim.DesignStudy 对象。

名称-值参数

全部折叠

将可选参量对组指定为 Name1=Value1,...,NameN=ValueN,其中 Name 是参量名称,Value 是对应的值。名称-值参量必须出现在其他参量之后,但对各个参量对组的顺序没有要求。

如果使用的是 R2021a 之前的版本,请使用逗号分隔每个名称和值,并用引号将 Name 引起来。

示例: ShowProgress="on"

要附加到并行池的其他文件,指定为字符向量元胞数组。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" 时,parsim 函数将返回 Simulink.Simulation.Future 对象。使用 Simulink.Simulation.Future 对象访问 SimulationOutput 对象。

在开始仿真之前对每个工作单元运行一次的函数,指定为函数句柄。

示例: SetupFcn=@()load("model_data.mat")

注意

当在 SetupFcn 中使用 buildRapidAcceleratorTarget 并且对模型指定了外部输入时,请将 LoadExternalInput 设置为 "off" 或确保指定的外部输入在工作单元上可用,以防出现编译错误。

在运行仿真后对每个工作单元运行一次的函数,指定为函数句柄。

管理模型依赖关系的选项,指定为 "on" 或 "off"。当 ManageDependencies 设置为 "on" 时,会在需要时自动向并行工作单元发送模型依赖关系。如果将 ManageDependencies 设置为 "off",则将模型依赖关系显式附加到并行池。

用于记录并行仿真以及 PreSimFcn 和 PostSimFcn 的日志信息的选项,指定为 'on' 或 'off'。您可以使用 setPreSimFcn 将诊断结果打印到日志中,以帮助调试 parsim 和 batchsim 设置问题。

使用快速重启的选项,指定为 "off" 或 "on"。当 UseFastRestart 设置为 "on" 时,仿真使用快速重启在工作单元上运行。有关详细信息,请参阅Script Iterative or Batch Simulations Using Fast Restart。

当执行会更改 Simscape™ 组件属性(如 Simscape Multibody™ 中 Solid 模块的质量和惯量)的参数扫描时,请将 Simscape 模块参数指定为可在运行时进行配置。有关详细信息,请参阅About Simscape Run-Time Parameters (Simscape)。

注意

parsim 函数不支持包含 To File 模块的模型的快速重启。

将变量传输给并行工作单元的选项,指定为 "off" 或 "on"。当 TransferBaseWorkspaceVariables 设置为 "on" 时,在模型中使用的变量和在基础工作区中定义的所有内容将传输给并行工作单元。

对于大规模仿真,不推荐使用 TransferBaseWorkspaceVariables 选项。传输不必要的基础工作区数据会无谓地占用网络和内存使用量。在这种情况下,请考虑使用工程启动脚本、模型回调函数或 SetupFcn 名称-值参量来定义基础工作区数据。

打开仿真管理器的选项,指定为 "off" 或 "on"。当 ShowSimulationManager 设置为 "on" 时,可以使用仿真管理器来监视仿真。

出现仿真错误时跳过其余仿真的选项,指定为 "off" 或 "on"。如果将 StopOnError 设置为 "on",则在发生仿真错误时会停止执行仿真。

运行 parsim simulink.multisim.DesignStudy 对象时用于保存仿真输出(包括记录和输入元数据)的位置路径。OutputLocation 指定为以下项之一:

  • 'cluster-storage' - 默认情况下,OutputLocation 使用并行池存储来写入仿真结果。存储的生命周期与基础并行作业的生命周期相关联。对于交互式池,作业会在池关闭时删除。

  • 'memory' - 内存存储,输出数据存储在内存中并直接返回到 MATLAB 客户端。

  • 'locationPath' - 绝对路径,指定为字符串或字符向量。

输出参量

全部折叠

仿真结果和元数据,以 Simulink.SimulationOutput 对象数组形式返回。

SimulationMetadata 是 Simulink.SimulationOutput 对象的属性,包含关于仿真的元数据,其中包括计时信息和诊断。例如,您可以使用 Simulation.Metadata 的 ExecutionInfo 属性来获取关于警告的信息。

示例: warningMessage = simOut.SimulationMetadata.ExecutionInfo.WarningDiagnostics

扩展功能

全部展开

版本历史记录

在 R2017a 中推出