exponenta event banner

Применение ограничений

Изменение управляющих действий в соответствии с ограничениями и границами действий

  • Библиотека:
  • Проект управления Simulink

Описание

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

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

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

fx+gxu≤cumin≤u≤umax

Здесь:

  • fx и gx - коэффициенты функции ограничения.

  • c - граница для функции ограничения.

  • umin является нижней границей для контрольного действия.

  • umax является верхней границей для контрольного действия.

Для блока «Применение ограничений» требуется программное обеспечение Optimization Toolbox™.

Дополнительные сведения о применении ограничений см. в разделе Применение ограничений для конструкции управления.

Порты

Вход

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

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

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

Коэффициент смещения fx в следующем уравнении ограничения.

fx+gxu≤c

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

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

fx+gxu≤c

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

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

fx+gxu≤c

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

Если этот порт отключен, блок использует ограничения константы, заданные с помощью параметра «Ограничение».

Зависимости

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

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

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

Зависимости

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

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

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

Зависимости

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

Продукция

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

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

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

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

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

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

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

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

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

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

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

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

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

Зависимости

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

Параметры

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

Вкладка «Параметры»

Укажите количество налагаемых ограничений.

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

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

Укажите количество привязываемых и оптимизируемых действий.

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

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

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

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

Зависимости

Чтобы включить этот параметр, снимите флажок Использовать параметр внешнего источника.

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

Параметр блока: 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), когда QP неосуществим, если начальная проблема QP неосуществима, блок выдает немодифицированный сигнал действия.

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

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

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

При выборе этого параметра и ограничений Игнорировать (Ignore), когда QP неосуществим, если начальная проблема QP неосуществима, блок выдает немодифицированный сигнал действия.

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

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

Примеры модели

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

.

См. также

Представлен в R2021a