В этом примере показано, как оптимизировать проект и задать ограничения только для параметра, которые препятствуют тому, чтобы модель была оценена на недопустимом пробеле решения.
Во время оптимизации решатель может попробовать набор переменной проекта, который приводит к ошибке симуляции модели, которая может быть в вычислительном отношении дорогой. Если можно задать ограничение только для параметра, которое идентифицирует такой набор переменной проекта, то решатель может использовать ограничение, чтобы пропустить такие наборы. Другими словами, можно сконфигурировать оптимизацию, чтобы быть более эффективными путем запрещения наборов переменной проекта, которые приводят к ошибкам симуляции.
В этом примере вы оптимизируете настройки термостата, чтобы минимизировать температурные отклонения заданного значения при удовлетворении некоторым ограничениям. Одно из ограничений применяется к параметрам модели, которые задают переключатель термостата на/выключать точках. Если выключать точка больше переключателя - на точке, оценивание модели приводит к ошибке симуляции.
Откройте модель.
open_system('sdoThermostat');
Модель описывает простой нагреватель & термостат, которые регулируют температуру комнаты. Комната подвергается внешним температурным колебаниям. Комнатная температура вычисляется с помощью уравнения теплового потока первого порядка:
Где:
комнатная температура (C).
внешняя температура (C).
тепло предоставляется нагревателем (W).
комната тепловая способность (J/C).
Нагревателем управляет термостат, который включает, когда различие между комнатной температурой и температурным заданным значением превышает порог. Нагреватель выключает, когда ошибка опускается ниже порога.
Работа нагревателя отображена в Heater use
осциллограф. Верхняя ось является обеспеченным теплом, и более низкая ось показывает времена, когда нагреватель включается.
Комнатная температура отображена в Temperature
осциллограф.
Вы настраиваете поворот термостата - на и выключаете температурные пороги, и также степень нагревателя. Thermostat switch
блок задает поворот - на, и выключите пороги с помощью переменных H_on
и H_off
. Heater
блок задает степень нагревателя с помощью переменной Hgain
.
Конструктивные требования:
Минимизируйте различие между комнатной температурой и температурным заданным значением за 24-часовой период.
Нагреватель не должен включать больше чем 12 раз в 24-часовой период.
Поворот термостата - на температуре должен быть больше, термостат выключают температуру. Если это ограничение нарушено, модель недопустима и не может быть симулирована или оценена.
Откройте предварительно сконфигурированный сеанс Response Optimizer с помощью команд
load sdoThermostat_sdosession sdotool(SDOSessionData)
Предварительно сконфигурированный сеанс задает следующие переменные:
DesignVars
- Спроектируйте набор переменных для H_on
, H_off
, и Hgain
параметры модели.
Minimize_T_error
- Требование, чтобы минимизировать температурное отклонение от заданного значения.
LimitH_on
- Требование, чтобы ограничить число раз термостат включено.
H_on_sig
и T_error
- Регистрируемые сигналы. H_on_sig
представляет, когда нагреватель работает. T_error
различие между комнатной температурой и заданным значением.
H_on
> H_off
требование еще не задано. Используйте пользовательское требование, чтобы задать это ограничение и сконфигурировать требование к ошибке, если этому не удовлетворяют.
В Новом выпадающем списке выберите Custom Requirement. Создать диалоговое окно Требования открывается.
В этом диалоговом окне задайте следующее:
Имя - SwitchConstraint
.
Введите - выбирают Constrain the function output to be >= 0
из Списка типов.
Функция - @sdoThermostat_SwitchingConstraint
.
Ошибка, если ограничение нарушено - Устанавливает этот флажок.
Программное обеспечение вызывает sdoThermostat_SwitchingConstraint
функция в каждой итерации оптимизации со структурой, содержащей все переменные проекта. Выход sdoThermostat_SwitchingConstraint
функция является различием между H_on
и H_off
значения. Это различие должно быть положительно для требования быть удовлетворенным.
Программное обеспечение оценивает пользовательские требования, которые тестируют ограничения только для параметра, такие как SwitchConstraint
, прежде, чем симулировать модель и оценить остающиеся требования.
Если ограничение нарушено, в то время как Ошибка, если ограничение является нарушенным флажком, выбрана, программное обеспечение не симулирует модель, чтобы оценить остающиеся требования. Вместо этого решатель присваивает функцию стоимости NaN
значение для этой итерации, оценивает завершающие работу условия и продолжается.
Если ограничение будет нарушено, в то время как Ошибка, если ограничение является нарушенным флажком, очищена, решатель попытается симулировать модель, чтобы оценить остающиеся требования. Симуляция модели может привести к серьезной ошибке; например, симулируя модель термостата, когда SwitchConstraint
нарушен приведет к ошибке. В этом случае решатель присваивает функцию стоимости NaN
значение для этой итерации, оценивает завершающие работу условия и продолжается.
Чтобы исследовать ограничительную функцию, введите edit sdoThermostat_SwitchingConstraint
. Требование, что H_on
> H_off
реализован как H_on
- H_off
> 0
Нажмите Optimize.
Окно Optimization Progress появляется и обновляется в каждой итерации. Оптимизация успешно минимизирует температурную погрешность при удовлетворении переключающимся ограничениям.
Во время этой оптимизации, H_on
и H_off
значения никогда не приближаются к H_on
> H_off
граница ограничений. Так, никогда нет опасности нарушить ограничение. Однако изменение алгоритма оптимизации может произвести различное поведение. Например, изменяя алгоритм оптимизации от того, используемого здесь, 'Внутренняя точка', к 'Активному Набору' приводит к H_on
и H_off
значения, которые являются в границе ограничений. Это нарушение инициировало SwitchConstraint
требование и предотвращает симуляцию модели для соответствующих итераций.
Симулируйте модель с оптимизированными настройками термостата. Оптимизированная работа нагревателя отображена в Heater use
определите объем, где верхняя ось является обеспеченным теплом и более низкой осью, нагреватель включает времена.
Оптимизированная комнатная температура отображена в Temperature
осциллограф.
Закройте модель
bdclose('sdoThermostat')