Восстановите значения по умолчанию после параллельной симуляции со словарем данных
Simulink.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