Documente Academic
Documente Profesional
Documente Cultură
Cap. 07 - Logica Fuzzy PDF
Cap. 07 - Logica Fuzzy PDF
Logica Fuzzy
7. 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
uA(x) a mulimii A relativ la setul universal X este definit prin
1 dac x A
u A (x) =
0 dac x A
n consecin, orice submulime AX poate fi reprezentat sub forma A={x/uA(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 = { xuaB(x), unde uAB =
max(uA(x),uB(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 = {xuAB(x)=min(uA(x),uB(x)}.
Diferena dintre A i B se va reprezenta similar
A-B=(xuA-B(x)=min(uA(x),1-uB(x)}.
n particular, dac A este egal cu X, diferena reprezint complementul lui B, notat BC, i
BC = X-B = {xuBC(x)=1-uB(x)},
deoarece
min(uX(x),1-uB(x)) = min(1,1-uB(x)) = 1 - uB(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
A B= A B
A B = A B
se pot transcrie n termenii funciilor de apartenen
1 - max(uA(x),uB(x)) = min(1-uA(x),1-uB(x))
1 - min(uA(x),uB(x)) = max(1-uA(x),1-uB(x))
IASE 2/26 Cap. 7. Logica 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 uA(x)=1, sau (2) xA, caz n care uA(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 uA(x) },
unde funcia de apartenen uA, relativ la mulimea A, ia valori n intervalul [0,1], adic pentru
orice xX, avem 0uA(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 uB(x)[0,1], unde uB(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 uB(x)>uA(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 uA(x)=1, atunci x este n mod sigur n A i vom scrie, ca n cazul mulimilor
ordinare, xA;
- dac uA(x)=0, atunci sigur x nu aparine lui A, xA;
- dac 0<uA(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 uA(x)uB(x),
pentru orice element x din X. Similar, A=B, dac i numai dac uA(x)=uB(x), xX.
IASE 3/26 Cap. 7. Logica Fuzzy
8 12
Diagrama Hasse
a laticei (L, )
4 6
2 3
1
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. xx=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).
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 3n linii, n fiind numrul de componente
implicate.
a b ab ab ab ab
1 1 1 1 1 1
1 0 0 1 0 0
1 1/2 1/2 1 1/2 1/2
0 1 0 1 1 0
0 0 0 0 1 1
0 1/2 0 1/2 1 1/2
1/2 1 1/2 1 1 1/2
1/2 0 0 1/2 1/2 1/2
1/2 1/2 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 2n linii n cazul logicii
booleene sau 3n 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 2nn! linii pentru ntocmirea tabelelor de
adevr. Este evident, c valoarea de adevr T a unei formule oarecare, depinznd de
componentele a1,...,an, depinde de ordinea de dispunere a valorilor
T(a1),...,T(an),T(a1),...,T(an). Dar 2nn! 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 211!=1 cazuri posibile.
n cazul n care formula invoc dou propoziii a i b, vor exista 222!=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
222!=8 posibiliti ab a b (a b)
a b a b b b b
b a a b b b b
a b b a a a a
b a a b b b b
a b b a b b b
b a a b a a a
a a
a b b a a
a a
b a a b 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 233!=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
T( ( a b)) = 1 - T( a b) = 1 - min(1 - x,1 - y) =
(1 - x) + (1 - y) (1 - x) - (1 - y) x + y x - y
1 + = + = max(x, y ) = T (a b ) .
2 2 2 2
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
T(b), dac T(a) > T(b)
T (a b ) =
1, n caz contrar
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
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.
Fig. 7.1
IASE 9/26 Cap. 7. Logica Fuzzy
fuzzy_variable (speed) :-
Domeniul
[0, 200] ;
variabilei
slow, \, curved(2), [0, 30] ;
Calificative medium, /\, linear, [10, 30, 50] ;
fast, /, curved(0.5), [40, 70] ;
Nume peak.
calificativ
Fig. 7.2
fuzzy_variable speed
range is [0, 200] ;
qualifier slow is \ shaped and curved(2) at 0, 30 ;
Calificative qualifier medium is /\ shaped and linear at 10, 30, 50 ;
qualifier fast is / shaped and curved(0.5) at 40, 70 ;
Nume peak.
calificativ
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) :-
IASE 10/26 Cap. 7. Logica Fuzzy
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
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];
Fig. 7.5
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
Fig. 7.10
a
IASE 15/26 Cap. 7. Logica Fuzzy
e
Fig. 7.11
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.
fuzzy_rule (risk1)
Condiie if duration is long
Conectiv
and cost is high
then risk is substantial
Concluzie
else risk is low.
Concluzie
opional
Nume variabil Nume calificativ
Operatori concluzie concluzie
fuzzy_rule risk1
Condiie if the duration is long
Conectiv
and the cost is high
then the risk is substantial
Concluzie
else the risk is low.
Concluzie
opional
Nume variabil Nume calificativ
Operatori concluzie concluzie
Fig. 7.13
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.
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
fuzzy_matrix (risk_rules) :-
Nume
variabile duration * cost -> risk ;
matrice
long * high -> very high ;
short * low -> low.
Nume calificativ
condiional
Deformare Nume calificativ
calificativ concluzie
fuzzy_matrix risk_rules
Nume
variabile duration * cost -> risk ;
matrice
long * high -> very high ;
short * low -> low.
Nume calificativ
condiional
Deformare Nume calificativ
calificativ concluzie
Fig. 7.14
Fig. 15
IASE 20/26 Cap. 7. Logica Fuzzy
Fig. 7.16
Fig. 7.17
fuzzy_variable( temperatura ) :-
[ 0 , 500 ] ;
rece, \, linear, [ 110 , 165 ] ;
racoare, /\, linear, [ 110 , 165 , 220 ] ;
normal, /\, linear, [ 165 , 220 , 275 ] ;
cald, /\, linear, [ 220 , 275 , 330 ] ;
fierbinte, /, linear, [ 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
fuzzy_variable( presiune ) :-
[ 0 , 300 ] ;
joasa, \ , linear, [ 10 , 70 ] ;
scazuta, /\, linear, [ 10 , 70 , 130 ] ;
normala, /\, linear, [ 70 , 130 , 190 ] ;
ridicata, /\, linear, [ 130 , 190 , 250 ] ;
inalta, /, linear, [ 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.
fuzzy_variable( ajutaj ) :-
[ -60 , 60 ] ;
IASE 22/26 Cap. 7. Logica Fuzzy
Fig. 7.19
fuzzy_rule ( ajutaj1 )
if temperatura is rece
and presiune is joasa
then ajutaj is pozitiv_mare.
Deoarece orice valoare mai veche a variabilei ajutaj poate afecta propagarea fuzzy, a
fost necesar apelarea predicatului fuzzy_reset_membership la nceputul procedurii.
?- ensure_loaded(system(fuzzy)).
%%%%%%%%%%%%%%%%%%%
% Fuzzy variables %
%%%%%%%%%%%%%%%%%%%
fuzzy_variable temperatura
ranges from 0 to 500 ;
qualifier rece is \ shaped and linear at 110 , 165 ;
qualifier racoare is /\ shaped and linear at 110 , 165 , 220 ;
qualifier normal is /\ shaped and linear at 165 , 220 , 275 ;
qualifier cald is /\ shaped and linear at 220 , 275 , 330 ;
qualifier fierbinte is / shaped and linear at 275 , 330 .
fuzzy_variable presiune
ranges from 0 to 300 ;
qualifier joasa is \ shaped and linear at 10 , 70 ;
qualifier scazuta is /\ shaped and linear at 10 , 70 , 130 ;
qualifier normala is /\ shaped and linear at 70 , 130 , 190 ;
qualifier ridicata is /\ shaped and linear at 130, 190 , 250 ;
qualifier inalta is / shaped and linear at 190, 250 .
fuzzy_variable ajutaj
ranges from -60 to 60 ;
qualifier negativ_mare is \ shaped and linear at -45 , -30 ;
qualifier negativ_medie is /\ shaped and linear at -45 , -30 , -15 ;
qualifier negativ_mica is /\ shaped and linear at -30 , -15 , 0 ;
qualifier zero is /\ shaped and linear at -15 , 0 , 15 ;
qualifier pozitiv_mica is /\ shaped and linear at 0 , 15 , 30 ;
qualifier pozitiv_medie is /\ shaped and linear at 15 , 30 , 45 ;
qualifier pozitiv_mare is / shaped and linear at 30 , 45 ;
defuzzifier = centroid .
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% FAM - Fuzzy Associative Memory %
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
fuzzy_matrix ajutaj_value
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% Propagation of fuzzy values %
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
relation get_ajutaj_value(Temperatura,Presiune,Ajutaj)
if reset all fuzzy values
and the absolute value of temperatura is Temperatura
and the absolute value of presiune is Presiune
and propagate ajutaj_value fuzzy rules
and the absolute value of ajutaj is Ajutaj .
%%%%%%%%%%%%%%%%%
% Turbina Frame %
%%%%%%%%%%%%%%%%%
frame turbina
default temperatura is 0
and default presiune is 0
and default ajutaj is 0 .
%%%%%%%%%%%%%%%%%%%%%%%%
% Data-Driven Programs %
%%%%%%%%%%%%%%%%%%%%%%%%
demon react_to_temperatura_update
when the temperatura of turbina changes to T
then set_turbina_ajutaj .
demon react_to_presiune_update
when the presiune of turbina changes to P
then set_turbina_ajutaj .
%%%%%%%%%%%%%%%%%%%%%%
% Set Turbina Values %
%%%%%%%%%%%%%%%%%%%%%%
action set_turbina_temperatura(T)
do the temperatura of turbina becomes T .
action set_turbina_presiune(P)
do the presiune of turbina becomes P .
action set_turbina_ajutaj
do check the temperatura of turbina is Temperatura
and check the presiune of turbina is Presiune
and get_ajutaj_value(Temperatura,Presiune,Ajutaj)
and the ajutaj of turbina becomes Ajutaj .
%%%%%%%%%%%%%%%%%%%%%%%%%%
% Display Turbina Valori %
%%%%%%%%%%%%%%%%%%%%%%%%%%
IASE 26/26 Cap. 7. Logica Fuzzy
action display_turbina_values
do write('The current temperatura is: ')
and write(the temperatura of turbina)
and nl
and write('The current presiune is: ')
and write(the presiune of turbina)
and nl
and write('The current ajutaj is: ')
and write(the ajutaj of turbina)
and nl .
action test_turbina_values
do set_turbina_temperatura(300)
and set_turbina_presiune(150)
and display_turbina_values.