Восстановление значений по умолчанию после параллельного моделирования со словарем данных
Simulink.data.dictionary.cleanupWorkerCache восстанавливает настройки по умолчанию после завершения параллельного моделирования модели, связанной со словарем данных. Используйте эту функцию в spmd (Панель параллельных вычислений), после завершения параллельного моделирования с помощью parfor(Панель инструментов параллельных вычислений), чтобы восстановить настройки по умолчанию, которые были изменены Simulink.data.dictionary.setupWorkerCache функция.
Во время параллельного моделирования модели, связанной со словарем данных, можно разрешить каждому работнику получать доступ к данным в словаре и изменять их независимо от других работников. Функция Simulink.data.dictionary.setupWorkerCache предоставляет каждому работнику уникальный кэш словаря для обеспечения независимого доступа к данным и функции Simulink.data.dictionary.cleanupWorkerCache восстанавливает значения по умолчанию для параметров кэша.
Необходимо иметь лицензию Parallel Computing Toolbox™ для выполнения параллельного моделирования с использованием parfor (Панель параллельных вычислений) блок.
Использование параллельного моделирования для сдвига элемента управления исполнения (a Simulink.Parameter объект, значение которого влияет на условие исполнения Simulink.Variant объект), хранящийся в словаре данных, используйте этот код в качестве шаблона. Измените имена и значения модели, словаря данных и элемента управления исполнениями в соответствии с приложением.
Для сдвига значений параметров блока или переменных рабочей области, используемых для задания параметров блока, используйте Simulink.SimulationInput вместо программного интерфейса к словарю данных. См. раздел Оптимизация, оценка и значения параметров блока сдвига.
Для выполнения параллельного моделирования необходимо иметь лицензию Parallel Computing Toolbox.
% For convenience, define names of model and data dictionary model = 'mySweepMdl'; dd = 'mySweepDD.sldd'; % Define the sweeping values for the variant control CtrlValues = [1 2 3 4]; % Grant each worker in the parallel pool an independent data dictionary % so they can use the data without interference spmd Simulink.data.dictionary.setupWorkerCache end % Determine the number of times to simulate numberOfSims = length(CtrlValues); % Prepare a nondistributed array to contain simulation output simOut = cell(1,numberOfSims); parfor index = 1:numberOfSims % Create objects to interact with dictionary data % You must create these objects for every iteration of the parfor-loop dictObj = Simulink.data.dictionary.open(dd); sectObj = getSection(dictObj,'Design Data'); entryObj = getEntry(sectObj,'MODE'); % Suppose MODE is a Simulink.Parameter object stored in the data dictionary % Modify the value of MODE temp = getValue(entryObj); temp.Value = CtrlValues(index); setValue(entryObj,temp); % Simulate and store simulation output in the nondistributed array simOut{index} = sim(model); % Each worker must discard all changes to the data dictionary and % close the dictionary when finished with an iteration of the parfor-loop discardChanges(dictObj); close(dictObj); end % Restore default settings that were changed by the function % Simulink.data.dictionary.setupWorkerCache % Prior to calling cleanupWorkerCache, close the model spmd bdclose(model) Simulink.data.dictionary.cleanupWorkerCache end
Примечание
Если словари данных открыты, использовать команду нельзя Simulink.data.dictionary.cleanupWorkerCache. Для идентификации открытых словарей данных используйте Simulink.data.dictionary.getOpenDictionaryPaths.
Simulink.data.dictionary.closeAll | Simulink.data.dictionary.getOpenDictionaryPaths | Simulink.data.dictionary.setupWorkerCache | parfor (Панель параллельных вычислений) | spmd(Панель инструментов параллельных вычислений)