Как и в традиционном линейном MPC, нелинейный MPC вычисляет управляющие действия на каждом контрольном интервале, используя комбинацию основанного на модели предсказания и ограниченной оптимизации. Основными различиями являются:
Модель предсказания может быть нелинейной и включать изменяющиеся во времени параметры.
Ограничения, накладываемые на равенство и неравенство, могут быть нелинейными.
Минимизируемая скалярная функция стоимости может быть неквадратичной (линейной или нелинейной) функцией переменных принятия решений.
Используя нелинейный MPC, можно:
Симулируйте управление нелинейными объектами с обратной связью при нелинейных затратах и ограничениях.
Планируйте оптимальные траектории путем решения нелинейной задачи оптимизации с ограничениями без разомкнутого контура.
По умолчанию нелинейные контроллеры MPC решают нелинейную задачу программирования, используя fmincon
функция с алгоритмом SQP, который требует программного обеспечения Optimization Toolbox™. Если у вас нет программного обеспечения Optimization Toolbox, можно задать свой собственный пользовательский нелинейный решатель. Для получения дополнительной информации о конфигурировании fmincon
решатель и установка пользовательского решателя, см., Конфигурирование решателя оптимизации для нелинейного MPC.
Примечание
Приложение MPC Designer не поддерживает проект нелинейных контроллеров MPC.
Для реализации типового нелинейного MPC создайте nlmpc
Объект и укажите:
Состояния и выходные функции, которые определяют вашу модель предсказания. Для получения дополнительной информации смотрите Задать модель предсказания для нелинейного MPC.
Пользовательская функция стоимости, которая может заменить или увеличить стандартную функцию стоимости MPC. Для получения дополнительной информации смотрите Задать функцию затрат для нелинейного MPC.
Стандартные ограничения по входам, выходам и состояниям.
Дополнительные пользовательские ограничения равенства и неравенства, которые могут включать линейные и нелинейные комбинации входов, выходов и состояний. Для получения дополнительной информации смотрите Задать ограничения для нелинейного MPC.
Можно симулировать типовые нелинейные контроллеры MPC:
В Simulink® использование блока Nonlinear MPC Controller
В командной строке используя nlmpcmove
Многоступенчатая задача MPC является задачей MPC, в которой функции затрат и ограничений основаны на этапе. В частности, многоступенчатый контроллер MPC с горизонтом предсказания p длины имеет p + 1 каскада, где первый каскад соответствует текущему времени, а последний (терминальный) каскад соответствует последнему шагу предсказания.
Для многоступенчатого контроллера MPC каждый каскад может иметь свои переменные и параметры принятия решений, а также свои собственные нелинейные затраты и ограничения. Что более важно, функции затрат и ограничений на определенном этапе являются только функциями переменных принятия решений и параметров на этом этапе. Эта функция позволяет намного более эффективно создавать структуру данных и формулировать базовую нелинейную задачу программирования, что значительно сокращает время расчета по сравнению с той же задачей, решенной с помощью типового контроллера NLMPC.
По этой причине, если ваша нелинейная задача MPC имеет функции затрат и ограничений, которые не включают межэтапные условия, вы должны использовать многоступенчатый нелинейный контроллер в своём проекте.
Чтобы реализовать многоступенчатый нелинейный контроллер MPC, сначала создайте nlmpcMultistage
объект, а затем укажите:
Функции состояния, которые определяют вашу модель предсказания. Для моделей в дискретном времени убедитесь, что Model.IsContinuousTime
установлено в false
.
Функции затрат и ограничений на требуемых стадиях. Необходимо задать функцию затрат по крайней мере для одного этапа.
Жесткие верхняя и нижняя границы состояний, управляемые переменные и управляемые переменные скорости, если это необходимо.
При разработке контроллера примите во внимание следующие точки.
Анонимные функции не поддерживаются для nlmpcMultistage
объекты.
Лучшая практика задавать якобианы, когда они доступны, в противном случае решатель должен вычислять их численно на каждом шаге.
В отличие от типового нелинейного MPC, выходы объекта, веса, значения ECR и масштабные коэффициенты не присутствуют в nlmpcMultistage
объект. Их можно реализовать непосредственно в функции затрат и ограничений.
Горизонт управления также опущен в nlmpcMultistage
объекты. Чтобы реализовать перемещение блоков, установите RateMin
и RateMax
в нуль на требуемых шагах предсказания.
Можно симулировать многоступенчатые нелинейные контроллеры MPC:
В Simulink с использованием блока Multistage Nonlinear MPC Controller
В MATLAB® командная строка с использованием nlmpcmove
Генерация кода из нелинейного многоступенчатого контроллера поддерживается в обоих MATLAB (использование mpcmoveCodeGeneration
) и Simulink.
Для примеров о том, как создать и использовать многоступенчатый контроллер MPC, смотрите, Создают и симулируют многоступенчатый нелинейный контроллер MPC, Моделируют многоступенчатый нелинейный контроллер MPC с использованием начальных догадок и автоматической парковки грузовиков и трейлеров с использованием многоступенчатого нелинейного контроллера