Восстановите значения по умолчанию после параллельной симуляции со словарем данных
Simulink.data.dictionary.cleanupWorkerCacheSimulink.data.dictionary.cleanupWorkerCache настройки по умолчанию восстановлений после того, как вы закончили параллельную симуляцию модели, которая соединена со словарем данных. Используйте эту функцию в блоке spmd, после того, как вы закончили параллельную симуляцию с помощью блоков parfor, чтобы восстановить настройки по умолчанию, которые были изменены функцией Simulink.data.dictionary.setupWorkerCache.
Во время параллельной симуляции модели, которая соединена со словарем данных, можно позволить каждому рабочему получать доступ и изменять данные в словаре независимо от других рабочих. Функциональный Simulink.data.dictionary.setupWorkerCache предоставляет каждому рабочему уникальный кэш словаря, чтобы предоставить независимый доступ к данным, и функциональный Simulink.data.dictionary.cleanupWorkerCache восстанавливает параметры кэширования к их значениям по умолчанию.
У вас должна быть лицензия Parallel Computing Toolbox™, чтобы выполнить параллельную симуляцию с помощью блока parfor.
Чтобы использовать параллельную симуляцию, чтобы развернуть различное управление (объект 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