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