réglage par logique floue
Transcription
réglage par logique floue
Centre de compétences en automatisation industrielle et productique Systèmes asservis Volume 5 R Asservissements par logique floue (Résumé) J.-M. Allenbach Ecole d’Ingénieurs de Genève Laboratoire d’Automatique N° 129R Edition 2001 Réglage par logique floue CHAPITRE 12 : RÉGLAGE PAR LOGIQUE FLOUE 12.1 PRINCIPE 12.1.1 Introduction Si la logique floue est depuis le milieu des années '80 à la mode dans des applications industrielles et "grand-public" , les bases théoriques remontent déjà aux travaux du professeur L. A. Zadeh à Berkley en 1965. Si on se penche sur certains réglages non linéaires appliqués antérieurement à la publication des théories, on s'aperçoit que la logique floue se pratiquait déjà de manière intuitive et pragmatique. v G w ucm FLC u OCM y S xs Fig. 12.1 Structure de réglage par logique floue. Le schéma ci-dessus montre une parenté du réglage par logique floue avec le réglage par variables d'état. Si un régulateur d'état crée le signal de commande ucm par une combinaison linéaire des variables d'état, de la consigne et de l'intégrale de l'écart de réglage (chap. 10), le régulateur flou le crée par combinaison non linéaires de variables linguistiques. En général, cette combinaison repose sur une description en langage courant, qui est ensuite formalisée sous forme de tableau à double entrée (ou plus) ou d'une série de règles. Si on continue la comparaison avec le réglage d'état, le réglage flou porte en général sur un nombre plus limité de variables, souvent seulement deux dont une est l'écart de réglage. On peut se pencher sur la structure interne d'un régulateur flou. La première opération consiste à sélectionner parmi les variables d'entrée celles qui sont les plus représentatives du comportement du système, et si possible qu'on peut mesurer sans coût prohibitif. J.-M. Allenbach 20.11.01 12–1 Réglage par logique floue w µrés µ v y M yM yN N Rinf Ffuz xs yVL uVL Dfuz ucm urés Tinf Fig. 12.2 Structure interne d'un régulateur flou M Matrice de sélection des mesures: pour un système à régler d'ordre ns et un choix de p variables retenues, sa dimension sera de p × (ns+3). Elle contient souvent beaucoup de zéros. N Matrice de normalisation: matrice diagonale qui permet de ramener la plage de variation de chaque variable entre -1 et 1, les unités de sorties sont des [p.u.]. Ffuz Opération de fuzzification: création des variables linguistiques et de leurs fonction d'appartenance. Tinf Matrice d'inférence des variables linguistiques ou ensemble de règles d'inférences . Rinf Méthode d'application de règles d'inférences pour décrire le signal de commande normalisé et sa fonction d'appartenance en fonction des valeurs instantanées des signaux d'entrée. Dfuz Opération de défuzzification pour créer le signal de commande. xs Vecteur des grandeurs d'état du système à régler yM Vecteur des grandeurs d'entrée choisies yN Vecteur des variables d'entrée normalisées µ Facteurs d'appartenance des variables linguistiques d'entrée yVL Fonctions d'appartenance des variables linguistiques d'entrée uVL Fonctions d'appartenance de la variable linguistique de sortie urés Fonctions de sortie résultante de la défuzzification µrés Facteurs d'appartenance de la variable linguistique de sortie ucm Signal de commande J.-M. Allenbach 20.11.01 12–2 Réglage par logique floue 12.1.2 Variables linguistiques et fonctions d'appartenance. Chaque grandeur physique y utilisée doit être normalisée entre –1 et +1. Pour ce faire, on la divise par MAX(ymax, –ymin). La plage de fonctionnement sera divisée en 3 à 7 zones affectée chacune d'une variable linguistique. Dans la description analogique d'une grandeur physique, on n'a qu'une variable linguistique dont la fonction d'appartenance peut prendre toutes les valeurs entre –1 et +1. µ Mesure +1 yN +1 –1 –1 Fig. 12.3 Grandeur normalisée décrite en analogique. Dans la description en logique classique, on a deux variables linguistiques dont les fonctions d'appartenance peuvent prendre les valeurs 0 ou 1, Par exemple "négatif" et "positif". Ces deux variables linguistiques sont dans ce cas complémentaires, mais la description binaire est très souvent trop brutale. Dans l'exemple de la température, les variables "chaud" et "froid" affectées de fonctions d'appartenance valant 0 ou 1 offrent une description qui manque de nuances. µ Négatif Positif 1 yN +1 –1 Fig. 12.4 Grandeur normalisée décrite en logique classique. Dans la description en logique floue, les fonctions d'appartenance des variables linguistiques peuvent prendre toutes les valeurs comprises entre 0 et 1. Négatif µ EZ 1 Positif yN +1 –1 Fig. 12.5 Grandeur normalisée décrite en logique floue à 3 variables linguistiques. On peut choisir plusieurs formes de fonction d'appartenance, mais les plus usuelles sont triangulaires, trapézoïdales ou gaussiennes. Fig. 12.6 Formes de fonction d'appartenance. J.-M. Allenbach 20.11.01 12–3 Réglage par logique floue Quelle que soit la forme choisie, il faudra prendre certaines précautions dans la construction et la disposition des fonctions d'appartenance. • On veillera, pour la variable linguistique "Environ Zéro", à éviter un "plat" au sommet, susceptible d'entraîner une indétermination du réglage. Ceci s'applique particulièrement à la variable de sortie et à la variable d'entrée "écart de réglage" si elle est présente, ou aux grandeurs réglée et de consigne. Pour d'autres grandeurs, le "plat" sera peut-être justement souhaitable, pour introduire un domaine où celle-ci n'influence pas le réglage. • Pour la même raison, on veillera à éviter que les variables contiguës à "Environ Zéro" laissent une zone ou leur fonction d'appartenance prend la valeur zéro au voisinage de la valeur nulle de la grandeur normalisée. • On évitera un recouvrement trop important ou trop faible de deux fonctions d'appartenance contiguës (entre 0,3 et 0,7). On évitera de même, pour les formes simples, de permettre qu'une valeur de grandeur normalisée puisse être décrite par plus de deux variables linguistique dont la fonction d'appartenance est non nulle. • On préférera les triangles ou trapèzes aux gaussiennes ou autres fonctions compliquées, dévoreuses d'espace mémoire et nécessitant des temps de calculs plus long lorsque le régulateur est en fonction. Selon la valeur instantanée de la grandeur physique normalisée yN, on lui attribue une ou deux variables linguistiques yVL, avec un poids µ. C'est l'opération de fuzzyfication. µ N EZ 1 P yN –0,3 –1 +0,6 +1 Fig. 12.7 Exemple de fonctions d'appartenance. Dans l'exemple de la figure 12.6, les valeurs de la grandeur normalisée se décrivent ainsi: y N= − 0,3 Þ y VL=N avec µ = 0,7 y VL=EZ avec µ = 0,3 y N = + 0,6 Þ y VL=P avec µ = 1 (12.1) (12.2) Pour chaque cycle de calcul, la valeur instantanée du signal doit être convertie en une variable linguistique sur laquelle porteront les règles d'inférence et la valeur de sa fonction d'appartenance qui détermine la défuzzyfication. J.-M. Allenbach 20.11.01 12–4 Réglage par logique floue 12.1.3 Règles d'inférence Lorsqu'on a fuzzyfié toutes les grandeurs d'entrée, il s'agit de décrire le fonctionnement global de l'installation, en se fondant sur une approche intuitive, souvent avec l'aide du professionnel habitué à conduire manuellement la machiner qui doit être automatisée. On établit donc les règles d'inférence qui décrivent ce fonctionnement, soit sous la forme de tableau (ou matrice) soit sous la forme d'équations logiques. Pour expliquer la méthode, on s'appuie sur un exemple: Le chariot d'un distributeur de boissons en boîte est entraîné par un moteur à courant continu auquel on applique une tension ub. Cette tension est décrite par une fuzzyfication uVL à 5 variables linguistiques. On a choisi deux grandeurs d'entrée: l'écart de réglage de position du chariot e = w – y = x1 et sa vitesse y = x 2 . Ces entrées sont aussi décrites chacune par une fuzzyfication à 5 variables linguistiques. Si – par exemple – le chariot se trouve à une grande distance négative de la consigne (x1 = NG), à peu près à l'arrêt (x2 = EZ), on appliquera une tension élevée aux bornes du moteur (uVL = PG). Cette description linguistique peut être traduite par une équation logique. si ( x1 = NG et x 2 = EZ) alors uVL = PG (12.3) On peut ainsi établir une liste d'équations logiques qui décrivent les diverses conditions de fonctionnement, la machine se trouvant dans une ou une autre des conditions: ces équations sont liées par un ou logique. Plutôt qu'une liste d'équations, on peut aussi présenter une description sous forme de matrice. uVL NG x2 = y PG PM EZ NM NG PM PG NM NM EZ PM PG x1 = e EZ NG NM EZ PM PG PM PG NG NM EZ PM NG NM Fig. 12.8 Matrice d'inférence à deux variables d'entrée: exemple du chariot distributeur de canettes. L'équation (12.3) est transcrite dans la troisième case de la première colonne. Les cases vides de la matrice n'entraînent aucune action, car il n'y a pas de règle; ce n'est pas gênant, car ces cases correspondent le plus souvent à des événements impossibles, du moins en service normal. Dans la représentation par matrice d'inférence, c'est toujours l'opérateur et qui relie les conditions d'entrée d'une case: si l'opérateur ou relie deux conditions d'entrée, cela se traduit dans la matrice par une colonne et une ligne complètes. Dans certains cas de valeurs d'entrée, plusieurs règles peuvent être concernées comme le montre l'exemple (12.1), à cause du recouvrement des fonctions d'appartenance. J.-M. Allenbach 20.11.01 12–5 Réglage par logique floue 12.1.4 Méthodes d'inférence Lorsqu'on a établi les règles d'inférence qui décrivent le fonctionnement, il faut indiquer au calculateur la procédure – l'algorithme mathématique – qu'il doit employer pour calculer une fonction de sortie µrés(urés) connaissant la valeur présente des entrées ainsi que les règles d'inférence préétablies. • • • • • On recense plusieurs méthodes, décrites en détail à la section 12.4: min–max max–produit somme–produit TVFI gamma On illustre ici la méthode somme–produit – la plus usitée – par une exemple d'un système à deux entrées et une sortie fuzzyfiées à trois variables linguistiques. Dans l'exemple étudié, les conditions présentes des entrées sont les suivantes: x1 = 0,44 et x 2 = −0,67 (12.4) Deux des règles sont concernées par ces valeurs d'entrée. si( x1 = PG et x2 = EZ) alors uVL = EZ si( x1 = EZ ou x2 = NG ) alors uVL = NG ou (12.5) Fig. 12.9 Exemple d'application de la méthode d'inférence somme–produit à deux variables d'entrée On relève que la "somme" est en fait la "moyenne". Si les conditions d'entrée sont telles qu'une seule règle est concernée, la "somme" des règles, illustrée à droite de la figure J.-M. Allenbach 20.11.01 12–6 Réglage par logique floue 12.9, n'est simplement pas appliquée, ou si l'on préfère, la moyenne sur une seule variable est la variable elle-même. 12.1.5 Défuzzyfication La dernière étape consiste à transformer la fonction d'appartenance de sortie µrés(urés) en une valeur xcm présente sur la grandeur de sortie. Là encore, plusieurs méthodes existent, décrites à la section 12.5, dont la plus répandue est celle du centre de gravité. La figure 12.10 présente une exemple de résultat de méthode d'inférence. µrés +1 urés –1 xcm +1 Fig. 12.10 Défuzzyfication par la méthode du centre de gravité. On calcule le centre de gravité de la figure comprise entre l'axe et la fonction de sortie calculée par la méthode d'inférence. +1 ò urés µrés ( urés ) d urés x cm = −1 +1 ò µrés ( urés ) d urés (12.6) −1 Lorsqu'on peut décomposer la figure en n figures simples de surface Sk(µrés, urés) dont le centre de gravité xk peut être calculé facilement, pour le centre de gravité global les intégrales deviennent sommes. n å x k Sk k =1 x cm = n (12.7) å Sk k =1 Dans le cas d'une défuzzyfication après inférence par la méthode somme–produit avec m règles, le calcul est simple. Il se base sur les surfaces Si des fonctions d'appartenance des variables linguistiques définies pour le signal de sortie, pondérées par les facteurs d'appartenance calculés par les règles. Le centre de gravité xi de chaque variable linguistique Si se calcule sans peine pour les formes fréquentes; au besoin – par exemple pour des fonctions J.-M. Allenbach 20.11.01 12–7 Réglage par logique floue gaussiennes – le calcul du centre de gravité est fait une fois pour toute par calcul intégral; dans tous les cas il est fait au début et stocké en mémoire. m å µci x i S i x cm = i =1m (12.8) å µci S i i =1 Après la défuzzyfication, il reste encore à appliquer le facteur d'échelle ke pour obtenir le signal de commande ucm. Ce facteur a un rôle semblable au gain des régulateurs classiques, ce n'est pas simplement l'inverse de l'opération de normalisation appliquée aux signaux d'entrée. u cm = k e x cm (12.9) Comme en réglage classique il y a lieu d'être prudent avec une augmentation deu facteur d'échelle, afin de ne pas rendre le système instable. 12.1.6 Appréciation globale du réglage flou Grâce aux logiciels proposés par plusieurs fournisseurs, la conception d'un régulateur par logique floue est assez aisée, de même que son implantation sur un calculateur pour le réglage en temps réel. On obtient rapidement un résultat assez bon. La difficulté est de passer d'un réglage assez bon à un réglage très bon. En effet on ne dispose que peu d'indication sur la marche à suivre pour modifier les règles, la fuzzyfication ou les méthodes d'inférence afin d'améliorer un résultat connu. Le réglage par logique floue peut paraître attractif pour qui est rebuté par les outils mathématiques nécessaires au réglage classique ou au réglage d'état, continus ou échantillonnés, mais on se rend vite compte que cette technique exige aussi une connaissance approfondie de l'installation à régler, ainsi qu'une robuste expérience professionnelle. Pire, les très nombreux essais nécessaires à l'obtention d'un résultat satisfaisant ne permettent pas d'échapper à des essais en simulation, qui nécessitent le développement d'un modèle de simulation, imposant au concepteur des connaissances mathématiques et techniques aussi pointues que celles auxquelles on espérait échapper. Toutefois, grâce à ses caractéristique non linéaires, le régulateur par logique floue est intéressant pour régler des systèmes qui eux aussi on un comportement non linéaire. J.-M. Allenbach 20.11.01 12–8 Asservissements par logique floue 12.B L'outil MATLAB APPLICATION AVEC MATLAB 12.B.1 Principe Le calcul en logique floue nécessite, outre la licence de base MATLAB, l'achat et l'installation du Fuzzy Control Toolbox. Celui-ci met à disposition de l'utilisateur deux outils fondamentaux: • Un guide de construction du régulateur par logique floue. • Un bloc fonctionnel à intégrer dans un schéma de régulation Simulink. 12.B.2 Conception du régulateur On accède à la fenêtre principale du «FIS Editor» par un instruction sur la ligne de commande MATLAB: » fuzzy Fig. 12.B1 Fenêtre principale de l'éditeur de logique floue. On y choisit premièrement le nombre d'entrées depuis la barre de menu: Edit → Add input. On trouve alors sur la fenêtre principale du «FIS Editor» autant d'icônes qu'on veutde signaux d'entrées et sorties, et une pour les règles d'inférence. La partie inférieure permet de Jean-Marc Allenbach EIG 12–B1 2001.11.12 Asservissements par logique floue L'outil MATLAB spécifier les méthodes d'inférences. On accède alors à une fenêtre spécifique par un doubleclic sur l'icône du signal dont on veut spécifier les fonctions d'appartenance. Fig. 12.B2 Fenêtre de l'éditeur de fonctions d'appartenance d'un signal. On doit y accomplir les actions suivantes, de préférence dans l'ordre indiqué: Choix de la gamme de variation de chaque signal, de préférence [–1; 1], ce qui implique que les signaux soient d'abord normalisés. Choix des fonctions d'appartenance depuis la barre de menu: Edit → Add MFs... . On accède alors à une fenêtre qui permet de choisir le nombre de fonctions et leur type. On préférera les formes simples – triangle «trimf» et trapèze «trapmf» – peu coûteuses en temps et en espace mémoire. Sur la fenêtre MF, on choisit le nom et la dimension de chaque fonction d'appartenance: soit en déplaçant les points du graphique avec la souris, soit en spécifiant le vecteur dans la fenêtre «params». Pour le nom, un mnémonique – tel EZ pour "environ zéro" – vaut mieux que mf1 à mfn attribués par défaut. On ferme ensuite chaque fenêtre de signal. De retour dans le du «FIS Editor», on choisit le nom du signal de préférence à inputk attribué par défaut. Jean-Marc Allenbach EIG 12–B2 2001.11.12 Asservissements par logique floue L'outil MATLAB Fig. 12.B3 Fenêtre de l'éditeur de fonctions d'appartenance d'un signal: exemple. Lorsque tous les signaux sont spécifiés, on ouvre l'éditeur des règles d'inférence: Fig. 12.B4 Fenêtre de l'éditeur de règles d'inférence. Jean-Marc Allenbach EIG 12–B3 2001.11.12 Asservissements par logique floue L'outil MATLAB On termine en définissant les méthodes pour interpréter les combinaisons logiques et les règles d'inférence. On recommande ici des choix qui ne soient pas trop gourmands en temps de calcul, en donnant des résultats assez bons. Pour le ET logique (And method), on choisit la méthode produit (prod) et pour le OU logique (Or method), on choisit la méthode somme (mean). Pour les règles d'inférence, on préfère la méthode somme-produit: Implication: prod et Aggregation: mean. Pour la défuzzyfication, on recommande la méthode du centre de gravité (centroid). On signale que la méthode somme (mean) n'est pas dans le menu, mais qu'il faut passer par la méthode Custom, dans laquelle on écrit en toute lettre «'mean'» sans oublier l'encadrement d'apostrophes. Fig. 12.B5 Fenêtre principale de l'éditeur de logique floue: exemple complété. On ferme toutes les fenêtres secondaires de l'éditeur FIS avant d'enregistrer le régulateur sur le disque en choisissant un nom dont on se souviendra facilement. Si on veut ensuite utiliser ce régulateur dans un schéma Simulink, il faut encore l'enregistre dans l'espace de travail MATLAB: Workspace. 12.B.3 Essai en simulation On crée un schéma Simulink dans lequel on colle un bloc "Fuzzy Logic Controller" qu'on trouve dans la boîte "SIMULINK Fuzzy", elle-même placée dans la boîte "Blocksets & Toolboxes". On doit y spécifier un nom de régulateur parmi ceux chargés précédemment dans l'espace de travail. Ce bloc doit être précédé de blocs gain chargés de la normalisation des signaux et suivi d'un gain ajustable de l'amplification du régulateur. Jean-Marc Allenbach EIG 12–B4 2001.11.12 Asservissements par logique floue L'outil MATLAB Fig. 12.B6 Schéma de régulation par logique floue. Fig. 12.B7 Détail de régulateur par logique floue. On peut alors exécuter une simulation. Jean-Marc Allenbach EIG 12–B5 2001.11.12 Asservissements par logique floue L'outil MATLAB 1.2 consigne 1 grandeur reelle 0.8 0.6 0.4 0.2 0 -0.2 -0.4 -0.6 0 0.5 1 1.5 2 2.5 3 3.5 4 Fig. 12.B8 Exemple de réglage sur installation simulée pendant 4 [s]. 12.B.4 Essai sur machine réelle On doit disposer d'un outil qui permet de placer un bloc fonctionnel qui donne accès aux interfaces d'entrée et sortie, par exemple le Realtime Interface développé par Vetsch consulting. Essai. fixed step, discrete, 3 [ms] 1 0.5 0 -0.5 0 0.5 1 1.5 2 2.5 3 3.5 4 Fig. 12.B9 Exemple de réglage sur installation réelle pendant 4 [s]. Jean-Marc Allenbach EIG 12–B6 2001.11.12