Constraint Enforcement

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

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

Описание

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

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

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

fx+gxucuminuumax

Здесь:

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

  • c является границей для функции ограничения.

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

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

Блок 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.

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

Выходной флагОписание
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