В этом примере показано, как оптимизировать проект и задать ограничения только для параметра, которые препятствуют оценке модели в недопустимом пространстве решений.
Во время оптимизации решатель может попробовать набор проекта переменных, который приводит к ошибке симуляции модели, которая может быть вычислительно дорогой. Если можно задать ограничение только для параметров, которое идентифицирует такой набор переменных проекта, то решатель может использовать ограничение, чтобы пропустить такие наборы. Другими словами, можно сконфигурировать оптимизацию так, чтобы она была более эффективной путем запрещения проекта наборов переменных, которые приводят к ошибкам симуляции.
В этом примере вы оптимизируете настройки термостата, чтобы минимизировать отклонения заданных температур с учетом некоторых ограничений. Одно из ограничений относится к параметрам модели, которые задают точки включения/выключения термостата. Если точка отключения больше точки включения, оценка модели приводит к ошибке симуляции.
Откройте модель.
open_system('sdoThermostat');
Модель описывает простой нагреватель и термостат, которые регулируют температуру помещения. Помещение подвержено внешним колебаниям температуры. Комнатная температура вычисляется с помощью уравнения теплового потока первого порядка:
Где:
- комнатная температура (С).
внешняя температура (C).
тепло, подаваемое нагревателем (W).
теплоемкость помещения (J/C).
Нагреватель управляется термостатом, который включается, когда различие между комнатной температурой и заданной температурой превышает порог. Нагреватель отключается, когда ошибка опускается ниже порога.
Операция нагревателя отображается в Heater use
возможности. Верхняя ось является поданным теплом, а нижняя ось показывает время, когда нагреватель включен.
Комнатная температура отображается в Temperature
возможности.
Вы настраиваете температурные пороги включения и выключения термостата, а также степень нагревателя. The Thermostat switch
блок задает пороги включения и выключения с помощью переменных H_on
и H_off
. The 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
- различие между комнатной температурой и заданной точкой.
The H_on
> H_off
требование еще не определено. Используйте пользовательское требование, чтобы задать это ограничение и настроить требование на ошибку, если оно не удовлетворено.
В раскрывающемся списке Создать выберите Пользовательское требование. Откроется диалоговое окно Создать требование (Create Requirement).
В этом диалоговом окне задайте следующее:
Имя - SwitchConstraint
.
Тип - Выбор Constrain the function output to be >= 0
из списка Тип.
Функция - @sdoThermostat_SwitchingConstraint
.
Ошибка при нарушении ограничения - Установите этот флажок.
Программное обеспечение вызывает sdoThermostat_SwitchingConstraint
функция при каждой итерации оптимизации со структурой, содержащей все конструктивные переменные. Выходные выходы sdoThermostat_SwitchingConstraint
функция является различием между H_on
и H_off
значения. Это различие должно быть положительным для удовлетворения требования.
Программа оценивает пользовательские требования, которые тестируют только ограничения, такие как SwitchConstraint
, перед симуляцией модели и оценкой остальных требований.
Если ограничение нарушается, когда установлен флажок Ошибка, если ограничение нарушено, программное обеспечение не моделирует модель, чтобы оценить оставшиеся требования. Вместо этого решатель присваивает функции затрат NaN
значение для этой итерации, оценивает условия завершения и продолжает.
Если ограничение нарушается, в то время как флажок Ошибка, если ограничение нарушено, снят, решатель попытается моделировать модель, чтобы вычислить оставшиеся требования. Симуляция модели может привести к жесткой ошибке; для примера, симулируя модель термостата при SwitchConstraint
нарушение приведет к ошибке. В этом случае решатель присваивает функции затрат a NaN
значение для этой итерации, оценивает условия завершения и продолжает.
Чтобы изучить функцию ограничения, введите edit sdoThermostat_SwitchingConstraint
. Требование, которое H_on
> H_off
реализован как H_on
- H_off
> 0
Нажмите «Оптимизировать».
Окно Optimization Progress появляется и обновляется при каждой итерации. Оптимизация успешно минимизирует температурную ошибку, удовлетворяя ограничениям переключения.
Во время этой оптимизации H_on
и H_off
значения никогда не приближаются к H_on
> H_off
Граница ограничений. Таким образом, никогда не существует опасности нарушения ограничений. Однако изменение алгоритма оптимизации может привести к другому поведению. Например, изменение алгоритма оптимизации с используемого здесь, 'Interior-Point', на 'Active-Set' приводит к H_on
и H_off
значения, находящиеся на границе ограничений. Это нарушение запускает SwitchConstraint
требование и препятствует симуляции модели для соответствующих итераций.
Симулируйте модель с оптимизированными настройками термостата. Оптимизированная операция нагревателя отображается в Heater use
возможности, где верхней осью является поданное тепло, а нижней осью нагреватель включают время.
Оптимизированная комнатная температура отображается в Temperature
возможности.
Закройте модель
bdclose('sdoThermostat')