本页对应的英文页面已更新,但尚未翻译。 若要查看最新内容,请点击此处访问英文页面。

parsim

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

说明

示例

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

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

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

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

示例

全部折叠

在 Rapid Accelerator 模式下仿真模型 vdp

加载模型。

model = 'vdp';
load_system(model)

此步骤构建 Rapid Accelerator 目标

Simulink.BlockDiagram.buildRapidAcceleratorTarget(model);

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

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, 'ShowProgress', 'on')
[08-Jan-2018 14:10:43] Checking for availability of parallel pool...
Starting parallel pool (parpool) using the 'local' profile ...
connected to 6 workers.
[08-Jan-2018 14:11:12] Loading Simulink on parallel workers...
[08-Jan-2018 14:11:40] Configuring simulation cache folder on parallel workers...
[08-Jan-2018 14:11:40] Loading model on parallel workers...
[08-Jan-2018 14:11:48] Running simulations...
[08-Jan-2018 14:12:04] Completed 1 of 6 simulation runs
[08-Jan-2018 14:12:04] Completed 2 of 6 simulation runs
[08-Jan-2018 14:12:04] Completed 3 of 6 simulation runs
[08-Jan-2018 14:12:08] Completed 4 of 6 simulation runs
[08-Jan-2018 14:12:09] Completed 5 of 6 simulation runs
[08-Jan-2018 14:12:09] Completed 6 of 6 simulation runs
[08-Jan-2018 14:12:09] Cleaning up parallel workers...

out = 

1x6 Simulink.SimulationOutput array


输入参数

全部折叠

用于在仿真中指定对模型所作更改的 Simulink.SimulationInput 对象或 Simulink.SimulationInput 对象的数组。

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

名称-值对组参数

示例: 'ShowProgress', 'on'

注意

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

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

指定为要附加到并行池的其他文件的元胞数组。

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

注意

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

设置为 'on' 将以异步方式运行仿真,从而保持 MATLAB® 命令提示符可用。

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

示例: 'SetupFcn',@()simulinkproject('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 选项。有关详细信息,请参阅开始使用快速重启

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

'ShowSimulationManager' 设置为 'on' 时,可以使用 Simulation Manager App 来监视仿真。

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

输出参数

全部折叠

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

在单个 Simulink.SimulationOutput 对象中返回所有仿真输出(记录的时间、状态和信号)。您使用 Model Configuration Parameters 对话框的 Data Import/Export 窗格来定义所记录的模型时间、状态和输出。您可以使用 To WorkspaceScope 等模块记录信号。Signal & Scope Manager 可以直接记录信号。

扩展功能

在 R2017a 中推出