La logique floue s'utilise dans de nombreux domaines et particulièrement dans les cas où une modélisation mathématique du système ou du procédé est difficile.
Une variable linguistique V est un terme utilisé lors de la description d’une situation ou d'un procédé tel que la température, la vitesse, l'age … Ces variables sont définies sur une plage de valeurs X (de -20 à 50°C, de 5 à 100 km/h, de 0 à 100 ans).
Chaque variable linguistique est définie par un ensemble Tv de valeurs tel que tel que chaud, froid, rapide, lent, jeune … Le nombre de valeurs linguistiques dépend de la précision désirée. Plus on ajoute de valeurs linguistiques, plus la description du système sera précise. En général, on se limite à 7 valeurs linguistiques car au-delà, la formulation des règles d'inférence devient trop complexe.
Chaque valeur linguistique est définie par une fonction mathématique (triangulaire, trapèze, cloche …) qui détermine le degré d'appartenance d'une donnée à une variable linguistique.
Ce sont des règles qui définissent la relation qui existe entre les variables d'entrée et les variables de sortie. Ces règles sont de la forme :
Si “condition” Alors “conclusion”
Par exemple :
On peut également avoir plusieurs entrées ou sorties :
Un système flou est composé de 4 étapes.
La première étape est de définir pour le processus :
La deuxième étape consiste à « traduire » une entrée classique (mesure provenant d'un capteur) en valeur linguistique. On associe à chaque valeur son degré d'appartenance grâce aux fonctions d'appartenance correspondantes. Par exemple, T° = 20° → froid = 5 %, tiède = 95 %, chaud = 0 %
La troisième étape établit la relation entre les entrées et les sorties. On applique toutes les règles linguistiques pour obtenir les valeurs de sortie.
On considère un système à 2 entrées x, y et une sortie z.
Les valeurs linguistiques associées à ces variables sont grand, petit et nul.
On définit les règles :
SI x est grand ET y est grand ALORS z est grand OU
SI x est grand ET y est petit ALORS z est petit OU
SI x est grand ET y est nul ALORS z est nul OU
SI x est petit ET y est grand ALORS z est petit OU
SI x est petit ET y est petit ALORS z est petit OU
SI x est petit ET y est nul ALORS z est nul OU
SI x est nul ET y est grand ALORS z est nul OU
SI x est nul ET y est petit ALORS z est nul OU
SI x est nul ET y est nul ALORS z est nul OU
Il faut définir les opérateurs flous NON, ET et OU. Il existe plusieurs méthodes :
En sortie du moteur d'inférence, nous avons les valeurs linguistiques des variables de sortie. L'opération de défuzzification va permettre de “traduire” ces valeurs floues en valeurs nettes exploitables pour le système (tension, courant…). Cette opération est l'inverse de l'opération de fuzzification.
Pour chaque sous-ensemble, on va calculer la valeur nette correspondante selon une des méthodes suivantes :
On prend la valeur minimum correspondant au degré d'appartenance. Cette méthode est simple et rapide mais elle comporte des ambiguïtés et une discontinuité de la sortie.
On prend la valeur maximum correspondant au degré d'appartenance.
On prend les valeur minimum et maximum correspondant au degré d'appartenance puis on prend le centre des 2 abscisses.
On prend la valeur du centre de gravité de la surface de la fonction d'appartenance de sortie. Cette méthode de calcul est plus gourmande en calcul mais elle donne de très bon résultats en conservant la continuité de la sortie.
Une fois que l'on a calculé les valeurs de chaque variables de sortie, on doit en déduire une seule sortie finale (valeur nette exploitable par le système).
La première solution est de calculer la sortie sur l'union des sous ensembles floues. Cette solution est complexe et très lourde en calcul.
La seconde solution consiste à calculer chaque sous-ensemble séparément (avec une des méthodes de défuzzification) et d'appliquer une méthode de conjonction des sorties.
On prend la valeur minimale des sous-ensembles.
On calcule la moyenne de chaque sous-ensemble.
On calcule la moyenne pondérée de chaque sous-ensembles. Par exemple, pour la méthode du calcul du barycentre, nous allons calculer le centre de gravité de chaque sous-ensemble puis nous pondérons chaque résultat avec sa surface. Cette solution est coûteuse en calcul mais offre des très bon résultat.