# Commande prédictive

La commande prédictive (ou compensation ou correction anticipatrice) est une technique de commande avancée de l’automatique. Elle a pour objectif de commander des systèmes industriels complexes. Le principe de cette technique est d'utiliser un modèle dynamique du processus à l'intérieur du contrôleur en temps réel afin d'anticiper le futur comportement du procédé. La commande prédictive fait partie des techniques de contrôle à modèle interne (IMC: Internal Model Controler). En anglais on utilise le terme MPC ou MBPC pour qualifier la commande prédictive : Model (Based) Predictive Control ou aussi PFC: "Predictive Functional Control". Cette méthode a été inventée par un Français, Jacques Richalet, en 1978 et généralisée par David W. Clarke en 1987 en accord avec de grands groupes industriels aux États-Unis et en Europe (Shell et Adersa).

## Généralités

La commande prédictive peut être utilisée pour commander des systèmes complexes comportant plusieurs entrées et sorties où le simple régulateur PID est insuffisant. Cette technique est particulièrement intéressante lorsque les systèmes possèdent des retards importants, des réponses inverses et de nombreuses perturbations. Les principaux utilisateurs de la commande prédictive sont les raffineries de pétrole, l'industrie chimique et agro-alimentaire, la métallurgie, l'aérospatiale... Les principaux avantages de la commande prédictive sont les suivants :
* L'idée générale est intuitive et facile à comprendre.
* Permet de respecter les contraintes sur les variables contrôlées et manipulées.
* Évite des variations excessives sur les variables manipulées ; la commande est plus douce, et cela permet une meilleure utilisation des actionneurs (vérins, vannes, moteurs). Leur temps de vie est ainsi augmenté.
* En cas de perturbations mesurables, le système s'adapte automatiquement.
* Permet en général un réel gain financier.
La commande prédicitive est un terme général qui englobe un ensemble de méthodes différentes(PFC, DMC, GPC, EPSAC, NLPC...). Néanmoins, toutes ces techniques utilisent la même philosophie de contrôle et le principe de fonctionnement est le même. Cette technique est utilisée en majorité par des industries employant des échanges thermiques dans leur procédés (chimie, pétrochimie).

## Fonctionnement

La commande prédictive réalise à chaque période d'échantillonnage du contrôleur les mêmes étapes :
* Calcul des prédictions des variables contrôlées jusqu'à un horizon de temps N2 grâce au modèle interne.
* Élaboration d'une trajectoire de référence à suivre.
* Calcul de la future loi de commande à appliquer sur les variables manipulées jusqu'à un horizon temporel Nu.
* Seul le premier élément de la loi de commande calculée est appliqué sur le système au coup d'horloge suivant. Toutes ces étapes se répéteront ensuite, c'est le principe de l'horizon fuyant.

## Modèle et prédictions

Le concept fondamental de la commande prédictive est qu’elle s’appuie sur un modèle mathématique du processus à contrôler. Ce modèle est le plus souvent représenté sous forme de fonction de transfert discrète utilisant la transformée en Z. On attribue une fonction de transfert H(z) à chaque couple y/u où y représente la variable contrôlée et u la variable manipulée (appelée également commande).
$H(z)={\frac {y(z)}{u(z)}}$
Grâce à ces fonctions de transfert on peut prédire les valeurs futures des variables contrôlées jusqu'à un certain horizon. Néanmoins, selon les méthodes utilisées, on peut utiliser d'autres modèles (représentation d'état, réponse impulsionelle...)

## Élaboration de la commande

Une fois les prédictions faites, on doit trouver la future séquence de commande à appliquer sur le système pour atteindre la consigne désirée en suivant la trajectoire de référence. Pour cela, on vient minimiser une fonction de coût qui diffère selon les méthodes mais généralement cette fonction contient les erreurs quadratiques entre la trajectoire de référence et les prédictions sur l’horizon de prédiction ainsi que la variation de la commande. Cette fonction de coût est la suivante lorsqu’il y a n variables à contrôler et m variables à manipuler :
$J=\sum \limits _{k=1}^{n}{\left({\sum \limits _{j=1}^{j=N2_{k}}{\gamma _{k}\left({y_{k}(t+j)-r_{k}(t+j)}\right)}^{2}}\right)}+\sum \limits _{k=1}^{m}{\left({\sum \limits _{j=1}^{j=Nu_{k}}{\beta _{k}\left({\Delta u_{k}(t+j-1)}\right)}^{2}}\right)}$
Les coefficients $\gamma _{k},\beta _{k}$ sont des pondérations qui permettent de donner plus d’importance à telle ou telle variable. On peut trouver la séquence optimale de contrôle analytiquement mais dans ce cas les contraintes ne sont pas prises en compte. C’est pourquoi on préfère résoudre ce problème grâce à un algorithme de programmation quadratique en temps réel qui minimise cette fonction en prenant en compte différents types de contraintes sur les différentes variables. Les contraintes généralement utilisées sont les suivantes :
pour j=1..Nu :$\Delta u_{min}\leq \Delta u(t+j)\leq \Delta u_{max}$ pour j=1..Nu :$u_{min}\leq u(t+j)=u(t-1)+\sum \limits _{i=1}^{j}\Delta u(t+i)\leq u_{max}$ pour j=1..N2 :$y_{min}\leq {\hat {y}}(t+j)\leq y_{max}$
De cette manière on assure que l’on suivra au mieux la trajectoire de référence pour atteindre la consigne et que les différentes variables resteront dans leurs plages de fonctionnement (par exemple une vanne peut s’ouvrir de 0 % à 100 %, ni plus ni moins).