运行并行仿真
parsim
命令允许您对模型(设计)运行并行(同时)Simulink® 仿真。在这种情况下,并行运行意味着在不同的工作进程中同时运行多个模型仿真。parsim
可让您在蒙特卡罗分析、参数扫描、模型测试、试验设计和模型优化等场景中,很方便地采用不同的输入或不同的参数设置运行同一模型。目前,不支持通过将模型分解为较小的组件并在多个工作进程中同时运行这些组件来并行运行整个仿真。
要使用 parsim
并行运行仿真,您需要具有用于本地工作进程的 Parallel Computing Toolbox™。此外,针对多个计算机集群、云和网格等场景,您还可以使用 MATLAB® Parallel Server™。在没有 Parallel Computing Toolbox 和 MATLAB Parallel Server 的情况下,parsim
以串行方式运行仿真。有关详细信息,请参阅Parallel Computing Toolbox和MATLAB 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
时,可以覆盖对模型库模块的更改。在新工作进程上建立模型时,模型直接从工作进程库中继承属性。使用 SetUpFcn
和 parsim
将模型库模块更改传递给工作进程。
另请参阅
对象
函数
applyToModel
|setBlockParameter
|setModelParameter
|setInitialState
|setExternalInput
|setVariable
|validate
|setPreSimFcn
|setPostSimFcn