Applications en intelligence artificielle 197
est B alors U = c » suffisent à décrire des situations approximatives rendant
compte de certains états du problème. Dans la mesure où A et B sont des
prédicats flous et où il y a chevauchement des règles, un petit nombre de règles
peut traduire la décision U à prendre par consensus.
Plus précisément, supposons trois règles :
si X est zéro et Y est négatif alors U = 1
si X est zéro et Y est zéro alors U = 2
si X est positif et Y est positif alors U = 3
Chacun des prédicats flous negatif, zero, positif est plus ou moins vérifié par les
deux entrées X et Y. Moyennant une transformation, positif peut vouloir dire
« vitesse élevée » ou par exemple zero peut signifier à la fois « faible vitesse »
ou « accélération plus ou moins nulle » si X mesure la vitesse, Y mesurant
l’accélération-décélération.
La conjonction « et » sera interprétée comme la plus petite valeur entre les deux
degrés de satisfaction des prédicats, ce qui donnera un degré de satisfaction de
la règle. C’est la conjonction de Zadeh. L’algorithme consiste alors à ce que la
sortie U soit définie comme la moyenne des conclusions des règles, pondérée
par les niveaux de satisfaction de ces règles.
Par exemple la première règle va déterminer le degré DX d’appartenance de X à
l’ensemble flou zero, puis de même, le degré DY de satisfaction de Y au prédicat
negatif, enfin M sera la conjonction par min de ces deux degrés. M sera donc le
degré de satisfaction de la règle pour les entrées X et Y.
Les trois règles auront ainsi R1, R2 et R3 comme degrés, coefficients qui
serviront à calculer la moyenne pondérée U, constituant la sortie du contrôleur.
Avec le prédicat min déjà connu, on pourra programmer :
min(A, B, A) :- A < B, !.
min(_, B; B).
regle1(X, Y, 1, M) :- zero(X, DX), negatif(Y, DY), min(DX, DY, M).
regle2(X, Y, 2, M) :- zero(X, DX), zero(Y, DY), min(DX, DY, M).
regle3(X, Y, 3, M) :- positif(X, DX), positif(Y, DY), min(DX, DY, M).
commande(X, Y, U) :- regle1(X, Y, U1, R1), regle2(X, Y, U2, R2),
regle3(X, Y, U3, R3),
moyenne(U1, R1, U2, R2, U3, R3, U).
moyenne(U1, R1, U2, R2, U3, R3, U)
:- U is (U1*R1 + U2*R2 + U3*R3) / (R1 + R2 + R3).