IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)

Introduction à la logique floue

Image non disponible

La logique floue est une extension de la logique classique qui permet la modélisation des imperfections des données et se rapproche dans une certaine mesure de la flexibilité du raisonnement humain.

Dans ce cours d'introduction, nous définirons les notions de base de la logique floue en les illustrant par un exemple qui sera gardé tout au long du cours. Cet exemple sera la décision du montant du pourboire à l'issue d'un repas au restaurant, en fonction de la qualité du service ressentie ainsi que de la qualité de la nourriture (exemple souvent utilisé pour introduire à la logique floue).

Prérequis : connaissances de base sur les ensembles classiques et la logique classique (booléenne).

16 commentaires Donner une note à l´article (5)

Article lu   fois.

L'auteur

Profil ProSite personnel

Liens sociaux

Viadeo Twitter Facebook Share on Google+   

1. Introduction

La logique floue est une extension de la logique booléenne créée par Lotfi Zadeh en 1965 en se basant sur sa théorie mathématique des ensembles flous, qui est une généralisation de la théorie des ensembles classiques. En introduisant la notion de degré dans la vérification d'une condition, permettant ainsi à une condition d'être dans un autre état que vrai ou faux, la logique floue confère une flexibilité très appréciable aux raisonnements qui l'utilisent, ce qui rend possible la prise en compte des imprécisions et des incertitudes.

Un des intérêts de la logique floue pour formaliser le raisonnement humain est que les règles sont énoncées en langage naturel. Voici par exemple quelques règles de conduite qu'un conducteur suit, en supposant qu'il tienne à son permis :

Si le feu est rouge... si ma vitesse est élevée... et si le feu est proche... alors je freine fort.
Si le feu est rouge... si ma vitesse est faible... et si le feu est loin... alors je maintiens ma vitesse.
Si le feu est orange... si ma vitesse est moyenne... et si le feu est loin... alors je freine doucement.
Si le feu est vert... si ma vitesse est faible... et si le feu est proche... alors j'accélère.



Intuitivement, il semble donc que les variables d'entrée à l'instar de cet exemple sont appréciées par le cerveau de manière approximative, correspondant ainsi au degré de vérification d'une condition de la logique floue.

Afin d'exemplifier chacune des définitions, nous allons concevoir au fil de ce cours d'introduction à la logique floue un système d'inférence flou concret dont l'objectif est de décider du pourboire à donner à la fin d'un repas au restaurant en fonction de la qualité du service ainsi que de la qualité de la nourriture.

Prérequis : connaissances de base sur les ensembles classiques et la logique classique (booléenne).

2. Les sous-ensembles flous

La logique floue repose sur la théorie des ensembles flous, qui est une généralisation de la théorie des ensembles classiques. Par abus de langage, suivant les us de la littérature, nous utiliserons indifféremment les termes sous-ensembles flous et ensembles flous. Les ensembles classiques sont également appelés ensembles nets, par opposition à flou, et de même la logique classique est également appelée logique booléenne ou binaire.

Voici une figure montrant la fonction d'appartenance choisie pour caractériser le sous-ensemble 'bon' de la qualité du service :

Image non disponible
Fonction d'appartenance caractérisant le sous-ensemble 'bon' de la qualité du service



DEFINITION : Soit X un ensemble. Un sous-ensemble flou A de X est caractérisé par une fonction d'appartenance kitxmlcodeinlinelatexdvpf^{a}: X \rightarrow \left[0, 1\right]finkitxmlcodeinlinelatexdvp. Note : cette fonction d'appartenance est l'équivalent de la fonction caractéristique d'un ensemble classique.

Dans notre exemple du pourboire, il nous faudra redéfinir des fonctions d'appartenance pour chaque sous-ensemble flou de chacune de nos trois variables :

  • Input 1 : qualité du service. Sous-ensembles : mauvais, bon et excellent.
  • Input 2 : qualité de la nourriture. Sous-ensembles : exécrable et délicieux.
  • Output : montant du pourboire. Sous-ensembles : faible, moyen et élevé.

La forme de la fonction d'appartenance est choisie arbitrairement en suivant les conseils de l'expert ou en faisant des études statistiques : formes sigmoïde, tangente hyperbolique, exponentielle, gaussienne ou de toute autre nature sont utilisables.

Cette figure montre graphiquement la différence entre un ensemble classique et l'ensemble flou correspondant à une nourriture délicieuse :

Image non disponible
Représentation graphique d'un ensemble classique et d'un ensemble flou



Cette figure compare les deux fonctions d'appartenance correspondant aux ensembles précédents :

Image non disponible
Comparaison entre fonction caractéristique d'un ensemble classique et fonction d'appartenance d'un ensemble flou



Pour pouvoir définir les caractéristiques des ensembles flous, nous redéfinissons et étendons les caractéristiques usuelles des ensembles classiques.

Soit X un ensemble, A un sous-ensemble flou de X et kitxmlcodeinlinelatexdvp\mu_Afinkitxmlcodeinlinelatexdvp la fonction d'appartenance le caractérisant.

DEFINITION : La hauteur de A, notée kitxmlcodeinlinelatexdvph(A)finkitxmlcodeinlinelatexdvp, correspond à la borne supérieure de l'ensemble d'arrivée de sa fonction d'appartenance : kitxmlcodeinlinelatexdvph(A)=\sup\{\mu_A(x) \mid x\in X\}finkitxmlcodeinlinelatexdvp.

DEFINITION : A est dit normalisé si et seulement si kitxmlcodeinlinelatexdvph(A) = 1finkitxmlcodeinlinelatexdvp. En pratique, il est extrêmement rare de travailler sur des ensembles flous non normalisés.

DEFINITION : Le support de A est l'ensemble des éléments de X appartenant au moins un peu à A. Autrement dit, c'est l'ensemble kitxmlcodeinlinelatexdvp\operatorname{supp}(A) = \{x \in X \mid \mu_A(x)>0 \}finkitxmlcodeinlinelatexdvp.

DEFINITION : Le noyau de A est l'ensemble des éléments de X appartenant totalement à A. Autrement dit, c'est l'ensemble kitxmlcodeinlinelatexdvpnoy(A) = \{x \in X \mid \mu_A(x)=1 \}finkitxmlcodeinlinelatexdvp. Par construction, kitxmlcodeinlinelatexdvp\operatorname{noy}(A) \subseteq \operatorname{supp}(A)finkitxmlcodeinlinelatexdvp.

DEFINITION : Une kitxmlcodeinlinelatexdvp\alphafinkitxmlcodeinlinelatexdvp-coupe de A est le sous-ensemble classique des éléments ayant un degré d'appartenance supérieur ou égal à kitxmlcodeinlinelatexdvp\alphafinkitxmlcodeinlinelatexdvp : kitxmlcodeinlinelatexdvp\operatorname{\alpha-coupe}(A) = \{x\in X \mid \mu_A(x) \geqslant \alpha\}finkitxmlcodeinlinelatexdvp.

Voici une autre fonction d'appartenance pour un pourboire moyen sur lequel nous avons fait figurer les propriétés précédentes :

Image non disponible
Propriétés d'un ensemble flou

Nous remarquons que si A était un ensemble classique, nous aurions simplement kitxmlcodeinlinelatexdvp\operatorname{supp}(A) = noy(A)finkitxmlcodeinlinelatexdvp et kitxmlcodeinlinelatexdvph(A) = 1finkitxmlcodeinlinelatexdvp (ou kitxmlcodeinlinelatexdvph(A) = 0finkitxmlcodeinlinelatexdvp si kitxmlcodeinlinelatexdvpA = \emptysetfinkitxmlcodeinlinelatexdvp). Nos définitions permettent donc bien de retrouver les propriétés usuelles des ensembles classiques. Nous ne parlerons pas de la cardinalité car nous n'utiliserons pas cette notion dans la suite de ce cours.

3. Les variables linguistiques

Le concept de fonction d'appartenance vu précédemment nous permettra de définir des systèmes flous en langage naturel, la fonction d'appartenance faisant le lien entre logique floue et variable linguistique que nous allons définir à présent.

DEFINITION : Soit V une variable (qualité du service, montant du pourboire, etc.), X la plage de valeurs de la variable et kitxmlcodeinlinelatexdvpT_{V}finkitxmlcodeinlinelatexdvp un ensemble fini ou infini de sous-ensembles flous. Une variable linguistique correspond au triplet kitxmlcodeinlinelatexdvp\left(V,X,T_{V}\right)finkitxmlcodeinlinelatexdvp.

Image non disponible
Variable linguistique 'qualité du service'



Image non disponible
Variable linguistique 'qualité de la nourriture'



Image non disponible
Variable linguistique 'montant du pourboire'

4. Les opérateurs flous

Afin de pouvoir manipuler aisément les ensembles flous, nous redéfinissons les opérateurs de la théorie des ensembles classiques afin de les adapter aux fonctions d'appartenance propres à la logique floue permettant des valeurs strictement entre 0 et 1.

Contrairement aux définitions des propriétés des ensembles flous qui sont toujours les mêmes, la définition des opérateurs sur les ensembles flous est choisie, à l'instar des fonctions d'appartenance. Voici les deux ensembles d'opérateurs pour le complément (NON), l'intersection (ET) et l'union (OU) utilisés le plus couramment :

Dénomination Intersection ET : kitxmlcodeinlinelatexdvp\mu_{A\cap{B}}(x)finkitxmlcodeinlinelatexdvp Réunion OU : kitxmlcodeinlinelatexdvp\mu_{A\cup{B}}(x)finkitxmlcodeinlinelatexdvp Complément NON : kitxmlcodeinlinelatexdvp\mu_\bar{A}(x)finkitxmlcodeinlinelatexdvp
Opérateurs de Zadeh MIN/MAX kitxmlcodeinlinelatexdvpmin\left(\mu_A(x), \mu_B(x) \right)finkitxmlcodeinlinelatexdvp kitxmlcodeinlinelatexdvpmax\left(\mu_A(x), \mu_B(x) \right)finkitxmlcodeinlinelatexdvp kitxmlcodeinlinelatexdvp1 - \mu_A(x) finkitxmlcodeinlinelatexdvp
Probabiliste PROD/PROBOR kitxmlcodeinlinelatexdvp\mu_A(x) \times \mu_B(x) finkitxmlcodeinlinelatexdvp kitxmlcodeinlinelatexdvp\mu_A(x) + \mu_B(x) - \mu_A(x) \times \mu_B(x) finkitxmlcodeinlinelatexdvp kitxmlcodeinlinelatexdvp1 - \mu_A(x) finkitxmlcodeinlinelatexdvp



Avec les définitions usuelles des opérateurs flous, nous retrouvons toujours les propriétés de commutativité, distributivité et associativité des opérateurs classiques. Cependant, relevons deux exceptions notables :

  • En logique floue, le principe du tiers exclu est contredit : kitxmlcodeinlinelatexdvpA\cup{\bar{A}} \neq Xfinkitxmlcodeinlinelatexdvp, autrement dit kitxmlcodeinlinelatexdvp\mu_{A\cup{\bar{A}}}(x) \neq 1finkitxmlcodeinlinelatexdvp.
  • En logique floue, un élément peut appartenir à A et non A en même temps : kitxmlcodeinlinelatexdvpA\cap{\bar{A}} \neq \emptysetfinkitxmlcodeinlinelatexdvp, autrement dit kitxmlcodeinlinelatexdvp\mu_{A\cap{\bar{A}}}(x) \neq 0finkitxmlcodeinlinelatexdvp. Notons que ces éléments correspondent à l'ensemble kitxmlcodeinlinelatexdvp\operatorname{supp}(A) - \operatorname{noy}(A)finkitxmlcodeinlinelatexdvp.

5. Le raisonnement en logique floue

En logique classique, les raisonnements sont de la forme :
\begin{cases} \textrm{Si\ p\ alors\ q} \\ \textrm{p\ vrai\ alors\ q\ vrai}\end{cases}

En logique floue, le raisonnement flou, également appelé raisonnement approximatif, se base sur des règles floues qui sont exprimées en langage naturel en utilisant les variables linguistiques dont nous avons donné la définition précédemment. Une règle floue aura cette forme :
Si kitxmlcodeinlinelatexdvp x \in A finkitxmlcodeinlinelatexdvp et kitxmlcodeinlinelatexdvp y \in B finkitxmlcodeinlinelatexdvp alors kitxmlcodeinlinelatexdvp z \in C finkitxmlcodeinlinelatexdvp, avec A, B et C des ensembles flous.

Voici un exemple de règle : 'Si (la qualité de la nourriture est délicieuse), alors (le pourboire sera élevé)'.

La variable 'pourboire' appartient à l'ensemble flou 'élevé' à un degré qui dépend du degré de validité de la prémisse, autrement dit du degré d'appartenance de la variable 'qualité de la nourriture' à l'ensemble flou 'délicieux'. L'idée sous-jacente est que plus les propositions en prémisse sont vérifiées, plus l'action préconisée pour les sorties doit être respectée. Pour connaître le degré de vérité de la proposition floue 'le pourboire sera élevé', nous devons définir l'implication floue.

À l'instar des autres opérateurs flous, il n'existe pas de définition unique de l'implication floue : le concepteur du système flou devra choisir parmi le large choix d'implications floues déjà définies, ou bien la définir à la main. Voici les deux définitions de l'implication floue les plus couramment utilisées :

Nom Valeur de vérité
Mamdani kitxmlcodeinlinelatexdvpmin\left(f_a(x), f_b(x)\right)finkitxmlcodeinlinelatexdvp
Larsen kitxmlcodeinlinelatexdvpf_a(x) \times f_b(x)finkitxmlcodeinlinelatexdvp



Fait notable, ces deux implications ne généralisent pas l'implication classique. Il existe d'autres définitions d'implication floue la généralisant, mais elles sont moins utilisées.

Si nous choisissons l'implication de Mamdani, voici ce que nous obtenons pour la règle floue 'Si (la qualité de la nourriture est délicieuse), alors (le pourboire sera élevé)' lorsque la qualité de la nourriture est notée 8,31 sur 10 :

Image non disponible
Exemple d'implication floue



Le résultat de l'application d'une règle floue dépend donc de trois facteurs :

  • la définition d'implication floue choisie ;
  • la définition de la fonction d'appartenance de l'ensemble flou de la proposition située en conclusion de la règle floue ;
  • le degré de validité des propositions situées en prémisse.

Comme nous avons défini les opérateurs flous ET, OU et NON, la prémisse d'une règle floue peut très bien être formée d'une conjonction de propositions floues. L'ensemble des règles d'un système flou est appelé la matrice des décisions. Voici celui de notre exemple du pourboire :

Si le service est mauvais ou la nourriture est exécrable alors le pourboire est faible.
Si le service est bon alors le pourboire est moyen.
Si le service est excellent ou la nourriture est délicieuse alors le pourboire est elevé.



Nous allons maintenant appliquer l'ensemble des 3 règles de notre matrice des décisions. Cependant, nous allons obtenir 3 ensembles flous pour le pourboire : nous les agrégerons par l'opérateur MAX qui est presque toujours utilisé pour l'agrégation. Cette figure montre cette agrégation :

Image non disponible
Exemple d'implication floue en utilisant la matrice des décisions



Comme nous le voyons, il ne nous reste plus qu'à prendre la décision finale, à savoir quel pourboire nous allons réellement donner sachant que la qualité du service est notée 7,83 sur 10 et la qualité de la nourriture 7,32 sur 10. Cette étape finale, qui permet de passer de l'ensemble flou issu de l'agrégation des conclusions à une décision unique, s'appelle la défuzzification.

6. La défuzzification

Comme pour tous les opérateurs flous, le concepteur du système flou doit choisir parmi plusieurs définitions possibles de défuzzification. Nous allons présenter brièvement les deux principales méthodes de défuzzification : la méthode moyenne des maxima (MM) et la méthode du centre de gravité (COG).

La défuzzification MM définit la sortie (décision du montant du pourboire) comme étant la moyenne des abscisses des maxima de l'ensemble flou issu de l'agrégation des conclusions.

kitxmlcodeinlinelatexdvp Décision = \tfrac{\int_S y\cdot dy }{\int_S dy}finkitxmlcodeinlinelatexdvp
où kitxmlcodeinlinelatexdvp S = \left\{y_m \in R, \mu(y_m) = SUP_{y \in R}(\mu(y))\right\}finkitxmlcodeinlinelatexdvp
et R est l'ensemble flou issu de l'agrégation des conclusions.

Image non disponible
Défuzzification avec la méthode moyenne des maxima (MM)




La défuzzification COG est plus couramment utilisée. Elle définit la sortie comme correspondant à l'abscisse du centre de gravité de la surface de la fonction d'appartenance caractérisant l'ensemble flou issu de l'agrégation des conclusions.

kitxmlcodeinlinelatexdvp Décision = \tfrac{\int_S y\cdot \mu(u) \cdot dy }{\int_S \mu(u) \cdot dy} finkitxmlcodeinlinelatexdvp

Image non disponible
Défuzzification avec la méthode centre de gravité (COG)



Cette définition permet d'éviter les discontinuités qui pouvaient apparaître dans la défuzzification MM, mais est plus complexe et demande des calculs plus importants. Certains travaux cherchent à améliorer les performances en cherchant d'autres méthodes aussi efficaces mais avec une complexité algorithmique moindre. Comme nous le voyons sur les 2 figures montrant les méthodes de défuzzification MM et COG appliquées à notre exemple, le choix de cette méthode a un effet important sur la décision finale.

7. Conclusions

Au cours des définitions, nous avons vu que le concepteur d'un système flou doit faire un nombre de choix important. Ces choix se basent essentiellement sur les conseils de l'expert ou sur l'analyse statistique des données passées, en particulier pour définir les fonctions d'appartenance et la matrice des décisions.

Voici un aperçu synoptique d'un système flou :

Image non disponible
Aperçu synoptique d'un système flou

Dans notre exemple :

  • l'input est 'la qualité du service est notée 7,83 sur 10 et la qualité de la nourriture 7,32 sur 10' ;
  • le fuzzifier correspond aux 3 variables linguistiques 'qualité du service', 'qualité de la nourriture' et 'montant du pourboire' ;
  • le moteur d'inférence est constitué du choix des opérateurs flous ;
  • la base de connaissances floues est l'ensemble des règles floues ;
  • le defuzzifier est la partie où entre en jeu la méthode de défuzzification ;
  • l'output correspond à la décision finale : 'le montant du pourboire est 25,1'.

Il est intéressant de voir l'ensemble des décisions en fonction de chacune des variables avec notre système d'inférence flou par rapport au type d'ensemble de décisions que nous obtiendrions en utilisant la logique classique :

Image non disponible
Ensemble des décisions d'un système flou



Image non disponible
Ensemble des décisions d'un système se basant sur la logique classique



Ainsi, toute la puissance de la logique floue est de rendre possible la mise en place de systèmes d'inférence dont les décisions sont sans discontinuités, flexibles et non linéaires, plus proche du comportement humain que ne l'est la logique classique. De plus, les règles de la matrice des décisions sont exprimées en langage naturel, ce qui comporte de nombreux avantages, comme par exemple inclure des connaissances d'un expert non informaticien au coeur d'un système décisionnel ou encore modéliser plus finement certains aspects du langage naturel.

8. Remerciements

Je tiens à remercier (en ordre chronologique) :
  • Jean Baratgin, Elisabeth Métais et Emmanuel Sander pour m'avoir laissé l'opportunité d'écrire ce cours sur la logique floue ;
  • Alp Mestan et Romuald Perrot pour leur aide dans la mise en ligne de ce cours sur Developpez.com ;
  • 3DArchi, Julien Plu et Antoine Dinimant pour leur avis technique ;
  • Patriarch24 pour avoir effectué la correction orthographique.

Vous avez aimé ce tutoriel ? Alors partagez-le en cliquant sur les boutons suivants : Viadeo Twitter Facebook Share on Google+   

Copyright © 2011 - Franck Dernoncourt - franck.dernoncourt@gmail.com - http://francky.me/
Ce cours est sous la licence libre Creative Commons-BY-SA. Vous pouvez le diffuser sous condition de garder cette licence et de citer l'auteur de ce document.