Пропустите симуляцию модели на основе нарушения ограничений параметра (GUI)

В этом примере показано, как оптимизировать проект и задать ограничения только для параметра, которые препятствуют оценке модели в недопустимом пространстве решений.

Во время оптимизации решатель может попробовать набор проекта переменных, который приводит к ошибке симуляции модели, которая может быть вычислительно дорогой. Если можно задать ограничение только для параметров, которое идентифицирует такой набор переменных проекта, то решатель может использовать ограничение, чтобы пропустить такие наборы. Другими словами, можно сконфигурировать оптимизацию так, чтобы она была более эффективной путем запрещения проекта наборов переменных, которые приводят к ошибкам симуляции.

В этом примере вы оптимизируете настройки термостата, чтобы минимизировать отклонения заданных температур с учетом некоторых ограничений. Одно из ограничений относится к параметрам модели, которые задают точки включения/выключения термостата. Если точка отключения больше точки включения, оценка модели приводит к ошибке симуляции.

Модель термостата

Откройте модель.

open_system('sdoThermostat');

Модель описывает простой нагреватель и термостат, которые регулируют температуру помещения. Помещение подвержено внешним колебаниям температуры. Комнатная температура вычисляется с помощью уравнения теплового потока первого порядка:

$$ \frac{d T}{dt} = K(T_e-T)+Q$$

Где:

  • $T$ - комнатная температура (С).

  • $T_e$ внешняя температура (C).

  • $Q$ тепло, подаваемое нагревателем (W).

  • $K$ теплоемкость помещения (J/C).

Нагреватель управляется термостатом, который включается, когда различие между комнатной температурой и заданной температурой превышает порог. Нагреватель отключается, когда ошибка опускается ниже порога.

Операция нагревателя отображается в Heater use возможности. Верхняя ось является поданным теплом, а нижняя ось показывает время, когда нагреватель включен.

Комнатная температура отображается в Temperature возможности.

Задача проекта термостата

Вы настраиваете температурные пороги включения и выключения термостата, а также степень нагревателя. The Thermostat switch блок задает пороги включения и выключения с помощью переменных H_on и H_off. The Heater блок задает степень нагревателя, используя переменную Hgain.

Требования к проектированию:

  • Минимизируйте различие между комнатной температурой и заданной температурой в течение 24 часа.

  • Нагреватель не должен включаться более 12 раз в течение 24 часа.

  • Температура включения термостата должна быть выше температуры отключения термостата. Если это ограничение нарушено, модель является недопустимой и не может быть моделирована или оценена.

Откройте Response Optimizer

Откройте предварительно настроенный сеанс 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')