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

运行并行仿真

parsim 命令允许您对模型(设计)运行并行(同时)Simulink® 仿真。在这种情况下,并行运行意味着在不同的工作进程中同时运行多个模型仿真。parsim 可让您在蒙特卡罗分析、参数扫描、模型测试、实验设计和模型优化等场景中,很方便地采用不同的输入或不同的参数设置运行同一模型。目前,不支持通过将模型分解为较小的组件并在多个工作进程中同时运行这些组件来并行运行整个仿真。

要使用 parsim 并行运行仿真,您需要具有用于本地工作进程的 Parallel Computing Toolbox™。此外,针对多个计算机群集、云和网格等场景,您还可以使用 MATLAB® Parallel Server™。在没有 Parallel Computing Toolbox 和 MATLAB Parallel Server 的情况下,parsim 以串行方式运行仿真。有关详细信息,请参阅Parallel Computing ToolboxMATLAB Parallel Server

如果不存在并行池,parsim 将基于默认群集配置文件创建一个池。要使用非默认群集,请在调用 parsim 之前使用该群集的配置文件创建一个池。

此示例针对一组扫描参数并行运行多个仿真。

% 1) Load model
model = 'sldemo_suspn_3dof';
load_system(model);

% 2) Set up the sweep parameters
Cf_sweep  = 2500*(0.05:0.1:0.95);
numSims   = numel(Cf_sweep);

% 3) Create an array of SimulationInput objects and specify the sweep value for each simulation
simIn(1:numSims) = Simulink.SimulationInput(model);
for idx = 1:numSims
    simIn(idx) = simIn(idx).setBlockParameter([model '/Road-Suspension Interaction'], 'Cf', num2str(Cf_sweep(idx)))
end

% 4) Simulate the model 
simOut = parsim(simIn)

parsim 的工作原理

parsim 基于 Simulink.SimulationInput 对象运行具有不同参数和值的仿真。每个 SimulationInput 对象指定模型的一个仿真。可以创建一个由这些对象组成的数组,以用于多个仿真。有关详细信息,请参阅运行多个仿真

您可以对 Simulink.SimulationInput 对象使用以下方法和属性:

  • setVariables - 更改基础工作区、数据字典或模型工作区中的变量

  • setBlockParameters - 更改模块参数

  • setModelParameters - 更改模型参数

  • setPreSimFcn - 指定在每次仿真之前先运行 MATLAB 函数,以在群集上进行自定义和后处理结果

  • setPostSimFcn - 指定在每次仿真之后运行 MATLAB 函数,以在群集上进行自定义和后处理结果

  • InitialState - 更改初始状态

  • ExternalInput - 将数值数组、时序或数据集对象指定为模型的外部输入

以下流程图显示执行 parsim 时发生的一系列事件

使用 parsim 时,可以覆盖对模型库模块的更改。在新工作进程上建立模型时,模型直接从工作进程库中继承属性。使用 SetUpFcnparsim 将模型库模块更改传递给工作进程。

另请参阅

| | | | | | | | | |

相关主题