Model Predictive Control (MPC)
O controle preditivo baseado em modelo (MPC) planeja uma sequência curta de ações com um modelo, aplica apenas a primeira e replaneja a cada etapa. Abrange componentes, usos e código.
O controlo preditivo baseado em modelo (MPC) é um método de controlo que utiliza um modelo de um sistema para prever o seu comportamento num horizonte futuro curto, escolhe a sequência de ações que melhor cumpre um objetivo respeitando as restrições, aplica apenas a primeira ação e, em seguida, repete todo o processo no passo temporal seguinte com novas medições. Este ciclo de planear, agir e voltar a planear chama-se controlo de horizonte deslizante e permite ao controlador antecipar o que está para acontecer, em vez de reagir apenas ao erro atual. O MPC surgiu no refino de petróleo e no processamento químico no final da década de 1970, quando o Controlo de Matriz Dinâmica da Shell foi uma das primeiras versões industriais; hoje, controla robôs, veículos autónomos e sistemas de climatização de edifícios.
Componentes de um controlador MPC#
Todos os controladores MPC combinam quatro componentes:
- Modelo da dinâmica: Prevê o estado seguinte a partir do estado atual e de uma ação, como a forma como a posição e a direção de um automóvel mudam em função de um determinado ângulo de direção. Pode ser derivado de equações físicas, da identificação de sistemas com dados registados ou de uma rede neural treinada com trajetórias registadas.
- Função de custo: Atribui uma pontuação a uma trajetória prevista, penalizando normalmente a distância até um objetivo, o consumo de energia e as mudanças bruscas nos controlos.
- Restrições: Limites que todos os planos têm de respeitar, como o binário máximo do motor, os limites de velocidade e as zonas de exclusão em torno de obstáculos. O tratamento explícito das restrições é a principal vantagem do MPC face ao controlo PID clássico, que só reage aos erros depois de surgirem e não consegue antecipar um limite.
- Otimizador: Procura a melhor sequência de ações dentro do horizonte em cada passo de controlo.
O modelo determina a dificuldade da otimização. Um modelo linear com um custo quadrático transforma-se num programa quadrático, que os solucionadores especializados resolvem em milissegundos ou menos; os modelos não lineares requerem solucionadores de MPC não linear, normalmente combinados com um filtro de Kalman estendido para estimar o estado, ou com pesquisa baseada em amostragem. Em cada passo de controlo, o otimizador executa um ciclo interno de previsão e melhoria dos planos candidatos, enquanto o controlador executa um ciclo externo que realiza uma ação e recomeça a partir do estado recém-medido:
O comprimento do horizonte é a principal escolha de ajuste. Um horizonte mais longo permite a um veículo travar antecipadamente antes de uma curva apertada, mas cada passo adicional aumenta o custo computacional e acumula o erro de previsão do modelo; além disso, toda a otimização tem de terminar dentro de um período de controlo.
Horizonte recuante no código#
O trecho de código abaixo controla um carrinho que tem de chegar à posição 5 e parar, com a aceleração limitada a mais ou menos 1. A cada passo, amostra 500 planos de aceleração aleatórios, prevê a trajetória de cada plano com a dinâmica do carrinho, executa a primeira ação do plano mais barato e volta a planear a partir do novo estado:
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}")Após 10 segundos simulados, o carrinho fica na posição 5.04, com uma velocidade de 0.04. Nenhum plano aleatório é bom por si só, mas executar um passo e voltar a planear a partir do estado medido corrige os erros continuamente. Esta abordagem, chamada amostragem aleatória, é a forma mais simples da família de MPC baseada em amostragem, que também inclui o método da entropia cruzada e o controlo de integral de caminho preditivo baseado em modelo (MPPI), utilizado por investigadores da Georgia Tech para fazer correr um carro de rali à escala de um quinto numa pista de terra.
MPC em fábricas, robôs, carros e edifícios#
- Indústrias de processamento: Refinarias, fábricas de produtos químicos e centrais elétricas usam MPC para manter temperaturas, pressões e qualidade dos produtos perto dos limites que maximizam a produção, o contexto em que o método teve origem.
- Robôs com patas: O Cheetah 3 do MIT corria e mantinha o equilíbrio com um MPC convexo que recalculava as forças de reação do solo muitas vezes por segundo; mais tarde, o MIT disponibilizou esse controlador como software de código aberto para o seu Mini Cheetah.
- Condução: Os controladores de seguimento de trajetória em automóveis autónomos usam MPC para seguir suavemente uma trajetória planeada dentro dos limites de direção, aceleração e conforto.
- Edifícios: Os controladores de aquecimento e refrigeração preveem as temperaturas das divisões com várias horas de antecedência, com base nas previsões meteorológicas e de ocupação, e pré-arrefecem ou pré-aquecem quando a energia é mais barata.
MPC e abordagens relacionadas#
- Controlo PID: Um controlador PID calcula a saída a partir do erro atual, da sua integral e da sua taxa de variação. É simples e barato, mas não tem um modelo do futuro nem noção das restrições.
- Regulador linear quadrático (LQR): O LQR encontra, em forma fechada, a lei de retroação ótima para um sistema linear com um custo quadrático num horizonte infinito. O MPC resolve online uma versão de horizonte finito, o que lhe permite impor restrições e lidar com modelos não lineares.
- Aprendizagem por reforço: A AR aprende uma política com base na experiência antes da implementação; depois, escolher uma ação requer apenas uma passagem direta rápida. O MPC resolve online uma nova otimização com um modelo explícito.
As duas abordagens estão cada vez mais integradas. A aprendizagem profunda por reforço baseada em modelos aprende um modelo do mundo e planeia usando-o com MPC; métodos como TD-MPC2 planeiam num espaço latente aprendido, enquanto uma função de valor aprendida avalia o que acontece para lá do fim do horizonte curto. Os modelos de dinâmica aprendidos são uma forma de modelação preditiva, e a sua exatidão ao longo do horizonte determina até onde esse tipo de controlador consegue planear de forma útil.
Perceção para MPC#
Um controlador MPC só planeia tão bem quanto perceciona; num sistema de IA física, como um robô que se move entre pessoas, o seu estado tem de incluir a localização dessas pessoas e a direção em que se deslocam. Uma câmara que executa Ultralytics YOLO26 no modo de seguimento fornece uma caixa delimitadora e um ID de seguimento persistente para cada pessoa em cada fotograma. Combinados com a estimativa de profundidade ou a calibração da câmara e um filtro de Kalman, esses seguimentos tornam-se as posições e velocidades dos obstáculos que as restrições do controlador mantêm desimpedidas.










