Main Content

本页翻译不是最新的。点击此处可查看最新英文版本。

运行并行仿真

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

您可以通过具有多个仿真面板的 Simulink 编辑器运行多个仿真。您可以从模型画布中选取一个感兴趣的模块参数,并指定要用于仿真的值。使用“多个仿真”面板,您可以提供类似使用并行的配置以并行方式运行您的仿真。要运行您设置的仿真,请首先选择设计研究,然后点击 Simulink 工具条的仿真选项卡上的全部运行按钮。在仿真完成后,您可以在仿真管理器中查看和管理结果。有关详细信息,请参阅Multiple Simulations Panel: Simulate for Different Values of Stiffness for a Vehicle Dynamics SystemConfigure and Run Simulations with Multiple Simulations Panel

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

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

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

% 1) Load model
openExample('sldemo_suspn_3dof');
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 对象指定模型的一个仿真。可以创建一个由这些对象组成的数组,以用于多个仿真。有关详细信息,请参阅Running Multiple Simulations

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

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

  • setBlockParameter - 更改模块参数

  • setModelParameter - 更改模型参数

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

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

  • InitialState - 更改初始状态

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

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

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

另请参阅

对象

函数

工具

相关主题