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 :

  1. Prédiction : Utilisation d'un modèle pour prédire les sorties futures sur un horizon donné
  2. Optimisation : Résolution d'un problème d'optimisation pour minimiser un critère sous contraintes
  3. 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.).

Implémentation simplifiée de MPC
# 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.

Objectif : Minimiser le temps de parcours tout en garantissant la sécurité et le confort (accélérations limitées)

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.