运行并行仿真

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

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

        如果不存在并行池,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 对象指定模型的一个仿真。可以创建一个由这些对象组成的数组,以用于多个仿真。

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

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

  • setBlockParameter - 更改模块参数

  • setModelParameter - 更改模型参数

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

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

  • InitialState - 更改初始状态

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

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

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

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值