文档

万博1manbetxSimulink.data.dictionary.cleanupWorkerCache

使用数据字典进行并行模拟后恢复默认值

语法

万博1manbetxSimulink.data.dictionary.cleanupWorkerCache

描述

万博1manbetxSimulink.data.dictionary.cleanupWorkerCache在完成链接到数据字典的模型的并行模拟之后,恢复默认设置。使用此函数spmd块,在完成并行模拟后使用parfor控件更改的默认设置万博1manbetxSimulink.data.dictionary.setupWorkerCache函数。

在对链接到数据字典的模型进行并行模拟时,您可以允许每个工作者独立于其他工作者访问和修改字典中的数据。这个函数万博1manbetxSimulink.data.dictionary.setupWorkerCache授予每个工作者一个惟一的字典缓存,以允许对数据和函数的独立访问万博1manbetxSimulink.data.dictionary.cleanupWorkerCache将缓存设置恢复到默认值。

方法执行并行模拟,必须具有并行计算工具箱™许可证parfor块。

例子

基于并行仿真的扫变控制

使用并行模拟来扫描变量控制(a万博1manbetx仿真软件。参数对象,其值影响对象的可变条件万博1manbetx仿真软件。变体对象)存储在数据字典中,请使用此代码作为模板。更改模型、数据字典和变量控件的名称和值,以匹配您的应用程序。

若要扫描用于设置块参数的块参数值或工作区变量的值,请使用万博1manbetx仿真软件。SimulationInput对象,而不是到数据字典的编程接口。看到优化、估计和扫描块参数值

必须拥有并行计算工具箱许可证才能执行并行模拟。

为方便起见,定义模型和数据字典的名称。模型=“mySweepMdl”;dd =“mySweepDD.sldd”定义变量控件的扫描值CtrlValues = [1 2 3 4];为并行池中的每个worker分配一个独立的数据字典。这样他们就可以不受干扰地使用数据。spmd万博1manbetxSimulink.data.dictionary.setupWorkerCache结束确定要模拟的次数numberOfSims =长度(CtrlValues);准备一个非分布式数组来包含模拟输出。simOut =细胞(1、numberOfSims);parfor指数= 1:numberOfSims创建对象与字典数据交互。您必须为parfor循环的每次迭代创建这些对象。dictObj = 万博1manbetxSimulink.data.dictionary.open (dd);sectObj = getSection (dictObj,设计数据的);entryObj = getEntry (sectObj,“模式”);假设MODE是一个Simulink。万博1manbetx参数object stored in the data dictionary%修改“MODE”的值temp = getValue (entryObj);temp.Value = CtrlValues(指数);setValue (entryObj、临时);模拟并将模拟输出存储在非分布式数组中simOut{指数}= sim(模型);每个worker必须丢弃对数据字典和的所有更改%在使用parfor循环的互操作完成后关闭字典discardChanges (dictObj);关闭(dictObj);结束恢复由函数更改的默认设置% 万博1manbetxSimulink.data.dictionary.setupWorkerCache在调用cleanupWorkerCache之前,关闭模型spmdbdclose Simulin万博1manbetxk.data.dictionary.cleanupWorkerCache(模型)结束

请注意

如果数据字典是打开的,则不能使用该命令万博1manbetxSimulink.data.dictionary.cleanupWorkerCache.要识别开放数据字典,请使用万博1manbetxSimulink.data.dictionary.getOpenDictionaryPaths

介绍了R2015a

这个话题有帮助吗?