Régulation de Niveau en Logique Floue

Sommaire

  1. Introduction
    1. Comparaison Logique floue - Logique classique
    2. Petit historique
  2. Théorie
    1. Comment raisonner ?
    2. le NON
    3. le ET
  3. Principe d'une commande Floue
    1. Organisation d'une commande floue
    2. Interface avec le flou
    3. Raisonnement flou
    4. Interface avec le non-flou
  4. Application à la régulation de niveau
    1. Généralités
    2. Interface avec le flou
    3. Raisonnement flou
    4. Interface avec le non-flou
    5. Détermination des paramêtres du régulateur flou
    6. Exemple de calcul
    7. Conclusion

1 - INTRODUCTION

1.1 Comparaison Logique floue - Logique classique

En logique classique, toute proposition a une valeur de vérité égale à 0 (`faux`) ou à 1 (`vrai`).

En logique floue, toutes les valeurs intermédiaires entre le 0 et le 1, c'est-à-dire entre le faux et le vrai, sont admises, d'où l'adjectif "floue".

1.2 Petit historique

A l'origine, la logique floue provient de la théorie des sous-ensembles flous, introduite en 1965 par LA Adeh, professeur à l'Université de Californie à Berkeley.

Cette théorie propose une généralisation de la notion classique d'ensemble : un élément peut appartenir plus ou moins à un ensemble.

Le degré d'appartenance des éléments à un sous-ensemble flou d'un ensemble de référence est mesuré par une "fonctionnement d'appartenance" de l'ensemble de référence dans l'intervalle [0,1] (si cette fonction ne prend que les valeurs 0 ou 1, on retombe bien sur un sous-ensemble classique).

On peut voir les choses d'une autre manière en disant que la proposition "l'élément appartient à l'ensemble" est plus ou moins vraie, ce qui introduit la notion de proposition floue, et par conséquent la possibilité de raisonner sur ces propositions.

L'intérêt pratique de cette théorie commença à apparaître au début des années 70.

En effet, la logique floue permet d'appréhender un proccessus sur lequel on dispose de connaissances imparfaites et surtout se rapproche beaucoup de la pensée humaine, qui utilise des catégories imprécises.

Par exemple, un barragiste qui tient un niveau en manuel ne pensera probablement pas : $Q_c = ttK_i int_0^(t) epsilon(t)delta t + ttK_p epsilon$ (régulateur PI)

mais plus probablement : "le niveau est très haut et monte beaucoup, donc il faut que j'ouvre beaucoup" (régulateur flou).

Quelques commandes de processus à base de la logique floue apparurent en Europe au cours des années 1970, mais ce sont les japonnais qui popularisèrent la méthode en l'appliquant aux appareils grand public des années 80.

Aujourd'hui, la logique floue est largement utilisée par exemple pour les autofocus et pour les appareils "à un seul bouton" : on met en marche et ça se débrouille ("si le poids augmente beaucoup quand on mouille le vêtement, se dit la machine à laver floue, alors c'est vraisemblablement de la laine, donc la température doit être plutôt froide et l'essorage pas trop fort").

2 - UN PEU DE THEORIE

2.1 Comment raisonner ?

On a vu ce qu'était une proposition floue.

Pour commencer à raisonner en logique floue, il faut pouvoir combiner ces propositions.

Pour celà, comme en logique classique, il faut définir les 2 opérateurs de base qui sont le $NON$ et le $ET$.

Quand on a le $NON$ et le $ET$, on peut reconstruire tous les opérateurs possibles :

Dans tout ce qui suit, P,Q,R et S sont des propositions et on note val(P) la valeur de vérité de P.
Si P est une proposition classique, val(P) est égale à 0 ou à 1, et si P est une proposition floue val(P) est comprise entre 0 et 1.

2.2 Le NON

En logique classique, le $NON$ est défini par :
En logique floue, le $NON$ est défini par :
En théorie, on pourrait prendre pour le $NON$ n'importe quelle fonction vérifiant ces propriétés.
En pratique, on prend toujours : $val[ NON($P$) ] = 1 - val($P$)$

2.3 Le ET

En logique classique, le $ET$ est défini par : En logique floue, le $ET$ est défini par :
Il existe donc plusieurs façons de définir le $ET$ en logique floue. Signalons notamment : Remarque :
On appelle norme triangulaire (t-norme) une fonction $T$ de $[0,1]x[0,1]$ dans $[0,1]$
commutative, associative, monotone et admettant 1 pour élément neutre.
On peut alors définir le $ET$ associé à une t-norme $T$ par : $val($P$ ET$Q$) = T [ val($P$),val($Q$) ]$

De même, il existe plusieurs "t-normes" utilisées, dont :
  • la t-norme de Zadeh : $TT(x,y) rarr min (x,y)$
  • la t-norme probabiliste : $TT(x,y) rarr xy$
Pour la régulation de niveau en logique floue, nous avons utilisé le ET probabiliste

3 - PRINCIPE D'UNE COMMANDE FLOUE

3.1 Organisation d'une commande floue

Comme tout systême de commande, une commande positionne des variables de sortie en fonction de variables d'entrée.

Dans une commande floue, ceci se passe en 3 étapes :
  1. Interface avec le flou: caractérisation des variables d'entrée à l'aide de propositions floues
  2. Raisonnement flou: en fonction des propositions floues caractérisant les variables d'entrée, caractérisation des variables de sortie à l'aide de propositions floues
  3. Interface avec le non-flou: en fonction des propositions floues caractérisant les variables de sortie, affectation d'une valeur aux variables de sortie.

3.2 Interface avec le flou

Chaque variable d'entrée numérique va être caractérisée à l'aide d'un certain nombre de propositions floues.

Si $x$ est une variable d'entrée numérique et $P_1, P_2 ...P_n$ n propositions floues caratérisant $x$,
on va définir $n$ fonctions $p_1, p_2..p_n$ :
$p_i : R rarr [0,1]$, $x rarr val(P_i)$

Les fonctions utilisées sont souvent de forme triangulaire ou trapézoïdale.
C'est en effet la démarche la plus naturelle :
Si $P_i$ est absolument vraie sur une seule valeur, on obtient donc une fonction triangulaire.
Si $P_i$ est absolument vraie sur un intervalle, on obtient une fonction trapézoïdale.

Exemples:

1 - $x$ est une valeur régulée à la consigne $x0$
On obtient une fonction triangulaire


2 - $x$ est la température d'une piêce
On obtient une fonction trapézoïdale



3 - Pour les propositions P caractérisant $x$ de manière extrême, l'intervalle sur lequel $p(x)$ est non nul sera souvent non borné.
En reprenant l'exemple précédent, si on représente la valeur de vérité de la proposition "il fait une chaleur insupportable", on obtiendra quelque chose du type



---------------------

3.3 Raisonnement flou

Ayant caractérisé les variables d'entrées du systême, on cherche maintenant à caractériser les variables de sortie.
Pour celà, on utilise les rêgles qui décriront les variables de sortie en fonction des variables d'entrée.

Les rêgles sont du type :
SI "combinaison de propositions floues relatives aux variables d'entrée"
ALORS "proposition floue relative aux variables de sorties"

Pour calculer la valeur de vérité de la combinaison de propositions floues relative aux variables d'entrée, il faut avoir défini les opérateurs logiques de base, c'est-à-dire choisi une "t-norme" (cf ch2).

De plus, les rêgles elles-mêmes peuvent être plus ou moins vraies. On peut donc leur affecter une valeur de vérité floue ($"comprise entre 0 et 1"$). Ceci permet d'établir une hiérarchie entre les différentes rêgles, qui n'ont pas toutes la même importance dans la commande.

Il existe plusieurs maniêres de calculer la valeur de vérité de la conclusion de la rêgle (relative aux variables de sortie), la plus simple étant de $"multiplier"$ la valeur de vérité de la prémisse de la rêgle (relative aux variables d'entrée) par la valeur de vérité de la rêgle.

On obtient ainsi, pour chaque rêgle, un $"résultat intermédiaire"$.

Comme la même proposition floue relative aux variables de sortie peut être la conclusion de plusieurs rêgles différentes, il faut ensuite "agréger les résultats intermédiaires" et pour celà définir un $"opérateur d'agrégation"$.

Si $p_i$ est la valeur de vérité de $P$ calculée avec la rêgle $R_i$ et $p$ la valeur de vérité de $P$, on peut prendre par exemple comme opérateur d'agrégation :
$p = max(p_i)$
Si on a pris soin que $sum(p_i) <= 1$, on peut également prendre $p = sum(p_i)$

Remarque :
Quand on a deux variables d'entrée x et y, on peut représenter les rêgles par un tableau avec les colonnes correspondant aux propositions relative à x, en colonnes les propositions relatives à y, et dans les cases, les valeurs de vérité des propositions relatives aux variables de sortie.

Exemple :

Variables
Entrée : x et y, Sortie : z
Caractérisation de x

remarque : on a toujours $val("x petit") + val("x grand") = 1$
Caractérisation de y

même remarque pour y
Rêgles :
  • R1 - si x petit et y grand alors z petit )
  • R2 - si x grand et y petit alors z grand ) valeur 1
  • R3 - si x petit et y petit alors z petit )
  • R4 - si x petit et y petit alors z grand ) valeur 0,5
  • R5 - si x grand et y grand alors z petit )
  • R6 - si x grand et y grand alors z grand )
Ces 2 derniêres rêgles traduisent le fait que si x est grand et y grand, alors z n'est ni spécialement grand, ni spécialement petit, et les 2 précédentes la même chose si x est petit et y petit.

Ces rêgles peuvent être représentées dans le tableau suivant :

     x

y

petit

grand
petit
z petit = 0,5
z grand = 0,5
z grand
grand

z petit
z petit = 0,5
z grand = 0,5
jjjj
Remarques : dans chaque case val("z petit") + val("z grand") = 1

On prend le ET probabiliste et avec les précautions qui ont été prises (cf remarques) on peut prendre la somme comme opérateur d'agrégation.
  • Si
"x petit" = 0,2 "x grand" = 0,8
"y petit" = 0,4 "y grand" = 0,6
  • Alors :
R1 : "z petit"1 = 0,2 . 0,6 = 0,12
R2 : "z grand"2 = 0,8 . 0,4 = 0,32
R3 : "z petit"3 = 0,5 . 0,2 . 0,4 = 0,04
R4 : "z grand"4 = 0,5 . 0,2 . 0,4 = 0,04
R5 : "z petit"5 = 0,5 . 0,8 . 0,6 = 0,24
R6 : "z grand"6 = 0,5 . 0,8 . 0,6 = 0,24

"z petit" = 0,12 + 0,04 + 0,24 = 0,3
"z grand" = 0,32 + 0,04 + 0,24 = 0,7

3.4 Interface avec le non-flou

Ayant trouvé une caractérisation floue des variables de sortie, il s'agit maintenant de leur affecter une valeur précise, non floue.

Pour celà, on peut procédé de plusieurs maniêres. Le choix de la méthode dépend du type de sortie que l'on veut obtenir.

Si la sortie ne peut prendre qu'un nombre fini de valeurs, on prendra celle dont la caratérisation se rapproche le plus des propositions floues calculées dans le raisonnement flou.

Si la sortie peut varier en continu, on utilisera une méthode barycentrique.

Exemple :
Reprenant l'exemple précédent,
Si z ne peut prendre que les valeurs 0 ("z petit" absolument vrai et "z grand" absolument faux) et 10 ("z grand" absolument vrai et "z petit" absolument faux), on prendra z = 10.
Si z peut varier en continu entre 0 et 10, on prendra : (0,3 x 0 + 0,7 x 10) / (0,3 + 0,7) = 7

4 - APPLICATION A LA REGULATION DE NIVEAU

4.1 Généralités

D'une maniêre générale, le but est de se rapprocher le plus possible du comportement humain : en tenant un niveau en manuel, on regarde le niveau lui-même ainsi que sa variation, et on applique des ordres d'ouverture ou de fermeture plus ou moins longs aux organes réglants.
Ceci va déterminer le choix des variables d'entrées : niveau et variation de niveau, et des des variables de sortie : temps d'ouverture et temps de fermeture. Ces 2 variables de sortie peuvent être ramenées à une seule dans tout le raisonnement, en considérant le temps de fermeture comme un temps d'ouverture négatif.

4.2 Interface avec le flou

Pour caratériser le niveau, on définit d'abord les valeurs que le niveau ne devrait pas dépasser, ce qui nous donne les seuils à partir desquels le niveau peut-être considéré comme "trop haut" ou "trop bas".

Ces seuils sont en général indépendants de la consigne de niveau et ne dépendent que de la configuration de l'ouvrage (déversoir, crête des vannes, entrée en galerie,...)

Quand le niveau est proche de la consigne, on peut le qualifier de "bon". S'il monte, il sera de moins en moins "bon" et de plus en plus "haut" jusqu'à une valeur où "le niveau est bon" sera absolument faux et "le niveau est haut" sera absolument vrai. De la même maniêre, on introduit les propositions "le niveau est três haut" et symétriquement "le niveau est bas" et "le niveau est très bas".

Contrairement aux 2 premiêres, ces 5 propositions dépendent de la consigne de niveau.

Pour limiter le nombre de paramêtres, on utilisera des triangles et des trapêzes ayant tous la même pente.

On introduit donc les paramêtre BASENIV (base de caratérisation du niveau) tel que :
Si niv = cons - 2*BASENIV : "le niveau est três bas" vaut 1
Si niv = cons - BASENIV : "le niveau est bas" vaut 1
Si niv = cons + BASENIV : "le niveau est haut" vaut 1
Si niv = cons + 2*BASENIV : "le niveau est três haut" vaut 1

Ceci nous conduit au graphique suivant :


Remarques : pour que cette caractérisation ait un sens, il faut que :
  • niv_min + 3 * BASENIV <= cons <= niv_max - 3 * BASENIV
  • quelque soit le niveau, seules une ou deux propositions ne sont pas totalement fausses.
  • quelque soit le niveau, la somme des valeurs de vérité des propositions vaut toujours 1.
Pour caratériser la variation de niveau, on va procéder de la même maniêre en introduisant le paramêtre BASEVAR (base de caratérisation de la variation de niveau) et les propositions :
  • Le niveau baisse beaucoup
  • Le niveau baisse un peu
  • Le niveau est stable
  • Le niveau monte un peu
  • Le niveau monte beaucoup
On se limitera à ces 5 propositions, la variation de niveau n'étant pas limitée par les contraintes physiques comme le niveau

Ce qui nous conduit au graphique suivant :


Remarques :
Quelle que soit la variation de niveau, seules une ou deux propositions ne sont pas totalement fausses.
Quelle que soit la variation de niveau, la somme des valeurs de vérité des propositions vaut toujours 1.

Avec une régulation en logique floue, il vaut mieux éviter le filtrage de niveau qui conduit à sous-estimer les variations de niveau (perte de rapidité) et à les étaler dans le temps (perte de stabilité). Si toutefois le niveau est perturbé, mieux vaut faire la moyenne de plusieurs acquisitions au cours d'une même période d'échantillonage.

4.3 Raisonnement flou

On va utiliser 5 propositions pour caractériser la manoeuvre à effectuer :
  • "Il faut fermer beaucoup" (valeur de vérité notée FB)
  • "Il faut fermer un peu" (valeur de vérité notée FP)
  • "Il faut laisser tel quel" (valeur de vérité notée L )
  • "Il faut ouvrir un peu" (valeur de vérité notée OP)
  • "Il faut ouvrir beaucoup" (valeur de vérité notée OB)
Comme on a 2 variables d'entrée, on peut représenter les rêgles sous la forme d'un tableau à 7 colonnes correspondant aux 5 propositions relatives au niveau et 5 lignes correspondant aux 5 propositions relatives à la variation de niveau.

Chaque case représentera donc une conjonction de ces 2 types de propositions.

Dans chaque case, on inscrira les valeurs de vérité des propositions relatives à la manoeuvre à effectuer.

Chaque valeur inscrite dans une case correspond donc à une rêgle. Certaines rêgles sont absolument vraies (valeur 1), d'autres rêgles à moitié vraies (valeur 0,5).

On utilise le tableau suivant, correspondant à 23 rêgles absolument vraies :
Si le niveau est trop bas et baisse beaucoup, alors il faut fermer beaucoup, etc....
et 24 rêgles à moitié vraies :
Si le niveau est bas et baisse beaucoup, alors il faut fermer beaucoup, si le niveau est bas et baisse beaucoup, alors il faut fermer un peu, etc....

\       niveau 
\------------\
variation      \

  trop   bas

 très  bas

   bas  

   bon  

  haut 

très haut

trop haut
baisse beaucoup

FB=1

FB=1
FB=0,5

FP=0,5

FP=1
FP=0,5

L=0,5

L=1

L=1
baisse un peu

FB=1
FB=0,5

FP=0,5

FP=1
FP=0,5

L=0,5

L=1
L=0,5

OP=0,5

OP=1
stable

FB=1

FP=1
FP=0,5

L=0,5

L=1
L=0,5

OP=0,5

OP=1

OB=1
monte un peu

FP=1
FP=0,5

L=0,5

L=1
L=0,5

OP=0,5

OP=1
OP=0,5

OB=0,5

OB=1
monte beaucoup

L=1

L=1
L=0,5

OP=0,5

OP=1
OP=0,5

OB=0,5

OB=1

OB=1


Remarques : La plupart de ces règles ne font qu'énoncer des évidences. La somme des valeurs de vérité dans une case est toujours égale à 1. Pour effectuer le raisonnement flou, on utilisera le ET probabiliste, et la somme comme opérateur d'agrégation.

4.4 Interface avec le non flou

Pour définir les temps de manoeuvre à appliquer, on utilisera deux paramêtres : l'ordre court (OC) et l'ordre long (OL).

Dans ce qui suit, on appelle T le temps de manoeuvre à appliquer. T sera un temps d'ouverture s'il est positif, un temps de fermeture s'il est négatif.

L'ordre court est le plus petit ordre que l'on puisse donner. Il correspond à l'insensibilité dans l'asservissement de position que l'on utilise en général avec les régulateurs PI, OC ne peut guère être inférieur à une seconde ou une demi-seconde. Il peut être largementsupérieur pour des organes réagissant très lentement (grosses vannes de barrage par exemple).

L'ordre long est l'ordre le plus long que l'on puisse donner. S'il n'existe aucune raison de brider la vitesse de manoeuvre de l'organe, il doit être égal à la période d'échantillonage. Sinon il peut être inférieur. Par exemple si T0 est la période d'échantillonnage, si OL = T0 / 2, on ne pourra donner qu'un ordre de durée TO/2 toutes les TO, ce qui fait que la vitesse de prise/baisse de charge de l'organe sera divisée par 2 par rapport à sa limite physique.

Le calcul de T doit répondre aux conditions suivantes :
  • Si "fermer beaucoup" est absolument vrai, alors T = -OL
  • Si "fermer un peu" est absolument vrai, alors T = -OC
  • Si "laisser" est absolument vrai, alors T = 0
  • Si "ouvrir un peu" est absolument vrai, alors T = OC
  • Si "ouvrir beaucoup" est absolument vrai, alors T = OL
T ne peut prendre aucune valeur entre -OC et 0 ni entre 0 et OC
T peut prendre toutes les valeurs entre -OL et -OC et entre OC et OL

On est donc dans une situation mixte entre les 2 cas décrits au paragraphe 3.4, donc il faut utiliser une méthode mixte entre celle du maximun et celle du barycentre.

Pour celà :

Si fb = ob = 0 alors
  • si max(fp,1,op) = fp alors T = -OC
  • si max(fp,1,op) = 1 alors T = 0
  • si max(fp,1,op) = op alors T = OC
Sinon T = ( fb.(-OL) + fp.(-OC) + op.(OC) + ob.(OL) ) / (fb + fp + op + ob)

Ceci traduit le fait que :

Si il est absolument faux qu'il faille fermer ou ouvrir beaucoup,
on a le choix entre ne rien faire et faire une petite action à l'ouverture ou à la fermeture :on fait alors la plus vraie des 3.

Si au contraire il n'est pas absolument faux qu'il faille soit ouvrir beaucoup soit fermer beaucoup,
on effectue une pondération entre les quatres actions "fermer beaucoup" "fermer un peu" "ouvrir un peu" "ouvrir beaucoup".

Remarque :

Tel que le système est conçu, au aura au plus 3 des 5 propositions relatives à la sortie qui ne sont pas absolument fausses, c'est-à-dire au plus 3 valeurs non nulles parmi fb, fp, l, op, ob.

Ces valeurs pourront être :
  • fb, fp, l : on obtiendra -OL <= T <= OC
  • fp, l, op : on obtiendra T = -OC ou 0 ou OC
  • l, op, ob : on obtiendra OC <= T <= OL
Si on veut ensuite se ramener à un ordre d'ouverture (TO) ou de fermeture (TF), il suffit de faire :
  • Si T < 0 alors TO = 0 et TF = -T
  • Si T = 0 alors TO = 0 et TF = 0
  • Si T > 0 alors TO = T et TF = 0

4.5 Détermination des paramètres du régulateur flou

Les paramètres à déterminer dans un régulateur flou sont donc les suivants :
  • La période d'échantillonnage T0 : comme tout système échantillonné
  • Le niveau maximun admissible : en fonction de la configuration de l'ouvrage
  • Le niveau minimun admissible : idem ci-dessus
  • La base de caractérisation du niveau (BASENIV) : à déterminer par simulation ou essais
  • La base de caractérisation de la variation de niveau (BASEVAR) : idem ci-dessus
  • L'ordre court (OC) : généralement de l'ordre de la seconde, ou plus pour les organes lents. Si le régulateur flou remplace ou complète un PI avec asservissement de position, prendre OC cohérent avec l'insenbilité, c'est-à-dire : OC = (Temps de manoeuvre complète * insenbilité / course complète)
  • L'ordre long (OL) : généralement égal à la période d'échantillonnage sauf si on veut ralentir l'organe.

4.6 Exemple de calcul

Données initiales

T0 = OL = 10s OC = 1s

niv_max = +200mm
niv_min = -400mm

BASEVAR = 40mm
BASEVAR = 20

Mesure = 50mm
Mesure précédente = 20mm donc variation = 30mm

Interface avec le flou

  • caractérisation du niveau

    soit de façon détaillée


  • caractérisation de la variation de niveau

Raisonnement flou

  • résultats intermédiaire :
Case "haut et monte un peu" :
op1 = 0,75 . 0,5 . 1 = 0,375
Case "haut et monte beaucoup" :
op2 = 0,75 . 0,5 . 0,5 = 0,1875
ob2 = 0,75 . 0,5 . 0,5 = 0,1875
Case "très haut et monte un peu" :
op3 = 0,25 . 0,5 . 0,5 = 0,0625
ob3 = 0,25 .0,5 . 0,5 = 0,0625
Case "très haut et monte beaucoup" :
ob4 = 0,25 . 0,5 . 0,5 . 1 = 0,125
  • agrégation des résultats intermédiaires :
ob = ob2 + ob3 + ob4 = 0,375
op = op1 + op2 + op3 = 0,625
l = 0
fp = 0
fb = 0

Interface avec le non flou

ob # 0 donc
T = ( 0,625 . 1 + 0.375 . 10) / (0,625 + 0,375) = 4.375
donc
T0 = 4,375 s
TF = 0

4.7 Conclusion

Après avoir effectué plusieurs simulations et équipé 2 sites, on peut faire les observations suivantes :
  • Le régulateur flou est particulièrement intéressant pour les retenues où le niveau est difficile à stabiliser, c'est-à-dire en général quand la surface est petite. Dans ce cas, le compromis entre une réponse suffisamment rapide sur un gradient de crue important et une bonne stabilité en régime stable est difficile à obtenir avec un régulateur PI. Le régulateur flou accepte de lentes variations du niveau aux alentours de la consigne sans faire aucune action (donc sans fatiguer inutilement la mécanique), tout en réagissant fortement lorsque le niveau s'éloigne rapidement de la consigne.
  • Le régulateur flou est également applicable sur des surfaces plus importante, mais dans ce cas le PI donne également satisfaction, et les avantages de l'un ou de l'autre sont discutables.

 Liens