Qu'est-ce que le Model Predictive Control ?
Le Model Predictive Control (MPC) ou Commande Prédictive est une méthode avancée de contrôle qui utilise un modèle du système pour prédire son comportement futur et calculer une séquence optimale de commandes.
Contrairement aux contrôleurs classiques qui réagissent aux erreurs passées, le MPC anticipe les évolutions futures du système en résolvant à chaque pas de temps un problème d'optimisation sous contraintes.
Le savais-tu ?
Le MPC est largement utilisé dans l'industrie pétrochimique depuis les années 1980, où il permet de gérer des processus complexes avec des contraintes multiples tout en optimisant les coûts de production.
Principe Général du MPC
Le MPC fonctionne selon trois étapes clés répétées à chaque instant :
- Prédiction : Utilisation d'un modèle pour prédire les sorties futures sur un horizon donné
- Optimisation : Résolution d'un problème d'optimisation pour minimiser un critère sous contraintes
- Application : Seul le premier élément de la séquence optimisée est appliqué au système
$$\min_u \sum_{k=0}^{N_p} \|y(t+k|t) - r(t+k)\|^2_Q + \sum_{k=0}^{N_c-1} \|\Delta u(t+k)\|^2_R$$
L'horizon de prédiction (Np) et l'horizon de contrôle (Nc) sont des paramètres clés. Le MPC peut intégrer naturellement des contraintes sur les états, les sorties et les commandes, ce qui le rend particulièrement robuste.
Comment appliquer le MPC au projet ?
Dans le cadre d'un projet de robotique ou d'automatisme, le MPC peut être utilisé pour la commande de trajectoire, la régulation de processus ou l'évitement d'obstacles. Sa capacité à gérer les contraintes le rend idéal pour des systèmes avec limites physiques (vitesse max, amplitude des actionneurs, etc.).
# Pseudocode pour MPC
def mpc_controller(current_state, reference):
# Initialisation
u_opt = []
# Boucle d'optimisation sur l'horizon
for k in range(horizon):
# Calcul des prédictions
predictions = model.predict(current_state, u_opt)
# Résolution du problème d'optimisation
u_opt = solve_optimization(predictions, reference)
# Application de la première commande
apply_control(u_opt[0])
# Mise à jour de l'état
current_state = get_new_state()
Dans quelle partie du code peut intervenir le MPC ?
Commande de trajectoire
Le MPC peut générer des trajectoires optimales en tenant compte des contraintes dynamiques du système.
Exemple pratique :
Pour un robot mobile, le MPC peut calculer la séquence de commandes (vitesse, angle) permettant d'atteindre une cible tout en évitant les obstacles et en respectant les limites physiques du robot.
Références
- Rawlings, J. B., Mayne, D. Q., & Diehl, M. (2017). Model Predictive Control: Theory, Computation, and Design. Nob Hill Publishing.
- Camacho, E. F., & Bordons, C. (2007). Model Predictive Control. Springer Science & Business Media.
- Garcia, C. E., Prett, D. M., & Morari, M. (1989). Model predictive control: theory and practice—a survey. Automatica, 25(3), 335-348.
- Qin, S. J., & Badgwell, T. A. (2003). A survey of industrial model predictive control technology. Control engineering practice, 11(7), 733-764.