You are on page 1of 26

IASE 1/26 Cap. 7.

Logica Fuzzy


Logica Fuzzy

7.1. Funcia de apartenen

n vederea introducerii n teoria mulimilor i a logicii fuzzy, s ne oprim, pentru
nceput, asupra funciei de apartenen. n acest scop, s notm cu X mulimea total, denumit
setul universal, relativ la care toate celelalte mulimi sunt submulimi ale mulimii X ( A,
avem AX). n aceast ipotez, orice mulime A poate fi reprezentat prin funcia sa de
apartenen, numit altfel funcie de adevr, sau funcie caracteristic. Funcia de apartenen
u
A
(x) a mulimii A relativ la setul universal X este definit prin

A x dac
A x dac
= (x)
u
A
0
1

n consecin, orice submulime AX poate fi reprezentat sub forma A={x/u
A
(x),
xA}. Altfel spus, fiecrui element x din X i se ataeaz valoarea funciei sale de apartenen.
Dac X este finit, orice mulime poate fi reprezentat ca o list a tuturor elementelor lui X,
fiecare element fiind urmat de un slash, dup care apare valoarea 1 sau 0, dup cum elementul
respectiv aparine sau nu aparine mulimii. Altfel spus, fiecrui simbol x din X i se asociaz un
"flag" indicnd apartenen sau neapartenena acestuia la mulime.
Exemplu. Considernd setul universal X={1,2,3,4}, dac A={2,4} utilizarea funciei de
apartenen va conduce la reprezentarea A={1/0,2/1,3/0,4/1}.
S discutm n continuare cum putem caracteriza operaiile cu mulimi cu ajutorul
funciei de apartenen. Fie, pentru aceasta, A i B dou submulimi ale lui X.
Reuniunea acestora, AB, conine elementele ce aparin fie lui A fie lui B. Utiliznd
funcia de apartenen, reuniunea se reprezint A B = { xu
aB
(x), unde u
AB
=
max(u
A
(x),u
B
(x)}. De exemplu, cu X i A din exemplul precedent i B={1/1, 2/1, 3/0, 4/1}
={1,2,4} se obine
A B = {1/1,2/1,3/0,4/1} = {1,2,4}.
Intersecia dintre mulimile A i B, AB, conine elementele care aparin att lui A ct
i lui B, adic
A B = {xu
AB
(x)=min(u
A
(x),u
B
(x)}.
Diferena dintre A i B se va reprezenta similar
A-B=(xu
A-B
(x)=min(u
A
(x),1-u
B
(x)}.
n particular, dac A este egal cu X, diferena reprezint complementul lui B, notat B
C
, i
B
C
= X-B = {xu
B
C
(x)=1-u
B
(x)},
deoarece
min(u
X
(x),1-u
B
(x)) = min(1,1-u
B
(x)) = 1 - u
B
(x).
Avnd n vedere c operaiile de intersecie i reuniune sunt comutative i asociative,
proprietile de mai sus pot fi generalizate pentru orice secven finit de submulimi ale setului
universal.
De asemenea, legile lui De Morgen

B A = B A
B A = B A



se pot transcrie n termenii funciilor de apartenen
1 - max(u
A
(x),u
B
(x)) = min(1-u
A
(x),1-u
B
(x))
1 - min(u
A
(x),u
B
(x)) = max(1-u
A
(x),1-u
B
(x))
7.
IASE 2/26 Cap. 7. Logica Fuzzy

7.2. Submulimi fuzzy

n teoria mulimilor ordinare, un element oarecare aparine, sau nu, unei anumite
mulimi. De exemplu, dac X este mulimea tuturor poligoanelor, atunci mulimea triunghiurilor
poate fi definit prin
A = {x : x are trei laturi}
Evident, pentru orice element particular xX, exist dou posibiliti mutual exclusive: (1)
xA, caz n care u
A
(x)=1, sau (2) xA, caz n care u
A
(x)=0.
Dar excluderea mutual nu poate fi aplicat la orice tip de raionament. De exemplu, fie
X mulimea tuturor animalelor i s presupunem c se dorete s se caracterizeze diferitele
specii n termenii efectului duntor pe care acestea l au. Astfel, vom considera mulimea B a
animalelor duntoare
B = {x x este un animal duntor }
Evident, exist o deosebire de nuan ntre definiiile celor dou mulimi A i B.
Procednd intuitiv, pentru ca o mulime oarecare A s fie construit ca submulime a
setului universal, trebuie s se rspund la ntrebri de tipul "Este x un element al lui A?",
pentru toate valorile posibile ale lui x n X. n general, dac A este definit printr-o formulare cu
predicate
A = {x x este ... } = {x p(x) }
este obligatoriu ca predicatul p() s fie corect definit, n sensul ca acesta s fie neambiguu, adic
determinist.
Se pune ns ntrebarea: un predicat din afara domeniului matematic poate fi ntotdeauna
determinist? Rspunsul este desigur negativ. Revenind la exemplul cu animalele, ntr-o anumit
specie s-ar putea ca unele animale s fie duntoare, iar altele nu. Altfel spus, predicatul care
definete dac o specie este sau nu duntoare este nedeterminist.
Modelul nedeterminist a fost introdus de Z. A. Zadeh, care a definit noiunea de
submulime fuzzy a unei mulimi universale X. O astfel de submulime este definit prin
A = { x u
A
(x) },
unde funcia de apartenen u
A
, relativ la mulimea A, ia valori n intervalul [0,1], adic pentru
orice xX, avem 0u
A
(x)1.
Fa de situaia clasic unde apartenen sau neapartenena la o mulime este
reprezentat prin valorile binare 0 sau 1, n cazul submulimilor fuzzy aceasta este reprezentat
printr-o valoare real din intervalul [0,1].
Revenind la exemplul cu animalele, construcia mulimii B a animalelor duntoare
presupune s asociem fiecrui element x din X o valoare u
B
(x)[0,1], unde u
B
(x) este o msur
a gradului n care specia x este duntoare. Din acest punct de vedere, specia x este "mai
duntoare" dect specia y, dac i numai dac u
B
(x)>u
A
(x). n acest context, funcia de
apartenen este o caracterizare cantitativ a calitii.
Exemplu. Se consider mulimea X a tuturor roboilor aparinnd diferitelor companii.
Dorim s caracterizm submulimea A a "roboilor inteligeni". ntr-o manier tranant se
poate spune c robotul a aparine clasei dac acesta se consider inteligent, sau nu aparine
clasei dac acesta este complet neinteligent. Utilizarea submulimilor fuzzy permite "gradarea"
inteligenei prin intermediul funciilor de apartenen. De exemplu, se poate considera
A = {a/0.2, b/0.9, c/0.4}.
Apartenena elementelor la o mulime este caracterizat de funcia de apartenen dup
cum urmeaz:
- dac u
A
(x)=1, atunci x este n mod sigur n A i vom scrie, ca n cazul mulimilor
ordinare, xA;
- dac u
A
(x)=0, atunci sigur x nu aparine lui A, xA;
- dac 0<u
A
(x)=<1, putem afirma cu certitudinea , c x aparine lui A, scriind x

A.
Ca i n cazul mulimilor ordinare, putem afirma c AB, dac i numai dac u
A
(x)u
B
(x),
pentru orice element x din X. Similar, A=B, dac i numai dac u
A
(x)=u
B
(x), xX.
IASE 3/26 Cap. 7. Logica Fuzzy

Relaiile referitoare la funcia de apartenen corespunztoare reuniunii, interseciei,
diferenei i complementarei rmn n continuare valabile:
u
AB
(x)=max(u
A
(x),u
B
(x))
u
A_B
(x)=min(u
A
(x),u
B
(x))
u
A-B
(x)=max(u
A
(x),1-u
B
(x))
u
B
C
=1-u
B
.
Trebuie precizat c, n acest caz, legea de complementaritate din teoria mulimilor
A A
C
= , A A
C
= X, A _ X,
nu mai rmne valabil.
Contraxemplu. Fie X={u,v,w,z} setul universal i A={u/0.5,v=0.3}. Atunci
A
C
={u/0.5,v/0.7,w/1,z/1} i prin urmare
A A
C
= {u/0.5,v/0.7,w/1,z/1} X, iar
A A
C
= {u/0.5,v/0.3} .

7.3. Latice. Logica fuzzy

Pentru a face o scurt introducere n logica fuzzy va trebui s zbovim n prealabil
asupra noiunii de latice.
O latice este o structur care implic noiunea de ordine. Fie L o mulime nevid i
RLL o relaie peste aceast mulime. Relaia R este o relaie de ordine peste L dac este
- reflexiv: (a,a)R, aL;
- antisimetric: dac (a,b)R i (b,a)R, atunci a=b;
- tranzitiv: dac (a,b)R i (b,c)R, atunci (a,c)R.
Cum relaia este o relaie de ordine, vom nota n cele ce urmeaz prin acest simbol
relaia R, fr a face nici o precizare asupra semnificaiei acestei relaii.
Dac, n plus, este ndeplini i condiia
a,bR, avem fie ab, fie ba,
atunci relaia este o relaie de ordine total.
Prin mulime parial ordonat se nelege o mulime nzestrat cu o relaie de ordine.
Dac relaia de ordine este total, atunci mulimea se numete total ordonat.
O modalitate practic de reprezentare a mulimilor ordonate o reprezint diagramele
Hasse. Astfel, elementele mulimii reprezint nodurile unui graf, ale crui arce, orientate sau
neorientate, indic relaia de ordine dintre elementele corespunztoare nodurilor adiacente. Dac
arcul este neorientat, nodul "mai mare" se va reprezenta mai sus.
Exemplu. Fie L={1,2,3,4,6,8,12,16} i relaia definit dup cum urmeaz:
a b dac i numai dac a este un divizor al lui b.
Evident, relaia astfel definit este o relaie de ordine, dar nu este o ordine total pe L. Diagrama
Hasse este cea ilustrat mai jos.
Fie L o mulime i RL o submulime a sa. Un element uL este o margine superioar
a lui R, dac ru pentru orice rR. Analog, l este o margine inferioar, dac lr pentru orice
rR.
12
6
3
1
2
4
8
16
Diagrama Hasse
a laticei (L, )
IASE 4/26 Cap. 7. Logica Fuzzy

Vom nota cu sup(R) cea mai mic margine superioar (LUB), iar cu inf(R) cea mai mare
margine inferioar a lui R (GLB).
Definiie. O mulime L nzestrat cu o relaie de ordine este o latice, dac pentru orice
submulime {x,y}L format din dou elemente, L conine cea mai mic margine superioar i
cea mai mare margine inferioar a submulimii respective.
Vom nota prin xy cea mai mic margine superioar (LUB), iar prin xy cea mai mare
margine inferioar (GLB). n general, orice mulime total ordonat este o latice, deoarece xy
este fie x, fie y i xy este fie x, fie y, dup cum xy sau yx.
Propoziie. O mulime L nzestrat cu dou relaii binare i satisfcnd urmtoarele
patru proprieti
1. Comutativitate: x y = y x, x y = y x, x,yL,
2. Asociativitate: x(y z) = (x y)z, (x y)z =(x y)z, x,y,zL,
3. Idempoten: x x =x, x x =x, x,yL,
4. Absorbie: x(y x) = x, x(y x) =x, x,y,zL,
este o latice, cu relaia de ordine "" definit prin
a b dac i numai dac a b = b (sau echivalent a b = a).
Prin definiie, o latice este distributiv dac operaiile i sunt distributive ntre ele
5. x(y z) = (x y)(x z),
x(y z) = (x y)(x z), x,y,zL.
Definiie. O latice este mrginit dac conine dou elemente, notate cu "0" i "1", care
sunt cel mai mic, respectiv cel mai mare, elemente din laticea considerat. O astfel de latice este
o cvadrupl de forma (L,,,0,1).
Definiie. O latice este complementat dac pentru orice element x din L, exist un
element x'L, denumit complementul lui x, astfel inct xx'=1 i xx'=0.
Definiie. O latice distributiv, mrginit i complementat este o algebr Boole sau
algebr boolean. O algebr boolean este reprezentat printr-o sextupl de forma
(L,,,,0,1)
cu operaiile binare i i operatorul unar .
Definiie. O Heiting algebr este o sextupl
(L,,,,0,1)
n care (L,,,0,1) este o latice distributiv i mrginit, iar "" este o operaie binar pe L,
denumit implicaie, satisfcnd urmtoarele cinci proprieti:
H1. x x = 1
H2. (x y)y = y
H3. x (x y) = x y
H4. x (y z) = (x y)(x z)
H5. (x y) z = (x z) (y z).

Propoziie. Dac (L,,,,0,1) este o algebr boolean i opaeraia a b este definit
prin a b, atunci (L,,,,0,1) este o Heyting algebr.

Definiie. O latice este denumit complet, dac fiecare sub-mulime R a sa conine un
supremum sau, echivalent, fiecare submulime a sa conine un infimum.
Logica boolean i logica fuzzy se caracterizeaz i se deosebesc prin spaiile n care
iau valori funciile corespunztoare de adevr, mulimea {0,1}, respectiv intervalul [o,1]. Fiind
total ordonate, ambele spaii sunt latici distributive i mrginite n raport cu relaia de ordine
natural, {0,1} fiind, n plus, i algebr boolean.
Dei teoretic n logica fuzzy funcia de adevr ia valori n intervalul [0,1], Zadeh a luat
n considerare numai un numr cel mult numrabil de valori de adevr. O astfel de mulime de
valori de adevr ar putea fi de forma VA = {adevrat, foarte probabil, incert, probabil
neadevrat, fals}.
IASE 5/26 Cap. 7. Logica Fuzzy

nainte de a defini logica fuzzy, s trecem n revist i logica cu trei valori a lui Kleene.
n acest sistem, spaiul valorilor de adevr const n mulimea {0, 1/2, 1}, ordinea fiind cea
natural. Notnd cu T funcia de adevr, vom spune c T(a)=1, T(a)=0 sau T(a)=1/2, dup cum
fromula a este adevrat, fals sau nu putem decide asupra veridicitii acesteia. n logica cu trei
valori Kleene, evaluarea valorilor de adevr corespunztoare negaiei, disjunciei, conjunciei i
implicaiei se calculeaz n conformitate cu relaiile cunoscute
T(a) = 1 - T(a) (1.3-1)
T(a b) = max(T(a),T(b)) (1.3-2)
T(a b) = min(T(a),T(b)) (1.3-3)
T(a b) = max(1-T(a),T(b)) (1.3-4)
Calculul valorilor de adevr ale unei formule n funcie de valorile de adevr ale
componentelor sale se realizeaz, ca i n cazul logicii booleene, cu ajutorul tabelelor de adevr.
Un astfel de tabel de adevr va conine de aceast dat 3
n
linii, n fiind numrul de componente
implicate.
a b a b a b a b a b
1
1
1
0
0
0
1/2
1/2
1/2
1
0
1/2
1
0
1/2
1
0
1/2
1
0
1/2
0
0
0
1/2
0
1/2
1
1
1
1
0
1/2
1
1/2
1/2
1
0
1/2
1
1
1
1
1/2
1/2
1
0
1/2
0
1
1/2
1/2
1/2
1/2
Exerciiu. Se consider propoziiile a, b i c definite prin:
"Roby vede obiectul" (a)
"Roby are un controller AI-07S" (b)
"Roby va prehensa obiectul" (c)
S se analizeze valoarea de adevr a propoziiei (a b) c.
Ca i n sistemul logic cu trei valori a lui Kleene, i n logica fuzzy valorile de adevr ale
expresiilor a, ab sau ab se calculeaz conform relaiilor (1.3-1)-(1.3-3).
S considerm o formul oarecare bine format din n propoziii atomice. Evaluarea
valorii de adevr implica construcia unor tabele de adevr coninnd 2
n
linii n cazul logicii
booleene sau 3
n
linii n cazul logicii Kleene. La o prim privire, s-ar prea c numrul liniilor
din tabelele de adevr este nenumrabil n cazul logicii fuzzy. n realitate lucrurile nu stau aa.
Vom demonstra n continuare c sunt suficiente doar 2
n
n! linii pentru ntocmirea tabelelor de
adevr. Este evident, c valoarea de adevr T a unei formule oarecare, depinznd de
componentele a
1
,...,a
n
, depinde de ordinea de dispunere a valorilor
T(a
1
),...,T(a
n
),T(a
1
),...,T(a
n
). Dar 2
n
n! este tocmai numrul total de posibiliti n care aceste
valori pot fi dispuse. Demonstraia se poate face prin inducie.
Dac n=1, avem de a face cu o propoziie elementar a, caz n care avem fie T(a)T(a),
fie T(a)T(a), deci 2
1
1!=1 cazuri posibile.
n cazul n care formula invoc dou propoziii a i b, vor exista 2
2
2!=8 posibilit. S
verificm acest lucru. Dac T(a)T(b) atunci -T(b)-T(a) ce va implica 1-T(b) 1 - T(a)
de unde se va deduce c T(b) T(a).
n concluzie, n ipoteza T(a)T(b) avem i T(b)T(a), valorile de adevr ale
propoziiilor implicate se pot situa intr-una din urmtoare ordine
a b b a
a b b a
b a a b
b a a b
IASE 6/26 Cap. 7. Logica Fuzzy

Celelalte 4 posibiliti decurg din cealalt alternativ posibil T(b)T(a).
Modul de evaluare al valorilor de adevr ale unei formule, ilustrat pe cazul regulii lui De
Morgen
T(a b) = T((a b))
este prezentat n tabelul de mai jos.

2
2
2!=8 posibiliti ab a b (a b)
a b a b
b a a b
a b b a
b a a b
a b b a
b a a b
a b b a
b a a b
b
b
a
b
b
a
a
a
b
b
a
b
b
a
a
a
b
b
a
b
b
a
a
a

Dup cum se poate constata din tabelul de mai sus, coloanele corespunztoare lui ab i
(ab) sunt identice, n consecin legea lui De Morgen rmne adevrat i n logica fuzzy.
Dei foarte simpl, metoda tabelelor de adevr devine impracticabil atunci cnd n
crete, datorit numrului mare de linii ale tabelului de adevr. De exemplu, dac formula
conine 3 propoziii a, b i c, tabelul de adevr conine va 2
3
3!=48 de linii.
O modalitate, pentru evitarea exploziei exponeniale a numrului de linii al tabelelor de
adevr, const "transferul" calculelor, din domeniul calculului propoziional n cel numeric al
valorilor de adevr.
Astfel, aceeai regul a lui De Morgen
a b = (a b),
poate fi demonstrat mult mai simplu. S notm, pentru aceasta, cu x i y valorile de adevr ale
celor dou propoziii. Atunci
= y) - x,1 - (1 - 1 = b) a T( - 1 = b)) a ( T( min
( ) ( ) b a T y x =
2
y - x
+
2
y + x
=
2
y) - (1 - x) - (1
+
2
y) - (1 + x) - (1
=

, max 1 .
Dar cum cele dou expresii au aceeai valoare de adevr, n mod evident, acestea sunt
echivalente.
Pentru includerea implicaiei ca o conectiv a logicii fuzzy, se pot utiliza mai multe
definiii de introducere a acesteia. n mod natural, deoarece a b este a b, se poate
considera T(a b) = max(1-T(a),T(b))
Evident, dac T(a) i T(b) iau valori n {0,1} picm peste definiia uzual a implicaiei. Trebuie
observat ns c pentru
T(a) > T(b) = 0,
T(a b) ar trebui s fie egal cu 0, cerin ce nu este ndeplinit. De aceea, unele sisteme fuzzy
utilizeaz urmtoarea definiie a implicaiei
( )

=
contrar caz n
T(b) > T(a) dac T(b),
b a T
, 1

Desigur, i aceast definiie este consistent cu calculul propoziional. Ceea ce i se
reproeaz ns acestei definiii este lipsa de continuitate. Pentru T(b)=0, dac T(a)=0.1 atunci
T(a b)=1, iar dac T(a)=0 atunci T(a b)=0.

IASE 7/26 Cap. 7. Logica Fuzzy

7.4. FLINTmodul de programare n logic fuzzy

Logica fuzzy este o tehnologie care permite modele complexe realistice a lumii reale,
definite cu ajutorul variabilelor fuzzy i a regulilor fuzzy. Modulul FLINT, produs LPA , pune la
dispoziia utilizatorului instrumentele necesare pentru utilizarea logicii fuzzy direct n limbajele
Prolog sau KSL.
Sistemele expert trebuie s asigure reprezentarea unor cunotine venite din lumea real.
Deseori, ns, nelegerea noastr privind funcionarea acestor elemente ale lumii sunt reale este
imprecis. Logica fuzzy furnizeaz o metodologie matematic de manevrare a impreciziilor. Un
sistem expert tradiional acioneaz conform valorilor de prag explicitate n condiiile regulilor
aplicate, ca de exemplu "dac temperatura este mai mare ca 120 de grade". Aceasta conduce
adesea la un salt exagerat al mrimilor de ieire la valori apropiate ale parametrilor de intrare, la
depirea valorii de prag. Logica fuzzy "netezete" aceste salturi prin utilizarea unor descrieri
calitative n partea condiional a regulilor utilizate, ca de exemplu "dac temperatura este la
nivel fierbinte", unde fierbinte nu refer o valoare precis, ci un interval de valori care poate fi
descris prin atributul fierbinte. Aceasta conduce la reguli avnd o influen tot mai mare, dup
cum condiiile sale devin tot mai mult adevrate.
ntr-un sistem expert, calificativul de high poate s se refere la toate valorile cuprinse
ntre 50 i 100, iar low pentru valori cuprinse ntre 0 i 50. n acest sistem, dac cineva obine
scorul 100, atunci este considerat definitiv bun, iar dac are scorul 0, este catalogat definitiv slab.
Problema apare n vecintatea valorii de prag: dac cineva are scorul 49, atunci va fi desemnat ca
slab, n timp ce altcineva, cu scorul de 50, este bun. Deci, apare un salt foarte mare la ieire
pentru o schimbare a scorului numai cu 1 punct.
n contrast, ntr-un sistem expert fuzzy, calificativul high poate fi definit astfel nct
valoarea 0 corespunde ca not high, iar 100 ca high, iar valorile intermediare sunt considerate
gradual tot mai mult high cu ct se apropie mai mult de 100. Acelai raionament, dar inversnd
valorile extreme, se aplic i pentru atributul low. Avantajul acestui tip de raionament este
evident pentru valori aflate n apropierea valorii 50. Dac cinema are scorul 49, atunci el este
doar uor mai slab dect bun. Pentru scorul 50, el este jumtate slab i jumtate bun.
Aceast particularitate a logicii fuzzy este utilizat frecvent n controlere bazate pe
sisteme expert, unde schimbri brute ale comportamentului pot fi neadecvate. un exemplu l
constituie sistemul fuzzy logic utilizat n controlul trenurilor la metroul din Tokyo, pentru o
oprire silenioas n staii, indiferent de condiii.
Alt proprietate important a logicii fuzzy se refer al robustee i toleran la defecte. n
sistemele expert tradiionale este utilizat o singur regul la un moment dat, ceea ce nseamn
c fiecare regul aplicat va avea o influen major asupra rezultatului. De aceea, este foarte
important s ne asigurm c fiecare regul este corect. n sistemele expert cu logic fuzzy, toate
regulile sunt utilizate, dar n diferite cantiti. Fiecare regul va influena rezultatul n raport cu
gradul de adevr al condiiei sale. Astfel, se asigur o slab dependen relativ la corectitudinea
unei reguli oarecare, ceea ce face acest tip de sistem expert mai puin fragil dect cele
tradiionale.
Logica fuzzy este un mijloc eficient pentru a exploata tolerana la imprecizii, incertitudini
i adevruri pariale pentru a obine maleabilitate, robustee i soluii de cost minim.
7.4.1. Terminologia Fuzzy Logic
Un program fuzzy logic conine dou componente principale: variabile fuzzy i reguli
fuzzy.
Variabilele fuzzy reprezint un domeniu de valori numerice, care poate fi divizat n
cteva subdomenii prin definirea unor calificative (cuantificatori) ai variabilei fuzzy. Aceste
calificative constau din identificatori literali (nume), cunoscui sub denumirea de calificative
lingvistice, i o funcie de apartenen, care arat gradul de apartenen al fiecrei valori posibile
a variabilei fuzzy la setul fuzzy.
IASE 8/26 Cap. 7. Logica Fuzzy

Cnd o valoare este asignat unei variabile fuzzy, aceasta este convertit ntr-un grad de
apartenen pentru fiecare calificativ lingvistic, utiliznd funcia de apartenen asociat. Cnd
este cerut valoarea unei variabile fuzzy, pentru a fi utilizat n afara sistemului expert, se
utilizeaz o expresie de de-fuzzyficare, bazat pe gradul de apartenen ale calificativelor
asociate variabilei fuzzy.
Gradul de apartenen al unui calificativ poate fi afectat de o limitare lingvistic.
Aceasta poate avea ca efect concentrarea sau diluarea importanei fuzzy a calificativului.
O regul fuzzy este o regul care apeleaz, n partea sa if, unul sau mai multe calificative
ale variabilei fuzzy i un singur calificativ al variabilei fuzzy n partea sa de concluzii (then).
Regulile sunt aplicate variabilelor fuzzy printr-un procedeu denumit propagare. La aplicarea
unei regului, mai nti se identific gradul de apartenen al calificativelor specificate n partea
condiional i calculeaz noul grad de apartenen al calificativului menionat n partea de
concluzii. Regulile fuzzy pot forma o matrice fuzzy, cunoscut i ca memorie asociativ fuzzy.
7.4.2. Structura unui program Fuzzy Logic
Un program fuzzy logic conine trei faze principale:
1. Fuzzyficarea etap n care valorile de intrare sunt asignate unor variabile fuzzy
corespunztoare. O valoare de intrare este convertit ntr-un grad de apartenen
pentru fiecare calificativ al variabilei fuzzy asociat acesteia.
2. Propagarea proces prin care regulile fuzzy sunt aplicate variabilelor fuzzy i
calificativelor acestora. La aplicarea unei astfel de reguli, gradele de apartenen
al calificativelor, menionate n partea condiional, sunt propagate ctre
calificativele din partea de concluzii.
3. De-fuzzyficarea gradul de apartenen rezultant al calificativelor unei variabile
fuzzy este convertit napoi ntr-o valoare.
n figura 7.1 este prezentat o diagram cu cele 3 etape ale unui program fuzzy logic
aplicat pentru o turbin cu aburi. Valorile de intrare n program sunt: temperatura = 200C,
presiune=15KPa. n prima etap, cele dou variabile sunt fuzzyficate n grade de apartenen ale
calificativelor variabilelor temperatura i presiune. Cel mai mare grad de apartenen, pentru
variabila temperatur, l are calificativul normal, urmat de cool. Calificativul variabilei presiune
cu grad maxim este weak, urmat de low. n etapa a doua se genereaz, prin aplicarea regulilor
fuzzy, gradul rezultant de apartenen al fiecrui calificativ aparinnd variabilei fuzzy throttle
(ajutaj); calificativul cu cel mai mare scor este positive_large, urmat de positive_medium. n
final este calculat valoarea de ieire (valoarea 35) n funcie de toate gradele de apartenen
ale calificativelor asociate variabilei throttle. Aceast valoare de ieire va fi utilizat n reglarea
turbinei cu aburi.


Fig. 7.1
IASE 9/26 Cap. 7. Logica Fuzzy

7.4.3. Componentele Fuzzy
Componentele unui program fuzzy pot fi grupate n patru categorii:
1. Variabile fuzzy
2. Restricii lingvistice
3. Reguli fuzzy
4. Matrice fuzzy

Definirea variabilelor fuzzy
Variabilele fuzzy i calificativele lor constituie baza unui program fuzzy logic. O
variabil fuzzy se definete prin: nume, domeniu, calificative i expresie de de-fuzzyficare.
Anatomia unei variabile fuzzy, n sintaxa PROLOG, este prezentat n fig. 7.2, iar n
sintaxa KSL, n fig. 7.3.

Fig. 7.2

Fig. 7.3

Numele unei variabile fuzzy este un atom, care descrie uzual cantitatea referit, i este
utilizat oriunde este apelat variabila. De exemplu, variabila fuzzy temperatura este definit
astfel:
fuzzy_variable( temperatura) :-
fuzzy_variable (speed) :-
[0, 200] ;
slow, \, curved(2), [0, 30] ;
medium, /\, linear, [10, 30, 50] ;
fast, /, curved(0.5), [40, 70] ;
peak.
Domeniul
variabilei
Calificative
Nume
calificativ
Metod de
De-Fuzzyficare
Form
calificativ
Curbur
calificativ
Puncte
calificativ
Nume variabil
fuzzy
fuzzy_variable speed
range is [0, 200] ;
qualifier slow is \ shaped and curved(2) at 0, 30 ;
qualifier medium is /\ shaped and linear at 10, 30, 50 ;
qualifier fast is / shaped and curved(0.5) at 40, 70 ;
peak.
Domeniul
variabilei
Calificative
Nume
calificativ
Metod de
De-Fuzzyficare
Form
calificativ
Curbur
calificativ
Puncte
calificativ
Nume variabil
fuzzy
IASE 10/26 Cap. 7. Logica Fuzzy

Setarea limitelor inferioar i superioar a unei variabile fuzzy, care definesc
intervalul valorilor posibile pe care variabila le poate lua, este opional i se poate obine
astfel:
fuzzy_variable( temperatura) :-
[-100, 150];
n cazul n care aceste limite nu sunt specificate explicit, sistemul va deduce aceste
limite din modul de definire a calificativelor asociate variabilei, prelund valorile extreme
utilizate n definirea acestora.
Definirea calificativelor variabilei fuzzy. Aceste calificative constau din nume i
funcii de apartenen care s transforme o valoare de intrare ntr-un grad de apartenen al
acestei al calificativul respectiv. Exist mai multe variante de definire a funciei de
apartenen: prin forma exact, prin curbur, prin puncte relevante. Aceast funcie este
reprezentat printr-un grafic, n care pe axa Y se afl gradul de apartenen a setului de valori,
iar pe axa X se plaseaz valorile de intrare ale variabilei fuzzy. Gradul de apartenen poate fi
specificat ntre valorile limit 0 i 1. Valoarea 1 desemneaz apartenena complet a valorii de
intrare la setul fuzzy al calificativului respectiv. Un grad de apartenen 0 arat c valoarea de
intrare nu este (definitiv) membru al setului respectiv. Valori intermediare determin diverse
grade de apartenen.
Modulul FLINT pune la dispoziia utilizatorului 7 forme distincte de funcii: pant
cresctoare, pant descresctoare, triunghi cu vrful n sus, triunghi cu vrful n jos, trapez
cu baza mic n sus, trapez cu baza mic n jos i form liber. n tabelul 7.1 sunt prezentate
simbolurile i punctele necesare la definirea fiecrei funcii n parte.
Tabelul 7.1
Simbol Puncte Descriere
/ [A, B] pant cresctoare
\ [A, B] pant descresctoare
/\ [A, B, C] triunghi cu vrful n sus
\/ [A, B, C] triunghi cu vrful n jos
/-\ [A, B, C, D] trapez cu baza mic n sus
\-/ [A, B, C, D] trapez cu baza mic n jos
? [V
1
/M
1
, V
2
/M
2
V
k
/M
k
] form liber

n figura 7.4 sunt prezentate graficele funciilor de apartenen pentru fiecare tip
predefinit. Simbolurile au rolul de a defini forma funciei, iar puncte indic numrul de puncte
necesare la definirea funciei. Prin notaiile LB i UB se desemneaz limitele inferioar (LB
Lower Bounds) i superioar (UP Upper Bounds) ale variabilei fuzzy.

a
IASE 11/26 Cap. 7. Logica Fuzzy

b
c
d
e
f
IASE 12/26 Cap. 7. Logica Fuzzy

g
Fig. 7.4,a,b,c,d,e,f,g
Exemple:
S considerm o variabil fuzzy denumit directie, cu valori posibile ntre 0 i 180.
Pentru aceast variabil se poate un calificativ denumit stanga, pentru care valorile mai mici
de 60 reprezint definitiv stnga, iar cele peste 90 definitiv non stanga:
stanga, \, linear, [60, 90];
Cuvntul rezervat linear determin sistemul s uneasc cele dou puncte printr-un
segment de dreapt.
n mod similar, pentru valori cuprinse ntre 90 i 120 se definete un calificativ
dreapta.
dreapta, /, linear, [90, 120];
Forma triunghiular cu vrful n sus se utilizeaz normal pentru calificative care
acoper un domeniu centrat n jurul unei valori. De exemplu, calificativul centrat este
definitiv centrat pentru valoarea 90 i definitiv non centrat pentru valori mai mici de 45 sau
mai mari de 135.
centrat, /\, linear, [45, 90, 135];
Analog, forma triunghiular cu vrful n jos se utilizeaz normal pentru calificative
care indic negaia unei caliti (acoper tot domeniul, mai puin un interval centrat n jurul
unei valori). n acest caz, un calificativ denumit extreme, centrat n valoarea 90 i cu limitele
30 i 150, se definete astfel:
extreme, \/, linear, [30, 90, 150];
Forma triunghiular reprezint un caz particular al formei trapezoidale, utilizat
normal pentru calificative care descriu un domeniu de valori cu subdomenii nenule pentru
grad maxim i minim de apartenen:
inainte, /-\, linear, [60, 75, 105, 120];
periferic, \-/, linear, [30, 60, 120, 150];
Formele libere au fost introduse pentru a acoperi toate cerinele utilizator. Fiecare
punct este descris n sintaxa V/M, n care V este valoarea variabilei fuzzy, iar M este valoarea
de apartenen. Valorile de start sau sfrit pot fi 0 sau 1. Valorile pentru V trebuie introduse
strict n ordine ascendent. De exemplu, calificativul stanga definit anterior poate fi mult mai
exact descris printr-o funcie liber i un set de puncte:
stanga, ?, linear, [60/1, 65/.75, 70/.4, 85/.25, 90/0];

Definirea curburii unui calificativ. n exemple precedente, conexiunile dintre puncte
se realizau prin drepte. FLINT pune la dispoziia utilizatorului facilitatea de a aduga un
parametru de curbur tuturor formelor descrise anterior. Acest parametru poate lua valori
cuprinse ntre 0.1 i 9.9, forma curbei variind n funcie de poziia relativ a punctelor de start
i final, precum i de valoarea parametrului de curbur: mai mic, egal sau mai mare dect 1.
Aceste 9 cazuri sunt prezentate n fig. 7.5.
IASE 13/26 Cap. 7. Logica Fuzzy


Fig. 7.5

Cu ct valoarea parametrului de curbur este mai ndeprtat de 1, cu att curbura este
mai accentuat. Dimpotriv, la valori apropiate de 1, forma se apropie de linia dreapt. Pentru
un parametru de curbur de valoare 0.5, graficul funciei este prezentat n fig. 7.6, iar pentru
valoarea 2 n cazul unei funcii triunghiulare n fig. 7.7.


Fig. 7.6 Fig. 7.7

Definirea de-fuzzyficrii unei variabile fuzzy. De-fuzyficarea de utilizeaz pentru a
converti valorile de apartenen ale calificativelor asociate variabilei fuzzy curente ntr-o
singur valoare global a variabilei. FLINT conine dou tipuri de de-fuzzyficare predefinite:
centroid i peak.
Metoda centroid reprezint de-fuzzyficatorul implicit i funcioneaz prin gsirea
centrului de greutate al coleciei tuturor gradelor de apartenen ale tuturor calificativelor
variabilei fuzzy considerate. Pentru a ilustra modul de aciune al acestei metode, considerm o
variabil fuzzy denumit precipitatii, cu trei calificative: light, medium, heavy (fig. 7.8).


Fig. 7.8

La sfritul sesiunii fuzzy, valorile acestor calificative sunt: light = 0.75, medium=0.25
i heavy = 0. Metoda centroid acioneaz asupra fiecrei funcii de apartenen,
corespunztoare fiecrui calificativ, i elimin toate zonele funciei aflate deasupra valorii
curente a calificativului (v. fig. 7.9). n continuare, zonele rmase din aceste funcii (poriunile
nnegrite-fig. 7.9) sunt suprapuse i se calculeaz centru de greutate rezultant. Centrul de
greutate indic o singur valoare pe axa Ox considerat ca valoare global a variabilei fuzzy.

IASE 14/26 Cap. 7. Logica Fuzzy


Fig. 7.9

Metoda peak urmrete identificarea calificativelor cu cel mai mare grad de
apartenen, apoi calculnd punctul central al tuturor palierelor obinute n punctul de tiere.
Considernd aceeai variabil fuzzy, precipitatii, se caut calificativul cu valoare maxim
(light), se taie funcia de apartenen n dreptul valorii curente (0.75) i se calculeaz centru
palierului obinut (Fig. 7.10).


Fig. 7.10

De asemenea, FLINT permite utilizatorului definirea propriei metode de
de-fuzzyficare.

Exemplu de definire a unei variabile fuzzy
S considerm o variabil temperatura, cu valori n intervalul [-5050] grade
Celsius. Aceste elemente se transcriu ntr-un program PROLOG prin sintaxa:
fuzzy_variable(temperatura):-
[-50, 50];
n continuare se definesc 4 calificative ale variabilei temperatura: inghetat, rece, cald,
fierbinte.
Calificativul inghetat se refer la toate valorile sub zero ale temperaturii i posibil la
cele ntre 0 i 6 grade (fig. 7.11,a). Calificativul rece se refer posibil la intervalul [-10,0],
definitive la temperaturile cuprinse ntre [0, 5] i posibil la valorile [5, 12] (fig. 7.11,b).
Similar, cald se poate referi la intervalul [5, 15], cu exactitate pentru [15, 25] i posibil pentru
[25, 35] (fig. 7.11,c). n final, dorim ca fierbinte s se refere posibil la intervalul [20, 30] i
definitiv pentru valorile superioare temperaturii de 30 grade (fig. 7.11,d). Domeniile definite
pentru aceste calificative se suprapun parial, aa cum rezult din reprezentarea grafic
combinat din fig. 7.11,e.

a
IASE 15/26 Cap. 7. Logica Fuzzy

b
c
d
e
Fig. 7.11

Dup ce au fost definite calificativele, trebuie n continuare s se stabileasc metoda
utilizat n de-fuzzyficarea variabilei. n acest exemplu se apeleaz la metoda centroid.
Pentru a reprezenta aceste calificative, variabila fuzzy trebuie completat cu
urmtoarele instruciuni:
fuzzy_variable(temperatura):-
[-50, 50];
inghetat, \, linear, [0, 6];
rece, /-\, linear, [-10, 5, 10, 15];
cald, /- \, linear, [5, 15, 25, 35];
fierbinte, /, linear, [20, 30];
centroid.

Definirea deformrilor lingvistice (linguistic hedge). Se utilizeaz pentru a concentra
sau dilua caracteristica funciei de apartenen a unui calificativ. Definirea unei deformri
lingvistice presupune a defini numele su i formula utilizat:
fuzzy_hedge (foarte, power(2)). %Sintaxa PROLOG
fuzzy_hedge foarte is power 2. %Sintaxa FLEX
Numele (n exemplul anterior, foarte) este un atom prolog i are efect universal (poate
fi aplicat oricrui calificativ). A doua parte din definiia unei deformri lingvistice reprezint
formula aplicat oriunde identificatorul acesteia este utilizat i afecteaz funcia de
IASE 16/26 Cap. 7. Logica Fuzzy

apartenen a calificativului respectiv. Pentru acest stadiu de dezvoltarea a FLEX, singura
formul acceptat este power (ridicare la putere), cu valori cuprinse ntre 0.1 i 9.9.
Pentru a evidenia modul de acionare a unei astfel de deformri lingvistice, s
considerm o variabil fuzzy denumit buna_dispozitie i un calificativ fericire care se
interpreteaz ca fiind fericire probabil pentru valori mai mici ca 80 i fericire definitiv
pentru valori ntre 80 i 100 (fig. 7.12,a). De asemenea, considerm parametrul foarte (definit
anterior) i putin (definit prin fuzzy_hedge (putin, power(0.2)).)

a
b
c
Fig. 7.12

Un calificativ nsoit de un atribut de deformare poate fi apelat, ntr-o regul fuzzy, sub
forma:
if buna_dispoziie is foarte fericire
Aceast construcie are ca efect exagerarea funciei de apartenen fericire,
reprezentat n fig. 7.12,b mpreun cu funcia original (linie punctat). Considernd un grad
de apartenen de 0.5, pentru funcia original corespunde o valoarea a variabilei fuzzy de 40,
iar pentru funcia deformat o valoare de aproximativ 70. Astfel, se obine o nclinare a
funciei ctre valori mai apropiate de domeniul definitiv fericit.
Exemplul anterior este aplicat i pentru o valoare a puterii de 0.2 (atributul putin), care
va conduce la o moderare a funciei de apartenen, n sensul reducerii valorii variabilei fuzzy
corespunztoare unui grad de apartenen precizat (fig. 7.12,c), n raport cu funcia original
(liniar). n acest caz, funcia de apartenen este modificat astfel se obin stri de mai puin
probabil fericire pentru un interval mai mare de valori ale gradului de apartenen.

Definirea regulilor fuzzy
O component major a unui sistem fuzzy logic o reprezint setul de reguli, prin care
se implementeaz raionamente cu i despre calificativele variabilelor fuzzy. Regulile constau
dintr-un set de condiii, introduse prin if, i un set de concluzii (partea then, respectiv else).
IASE 17/26 Cap. 7. Logica Fuzzy

Anatomia unei reguli fuzzy
Anatomia utilizat n definiia unei reguli fuzzy este prezentat n fig. 7.13. n aceast
definiie sunt utilizai civa operatori. Orice program fuzzy logic trebuie s includ
declaraiile urmtorilor operatori:


Fig. 7.13

:- op( 1200, xfy, ( if )),
op( 1200, xfy, ( then )),
op( 1200, xfx, ( else )),
op( 1100, xfy, ( or )),
op( 1000, xfy, ( and )),
op( 700, xfx, ( is )),
op( 600, fy, ( not )).
Numele unei reguli fuzzy este un atom Prolog i va fi utilizat pentru a referi regula
respectiv. Condiiile unei reguli fuzzy fac apel la variabile fuzzy i la calificativele acestora.
Condiii compuse se pot obine prin utilizarea conectivelor and (conjuncie), or (disjuncie) i
not (negaie). Concluzia unei reguli poate fi calculat n mai multe moduri, n funcie de tipul
conectivelor aplicate. Valoarea calificativului variabilei fuzzy menionat n seciunea then
este calculat cu valorile curente ale gradelor de apartenen ale calificativelor variabilelor
menionate n condiii. Valoarea calificativului variabilei fuzzy menionat n partea opional
fuzzy_rule (risk1)
if duration is long
and cost is high
then risk is substantial
else risk is low.
Condiie
Concluzie
opional
Operatori
Nume calificativ
condiional
Nume regul
fuzzy
Nume variabil
condiional
Conectiv
Concluzie
Nume variabil
concluzie
Nume calificativ
concluzie
fuzzy_rule risk1
if the duration is long
and the cost is high
then the risk is substantial
else the risk is low.
Condiie
Concluzie
opional
Operatori
Nume calificativ
condiional
Nume regul
fuzzy
Nume variabil
condiional
Conectiv
Concluzie
Nume variabil
concluzie
Nume calificativ
concluzie
IASE 18/26 Cap. 7. Logica Fuzzy

else se calculeaz prin scderea din 1 a valorii calculate pentru calificativul variabilei fuzzy
menionat n partea then.
Exemplu: n acest exemplu se urmrete reglarea deschiderii ajutajului unei turbine cu
abur, n funcie de temperatura i presiunea din interior. Valoarea de apartenen a
calificativului positiv_large al variabilei ajutaj utiliznd valorile de apartenen curente ale
calificativelor rece (al variabilei temperatura) i joasa (variabila presiune) se poate stabili
prin urmtoarea regul:
fuzzy_rule (ajutaj1)
if temperatura is rece
and presiune is foarte_joasa
then ajutaj is positiv_large.
Similar pot fi definite i urmtoarele reguli care permit stabilirea valorilor de
apartenen ale calificativelor positiv_medium i positive_small.
fuzzy_rule (ajutaj2)
if temperatura is rece
and presiune is joasa
then ajutaj is positiv_medium.

fuzzy_rule (ajutaj3)
if temperatura is rece
and presiune is normala
then ajutaj is positiv_small.

Definirea matricelor fuzzy
Cele trei reguli definite anterior au aceeai structur (toate condiiile se refer numai la
calificative ale variabilelor temperatura i presiune i conduc la concluzii privitoare la
variabila ajutaj). De asemenea, conin acelai tip de operatori n partea condiional
(conjunciile and). n astfel de cazuri, toate aceste reguli pot fi reunite convenional ntr-o
matrice de reguli fuzzy. Sintaxa unei matrice fuzzy este prezentat n fig. 7.14.
Prima linie din definiie cuprinde denumirile variabilelor fuzzy care urmeaz s fie
utilizate n toate liniile matricei. Apoi se specific calificativele asociate acestor variabile, n
ordinea prescris n prima linie. Sintaxa urmtoare:
temperatura * presiune -> ajutaj;
este echivalent cu forma:
if temperatura is _
and presiune is _
then ajutaj is _
n cazul utilizrii aceleiai sintaxe pentru calificative,
rece * foarte_joasa -> positive_large;
reprezentarea regulii este:
if temperatura is rece
and presiune is foarte_joasa
then ajutaj is positive_large.

Exemplu:
fuzzy_matrix( ajutaj_reguli) :-
temperatura * presiune -> ajutaj;
rece * foarte_joasa -> positive_large;
rece * joasa -> positive_medium;
rece * normala -> positive_small.



IASE 19/26 Cap. 7. Logica Fuzzy


Fig. 7.14

Exemplu de program Fuzzy Logic
Acest exemplu const n implementarea unui controler fuzzy logic. Un model general
cuprinde dispozitivul controlat, un set de sisteme de acionare (care preiau intrrile i le
convertesc n semnale de acionare a dispozitivului) i un set de sensori (fig. 15).

Fig. 15
fuzzy_matrix (risk_rules) :-

duration * cost -> risk ;
long * high -> very high ;
short * low -> low.
Nume
variabile
matrice
Nume matrice Nume variabil
condiional
Nume variabil
concluzie
Nume calificativ
concluzie
Nume calificativ
condiional
Deformare
calificativ
fuzzy_matrix risk_rules

duration * cost -> risk ;
long * high -> very high ;
short * low -> low.
Nume
variabile
matrice
Nume matrice Nume variabil
condiional
Nume variabil
concluzie
Nume calificativ
concluzie
Nume calificativ
condiional
Deformare
calificativ
IASE 20/26 Cap. 7. Logica Fuzzy


Controlerul fuzzy logic primete informaiile de la senzori i le fuzzyfic n variabilele
fuzzy asociate sistemului; apoi se propag valorile de apartenen utiliznd regulile fuzzy
definite in program, iar n final se de-fuzzyfic ieirea i se returneaz valorile pentru sistemul
de acionare.
Un controller fuzzy pentru o turbin
Rolul acestui controler este de a ajusta dimensiunea ajutajului unei turbine cu aburi n
raport temperatura i presiunea curent din interiorul turbinei, n scopul stabilizrii fluxului
(debitului) de aburi (fig. 7.16).


Fig. 7.16

O prim etap n elaborarea unui program PROLOG pentru materializarea
controlerului fuzzy const n definirea tuturor operatorilor (condiii, concluzii, conjuncii,
disjuncii i negaii) utilizabili n definirea regulilor fuzzy.
%%%%%%%%%%%%%%%%%%%%%%%%
%Li ngui st i c oper at or s %
%%%%%%%%%%%%%%%%%%%%%%%%

: - op( 1150, f y, ( i f ) ) ,
op( 1150, xf y, ( t hen ) ) ,
op( 1150, xf x, ( el se ) ) ,
op( 1100, xf y, ( or ) ) ,
op( 1000, xf y, ( and ) ) ,
op( 700, xf x, ( i s ) ) ,
op( 600, f y, ( not ) ) .

Definirea variabilelor fuzzy
n stabilirea variabilelor fuzzy i calificativelor acestora se pornete de la cantitile
care urmeaz s fie utilizate n regulile fuzzy: temperatura, presiune i ajutaj. De asemenea,
din analiza sistemului, se stabilesc intrrile: temperatura i presiune, respectiv ieirile
acestuia: ajutaj. Pentru fiecare dintre acestea se definete cte o variabil fuzzy.
n pasul urmtor se stabilesc seturi de cuvinte care vor desemna calificativele
lingvistice ale variabilelor fuzzy. Considernd variabila temperatura, se stabilete (de ctre un
expert uman) c intervalul de valori posibile este [0, 500] grade Celsius, cu valori
semnificative n intervalul [100, 350]. Pentru a descrie temperatura din turbin se utilizeaz
urmtoarele adjective, stabilite prin concordan cu subintervalele de temperaturi
reprezentative ale valorilor posibile: rece, racoare, normal, cald, fierbinte. Cea mai simpl
IASE 21/26 Cap. 7. Logica Fuzzy

cale de a implementa o form pentru fiecare calificativ este de a considera dependenele
liniare. Ulterior, funciile de apartenen pot fi rafinate.
Aplicnd sintaxa corespunztoare, calificativele asociate variabilei fuzzy temperatura
au urmtoarele definiii (fig. 7. 17):


Fig. 7.17

f uzzy_var i abl e( t emper at ur a ) : -
[ 0 , 500 ] ;
r ece, \ , l i near , [ 110 , 165 ] ;
r acoar e, / \ , l i near , [ 110 , 165 , 220 ] ;
nor mal , / \ , l i near , [ 165 , 220 , 275 ] ;
cal d, / \ , l i near , [ 220 , 275 , 330 ] ;
f i er bi nt e, / , l i near , [ 275 , 330 ] .

Cea de-a doua variabil fuzzy de intrare, presiune, se definete similar, introducnd
calificativele: joas, scazuta, normala, ridicata, inalta (fig. 7.18). Se consider intervalul
[0, 300] (msurat n 100 KPa).


Fig. 7.18

f uzzy_var i abl e( pr esi une ) : -
[ 0 , 300 ] ;
j oasa, \ , l i near , [ 10 , 70 ] ;
scazut a, / \ , l i near , [ 10 , 70 , 130 ] ;
nor mal a, / \ , l i near , [ 70 , 130 , 190 ] ;
r i di cat a, / \ , l i near , [ 130 , 190 , 250 ] ;
i nal t a, / , l i near , [ 190 , 250 ] .

Variabila fuzzy de ieire ajutaj poate lua valori ntre 60 i 60 (o valoare negativ
indic faptul c ajutajul trebuie deplasat napoi, iar una pozitiv deplasat nainte). Problema
const n micarea ajutajului cu cantiti mari, medii sau mici, n sens pozitiv sau negativ. De
aceea, se definesc 7 calificative care acoper aceste aciuni: negativ_mare, negativ_medie,
negativ_mica, zero, pozitiv_mica, pozitiv_medie, pozitiv_mare (fig. 7.19). Metoda adoptat
pentru transformarea valorilor de apartenen n valoare a variabilei ajutaj este centroid.

f uzzy_var i abl e( aj ut aj ) : -
[ - 60 , 60 ] ;
IASE 22/26 Cap. 7. Logica Fuzzy

negat i v_mar e, \ , l i near , [ - 45 , - 30 ] ;
negat i v_medi e, / \ , l i near , [ - 45 , - 30 , - 15 ] ;
negat i v_mi ca, / \ , l i near , [ - 30 , - 15 , 0 ] ;
zer o, / \ , l i near , [ - 15 , 0 , 15 ] ;
pozi t i v_mi ca, / \ , l i near , [ 0 , 15 , 30 ] ;
pozi t i v_medi e, / \ , l i near , [ 15 , 30 , 45 ] ;
pozi t i v_mar e, / , l i near , [ 30 , 45 ] ;
cent r oi d .


Fig. 7.19

Definirea regulilor fuzzy
Etapa de definire a variabilelor fuzzy fiind ncheiat, urmtorul pas const n stabilirea
regulilor fuzzy. Considerm c, n urma consultrii unui expert n turbine cu abur, se ajunge la
mai multe reguli care descriu legtura dintre cele trei mrimi exterioare sistemului (variabile
fuzzy). Considernd toate combinaiile posibile dintre temperatura i presiune, n continuare
sunt explicitate toate regulile care conduc la o schimbare n variabila ajutaj pentru fiecare
schimbare a variabilelor de intrare. Aceste reguli pot fi scrise de expertul uman n forma
urmtoare:
Dac temperatura este rece i presiunea joas, atunci deplaseaz ajutajul cu o
cantitate pozitiv mare.
Pentru fiecare regul de acest tip trebuie definit separat cte o regul de forma:

f uzzy_r ul e ( aj ut aj 1 )
i f t emper at ur a i s r ece
and pr esi une i s j oasa
t hen aj ut aj i s pozi t i v_mar e.

Deoarece regulile fuzzy din acest exemplu se aplic ntotdeauna variabilelor
temperatura, presiune i ajutaj, o alternativ mai eficient este combinarea tuturor regulilor
ntr-o singur matrice fuzzy:

f uzzy_mat r i x( t ) : -

t emper at ur a * pr esi une - > aj ut aj ;

r ece * j oasa - > pozi t i v_mar e ;
r ece * scazut a - > pozi t i v_medi e ;
r ece * nor mal a - > pozi t i v_mi ca ;
r ece * r i di cat a - > negat i v_mi ca ;
r ece * i nal t a - > negat i v_medi e ;

r acoar e * j oasa - > pozi t i v_mar e ;
r acoar e * scazut a - > pozi t i v_medi e ;
r acoar e * nor mal a - > zer o ;
r acoar e * r i di cat a - > negat i v_medi e ;
r acoar e * i nal t a - > negat i v_medi e ;
IASE 23/26 Cap. 7. Logica Fuzzy


nor mal * j oasa - > pozi t i v_medi e ;
nor mal * scazut a - > pozi t i v_mi ca ;
nor mal * nor mal a - > zer o ;
nor mal * r i di cat a - > negat i v_mi ca ;
nor mal * i nal t a - > negat i v_medi e ;

cal d * j oasa - > pozi t i v_medi e ;
cal d * scazut a - > pozi t i v_mi ca ;
cal d * nor mal a - > negat i v_mi ca ;
cal d * r i di cat a - > negat i v_medi e ;
cal d * i nal t a - > negat i v_mar e ;

f i er bi nt e * j oasa - > pozi t i v_mi ca ;
f i er bi nt e * scazut a - > pozi t i v_mi ca ;
f i er bi nt e * nor mal a - > negat i v_medi e ;
f i er bi nt e * r i di cat a - > negat i v_mar e ;
f i er bi nt e * i nal t a - > negat i v_mar e .

Propagarea ntr-un program fuzzy
Programul dezvoltat va prelua valorile variabilelor fuzzy de intrare (temperatura i
presiune), decide modul de propagare a gradelor de apartenen utiliznd matricea de reguli i
n final, dup propagare, va returna o valoare rezultat din variabila fuzzy ajutaj.
n acest sens, se va defini un predicat denumit gaseste_ajutaj cu trei argumente:
primele dou pentru valorile intrrilor temperatura i presiune, iar al treilea pentru valoarea
variabilei ajutaj. Setarea valorilor unei variabile fuzzy i extragerea acesteia se obine prin
apelarea predicatului fuzzy_variable_value/2. Regula fuzzy de propagare const n apelul
predicatului fuzzy_propagate/4. Modul de propagare a valorilor de apartenen de la
calificativele din partea condiional la calificativele din partea de concluzii se va realiza n
raport cu conjunciile, disjunciile i negaiile coninute n regulile fuzzy. Valorile implicite
sunt urmtoarele:
minimum pentru conjuncii (va fi propagat valoarea minim din conjuncii)
maximum pentru disjuncii (va fi propagat valoarea maxim din disjuncii)
complement pentru negaii (va fi propagat valoarea 1 minus valoarea de apartenen
negat)

gasest e_aj ut aj ( Temper at ur a, Pr esi une, Aj ut aj ) : -
f uzzy_r eset _member shi p( aj ut aj ) ,
f uzzy_var i abl e_val ue( t emper at ur a, Temper at ur a ) ,
f uzzy_var i abl e_val ue( pr esi une, Pr esi une ) ,
f uzzy_pr opagat e( mi ni mum, maxi mum, compl ement , [ t ] ) ,
f uzzy_var i abl e_val ue( aj ut aj , Aj ut aj ) .

Deoarece orice valoare mai veche a variabilei ajutaj poate afecta propagarea fuzzy, a
fost necesar apelarea predicatului fuzzy_reset_membership la nceputul procedurii.

Compilarea i rularea programului fuzzy
Un program fuzzy logic poate fi compilat numai dup ncrcarea interpretorului fuzzy
logic, prin comanda:

?- ensure_loaded(system(fuzzy)).

Programului fuzzy pentru controlul turbinei cu aburi conine predicatul
gaseste_ajutaj/3. A rula acest program se reduce la interogarea sistemului Prolog utiliznd
urmtorul goal:

?- gaseste_ajutaj(300, 150, Ajutaj).
Ajutaj = -26.040413058933
IASE 24/26 Cap. 7. Logica Fuzzy


Exemplu de program fuzzy logic scris n limbajul KSL

n aceast seciune se prezint exemplul anterior (controlul fuzzy al unei turbine cu
aburi) utiliznd flex i limbajul su KSL. Componentele fuzzy ale programului KSL sunt
similare cu cele echivalente din exemplul Prolog.

%%%%%%%%%%%%%%%%%%%
%Fuzzy var i abl es %
%%%%%%%%%%%%%%%%%%%

f uzzy_var i abl e t emper at ur a
r anges f r om0 t o 500 ;
qual i f i er r ece i s \ shaped and l i near at 110 , 165 ;
qual i f i er r acoar e i s / \ shaped and l i near at 110 , 165 , 220 ;
qual i f i er nor mal i s / \ shaped and l i near at 165 , 220 , 275 ;
qual i f i er cal d i s / \ shaped and l i near at 220 , 275 , 330 ;
qual i f i er f i er bi nt e i s / shaped and l i near at 275 , 330 .

f uzzy_var i abl e pr esi une
r anges f r om0 t o 300 ;
qual i f i er j oasa i s \ shaped and l i near at 10 , 70 ;
qual i f i er scazut a i s / \ shaped and l i near at 10 , 70 , 130 ;
qual i f i er nor mal a i s / \ shaped and l i near at 70 , 130 , 190 ;
qual i f i er r i di cat a i s / \ shaped and l i near at 130, 190 , 250 ;
qual i f i er i nal t a i s / shaped and l i near at 190, 250 .

f uzzy_var i abl e aj ut aj
r anges f r om- 60 t o 60 ;
qual i f i er negat i v_mar e i s \ shaped and l i near at - 45 , - 30 ;
qual i f i er negat i v_medi e i s / \ shaped and l i near at - 45 , - 30 , - 15 ;
qual i f i er negat i v_mi ca i s / \ shaped and l i near at - 30 , - 15 , 0 ;
qual i f i er zer o i s / \ shaped and l i near at - 15 , 0 , 15 ;
qual i f i er pozi t i v_mi ca i s / \ shaped and l i near at 0 , 15 , 30 ;
qual i f i er pozi t i v_medi e i s / \ shaped and l i near at 15 , 30 , 45 ;
qual i f i er pozi t i v_mar e i s / shaped and l i near at 30 , 45 ;
def uzzi f i er = cent r oi d .

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%FAM - Fuzzy Associ at i ve Memor y %
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

f uzzy_mat r i x aj ut aj _val ue

t emper at ur a * pr esi une - > aj ut aj ;

r ece * j oasa - > pozi t i v_mar e ;
r ece * scazut a - > pozi t i v_medi e ;
r ece * nor mal a - > pozi t i v_mi ca ;
r ece * r i di cat a - > negat i v_mi ca ;
r ece * i nal t a - > negat i v_medi e ;

r acoar e * j oasa - > pozi t i v_mar e ;
r acoar e * scazut a - > pozi t i v_medi e ;
r acoar e * nor mal a - > zer o ;
r acoar e * r i di cat a - > negat i v_medi e ;
r acoar e * i nal t a - > negat i v_medi e ;

nor mal * j oasa - > pozi t i v_medi e ;
nor mal * scazut a - > pozi t i v_mi ca ;
nor mal * nor mal a - > zer o ;
nor mal * r i di cat a - > negat i v_mi ca ;
nor mal * i nal t a - > negat i v_medi e ;
IASE 25/26 Cap. 7. Logica Fuzzy


cal d * j oasa - > pozi t i v_medi e ;
cal d * scazut a - > pozi t i v_mi ca ;
cal d * nor mal a - > negat i v_mi ca ;
cal d * r i di cat a - > negat i v_medi e ;
cal d * i nal t a - > negat i v_mar e ;

f i er bi nt e * j oasa - > pozi t i v_mi ca ;
f i er bi nt e * scazut a - > pozi t i v_mi ca ;
f i er bi nt e * nor mal a - > negat i v_medi e ;
f i er bi nt e * r i di cat a - > negat i v_mar e ;
f i er bi nt e * i nal t a - > negat i v_mar e .

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%Pr opagat i on of f uzzy val ues %
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

r el at i on get _aj ut aj _val ue( Temper at ur a, Pr esi une, Aj ut aj )
i f r eset al l f uzzy val ues
and t he absol ut e val ue of t emper at ur a i s Temper at ur a
and t he absol ut e val ue of pr esi une i s Pr esi une
and pr opagat e aj ut aj _val ue f uzzy r ul es
and t he absol ut e val ue of aj ut aj i s Aj ut aj .

%%%%%%%%%%%%%%%%%
%Tur bi na Fr ame %
%%%%%%%%%%%%%%%%%

f r ame t ur bi na
def aul t t emper at ur a i s 0
and def aul t pr esi une i s 0
and def aul t aj ut aj i s 0 .

%%%%%%%%%%%%%%%%%%%%%%%%
%Dat a- Dr i ven Pr ogr ams %
%%%%%%%%%%%%%%%%%%%%%%%%

demon r eact _t o_t emper at ur a_updat e
when t he t emper at ur a of t ur bi na changes t o T
t hen set _t ur bi na_aj ut aj .

demon r eact _t o_pr esi une_updat e
when t he pr esi une of t ur bi na changes t o P
t hen set _t ur bi na_aj ut aj .

%%%%%%%%%%%%%%%%%%%%%%
%Set Tur bi na Val ues %
%%%%%%%%%%%%%%%%%%%%%%

act i on set _t ur bi na_t emper at ur a( T)
do t he t emper at ur a of t ur bi na becomes T .

act i on set _t ur bi na_pr esi une( P)
do t he pr esi une of t ur bi na becomes P .

act i on set _t ur bi na_aj ut aj
do check t he t emper at ur a of t ur bi na i s Temper at ur a
and check t he pr esi une of t ur bi na i s Pr esi une
and get _aj ut aj _val ue( Temper at ur a, Pr esi une, Aj ut aj )
and t he aj ut aj of t ur bi na becomes Aj ut aj .

%%%%%%%%%%%%%%%%%%%%%%%%%%
%Di spl ay Tur bi na Val or i %
%%%%%%%%%%%%%%%%%%%%%%%%%%
IASE 26/26 Cap. 7. Logica Fuzzy


act i on di spl ay_t ur bi na_val ues
do wr i t e( ' The cur r ent t emper at ur a i s: ' )
and wr i t e( t he t emper at ur a of t ur bi na)
and nl
and wr i t e( ' The cur r ent pr esi une i s: ' )
and wr i t e( t he pr esi une of t ur bi na)
and nl
and wr i t e( ' The cur r ent aj ut aj i s: ' )
and wr i t e( t he aj ut aj of t ur bi na)
and nl .

act i on t est _t ur bi na_val ues
do set _t ur bi na_t emper at ur a( 300)
and set _t ur bi na_pr esi une( 150)
and di spl ay_t ur bi na_val ues.


Limbajul KSL furnizeaz accesul la numeroase elemente utilizate n construirea
sistemelor expert, ca de exemplu: cadre, atribute, programare data-driven.
Pentru nceput s-a creat un cadru turbina care va modela turbina real ce se dorete
a fi controlat. Atributele cadrului turbina sunt actualizate, n urma msurtorilor obinute pe
turbina real, prin definirea aciunii denumit set_turbina_ajutaj/0. Prin implementarea celor
doi demoni (react_to_temperatura_update i react_to_presiune_update) se asigur calculul
automat al valorii ajutajului ori de cte ori se modific temperatura i/sau presiunea. Valorile-
test ale parametrilor de intrare sunt setate prin definire i apelarea aciunii
test_turbina_values.
i n cazul programelor fuzzy KSL trebuie ncrcat mai nti interpretorul fuzzy, iar
dup compilare, programul este rulat prin interogarea Prolog:
?- test_turbina_values.

You might also like