Model Predictive Control (MPC)
Модельное предиктивное управление (MPC) планирует короткую последовательность действий с помощью модели, выполняет только первое действие и заново строит план на каждом шаге. Разбираем компоненты, применение и код.
Модельно-прогнозное управление (MPC) — это метод управления, который использует модель системы, чтобы спрогнозировать ее поведение на коротком горизонте, выбрать последовательность действий, лучше всего отвечающую цели при соблюдении ограничений, выполнить только первое действие, а затем на следующем временном шаге повторить весь процесс с новыми измерениями. Этот цикл планирования, действия и повторного планирования называется управлением со скользящим горизонтом и позволяет контроллеру предвидеть дальнейшие события, а не только реагировать на текущую ошибку. MPC возникла в нефтепереработке и химической промышленности в конце 1970-х годов; система Dynamic Matrix Control компании Shell была одной из первых промышленных реализаций. Сейчас MPC управляет роботами, автономными транспортными средствами и климатическими системами зданий.
Компоненты контроллера MPC#
Каждый контроллер MPC состоит из четырёх компонентов:
- Модель динамики: Предсказывает следующее состояние по текущему состоянию и действию, например изменение положения и курса автомобиля при заданном угле поворота руля. Ее можно получить из уравнений физики, идентифицировать по зарегистрированным данным или обучить нейронную сеть на записанных траекториях.
- Функция затрат: оценивает предсказанную траекторию, обычно учитывая расстояние до цели, энергопотребление и резкие изменения управляющих сигналов.
- Ограничения: Условия, которым должен соответствовать каждый план, например максимальный крутящий момент двигателя, ограничения скорости и запретные зоны вокруг препятствий. Явный учет ограничений — главное преимущество MPC перед классическим управлением PID, которое реагирует на ошибки, только когда они возникают, и не может заранее учитывать ограничения.
- Оптимизатор: На каждом шаге управления ищет наилучшую последовательность действий в пределах горизонта.
Модель определяет сложность оптимизации. Линейная модель с квадратичной целевой функцией сводится к задаче квадратичного программирования, которую специализированные решатели выполняют за миллисекунды или быстрее, тогда как для нелинейных моделей нужны решатели нелинейного MPC, обычно работающие в паре с расширенным фильтром Калмана для оценки состояния, либо поиск на основе выборки. На каждом шаге управления оптимизатор выполняет внутренний цикл прогнозирования и улучшения возможных планов, а контроллер запускает внешний цикл, выполняя одно действие и начиная заново с только что измеренного состояния:
Длина горизонта — ключевой параметр настройки. Более длинный горизонт позволяет автомобилю заранее затормозить перед крутым поворотом, но каждый дополнительный шаг увеличивает вычислительные затраты и накапливает ошибку прогноза модели, а вся оптимизация должна завершиться за один период управления.
Скользящий горизонт в коде#
В приведённом ниже фрагменте кода контролируется тележка, которой нужно доехать до позиции 5 и остановиться. Ускорение ограничено диапазоном от -1 до 1. На каждом шаге алгоритм выбирает 500 случайных планов ускорения, прогнозирует траекторию каждого плана на основе динамики тележки, выполняет первое действие из самого дешёвого плана и строит новый план по новому состоянию:
import numpy as np
rng = np.random.default_rng(0)
position, velocity, target = 0.0, 0.0, 5.0
dt, horizon = 0.1, 30
for _ in range(100):
# Sample 500 candidate plans of accelerations within the actuator limit of +/-1
plans = rng.uniform(-1, 1, size=(500, horizon))
# Predict every plan's trajectory with the cart's dynamics model
v = velocity + dt * plans.cumsum(axis=1)
p = position + dt * v.cumsum(axis=1)
# Cost: distance from the target at each step plus speed at the end of the horizon
cost = ((p - target) ** 2).sum(axis=1) + 10 * v[:, -1] ** 2
# Apply only the first action of the cheapest plan, then replan from the new state
velocity += dt * plans[cost.argmin(), 0]
position += dt * velocity
print(f"position: {position:.2f}, velocity: {velocity:.2f}")Через 10 секунд симуляции тележка находится в позиции 5.04 со скоростью 0.04. Ни один случайный план сам по себе не оказывается удачным, но выполнение одного шага и повторное планирование по измеренному состоянию непрерывно исправляют ошибки. Этот подход, называемый случайным перебором, — простейший метод в семействе MPC на основе выборки, куда также входят метод перекрестной энтропии и управление с интегралом пути, предсказывающим траекторию (MPPI); исследователи из Georgia Tech использовали MPPI, чтобы гонять раллийный автомобиль в масштабе 1:5 по грунтовой трассе.
MPC на производстве, в роботах, автомобилях и зданиях#
- Технологические отрасли: Нефтеперерабатывающие заводы, химические предприятия и электростанции используют MPC, чтобы поддерживать температуру, давление и качество продукции вблизи предельных значений, при которых достигается максимальная производительность. Именно для таких задач этот метод и был создан.
- Шагающие роботы: Cheetah 3 из MIT бегал и сохранял равновесие с помощью выпуклого MPC, который многократно в секунду пересчитывал силы реакции опоры; позднее MIT выпустил этот контроллер как программное обеспечение с открытым исходным кодом для Mini Cheetah.
- Вождение: Контроллеры слежения за траекторией в беспилотных автомобилях используют MPC, чтобы плавно следовать заданному маршруту с учетом ограничений на поворот руля, ускорение и комфорт.
- Здания: Контроллеры отопления и охлаждения за несколько часов прогнозируют температуру в помещениях на основе прогноза погоды и занятости, предварительно охлаждая или нагревая помещения, когда энергия дешевле.
MPC и связанные подходы#
- Управление PID: Контроллер PID вычисляет выходной сигнал по текущей ошибке, ее интегралу и скорости изменения. Этот метод прост и дешев, но не моделирует будущее и не учитывает ограничения.
- Линейно-квадратичный регулятор (LQR): Для линейной системы с квадратичной целевой функцией LQR в замкнутой форме находит оптимальный закон обратной связи на бесконечном горизонте. MPC решает конечногоризонтный вариант задачи в реальном времени, что позволяет учитывать ограничения и работать с нелинейными моделями.
- Обучение с подкреплением: Обучение с подкреплением позволяет выучить политику по опыту до развертывания, после чего для выбора действия достаточно одного быстрого прямого прохода. MPC в реальном времени решает новую задачу оптимизации с помощью явной модели.
Эти два подхода все теснее объединяются. Модельное глубокое обучение с подкреплением обучает модель мира и планирует действия с помощью MPC, а такие методы, как TD-MPC2, планируют в обученном латентном пространстве, используя выученную функцию ценности для оценки событий за пределами короткого горизонта. Обученные модели динамики — это разновидность предиктивного моделирования, а их точность на горизонте определяет, насколько далеко такой контроллер может эффективно планировать.
Восприятие для MPC#
Контроллер MPC планирует не лучше, чем воспринимает окружающую обстановку; в системе физического ИИ, например в роботе, перемещающемся среди людей, его состояние должно включать местоположение людей и направление их движения. Камера с Ultralytics YOLO26 в режиме трекинга предоставляет для каждого человека в каждом кадре ограничивающую рамку и постоянный ID трека. В сочетании с оценкой глубины или калибровкой камеры и фильтром Калмана эти треки дают координаты и скорости препятствий, которых должны избегать ограничения контроллера.










