Выполняйте параллельные симуляции с использованием parsim
В этом примере показано, как использовать Simulink.SimulationInput
возразите, чтобы изменить параметры блоков и параметры модели и параллельные симуляции запуска с теми изменениями.
Модель sldemo_househeat
в качестве примера система, которая моделирует тепловые характеристики дома, его наружной среды и системы отопления дома. Эта модель вычисляет нагревающиеся затраты для типового дома.
Блок Set Point, подсистема Термостата, подсистема Нагревателя, подсистема Дома и компонент Расчета стоимости являются основными компонентами. Для подробного объяснения модели см. Тепловую Модель Дома.
Эта модель использует блок Constant, чтобы задать температурный сетбол, который должен быть обеспечен в закрытом помещении. Значение по умолчанию заданного значения составляет 70 градусов по Фаренгейту. Этот пример показывает вам, как симулировать модель в параллельных использующих различных значениях Set Point
.
Откройте пример и модель
openExample('simulink_general/sldemo_househeatExample'); 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 и кликните по значку. Ваши параметры применяются к модели.
applyToModel
| parsim
| setBlockParameter
| setExternalInput
| setInitialState
| setModelParameter
| setPostSimFcn
| setPreSimFcn
| setVariable
| Simulation Manager
| Simulink.SimulationInput
| validate