Некоторые приложения управления требуют, чтобы контроллер выбирал действия управления таким образом, чтобы состояния объекта не нарушало определенные критические ограничения. Во многих случаях ограничения накладываются на состояния объекта, которые контроллер не управляет непосредственно. Вместо этого вы задаете constraint function, которая задает ограничение в терминах сигнала действия управления. Эта ограничительная функция может быть известным отношением или такой, которую вы должны узнать из экспериментальных данных.
Блок Constraint Enforcement, который требует Optimization Toolbox™ программного обеспечения, вычисляет измененные действия управления, которые наиболее близки к заданным действиям управления, удовлетворяющим ограничениям и границам действия. Блок использует квадратичный решатель программирования (QP), чтобы найти u действия управления, который минимизирует функцию в режиме реального времени. Здесь u 0 является немодифицированным управляющим действием от контроллера.
Решатель применяет следующие ограничения к задаче оптимизации.
Здесь:
fx и gx являются коэффициентами ограничительной функции.
c является границей для функции ограничения.
u min является нижней границей для действия управления.
u max является верхней границей для действия управления.
В зависимости от вашего приложения, коэффициенты fx и gx ограничительной функции могут быть линейными или нелинейными функциями состояний объекта и могут быть либо известны, либо неизвестны.
Для примера, который использует известные коэффициенты нелинейных ограничивающих функций, смотрите Усиление ограничений для ПИД-регуляторов. В этом примере функция ограничения определяется динамикой объекта.
Когда вы не можете вывести ограничительную функцию непосредственно от объекта, вы должны узнать коэффициенты, используя входные/выходные данные экспериментов или симуляций. Чтобы узнать такие ограничения, можно создать функциональную аппроксимацию и настроить аппроксимацию, чтобы воспроизвести отображение «вход-выход» из симуляции или экспериментальных данных.
Чтобы узнать функции линейного коэффициента, можно найти решение методом наименьших квадратов из данных. Для примеров, которые используют этот подход, смотрите Обучите Агента RL для Адаптивного Круиз-Контроля с Принудительным Ограничением и Обучите Агента RL для Помощника по Поддержанию Маршрута с Принудительным Ограничением.
Для нелинейных функций коэффициента необходимо настроить нелинейную функциональную аппроксимацию. Примеры такой аппроксимации включают:
Глубокие нейронные сети (требуется программное обеспечение Deep Learning Toolbox™)
Нелинейные идентифицированные системные модели (требует System Identification Toolbox™ software)
Системы нечеткого вывода (требует программного обеспечения Fuzzy Logic Toolbox™)
Для примеров, которые изучают нелинейную функцию коэффициента путем настройки глубокой нейронной сети, смотрите Изучение и Применение Ограничений для ПИД-регуляторов и Train Агента Обучения с Ограничением.