You are on page 1of 26

IASE

1/26

Cap. 7. 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

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 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

Relaiile referitoare la funcia de apartenen corespunztoare reuniunii, interseciei, diferenei i complementarei rmn n continuare valabile: uAB(x)=max(uA(x),uB(x)) uA_B(x)=min(uA(x),uB(x)) uA-B(x)=max(uA(x),1-uB(x)) uBC =1-uB. Trebuie precizat c, n acest caz, legea de complementaritate din teoria mulimilor A AC = , A AC = 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 AC={u/0.5,v/0.7,w/1,z/1} i prin urmare A AC = {u/0.5,v/0.7,w/1,z/1} X, iar A AC = {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. 16 8 4 3 1 12 6 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. 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).

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) (1.3-2) T(a b) = max(T(a),T(b)) T(a b) = min(T(a),T(b)) (1.3-3) (1.3-4) T(a b) = max(1-T(a),T(b)) 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

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. 222!=8 posibiliti 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 ab b b a b b a a a

a b b b a b b a a a

(a b)
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 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 ) = n caz contrar 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.
Nume variabil fuzzy Puncte calificativ

Domeniul variabilei Calificative Nume calificativ Metod de De-Fuzzyficare

fuzzy_variable (speed) :[0, 200] ; slow, \, medium, /\, fast, /, peak.

curved(2), linear, curved(0.5),

[0, 30] ; [10, 30, 50] ; [40, 70] ;

Form calificativ

Curbur calificativ

Fig. 7.2
Domeniul variabilei Nume variabil fuzzy Puncte calificativ

Calificative Nume calificativ Metod de De-Fuzzyficare

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.
Form calificativ Curbur 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

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 ? [V1/M1, V2/M2 Vk/Mk] 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.

IASE

11/26

Cap. 7. Logica Fuzzy

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.

IASE

15/26

Cap. 7. Logica Fuzzy

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)).)

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:
Nume variabil condiional Nume regul fuzzy Nume calificativ condiional

Condiie Conectiv Concluzie Concluzie opional

fuzzy_rule (risk1) if duration is long and cost is high then risk is substantial else risk is low.

Operatori

Nume variabil concluzie

Nume calificativ concluzie

Nume variabil condiional

Nume regul fuzzy

Nume calificativ condiional

Condiie Conectiv Concluzie Concluzie opional

fuzzy_rule risk1 if the duration is long and the cost is high then the risk is substantial else the risk is low.

Operatori

Nume variabil concluzie

Nume calificativ concluzie

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

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 rece * foarte_joasa rece * joasa rece * normala

-> -> -> ->

ajutaj; positive_large; positive_medium; positive_small.

IASE

19/26

Cap. 7. Logica Fuzzy

Nume variabil condiional

Nume matrice

Nume variabil concluzie

fuzzy_matrix (risk_rules) :Nume variabile matrice

duration long short

* * *

cost high low

-> ->

risk ; low.

-> very high ;

Nume calificativ condiional

Deformare calificativ

Nume calificativ concluzie

Nume variabil condiional

Nume matrice

Nume variabil concluzie

fuzzy_matrix risk_rules
Nume variabile matrice

duration long short

* * *

cost high low

-> ->

risk ; low.

-> very high ;

Nume calificativ condiional

Deformare calificativ

Nume calificativ concluzie

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

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.
%%%%%%%%%%%%%%%%%%%%%%%% % Linguistic operators % %%%%%%%%%%%%%%%%%%%%%%%% :- op( op( op( op( op( op( op( 1150, 1150, 1150, 1100, 1000, 700, 600, fy, xfy, xfx, xfy, xfy, xfx, fy, ( ( ( ( ( ( ( if then else or and is 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
fuzzy_variable( temperatura ) [ 0 , 500 ] ; rece, \, linear, racoare, /\, linear, normal, /\, linear, cald, /\, linear, fierbinte, /, linear, :[ [ [ [ [ 110 110 165 220 , , , , 165 165 220 275 275 ] ] ] ] ] ; ; ; ; .

, , , ,

220 275 330 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( [ 0 , 300 joasa, scazuta, normala, ridicata, inalta, presiune ) :] ; \ , linear, [ 10 /\, linear, [ 10 /\, linear, [ 70 /\, linear, [ 130 /, linear, [

, 70 , 70 , , 130 , , 190 , 190 ,

130 190 250 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
negativ_mare, negativ_medie, negativ_mica, zero, pozitiv_mica, pozitiv_medie, pozitiv_mare, centroid . \ , /\, /\, /\, /\, /\, /, linear, linear, linear, linear, linear, linear, linear, [ [ [ [ [ [ [

22/26
-45 -45 -30 -15 0 15 , -30 ] ; , -30 , -15 ] ; , -15 , 0 ] ; , 0 , 15 ] ; , 15 , 30 ] ; , 30 , 45 ] ; 30 , 45 ] ;

Cap. 7. Logica Fuzzy

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:
fuzzy_rule ( ajutaj1 ) if temperatura is rece and presiune is joasa then ajutaj is pozitiv_mare.

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:
fuzzy_matrix( t ) :temperatura rece rece rece rece rece racoare racoare racoare racoare racoare * * * * * * * * * * * presiune joasa scazuta normala ridicata inalta joasa scazuta normala ridicata inalta -> -> -> -> -> -> -> -> -> -> -> ajutaj pozitiv_mare pozitiv_medie pozitiv_mica negativ_mica negativ_medie pozitiv_mare pozitiv_medie zero negativ_medie negativ_medie ; ; ; ; ; ; ; ; ; ; ;

IASE
normal normal normal normal normal cald cald cald cald cald fierbinte fierbinte fierbinte fierbinte fierbinte * * * * * * * * * * * * * * * joasa scazuta normala ridicata inalta joasa scazuta normala ridicata inalta joasa scazuta normala ridicata inalta -> -> -> -> -> -> -> -> -> -> -> -> -> -> ->

23/26
pozitiv_medie pozitiv_mica zero negativ_mica negativ_medie pozitiv_medie pozitiv_mica negativ_mica negativ_medie negativ_mare pozitiv_mica pozitiv_mica negativ_medie negativ_mare negativ_mare ; ; ; ; ; ; ; ; ; ; ; ; ; ; .

Cap. 7. Logica Fuzzy

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)
gaseste_ajutaj ( Temperatura, Presiune, Ajutaj ) :fuzzy_reset_membership( ajutaj ), fuzzy_variable_value( temperatura, Temperatura ), fuzzy_variable_value( presiune, Presiune ), fuzzy_propagate( minimum, maximum, complement, [t] ), fuzzy_variable_value( ajutaj, Ajutaj ).

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
Exemplu de program fuzzy logic scris n limbajul KSL

Cap. 7. Logica Fuzzy

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 variables % %%%%%%%%%%%%%%%%%%% fuzzy_variable temperatura ranges from 0 to 500 ; qualifier rece is \ qualifier racoare is /\ qualifier normal is /\ qualifier cald is /\ qualifier fierbinte is / fuzzy_variable presiune ranges from 0 to 300 ; qualifier joasa is qualifier scazuta is qualifier normala is qualifier ridicata is qualifier inalta is

shaped shaped shaped shaped shaped

and and and and and

linear linear linear linear linear

at at at at at

110 110 165 220 275

, , , , ,

165 165 220 275 330

; , 220 ; , 275 ; , 330 ; .

\ /\ /\ /\ /

shaped shaped shaped shaped shaped

and and and and and

linear linear linear linear linear

at at at at at

10 , 70 10 , 70 , 130 70 , 130 , 190 130, 190 , 250 190, 250 .

; ; ; ;

fuzzy_variable ajutaj ranges from -60 to 60 ; qualifier negativ_mare is qualifier negativ_medie is qualifier negativ_mica is qualifier zero is qualifier pozitiv_mica is qualifier pozitiv_medie is qualifier pozitiv_mare is defuzzifier = centroid .

\ /\ /\ /\ /\ /\ /

shaped shaped shaped shaped shaped shaped shaped

and and and and and and and

linear linear linear linear linear linear linear

at at at at at at at

-45 -45 -30 -15 0 15 30

, -30 ; , -30 , -15 ; , -15 , 0 ; , 0 , 15 ; , 15 , 30 ; , 30 , 45 ; , 45 ;

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % FAM - Fuzzy Associative Memory % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% fuzzy_matrix ajutaj_value temperatura rece rece rece rece rece racoare racoare racoare racoare racoare normal normal normal normal normal * * * * * * * * * * * presiune joasa scazuta normala ridicata inalta * * * * * joasa scazuta normala ridicata inalta -> ajutaj ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ;

-> -> -> -> -> -> -> -> -> -> -> -> -> -> ->

pozitiv_mare pozitiv_medie pozitiv_mica negativ_mica negativ_medie pozitiv_mare pozitiv_medie zero negativ_medie negativ_medie pozitiv_medie pozitiv_mica zero negativ_mica negativ_medie

joasa scazuta normala ridicata inalta

IASE
cald cald cald cald cald fierbinte fierbinte fierbinte fierbinte fierbinte * * * * * joasa scazuta normala ridicata inalta * * * * *

25/26
-> -> -> -> -> pozitiv_medie pozitiv_mica negativ_mica negativ_medie negativ_mare -> -> -> -> -> ; ; ; ; ;

Cap. 7. Logica Fuzzy

joasa scazuta normala ridicata inalta

pozitiv_mica pozitiv_mica negativ_medie negativ_mare negativ_mare

; ; ; ; .

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % 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.

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. Valoriletest 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