parsim
В этом примере показано, как использовать Simulink.SimulationInput
объект для изменения блоков и параметров модели и запуска параллельных симуляций с этими изменениями.
Пример модели sldemo_househeat
является системой, которая моделирует тепловые характеристики дома, его наружное окружение и систему отопления дома. Эта модель вычисляет затраты на отопление для типового дома.
Установите Точку блок, подсистему Thermostat, подсистему нагревателя, подсистему House и Расчета стоимости компонент являются основными компонентами. Подробное объяснение модели смотрите в Тепловой модели дома.
Эта модель использует блок Constant, чтобы задать точку набора температур, которая должна поддерживаться в закрытом помещении. Значение по умолчанию set точки value является 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
. The ShowProgress
аргумент, если установлен в on
показывает прогресс симуляций.
out = parsim(in,'ShowSimulationManager','on','ShowProgress','on')
Выход генерируется как Simulink.SimulationOutput
объект. Чтобы увидеть все различные значения точки набора, откройте график Температуры (Внутренняя и Наружная) и компонента Стоимость тепла. Постоянный блок Avg Outdoor Temp задает среднюю температуру воздуха на открытом воздухе. Блок Daily Temp Variation Sine Wave генерирует ежедневные колебания температуры на открытом воздухе. Температура в помещении определяется подсистемой House. Температура на открытом воздухе изменяется синусоидально, в то время как температура в закрытом помещении поддерживается в пределах 5 степеней по Фаренгейту от заданной точки.
В отсутствие лицензий Parallel Computing Toolbox™, parsim
команда ведет себя как sim
команда. Симуляции выполняются последовательно.
Установка ShowSimulationManager
аргумент в on
включает Simulation Manager. Для получения дополнительной информации см. Simulation
Manager
.
Вы можете просмотреть состояние всех запусков и подробную информацию о них.
Simulation Manager позволяет вам просмотреть результаты в Данные моделирования Inspector, что, в свою очередь, позволяет вам анализировать и сравнивать данные. Вы можете просмотреть график Температуры (Внутри и Снаружи) и Стоимость тепла в Данные моделирования Inspector. Выберите запуски графика и щелкните значок.
Теперь вы можете увидеть стоимость тепла для трех симуляций.
Используя Simulation Manager, можно применить параметры любого запуска к модели. Теперь предположим, что вы хотите применить параметры Run 3 к вашей модели. Выберите Запуск 3 и щелкните значок. Ваши параметры применяются к модели.
applyToModel
| parsim
| setBlockParameter
| setExternalInput
| setInitialState
| setModelParameter
| setPostSimFcn
| setPreSimFcn
| setVariable
| Simulation Manager
| Simulink.SimulationInput
| validate