Outils pour utilisateurs

Outils du site


robotics:logique_floue

Différences

Cette page vous affiche les différences entre la révision choisie et la version actuelle de la page.

Lien vers cette vue comparative

robotics:logique_floue [2014/12/01 14:22]
ldo [Valeurs et fonctions d'appartenance]
robotics:logique_floue [2014/12/01 16:07] (Version actuelle)
ldo [Moteur d'inférence]
Ligne 3: Ligne 3:
 ==== Logique classique (Boole) ==== ==== Logique classique (Boole) ====
 ==== Logique floue ==== ==== Logique floue ====
 +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.
 ===== Définitions ===== ===== Définitions =====
 ==== Variables linguistiques ==== ==== Variables linguistiques ====
 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 ... 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 des valeurs X (de -20 à 50°C, de 5 à 100 km/h, de 0 à 100 ans).+Ces variables sont définies sur une plage de valeurs X (de -20 à 50°C, de 5 à 100 km/h, de 0 à 100 ans).
  
-==== Valeurs ​et fonctions d'​appartenance ​==== +==== Valeurs ​linguistiques ​==== 
-Chaque variable ​linguistiques ​est définie par un ensemble Tv de valeurs tel que tel que chaud, froid, rapide, lent, jeune ...+ 
 +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éePlus on ajoute de valeurs linguistiques,​ plus la description du système sera préciseEn général, on se limite à 7 valeurs linguistiques car au-delà, la formulation des règles d'​inférence devient trop complexe. 
 + 
 +==== Fonctions d'​appartenance ==== 
 + 
 +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.
  
-Chaque valeur 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. 
  
 ==== Règles linguistiques ==== ==== Règles linguistiques ====
Ligne 26: Ligne 30:
   * **Si** ma vitesse est rapide **et** un obstacle est proche **alors** je freine fort   * **Si** ma vitesse est rapide **et** un obstacle est proche **alors** je freine fort
  
 +===== Système flou =====
 +Un système flou est composé de 4 étapes.
 +
 +==== Définition des entrées et sorties ====
 +La première étape est de définir pour le processus :
 +  * les variables linguistiques d'​entrée (température,​ vitesse...)
 +  * les valeurs linguistiques d'​entrée (chaud, froid, rapide, petit, grand...) et leurs fonctions d'​inférences
 +  * les variables linguistiques de sortie (tension, courant, position...)
 +  * les valeurs linguistiques de sortie (grand, petit, ouvert, fermé...)
 +  * les règles linguistiques
 +
 +==== Fuzzification ====
 +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 %
 +
 +==== Moteur d'​inférence ====
 +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.
 +
 +=== Exemple ===
 +\\ 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**
 +
 +=== Définition des opérateurs ===
 +Il faut définir les opérateurs flous NON, ET et OU. Il existe plusieurs méthodes :
 +== Méthode MIN/MAX ==
 +  * condition :​ ET -> min, OU → max
 +  * implication : OU -> max, ALORS → min
 +
 +== Méthode MAX-PROD ==
 +  * condition : ET -> Min, OU -> Max
 +  * implication : ou -> Max, Alors -> Prod
 +
 +== Méthode SOMME-PROD ==
 +  * condition : ET -> Prod OU -> Somme
 +  * implication : ou -> Somme Alors -> Prod
 +
 +==== Défuzzification ====
 +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.
 +
 +=== Méthodes de défuzzification ===
 +Pour chaque sous-ensemble,​ on va calculer la valeur nette correspondante selon une des méthodes suivantes :​
 +
 +== Méthode du premier maximum ==
 +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.
 +
 +== Méthode du dernier maximum ==
 +On prend la valeur maximum correspondant au degré d'​appartenance.
 +
 +== Méthode du centre des maxima ==
 +On prend les valeur minimum et maximum correspondant au degré d'​appartenance puis on prend le centre des 2 abscisses.
 +
 +== Méthode du barycentre (centroid) ==
 +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.
 +
 +=== Méthode de calcul de la sortie finale ===
 +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.
 +
 +== Minimum ==
 +On prend la valeur minimale des sous-ensembles.
 +
 +== Moyenne ==
 +On calcule la moyenne de chaque sous-ensemble.
 +
 +== Moyenne pondérée ==
 +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.
robotics/logique_floue.1417440133.txt.gz · Dernière modification: 2014/12/01 14:22 par ldo