Constraint Enforcement

Измените действия управления, чтобы удовлетворить границы действия и ограничения

  • Библиотека:
  • Simulink Control Design

Описание

Блок Constraint Enforcement вычисляет измененные действия управления, которые являются самыми близкими к заданным действиям управления, удовлетворяющим границам действия и ограничениям.

Блок использует решатель квадратичного программирования (QP), чтобы найти действие управления u, который минимизирует функцию |uu0|2. Здесь, u 0 является немодифицированным действием управления.

Решатель применяет следующие ограничения к задаче оптимизации.

fx+gxucuminuumax

Здесь:

  • fx и gx являются коэффициентами ограничительной функции.

  • c является направляющимся в ограничительную функцию.

  • Min u является нижней границей для действия управления.

  • u макс. является верхней границей для действия управления.

Блок Constraint Enforcement требует программного обеспечения Optimization Toolbox™.

Для получения дополнительной информации об ограничительном осуществлении смотрите Ограничительное Осуществление для Системы управления.

Порты

Входной параметр

развернуть все

Немодифицированные действия управления в виде скаляра или вектора.

Если параметром Number of actions является 1, соедините u0 со скалярным сигналом. В противном случае соедините u0 с векторным сигналом с длиной, равной Number of actions.

Возместите коэффициент fx в следующем уравнении ограничений.

fx+gxuc

Если параметром Number of constraints является 1, соедините fx со скалярным сигналом. В противном случае соедините fx с векторным сигналом с длиной, равной Number of constraints.

Линейный коэффициент gx в следующем уравнении ограничений.

fx+gxuc

Соедините gx с Nc-by-Nu сигнал, где Nc равен параметру Number of constraints, и Nu равен параметру Number of actions.

Ограничение во время выполнения связало c в следующей ограничительной функции.

fx+gxuc

Если параметром Number of constraints является 1, соедините c со скалярным сигналом. В противном случае соедините c с векторным сигналом с длиной, равной Number of constraints.

Если этот порт отключен, блок использует заданное использование границ постоянного ограничения параметра Constraint bound.

Зависимости

Чтобы включить этот входной порт, выберите параметр Use external source.

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

Если параметром Number of actions является 1, соедините umax со скалярным сигналом. В противном случае соедините umax с векторным сигналом с длиной, равной Number of actions.

Зависимости

Чтобы включить этот входной порт, выберите параметр Use external source for upper bound.

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

Если параметром Number of actions является 1, соедините umin со скалярным сигналом. В противном случае соедините umin с векторным сигналом с длиной, равной Number of actions.

Зависимости

Чтобы включить этот входной порт, выберите параметр Use external source for lower bound.

Вывод

развернуть все

Модифицированное действие управления возвращено решателем QP.

Если решатель находит решение прежде, чем достигнуть максимального количества итераций, u* выходные параметры это оптимальное решение.

Если решатель достигает максимального количества итераций, остановок оптимизации и u* выходные параметры субоптимальное решение.

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

Если параметром Number of actions является 1, u* выводит скалярный сигнал. В противном случае u* выходные параметры векторный сигнал с длиной равняется Number of actions.

Состояние Optimization решателя QP. Следующая таблица показывает возможные значения состояния.

Exitflag Описание
1Решатель сходился к оптимальному решению со всеми ограничениями и активными границами. В этом случае, u* выходные параметры действия оптимального управления.
2Начальная задача оптимизации была неосуществима, и блок сконфигурирован, чтобы проигнорировать все ограничения и границы. В этом случае, u* выходные параметры немодифицированное действие управления u0.
3Начальная задача оптимизации была неосуществима. Блок повторно выполнил оптимизацию, игнорирующую границы действия, и нашел возможное решение, который блок выходные параметры в u*.
4Начальная задача оптимизации была неосуществима. Блок повторно выполнил оптимизацию, игнорирующую ограничительные границы, и нашел возможное решение, который блок выходные параметры в u*.
0Решатель достиг максимального количества итераций. Действия управления выход в u* могут быть субоптимальными.
отрицательное целое число

Начальная задача оптимизации была неосуществима, и один из следующих сценариев применяется.

  • Повторное выполнение оптимизации без границ действия не произвело возможное решение.

  • Повторное выполнение оптимизации без ограничительных границ не произвело возможное решение.

  • Блок сконфигурирован, чтобы не проигнорировать границы ограничения и действия.

В этом случае действия управления выход в u* являются нулем.

Зависимости

Чтобы включить этот выходной порт, выберите параметр Optimization status.

Параметры

развернуть все

Вкладка параметров

Задайте количество ограничений, чтобы осуществить.

Программируемое использование

Параметры блоков: nc
Ввод: символьный вектор
Значение по умолчанию: '1'

Задайте количество действий к связанному и оптимизируйте.

Программируемое использование

Параметры блоков: nu
Ввод: символьный вектор
Значение по умолчанию: '1'

Задайте постоянные границы для ограничений. Если параметром Number of constraints является 1, задайте Constraint bound как конечный скаляр. В противном случае задайте Constraint bound как вектор из конечного значения с длиной, равной Number of constraints.

Если ваши ограничения варьируются во время выполнения, выберите параметр Use external source и соедините ограничительный сигнал во время выполнения с входным портом c.

Зависимости

Чтобы включить этот параметр, очистите параметр Use external source.

Программируемое использование

Параметры блоков: c
Ввод: символьный вектор
Значение по умолчанию: '0'

Выберите этот параметр, чтобы добавить входной порт c для внешних ограничительных границ.

Программируемое использование

Параметры блоков: external_c
Ввод: символьный вектор
Значения: 'off''on'
Значение по умолчанию: 'off'

Выберите этот параметр, чтобы добавить входной порт umax для внешних верхних границ действия.

Программируемое использование

Параметры блоков: external_umax
Ввод: символьный вектор
Значения: 'off''on'
Значение по умолчанию: 'off'

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

Программируемое использование

Параметры блоков: external_umin
Ввод: символьный вектор
Значения: 'off''on'
Значение по умолчанию: 'off'
Блокируйте вкладку

Задайте шаг расчета для выполнения оптимизации.

Программируемое использование

Параметры блоков: Ts
Ввод: символьный вектор
Значение по умолчанию: '0.1'

Задайте максимальное количество итераций оптимизации.

Программируемое использование

Параметры блоков: maxiter
Ввод: символьный вектор
Значение по умолчанию: '200'

Задайте значение допуска для нарушений ограничений.

Программируемое использование

Параметры блоков: tol
Ввод: символьный вектор
Значение по умолчанию: '1e-6'

Выберите этот параметр, чтобы добавить выходной порт exitflag для состояния оптимизации решателя QP.

Программируемое использование

Параметры блоков: exitflag
Ввод: символьный вектор
Значения: 'off''on'
Значение по умолчанию: 'off'

Когда вы выбираете этот параметр, если начальная проблема QP неосуществима, блок повторно выполняет оптимизацию с отключенными ограничениями.

Когда вы выбираете и этот параметр и Ignore action bounds when QP is infeasible, если начальная проблема QP неосуществима, блок выводит немодифицированный сигнал действия.

Программируемое использование

Параметры блоков: relax_c
Ввод: символьный вектор
Значения: 'off''on'
Значение по умолчанию: 'off'

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

Когда вы выбираете и этот параметр и Ignore constraints when QP is infeasible, если начальная проблема QP неосуществима, блок выводит немодифицированный сигнал действия.

Программируемое использование

Параметры блоков: relax_u
Ввод: символьный вектор
Значения: 'off''on'
Значение по умолчанию: 'off'

Расширенные возможности

Смотрите также

Введенный в R2021a