Выполняйте параллельные симуляции с использованием parsim
Этот пример показывает, как использовать объект Simulink.SimulationInput
изменить параметры блоков и параметры модели и симуляции выполнения параллельно с теми изменениями.
Модель sldemo_househeat
в качестве примера является системой, которая моделирует тепловые характеристики дома, его наружной среды и системы отопления дома. Эта модель вычисляет нагревающиеся затраты для типичного дома.
Блок Set Point, подсистема Термостата, подсистема Нагревателя, подсистема Дома и компонент Расчета стоимости являются основными компонентами. Для подробного объяснения модели см. Тепловую Модель Дома.
Эта модель использует блок Constant, чтобы задать температурный сетбол, который должен сохраняться в закрытом помещении. Значение по умолчанию заданного значения составляет 70 градусов по Фаренгейту. Этот пример показывает вам, как моделировать модель в параллельных использующих различных значениях Set Point
.
Откройте модель в качестве примера.
open_system('sldemo_househeat');
Задайте множество значений для Set Point
.
SetPointValues = 65:2:85; spv_length = length(SetPointValues);
Используя заданные значения, инициализируйте массив объектов Simulink.SimulationInput
. Используйте эти, Simulink.SimulationInput
возражает, чтобы задать значения Set Point
. На этом шаге, чтобы предварительно выделить массив, индекс цикла сделан начать с самого большого значения.
for i = spv_length:-1:1 in(i) = Simulink.SimulationInput('sldemo_househeat'); in(i) = in(i).setBlockParameter('sldemo_househeat/Set Point',... 'Value',num2str(SetPointValues(i))); end
Этот пример производит массив 10 объектов Simulink.SimulationInput
, каждый соответствующий различному значению Set Point
.
Теперь, запустите эти несколько симуляций в параллели с помощью команды parsim
. Чтобы контролировать и анализировать выполнения, откройте Simulation Manager
путем установки аргумента ShowSimulationManager
на on
. Аргумент ShowProgress
, когда установлено в on
показывает прогресс симуляций.
out = parsim(in,'ShowSimulationManager','on','ShowProgress','on')
Вывод сгенерирован как объект Simulink.SimulationOutput
. Чтобы видеть все различные заданные значения, откройте график Температур (Внутренний и Наружный) и компонент Стоимости Тепла. Постоянный блок Avg Outdoor Temp задает среднюю температуру воздуха на открытом воздухе. Блок The Daily Temp Variation Sine Wave генерирует ежедневные температурные колебания наружной температуры. Внутренняя температура выведена от подсистемы палаты. Температура вне помещения отличается синусоидально, тогда как температура в закрытом помещении сохраняется в 5 градусах по Фаренгейту сетбола.
В отсутствие лицензий Parallel Computing Toolbox™ команда parsim
ведет себя как команда sim
. Симуляции запущены в сериале.
Установка аргумента ShowSimulationManager
к on
включает Simulation Manager. Для получения дополнительной информации смотрите Simulation Manager
.
Можно просмотреть состояние всех выполнений и подробной информации о них.
Simulation Manager позволяет вам просмотреть свои результаты в Инспекторе Данных моделирования, который в свою очередь позволяет вам анализировать и сравнивать свои данные. Можно просмотреть график Температур (Внутренний и Наружный) и Стоимость Тепла в Инспекторе Данных моделирования. Выберите выполнения, для которых вы хотите просмотреть значок нажатия кнопки и график.
Можно теперь видеть тепло, стоившее за три симуляции.
Используя Simulation Manager, можно применить параметры любого выполнения к модели. Теперь, предположите, что вы хотите применить параметры Запущенных 3 к вашей модели. Выберите Run 3 и кликните по значку. Ваши параметры применяются к модели.
Simulation Manager
| Simulink.SimulationInput
| applyToModel
| parsim
| setBlockParameter
| setExternalInput
| setInitialState
| setModelParameter
| setPostSimFcn
| setPreSimFcn
| setVariable
| validate