Main Content

parsim

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

说明

示例

simOut = parsim(in) 使用 SimulationInput 对象 in 中指定的输入对模型进行仿真。parsim 命令使用 SimulationInput 对象数组作为输入来运行多个仿真。

simOut = parsim(in,'ShowSimulationManager','on') 使用 SimulationInput 对象中指定的输入对模型进行并行仿真,并打开仿真管理器 UI。有关详细信息,请参阅 Simulation Manager

simOut = parsim(in,Name,Value) 使用 SimulationInput 对象中指定的输入和指定为 Name,Value 对组的选项对模型进行并行仿真。

parsim 命令使用 Parallel Computing Toolbox™ 许可证以并行方式运行仿真。如果无法创建并行池,或者未使用 Parallel Computing Toolbox,则 parsim 以串行方式运行仿真。

示例

全部折叠

在快速加速模式下仿真模型 vdp

加载模型。

model = 'vdp';
load_system(model)

此步骤构建快速加速目标

Simulink.BlockDiagram.buildRapidAcceleratorTarget(model);

创建 SimulationInput 对象并使用 setModelParameter 方法将 RapidAcceleratorUpToDateCheck 设置为 'off'

in = Simulink.SimulationInput(model);
in = in.setModelParameter('SimulationMode', 'rapid-accelerator');
in = in.setModelParameter('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 对象或 Simulink.SimulationInput 对象的数组。

示例: in = Simulink.SimulationInput('vdp')

示例: for i = 10:-1:1 in(i) = Simulink.SimulationInput('vdp'); end

名称-值参数

示例: 'ShowProgress', 'on'

注意

传递给 parsim 命令的所有参数与 sim 命令使用的参数无关。向 parsim 命令传递下列输入参数列表。

指定可选的、以逗号分隔的 Name,Value 对组参数。Name 为参数名称,Value 为对应的值。NameValue 必须显示在单引号 (' ') 内。您可采用任意顺序指定多个名称-值对组参数,如 Name1,Value1,...,NameN,ValueN

附加到并行池的附加文件,指定为元胞数组。parsim 不支持从引用子目录中 mat 文件的 From File 模块中加载数据。

设置为 'on',以在命令行窗口中查看仿真的进度。当设置为 'off' 时,进度将隐藏。

注意

当显示进度时,可能会在最后几次仿真完成之前显示 'Cleaning up parallel workers..' 消息。此消息出现与否并不取决于仿真是否完成。只有当仿真从 future 获取到输出结果时,仿真才真正完成。有关详细信息,请参阅 Simulink.Simulation.Future

设置为 'on' 将以异步方式运行仿真,从而保持 MATLAB® 命令提示符可用。要终止在后台运行的仿真,请对 Simulink.Simulation.Future 对象使用 cancel 方法。

在开始仿真之前,将 function handle 指定为 'SetupFcn' 以对每个工作进程运行一次。

示例: 'SetupFcn',@()openProject('Modelex/Model_example.prj')

注意

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

function handle 指定为 'CleanupFcn' 以在仿真完成后对每个工作进程运行一次。

ManageDependencies 设置为 on 时,会在需要时自动向并行工作进程发送模型依存关系。如果将 ManageDependencies 设置为 off,则将模型依存关系显式附加到并行池。

UseFastRestart 设置为 on 时,仿真使用快速重启在工作进程上运行。

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

注意

使用 parsim 时,请使用 UseFastRestart 选项,而不使用 FastRestart 选项。有关详细信息,请参阅开始使用快速重启

快速重启模式下的 parsim 不支持具有 ToFile 模块的模型。

TransferBaseWorkspaceVariables 设置为 on 时,在模型中使用的变量和在基础工作区中定义的所有内容将传输给并行工作进程。

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

'ShowSimulationManager' 设置为 'on' 时,可以使用仿真管理器来监视仿真。

如果将 'StopOnError' 设置为 'on',则在遇到错误时将停止执行仿真。

输出参数

全部折叠

包含所有记录的仿真结果的 Simulink.SimulationOutput 对象的数组。数组的大小等于 Simulink.SimulationInput 对象的数组的大小。

在单个 Simulink.SimulationOutput 对象中返回所有仿真输出(记录的时间、状态和信号)。您使用模型配置参数对话框的“数据导入/导出”窗格来定义所记录的模型时间、状态和输出。您可以使用 To WorkspaceScope 等模块记录信号。信号和波形管理器可以直接记录信号。

扩展功能

版本历史记录

在 R2017a 中推出