La Logique Floue

Introduction 1) Le Principe

2) Exemples d'application

Conclusion

Bibliographie



" The more precise mathematically our statements about the behavior of a complex system are, the more insignifiant and irrelevant these statements are." Lotfi Zadeh.

" Dès que les lois mathématiques se réfèrent à la réalité, elles sont incertaines. Dès qu'elles sont certaines, elles ne traduisent pas la réalité." Albert Einstein.



 Introduction

La logique classique, ou logique de Boole (mathématien britanique), originaire des Anciens Grecs, domine actuellement l'informatique.Il est donc intéressant de s'arrêter brièvement sur la définition de la logique Booléenne classique.

L'état logique :
En logique classique, il y a deux états logiques : FAUX et VRAI . Les états logiques nous servent à énoncer les propriétés de ce qui nous entoure. On n'utilise pas nécessairement toujours les mots "FAUX" et "VRAI". Suivant les circonstances, on utilise les expressions "0" et "1" , "off" et "on" , "ouvert" et "fermé" , … Comme les ordinateurs ne travaillent souvent qu'avec des nombres, en informatique, on a adopté la convention d'utiliser 0 et 1 pour dire FAUX et VRAI : c'est le language dit binaire.

Les fonctions logiques :
L'élément de base d'un ordinateur est l'opérateur logique. Les trois opérateurs principaux sont ET, OU et NON (en anglais : AND, OR et NOT). Ces fonctions logiques permettent une communication interne à l'ordinateur en créant une succession d'états logiques.

Table de vérité des principaux opérateurs
Fonction logique

Entrée
a

Entrée
b

Sortie

Fonction logique

Entrée
a

Entrée
b

Sortie

Fonction logique

Entrée

Sortie

ET
0 0 0 OU
0 0 0 NON
0 1 0 0 1 1 0 1
1 0 0 1 0 1 1 0
1 1 1 1 1 1

La logique floue permet de travailler sur des notions imprécises (intermédiaires entre le VRAI et le FAUX), représenter et traiter des informations subjectives comme le language naturel, des connaissances approximatives ou incertaines. En comparaison avec la logique classique, elle ajoute la possibilité de calculer un paramètre, en disant simplement dans quelle mesure il doit se trouver dans telle ou telle zone de valeur.

L'état logique :
Un état logique flou est une "amplitude" entre 0 et 1. En d'autres termes : un nombre réel dans l'intervalle [0;1] , par exemple : 0; 0,1; 0,25; 0,4563; 0,99; 1

Les fonctions logiques floues :
Les fonctions logiques floues sont les mêmes que les fonctions classiques : ET, OU et NON.

Les fonctions logiques floues
Fonctions Logiques Si a<b Si a>b
a ET b a b
a OU b b a
NON a 1-a



1) Le Principe

  1. Les sous-ensembles flous
        En partant de la constatation que les programmes basés sur la logique classique répondaient mal aux exigences humaines qui sont rarement tout ou rien, A.Zadeh dans les années 60 a imaginé un système traduisant cette part d’imprécision. Pour cela il va donner des degrés d’appartenance aux variables comprises entre 0 et 1 au lieu d’un état soit 0 soit 1. C’est ainsi que les programmes rigides utilisés en électronique et en informatique deviennent plus souples et s’adapte mieux aux réflexes humains.

    L’exemple de la frontière entre eau chaude et eau froide nous montre l’aspect artificiel de la logique classique puisque là où elle impose une frontière brutale toute théorique entre les 2 états de l’eau on voit apparaître avec la logique floue un passage progressif d’un état à l’autre en introduisant de ce fait une zone tiède.


    • Définition

    En logique classique on définit de cette manière la fonction d’appartenance à un ensemble A :      IA (x) = 1 si x Î A
         IA (x) = 0 si x Ï A
    Tandis qu’en logique floue on parle plutôt de degré d’appartenance à un sous-ensemble flou que l’on note m A(x). Il peut prendre toutes les valeurs entre 0 et 1.
    Un sous-ensemble flou A de X (univers de discours) est caractérisé par :
    A={(x, m A(x)) / x Î X} avec m A : X ® [0,1]


    On obtient des représentations graphiques dont une forme simple est :

    La conversion du langage humain vers la logique floue se fait en élaborant pour chaque grandeur linguistique un sous-ensemble flou. Une grandeur linguistique se compose d’un attribut (population, température, pression) et d’une valeur linguistique (petit, chaud, forte pression).


    • Opérateurs logiques

    Les opérateurs sur les sous-ensembles flous sont crées en essayant de respecter un certain nombre de propriétés et de retrouver les opérations de base existant en logique booléenne telles que l’union et l’intersection. La définition des opérateurs ET, OU, NON se fait à partir des fonctions d’appartenance aux ensembles flous correspondants :
    climat est chaud et humide Û x Î Achaud Ç Bhumide Û m Achaud Ç Bhumide(x)

    climat est chaud ou humide Û x Î Achaud È Bhumide Û m Achaud È Bhumide(x)

    climat n'est pas chaud Û x Î ` Achaud (complémentaire de A) Û m ` Achaud(x)

    Soient quelques définitions courantes :

    - AND (intersection) : m A Ç B(x,y) = m AND(x,y) = min(m A, m B)

    - OR (union) : m A È B(x,y) = m OR(x,y) = max(m A, m B)

    Exemple :

  2. Règles d’inférence
        Le problème de la représentation en logique floue consiste à passer d’une règle floue, qui est une notion linguistique à une relation floue, qui est un objet mathématique.

    A.Zadeh à étendu la règle du modus ponens de la logique classique au contexte flou :

    - modus ponens: x est A,
    si x est A alors y est B y est B

    - modus ponens généralisé: on connaît les deux prémisses:
    si x est A’ (1)
    si x est A alors y est B (2) y est B’

    A, B, A’ et B’ sont des sous ensembles flous.

    Exemple :

    La tomate est très rouge (1)
    Si une tomate est rouge alors elle est mûre (2)

    Conséquence: la tomate est très mure


    La règle la plus simple est :
    Si x est A alors y est B , où A et B sont des grandeurs linguistiques associées à des sous-ensembles flous des univers de discours X et Y.

    x est A est un prémisse qui donne une valeur entre 0 et 1.

    y est B est une conséquence qui associe le sous-ensemble B à la variable de sortie y.

    On s’aperçoit que pour chacune des règles exposées on doit connaître une valeur x de X pour pouvoir calculer une valeur de Y.

    Interprétation d’une règle floue : maintenant il s’agit de modéliser chacune des entrées du système par des courbes donnant les degrés d’appartenance à différents états identifiés pour ces entrées. C’est la fuzzification. Puis il faut appliquer le résultat à la conséquence.

    Ainsi, si la prémisse est floue (vrai avec un certain degré d’appartenance), alors la conséquence est floue avec le même degré d’appartenance.

    Une collection de règles de règle plus ou moins conséquente est finalement bâtit selon la complexité du système.

    Une règle peut parfois être composée de plusieurs prémisses et conséquences. Les différentes prémisses doivent dans ce cas combinées pour donner une valeur unique en utilisant un opérateur.

    La conséquence voit son sous-ensemble modifié par les prémisses. La méthode la plus répandue pour modifier les sous-ensembles de sortie est la troncature à l’aide du minimum.

    Exemple:

    Si (Température est chaude ou Pression est croissante) alors Ciel est gris

     

    Généralement, plusieurs règles sont actionnées en sortie, donc plusieurs sous-ensembles flous de sortie sont concernés, pour les traiter simultanément il faut les agréger en un seul.

    Une des méthodes possibles d'agrégation est le calcul du maximum, comme représenté sur la figure suivante :

     

  3. Méthodes de défuzzification

    L'agrégation des sous-ensembles de sortie vue précédemment conduit à un sous-ensemble unique U de sortie que l'on va utiliser pour obtenir une valeur numérique unique u0 en sortie.

    Il existe plusieurs méthodes pour réaliser cette opération, mais pas de procédure permettant de conclure sur le choix de la meilleure méthode. Les méthodes les plus couramment utilisées sont la méthode du centre de gravité ou celle de la moyenne des abscisses des maximums.

    Moyenne des abscisses des maximums :
         u0 est la valeur moyenne des maximums des sous-ensembles flous qui composent U.

    Il a été montré qu'aucune des méthodes de défuzzification ne permettait de respecter toutes les propriétés énoncées précédemment, le choix de la méthode sera donc fonction des propriétés les plus importantes au regard du problème à résoudre.

2) Exemples d'application

  1. Un Thermostat

    Supposons qu'on veuille utiliser un ordinateur programmé en logique floue pour contrôler un système de chauffage. Le chauffage d'une cube d'incubation, par exemple. Pour réaliser le programme en logique floue, comme dans tout autre programme, il est nécessaire de déclarer un certain nombre de variables.

    Déclaration des entrées/sorties :
    L'ordinateur peut connaître une donnée : la température de la cuve, et il peut imposer l'ampèrage du courant qui passe dans la résistance chauffant la cuve.

    Déclaration des zones :
    Il faut définir des zones de température, et des zones d'ampérage. On peut prendre, par exemple, trois zones de température : trop froid (entre 0°C et 36°C) , tiède (entre 33°C et 41°C et étant pleinement réalisée entre 36°C et 38°C) et trop chaud (entre 38°C et 100°C). De la même manière, on prend des zones d'ampérages : un courant nul, un courant faible et un courant fort.


    Le graphe des zones de température déclarées



    Le graphe des zones de courant déclarées

    Une règle floue est exprimée sous la forme SI telle situation ALORS telle conclusion.
    Le programme informatique sera réalisé en expliquant à l'ordinateur les règles qu'il doit respecter. Par exemple avec les lignes suivantes :
    SORTIR courantfaible, SI (t, tiede)
    SORTIR courantnul, SI (t, tropchaud)
    SORTIR courantfort, SI (t, tropfroid)
    
    Les shémas suivant représentent ce que l'ordinateur fera lorsqu'il exécutera ces trois lignes, pour une température détectée de 40°C :
    (Remarque : on prend cette zone de température car on y applique ici les règles d'inférence; dans les autres zones (entre 0 et 33°C, et entre 41 et 100°C) le courant à fournir est déduit directement)
    • Cas où 40°C est considéré comme "tiède" :


      SI(40, tiede) donne 0.3333. En d'autre termes : "il est vrai à 33%" que 40 C° est dans la zone de température "tiede"




      SORTIR courantfaible, 0.3333 "décapite" la zone courantfaible à une hauteur de 0.3333. En d'autres termes : on impose qu'il faudra tendre "à 33%" à placer le paramètre amperage dans la zone "courantfaible"

    • Cas où 40°C est considéré comme "trop chaud" :


      SI(40, tropchaud) donne 0.6667. En d'autres termes : "il est vrai à 67%" que 40 C° est dans la zone de température "tropchaud"



      SORTIR courantnul, 0.6667 "décapite" la zone courantnul à une hauteur de 0.6667. En d'autres termes : on impose qu'il faudra tendre "à 67%" à placer le paramètre amperage dans la zone "courantfaible"

    • Cas où 40°C est considéré comme "trop froid" :


      SI(40, tropfroid) donne 0. En d'autres termes : "il est vrai à 0%" que 40 C° est dans la zone de température "tropfroid"



      SORTIR courantfort, 0 "décapite" complètement la zone courantfort. En d'autres termes : on impose qu'il faudra tendre "à 0%" à placer le paramètre amperage dans la zone "courantfaible"



      De façon synthétique, on peut dire que la fonction SI sert à soupeser dans quelle mesure t se trouve dans quelles zones de température, et l'ordre SORTIR sert à imposer dans quelle mesure l'ampérage devra se trouver dans quelles zones d'intensité de courant.


      L'ensemble des zones d'intensité de courant, décapitées. C'est en quelque sorte ce que l'ordinateur a en mémoire après avoir évalué les règles d'inférence

      Calcul du résultat

      Une fois qu'il a passé en revue toutes les règles d'inférence, on peut demander à l'ordinateur de calculer l'ampèrage. Graphiquement, cela revient à estimer où se trouve le centre de masse de l'union des zones d'ampèrage décapitées . Dans ce cas, cela donne 0.38 A.


      Estimation de la valeur du paramètre ampérage

      Le nombre 0.38 est le résultat du fait que la variable t contenait le nombre 40. Pour d'autres valeurs de t, les règles d'inférence feront engendrer d'autres valeurs de a (c'est leur rôle).


      Synthèse

      L'ordinateur va lire régulièrement la température de la cuve et décider de l'ampérage à fournir dans la résistance chauffante. Dans cette exemple, très simple, il correspond exactement une valeur de courant à chaque valeur de température. (On ne pourrait pas réaliser ceci en logique booléenne classique)


          Le graphe du courant en fonction de la température

      L'exemple du thermostat est minimal. En pratique, on peut faire beaucoup de choses :

      • Avoir de nombreux paramètres en entrée : pas seulement une simple mesure de température, mais des mesures de vitesse, position, force... Certains paramètres peuvent ne pas êtres directement des mesures de capteurs : l'accélération, par exemple, peut être un paramètre calculé à l'aide des mesures de vitesse.

      • Avoir de nombreux paramètres en sortie : pas seulement imposer un ampérage dans une résistance chauffante, mais commander plusieurs moteurs, lampes,...

      • Utiliser des paramètres comme résultats intermédiaires. Ils ne sont ni entrée ni sortie, mais sont calculés pour servir de référence.

  2. Le Digesteur méthanique

    • Description du système

    La digestion méthanique est un procédé biologique qui permet de transformer la matière organique résultant de la pollution (eaux usées, vinasses, etc.) en mélange gazeux de méthane et de dioxyde de carbone.

    • Choix des paramètres

    Le contrôle de deux types de paramètres peut conduire au bon fonctionnement du procédé :

      • les paramètres qui traduisent les conditions de fonctionnement. Le débit gazeux, le pH et leurs variations seront les paramètres d’entrée,

      • Les paramètres capables de contrôler le système. Le débit d ’ alimentation sera la grandeur de commande.

    • Fuzzification des paramètres

    Avant de fuzzifier les paramètres choisis, on doit construire les sous-ensembles d'appartenance, c’est à dire choisir leur nombre, leur forme, les variables linguistiques associées et l’univers de discours correspondant à chaque variable.

    Pour le débit gazeux de sortie et le pH, on calcule l’écart par rapport aux points de consigne (eQgaz,, epH), ainsi que les variations de ces grandeurs (DeQgaz ,DepH).

    Pour la commande, on calcule la modification à apporter au débit d ’ entrée Qent précédent
    (D
    u/Dt = Qent(t + Dt) - Qent(t), Dt = temps entre 2 mesures = 5mn).

    Les variations totales de eQgaz , DeQgaz et de DepH sont décomposées en 5 sous-ensembles flous (3 triangles, 2 trapèzes) correspondant aux variables linguistiques suivantes : négatif-grand (NG), négatif-petit (NP), zéro (ZE), positif-petit (PP), positif-grand (PG). Les variations de epH sont décomposées en 4 sous-ensembles, celles de Du en 7.

    Les bornes sont choisies en fonction de la dynamique souhaitée à l’aide en particulier de simulations sur un modèle représentant le procédé.

    Lorsque les ensembles flous sont établis, les variables d’entée peuvent être fuzzifiées, c‘est à dire que leurs valeurs numériques sont traduites en variables linguistiques avec une valeur de degré d’appartenance aux sous-ensembles correspondants.

     

    • Table d ’ inférences

    La table d’inférences est établie à partir de l ’ observation expérimentale du système et à partir de modèles théoriques simplifiés. Les règles sont toutes de la forme :

    Si (eQgaz est PP) et si (DeQgaz est ZE) et si (pH est NP) et si (DpH est PP)

    alors (Du est NP) (1)

    Les opérateurs flous et sont traduits par l’opérateur AND (minimum) (voir plus haut).

    Si plusieurs règles sont actionnées l’opérateur utilisé pour combiner les sous-ensembles obtenus pour Du est l’opérateur OR (maximum).

    Exemple : une valeur enregistrée est : eQgaz = .8 l/h

    Cette valeur conduit, pour la fonction d ’ appartenance, à la valeur suivante :

    eQgaz sous-ensemble ZE m ZE(eQgaz) = .17

    Il y a donc deux règles d’inférence actionnées, celle exposée précédemment (1) et la règle suivante :

    Si (eQgaz est ZE) et si (DeQgaz est ZE) et si (pH est NP) et si (DpH est PP)

    alors (Du est NM) (2)

    Pour la règle (1), on a :    min(mPP(eQgaz), mPP(DeQgaz), mNP(epH ), mNP(epH )) = .85

    Pour la règle (2), on a :     min(mZE(eQgaz), mPP(DeQgaz), mNP(epH ), mNP(epH )) = .17

    Les deux règles sont combinées à l’aide de l’opérateur OR.

    • Défuzzification

    Le sous-ensemble flou obtenu par combinaison à l’aide du maximum des sous-ensembles NP et NM actionnés pour la variable Du est représenté sur la figure suivante par la zone hachurée :

    La valeur numérique de la commande est obtenue par défuzzification à l’aide de la méthode du centre de gravité. On calcule le centre de gravité de la zone hachurée. La valeur obtenue est :

    Du /Dt = - .18 (l/h)2 soit Du = -.18 ´ 5 / 60 = -0.015 l/h

    La nouvelle valeur de la commande à appliquer au système vaut donc :

    u = 0.5 - 0.015 = 0.485 l/h

    La valeur de la commande est ainsi recalculée toutes les 5 mn à l’aide des nouvelles valeurs mesurées.

    • Résultat

    Les test effectués montre une amélioration d’un facteur 1.5 sur le temps de réponse par rapport à un contrôleur en programmation industrielle classique.




Conclusion

On peut dire que la logique floue a les avantages de ses inconvénients.

D'un côté, elle n'offre pas la rigueur mathématique que demande certains systèmes de contrôle comme la régulation de moteurs, les systèmes de positionnement, les haut-parleurs, tous les automatismes…

D'un autre côté, la logique floue offre une immense souplesse pour des systèmes où la rigueur est inutile tel que les systèmes décrits précédemment en exemple.

Les trois avantages principaux de la logique floue sont :

  • La souplesse de la maintenance
  • Adaptabilité à des conditions changeantes
  • Respect des contraintes en temps réel

La logique floue a déjà fait ses preuves dans les domaines d'application suivants : la commande prédictive d'un plancher chauffant, le contrôle de la glycémie chez les diabétiques, la commande d'un pont roulant, la reconnaissance de caractères, ou encore le traitement d'images.

La logique floue n'est pas une réponse à trois les problèmes de programmation de systèmes.

Elle est simplement un outil supplémentaire très bien adapté pour certains domaines d'application.





Bibliographie

Revue : "La Recherche" (n° 237 novembre 1991)
Titre de l’article : Les logiques du flou et du très possible
Auteur : Didier Dubois et Henri Prade

Revue : "Science et Vie"
Titre de l’article : L’informatique de la logique floue
Auteur : Renaud de La Taille

Sites Internet :
http://www.geocities.com/CapeCanaveral/Lab/9148/Lofo.html
http://pages.pratique.fr/~bmantel/
http://www.univ-perp.fr/