La logique floue (fuzzy logic, en anglais) est une logique polyvalente où les valeurs de vérité des variables — au lieu d'être vrai ou faux — sont des réels entre 0 et 1. En ce sens, elle étend la logique booléenne classique avec des valeurs de vérité partielles , c'est-à-dire situées entre les valeurs booléennes vrai et faux. Elle consiste à tenir compte de divers facteurs numériques pour aboutir à une conclusion qu'on souhaite raisonnable.

Introduction Par ses aspects numériques,

Formalisée par Lotfi Zadeh en 1965, outil de l'intelligence artificielle, elle est utilisée dans des domaines aussi variés que :

la robotique (reconnaissance de formes)Kadri, M., Azouaoui, O., Kezerli, R., & Hariz, A. H. (2007). al, "Comportement d’évitement d’obstacles basé sur les réseaux de neurones et la logique floue pour un robot mobile autonome”. In International Conference on Computer Integrated Manufacturing, CIP (), la gestion de la circulation routière (feux rouges), le contrôle aérien (gestion du trafic aérien)Baridam, Barilee. (2018). . , l'environnement (météorologie, climatologie, sismologie, analyse du cycle de vie), la médecine (aide au diagnostic), et bien d'autres.

Elle est formalisée par une théorie mathématique des ensembles flous de Lotfi Zadeh qui présente une extension de la théorie des ensembles classiques aux ensembles définis de façon imprécise.

Partant d'un concept de fonction d'appartenance à valeur dans [0, 1], Lotfi Zadeh : redéfinit ce qu'est un sous-ensemble d'un univers donné, bâtit un modèle complet de propriétés et de définitions formelles, montre que cette théorie des sous-ensembles flous se réduit à la classiques dans le cas où les fonctions d'appartenance ne prennent que les valeurs binaires de {0,1}.

Principe

l'algèbre de Boole, la logique floue remplace la valeur de vérité d'une proposition à choisir dans {vrai, faux} par un degré de vérité, à choisir par exemple dans [0, 1]. En logique floue, il y a donc des degrés dans la satisfaction d'une condition.

Un exemple simple et ancien est la docimologie, c'est-à-dire l'évaluation des élèves d'une classe : dans chaque disciplineEn France., celui-ci est évalué par une note entre 0 (mauvais) et 20 (exceptionnel) et on estime, assez arbitrairement, le niveau de l'élève pour telle ou telle orientation par une pondération de ces notes avec divers coefficients selon l'orientation considérée. Propriétés Prenons l'exemple de la vitesse d'un véhicule sur une route où la vitesse normale est de . La vitesse est considérée élevée au-dessus de et réglementaire en dessous de . On souhaite caractériser la vitesse du véhicule en répondant par exemple à la question « La vitesse est-elle élevée ? ». Fichier:fuzzy0.svgfig. 1 Dans ce modèle de réglementation routière, en logique booléenne, la réponse à la question s'énonce de la manière suivante (voir fig. 1) : La vitesse est élevée à 100 % au-dessus de et à 0 % en dessous.

En logique floue, on autorise différents degrés d'énoncés de réponse à la question « La vitesse est-elle élevée ? » (voir fig. 2) : La vitesse est réglementaire en dessous de . On peut donc dire qu'en dessous de , la vitesse est élevée avec un taux de confiance de 0 %. Fichier:fuzzy1.svgfig. 2 La vitesse est élevée au-dessus de . La vitesse est non réglementaire avec un taux de confiance de 100 % au-dessus de . Aux stades intermédiaires, on considère que la vitesse est non réglementaire à 50 % de confiance à et à 25 % de confiance à .

De même, on peut définir une fonction correspondant à la question « La vitesse est-elle peu élevée ? » de la manière suivante (voir fig. 3) : La vitesse est peu élevée en dessous de . Elle est donc peu élevée à 100 %. Fichier:fuzzy2.svgfig. 3 La vitesse est considérée comme pas du tout peu élevée au-dessus de . Elle est donc peu élevée à 0 %. La vitesse est donc peu élevée à 50 % à , et à 25 % à .

On peut aussi définir une fonction correspondant à la question « La vitesse est-elle moyenne ? » (voir fig. 4) : La vitesse est moyenne à . À cette allure, la vitesse est moyenne à 100 %. Fichier:fuzzy3.svgfig. 4 La vitesse n'est pas du tout moyenne en dessous de et au-dessus de . Hors de cet intervalle, la vitesse est moyenne à 0 %. La vitesse est donc moyenne à 50 % à et .

Il n'est pas obligatoire que la transition soit linéaire. Des transitions hyperboliques (comme une sigmoïde ou une tangente hyperbolique), exponentielle, gaussienne (dans le cas d'un état moyen) ou de toute autre nature sont utilisables (voir fig. 5). Fichier:fuzzy4.svgFichier:fuzzy5.svg250pxfig. 5

Relations Le degré de vérité d'une relation floue entre deux ou t-objets est le degré d'appartenance de la paire ou du t-uple à l'ensemble flou associé à la relation.

Soit la relation est1 (est-un/est-une). Pour dire que toute chaise est un meuble et que 30 % des meubles sont des chaises, on accordera un degré de vérité de 1 à est1(chaise, meuble) et un degré 0,3 à est1(meuble, chaise).

La connaissance topographique qu'un agent possède d'un monde clos pourra s'appuyer sur l'attribution de degrés de vérité à une relation du style x est_plus_près_de y que_de z, construite et/ou affinée par apprentissage.

De façon générale, les relations floues permettront de coder des connaissances graduées, empiriques ou typiques, acquises directement ou par des heuristiques, des inductions...

Combinaison d'énoncés Dans le cas d'une combinaison d'énoncés (pour exemple : « Si le ciel est bleu et si j'ai le temps »), trois cas se présentent :

Les énoncés sont liés par un « ET » : dans ce cas, on peut assigner à cette conjonction le degré de vérité le plus faible. En fait, il suffit de choisir un opérateur tel que où est appelée une t-norme. est la plus optimiste des t-normes. Les entrées sont liées par un « OU » : dans ce cas, on peut assigner à cette adjonction le degré de vérité le plus élevé. En fait, il suffit de choisir un opérateur tel que où est appelée une t-conorme. est la plus pessimiste des t-conormes. Un ou plusieurs énoncés peuvent être niés. Dans ce cas, pour garder un maximum de propriétés logiques on associe à la négation le complément du degré de vérité de l'énoncé.

Premier système En définissant les opérateurs logiques de base de la façon suivantesystème de Zadeh qu'on peut considérer comme inspiré de Lukasiewicz:

il devient possible de représenter toutes les opérations logiques de base en logique floue :

OpérateurAbréviationApplication OU OR A OU B [écriture allégée : en toute rigueur, on devrait distinguer l'énoncé A et son degré de vérité v(A), et écrire v(A OU B) = max(v(A), v(B))] ET A ET B NON NON A OU Exclusif OUEX A OUEX B NI NON-OU A NI B ON NON-ET A ON B EQV NON-OUEX A EQV B REPETEUR REP REP A

Propriétés et limitations Ce système conserve de nombreuses propriétés booléennes, mais pas la non contradiction : si a pour degré de vérité , a pour degré de vérité et leur conjonction , à valeur dans ...

Deuxième système Par ailleurs, la dimension numérique des variables de la logique floue permet d'utiliser d'autres opérations :

Le produit : A × B pour ET (ce qui fait perdre l'idempotence : A ET A devient alors une interprétation de très A); La composition : A + B - A × B pour OU (la simple addition dépasserait les bornes de l'intervalle [0 1] dans certains cas)dans un style proche de George Boole (1854), ou de Vallée qui appelle cette composition produel dans son Analyse Binaire ; parfois vu aussi comme probabiliste. En conservant NON(v)=1-v, on garde encore de nombreuses propriétés logiques.

Autres systèmes Pour combattre certains problèmes d'inférence, on peut vouloir un opérateur ET plus dur, associant à l'opération A ET B, le degré . Dans un tel cas, OU et NON doivent être choisis de façon à conserver ou non certaines propriétés, par exemple pour sécuriser les raisonnements. On trouvera dans la Théorie des Possibilités (op. cit.) les relations entre axiomes logiques souhaités et équations fonctionnelles que doivent respecter les opérateurs correspondants.

On peut même changer l'espace de vérité, en préférant par exemple [-1 +1] pour certaines propriétés bipolaires.

Opérateurs flous Les opérateurs flous peuvent être définis de diverses manières, dès lors qu'ils dotent, selon Goguen, l'espace de vérité choisi d'une structure de treillis, souhaitable pour le ET et le OU, treillis de préférence complémenté pour un NON involutif.

Les familles paramétriques d'opérateurs flous permettront à un même moteur d'inférence d'incarner des logiques plus ou moins strictes. Une même application pourra ainsi faire appel à des implémentations différentes judicieusement choisies selon le contexte.

L'exemple ci-dessous montre à travers 3 modes de résolution l'influence du choix des opérateurs, au-delà d'une approche naïve d'un problème.

Exemple d'utilisation

vignette|Une Orchidée jacinthe|100px Cet exemple montre comment combiner des opérateurs flous de divers types à travers le problème « confirmer l'appartenance d'une personne à un groupe » :

Énoncé Une personne sera plus ou moins membre (à un niveau fzMembre, compris entre 0 et 1, inclusivement) d'un groupe, disons les flower lovers, soit si, pour n'importe quelle raison, elle en fait déjà plus ou moins partie (à un niveau fzDejaMembre), soit si elle a une assez bonne connaissance des orchidées (fzConnaitOrchidees) et que la connaissance des orchidées est un critère assez déterminant (fzOrchideesAmis) d'appartenance au groupe des flower lovers.

Solution 1

fzMembre = Zadeh_OR(fzDejaMembre, Multiply_AND(fzConnaitOrchidees, fzOrchideesAmis))

Implémentation

fzMembre = max(fzDejaMembre, (fzConnaitOrchidees * fzOrchideesAmis))

pour fzDejaMembre=0 (faux), fzConnaitOrchidees=0.778 et fzOrchideesAmis=0.9, on trouve 0.7 pour fzDejaMembre=0.7, fzConnaitOrchidees=0.8 et fzOrchideesAmis=0.9, on trouve 0.72 pour fzDejaMembre=0.72, fzConnaitOrchidees=0.8 et fzOrchideesAmis=0.9, on retrouve 0.72 pour fzDejaMembre=0.72, fzConnaitOrchidees=0.5 et fzOrchideesAmis=0.9, on conserve 0.72 (ce qui est le résultat vraisemblablement attendu)

Solution 2 - Utilisation des seuls opérateurs de Zadeh Une solution qui n'utiliserait que les opérateurs de Zadeh serait :

fzMembre = Zadeh_OR(fzDejaMembre, Zadeh_AND(fzConnaitOrchidees, fzOrchideesAmis))

Implémentation

fzMembre = max(fzDejaMembre, min(fzConnaitOrchidees, fzOrchideesAmis))

pour fzDejaMembre=0 (faux), fzConnaitOrchidees=0.778 et fzOrchideesAmis=1 (vrai), on trouve 0.778 pour fzDejaMembre=0 (faux), fzConnaitOrchidees=0.778 et fzOrchideesAmis=0.9, on trouve aussi 0.778 (ce qui est trop élevé) pour fzDejaMembre=0.778, fzConnaitOrchidees=0.8 et fzOrchideesAmis=0.9, on trouve 0.8 pour fzDejaMembre=0.8, fzConnaitOrchidees=0.8 et fzOrchideesAmis=0.9, on retrouve 0.8 pour fzDejaMembre=0.8, fzConnaitOrchidees=0.5 et fzOrchideesAmis=0.9, on conserve 0.8 (ce qui est stable mais trop élevé)

Solution 3 - Opérateurs représentables par des paraboloïdes hyperboliques Une solution qui n'utiliserait que les opérateurs représentables par des paraboloïdes hyperboliques serait :

fzMembre = Add_OR(fzDejaMembre, Multiply_AND(fzConnaitOrchidees, fzOrchideesAmis))

Implémentation

fzMembre = fzDejaMembre + (fzConnaitOrchidees*fzOrchideesAmis) - (fzDejaMembre*fzConnaitOrchidees*fzOrchideesAmis)

pour fzDejaMembre=0 (faux), fzConnaitOrchidees=0.778 et fzOrchideesAmis=0.9, on trouve 0.7 pour fzDejaMembre=0.7, fzConnaitOrchidees=0.8 et fzOrchideesAmis=0.9, on trouve 0.916 (ce qui est sûrement trop élevé) pour fzDejaMembre=0.916, fzConnaitOrchidees=0.8 et fzOrchideesAmis=0.9, on trouve (ce qui est instable et sûrement beaucoup trop élevé) pour fzDejaMembre=, fzConnaitOrchidees=0.5 et fzOrchideesAmis=0.9, on trouve (une augmentation bien malvenue)

Convergence - Critique des solutions présentées

Les trois méthodes exposées ci-dessus convergent lorsque les valeurs d'entrée sont booléennes :