fuzzy

139
1.- RETELE NEURONALE ARTIFICIALE (RNA) RNA sunt sisteme de procesare a informatiei, compuse din unitati simple de procesare, interconectate intre ele si care actioneaza in paralel. Aceste elemente sunt inspirate din sistemele nervoase biologice. La fel ca in natura, functia retelei e determinata de legaturile dintre elemente. Ponderile legaturilor dintre unitati sunt cele care memoreaza informatia invatata de retea . Reteaua se instruieste prin ajustarea acestor ponderi , conform unui algoritm . Caracteristicile RNA : - reprezentarea distribuita a informatiei : informatia din retea este stocata in mod distribuit ( in structura de ponderi ), ceea ce face ca efectul unei anumite intrari asupra iesirii sa depinda de toate ponderile din retea . - capacitatea de generalizare in cazul unor situatii necontinute in datele de instruire . Aceasta caracteristica depinde de numarul de ponderi, adica de dimensiunea retelei . Se constata ca cresterea dimensiunii retelei duce la o buna memorare a datelor de instruire , dar scad performantele asupra datelor de testare , ceea ce inseamna ca RNA a pierdut capacitatea de generalizare . Stabilirea numarului optim de neuroni din stratul ascuns , care este o etapa cheie in proiectarea unei RNA , se poate face alegand valoarea de la care incepe sa descreasca performanta RNA pe setul de testare. - toleranta la zgomot : RNA pot fi instruite , chiar daca datele sunt afectate de zgomot , diminuandu-se - evident - performanta ei . - rezistenta la distrugerea partiala : datorita reprezentarii distribuite a informatiei , RNA poate opera si in cazul distrugerii unei mici parti a ei . - rapiditate in calcul : RNA consuma mult timp pentru instruire , dar odata antrenate vor calcula rapid iesirea retelei pentru o anumita intrare . Putem antrena o RNA sa realizeze o anumita functie, prin ajustarea valorilor conexiunilor (ponderilor ) dintre elemente. De regula RNA sunt ajustate (antrenate ), astfel încât un anumit semnal la intrare sa implice o anume iesire (tinta). O asemenea situatie este prezentata in fig. 1.1. Reteaua este ajustata pe baza compararii raspunsului cu tinta, pâna ce iesirea retelei se potriveste tintei. Pentru a antrena o retea, in aceasta instruire supervizata, se utilizeaza mai multe perechi intrare/tinta. Fig. 1.1 1.1- NEURONUL CU VECTOR DE INTRARE Un neuron cu un vector de intrare avand R elemente este prezentat in fig. 1.2. Intrarile individuale p 1 , p 2 , . . . , p R sunt înmultite cu ponderile w 1,1 , w 1,2 , . . . , w 1,R si valorile ponderate se insumeaza. Suma se poate nota Wp, adica produsul scalar al matricei W (cu o linie) si vectorul p. Neuronul are deplasarea b, care se aduna cu intrarile ponderate, rezultand argumentul n al functiei de transfer f : w 1,1 p 1 + w 2,1 p 2 + . . . + w 1,R p R +b = n . (1.1) Aceasta expresie poate fi scrisa în codul MATLAB: n = W*p + b ; a = f ( n ) . (1.2) O notatie abreviata pentru neuronul din fig. 1.2 se prezinta in fig. 1.3, in care:

Upload: corado33

Post on 22-Oct-2015

104 views

Category:

Documents


2 download

DESCRIPTION

courses

TRANSCRIPT

Page 1: Fuzzy

1.- RETELE NEURONALE ARTIFICIALE (RNA) RNA sunt sisteme de procesare a informatiei, compuse din unitati simple de procesare, interconectate intre ele si care actioneaza in paralel. Aceste elemente sunt inspirate din sistemele nervoase biologice. La fel ca in natura, functia retelei e determinata de legaturile dintre elemente. Ponderile legaturilor dintre unitati sunt cele care memoreaza informatia invatata de retea . Reteaua se instruieste prin ajustarea acestor ponderi , conform unui algoritm . Caracteristicile RNA : - reprezentarea distribuita a informatiei : informatia din retea este stocata in mod distribuit ( in structura de ponderi ), ceea ce face ca efectul unei anumite intrari asupra iesirii sa depinda de toate ponderile din retea . - capacitatea de generalizare in cazul unor situatii necontinute in datele de instruire . Aceasta caracteristica depinde de numarul de ponderi, adica de dimensiunea retelei . Se constata ca cresterea dimensiunii retelei duce la o buna memorare a datelor de instruire , dar scad performantele asupra datelor de testare , ceea ce inseamna ca RNA a pierdut capacitatea de generalizare . Stabilirea numarului optim de neuroni din stratul ascuns , care este o etapa cheie in proiectarea unei RNA , se poate face alegand valoarea de la care incepe sa descreasca performanta RNA pe setul de testare. - toleranta la zgomot : RNA pot fi instruite , chiar daca datele sunt afectate de zgomot , diminuandu-se - evident - performanta ei . - rezistenta la distrugerea partiala : datorita reprezentarii distribuite a informatiei , RNA poate opera si in cazul distrugerii unei mici parti a ei . - rapiditate in calcul : RNA consuma mult timp pentru instruire , dar odata antrenate vor calcula rapid iesirea retelei pentru o anumita intrare . Putem antrena o RNA sa realizeze o anumita functie, prin ajustarea valorilor conexiunilor (ponderilor) dintre elemente. De regula RNA sunt ajustate (antrenate), astfel încât un anumit semnal la intrare sa implice o anume iesire (tinta). O asemenea situatie este prezentata in fig. 1.1. Reteaua este ajustata pe baza compararii raspunsului cu tinta, pâna ce iesirea retelei se potriveste tintei. Pentru a antrena o retea, in aceasta instruire supervizata, se utilizeaza mai multe perechi intrare/tinta.

Fig. 1.1

1.1- NEURONUL CU VECTOR DE INTRARE Un neuron cu un vector de intrare avand R elemente este prezentat in fig. 1.2. Intrarile individuale p1, p2, . . . , pR sunt înmultite cu ponderile w1,1 , w1,2 , . . . , w1,R si valorile ponderate se insumeaza. Suma se poate nota Wp, adica produsul scalar al matricei W (cu o linie) si vectorul p. Neuronul are deplasarea b, care se aduna cu intrarile ponderate, rezultand argumentul n al functiei de transfer f : w1,1 p1 + w2,1 p2 + . . . + w1,R pR +b = n . (1.1) Aceasta expresie poate fi scrisa în codul MATLAB: n = W*p + b ; a = f ( n ) . (1.2) O notatie abreviata pentru neuronul din fig. 1.2 se prezinta in fig. 1.3, in care:

Page 2: Fuzzy

Fig. 1.2

- R este numarul elementelor din vectorul de intrare; - vectorul de intrare p este reprezentat de bara groasa verticala din stânga, dimensiunile lui p sunt indicate sub simbolul p (R×1); - o constanta 1 intra în neuron si multiplica deplasarea b;

Fig. 1.3

- intrarea n în functia de transfer f este data de (1.2); - a este iesirea neuronului. Fig. 1.2 defineste un strat (nivel) al unei retele. Un strat cuprinde combinarea ponderilor, operatiile de inmultire si insumare (realizate aici ca produsul scalar Wp), deplasarea b si functia de transfer f. Blocul intrarilor (vectorul p) nu este inclus în asa numitul strat. 1.2- FUNCTII DE TRANSFER Neuronul biologic se activeaza (da un semnal la iesire) numai daca semnalul de intrare depaseste un anumit prag. In RNA acest efect este simulat aplicand sumei ponderate a intrarilor (n) o functie de transfer (activare) f, pt. a obtine semnalul a la iesire. Patru dintre cele mai utilizate functii de transfer se prezinta mai jos. a)- Functia treapta (fig. 1.4)

Fig. 1.4

Pentru a realiza functia treapta, Matlab are functia hardlim. b)- Functia de transfer liniara (purelin) este in fig. 1.5.

Page 3: Fuzzy

Fig. 1.5

c)- Functia log-sigmoid: F xe

kk x( ) ,=+

>−1

10 ,

se prezinta in fig. 1.6.a. Intrarea poate avea orice valoare între plus si minus infinit, iar raspunsul este în domeniul de la 0 la 1.

Fig. 1.6.a

O alta varianta este functia tan-sigmoid (fig. 1.6.b): F x ee

x

x( ) = −+

11

: R → [ -1 , 1 ] .

Fig. 1.6.b

In patratul din dreapta fiecarui grafic se prezinta simbolul asociat functiei de transfer. Aceste simboluri vor înlocui simbolul general f în schemele RNA pentru a arata functia particulara de transfer care este folosita. Comportarea unui neuron la diferite functii de transfer se poate vedea in programul demonstrativ: >>nnd2n2 En. 1.3- ARHITECTURA RNA Doi sau mai multi neuroni se pot combina într-un strat, iar o RNA poate contine unul sau mai multe straturi de acest fel. 1.3.1- UN STRAT DE NEURONI In fig. 1.7 se arata o RNA avand un singur strat, R intrari si S neuroni. În aceasta retea, fiecare element din vectorul intrarilor p, este conectat la intrarea fiecarui neuron, prin matricea ponderilor W:

Page 4: Fuzzy

Se observa ca primul indice al unui element din matricea W indica carui neuron ii este atribuita ponderea, iar al doilea indice – elementul din vectorul intrarilor caruia i se aplica acea pondere.

Fig. 1.7

Astfel, indicii lui w1, 2 arata sensul semnalului: de la al doilea element al vectorului de intrare, catre primul neuron. Neuronul i are un sumator Σ care aduna intrarile sale ponderate si deplasarea, rezultand iesirea scalara n(i). Toate marimile n(i) formeaza un vector n, cu S elemente. Iesirile din stratul de neuroni formeaza un vector a, a carui expresie se da în partea de jos a figurii. In fig. 1.8 se prezinta (in notatie abreviata) reteaua din fig. 1.7.

Fig. 1.8

1.3.2- INTRARI SI STRATURI De regula, o RNA are mai multe straturi. Ca urmare, trebuie sa facem diferenta între matricea ponderilor legaturilor la intrari si matricele cu ponderile conexiunilor între straturi. Vom numi matricea ponderilor legaturilor la intrari matricea ponderilor intrarii (notata IW), iar matricele cu ponderile conexiunilor la iesirile unui strat matricea ponderilor stratului (notata LW). Mai departe, vom folosi indici la exponent (superscript) pentru a identifica sursa (indicele

Page 5: Fuzzy

secund) si destinatia (indicele prim) pentru ponderile si alte elemente ale retelei. Pentru a ilustra acest lucru, am refacut fig. 1.8 in forma din fig. 1.9.

Fig. 1.9

Se vede ca am notat cu IW1,1 “matricea ponderilor intrarilor”, având ca sursa 1 (indicele secund) si destinatia 1 (indice prim). De asemenea, elemente ale stratului 1 au superscriptul 1, pentru a arata ca sunt asociate primului strat. Notatia in codul MATLAB pentru o RNA numita net este:

Ca urmare, intrarea in functia de transfer se scrie:

În urmatorul capitol vom folosi si “matricea ponderilor stratului” LW. 1.3.3- STRATURI MULTIPLE DE NEURONI O RNA poate avea mai multe straturi, fiecare strat avand o matrice a ponderilor W, un vector al deplasarilor b si un vector de iesire a. Pentru a distinge matricile ponderilor, vectorii de iesire, etc., pentru fiecare strat din RNA, notam numarul stratului ca superscript la variabila respectiva, cum se vede la reteaua cu trei straturi din figura 1.10 si în ecuatiile din partea de jos. RNA-ua din fig. 1.10 are R1 intrari, S1 neuroni în primul strat, S2 neuroni în al doilea strat, etc. O intrare constanta 1 este atasata la deplasarea fiecarui neuron. Se observa ca iesirile din fiecare strat intermediar reprezinta intrarile pt. stratul urmator. Astfel, stratul 2 poate fi considerat ca o retea cu un singur strat, cu S1 intrari, S2 neuroni si o matrice W2 a ponderilor (cu dimensiunile S2×S1). Intrarea in stratul 2 este a1, iar iesirea este a2. Aceasta abordare se poate aplica oricarui strat din retea. Straturile au roluri diferite: - stratul care produce iesirea retelei este numit strat de iesire. - celelalte straturi se numesc straturi ascunse. Reteaua din fig. 1.10 are un strat de iesire (stratul 3) si doua straturi ascunse (straturile 1 si 2). Reteaua din figura 1.10 se prezinta - in notatie abreviata – in fig. 1.11 . Iesirea din al treilea strat (a3) este iesirea retelei, notata cu y. Vom folosi aceasta notatie pentru a preciza raspunsul retelelor cu mai multe straturi. Retelele multi-strat sunt foarte eficiente. Retelele cu “transmitere inainte” au de obicei unul sau mai multe straturi ascunse cu neuroni sigmoidali, urmate de un strat cu neuroni liniari. Mai multe straturi de neuroni, cu functii de transfer neliniare, permit retelei sa invete relatii liniare si neliniare intre vectorii de intrare si de iesire. Stratul liniar de iesire permite retelei sa produca valori in afara domeniului de la -1 la +1. Pe de alta parte, daca se doreste restrictionarea iesirilor unei retele (de ex., intre 0 si 1), atunci stratul de iesire trebuie sa utilizeze o functie de transfer sigmoidala (cum ar fi logsig). De exemplu, o retea cu doua straturi, unde primul strat este sigmoid si al doilea strat este liniar, poate fi antrenat sa aproximeze orice functie (cu un numar finit de discontinuitati).

Page 6: Fuzzy

Fig. 1.10

Page 7: Fuzzy

Fig. 1.11

Page 8: Fuzzy

1.4- CREAREA UNEI RETELE (newff) Prima etapa in antrenarea unei retele cu transmitere inainte este crearea obiectului “retea”. Functia newff creeaza o astfel de retea. function net = newff(pr,s,tf,btf,blf,pf) NEWFF creaza o retea cu transmitere inainte si retro-propagare. Syntaxa: net = newff(PR,[S1 S2...SNl],{TF1 TF2...TFNl},BTF,BLF,PF) Descriere: NEWFF(PR,[S1 S2...SNl],{TF1 TF2...TFNl},BTF,BLF,PF) in care: PR - matrice Rx2 cu valorile min. si max. ale celor R elemente de la intrare; Si – dimensiunea stratului i, pentru cele Nl straturi; TFi – functia de transfer a stratului i, implicita = 'tansig'; BTF – functia de antrenare a retelei, implicita = 'trainlm'; BLF - functia de instruire backprop a ponderilor/deplasarilor retelei, implicita = 'learngdm'; PF – functia de performanta, implicita = 'mse' si returneaza o retea cu transmitere inainte si retro-propagare, avand N straturi. Functiile de transfer TFi pot fi orice functie de transfer diferentiabila, precum TANSIG, LOGSIG, sau PURELIN. Functia de antrenare BTF poate fi oricare dintre functiile de antrenare backprop, precum TRAINLM, TRAINBFG, TRAINRP, TRAINGD, etc. Algoritmul: Retele cu transmitere inainte consista din Nl straturi in care se utilizeaza DOTPROD (produsul scalar) al functiilor pondere, functia de intrare neta NETSUM si functiile de transfer specificate. Primul strat are ponderile legate de intrare. La fiecare strat urmator, ponderile provin din stratul anterior. Toate straturile au deplasari. Ultimul strat reprezinta iesirea din retea. Ponderile si deplasarile se initializeaza cu INITNW. Adaptarea se face cu ADAPTWB, care actualizeaza ponderile cu functia de instruire specificata. Antrenarea se face cu functia de antrenare specificata. Performanta se masoara cu functia de performanta specificata. Deci aceasta functie necesita patru intrari si returneaza obiectul “retea”. Prima intrare PR este o matrice (R x 2) cu valorile minime si maxime pentru fiecare dintre cele R elemente ale vectorului de intrare. A doua intrare este un sir (matrice) care contine dimensiunile fiecarui strat, adica numarul de neuroni. A treia intrare este formata dintr-o serie de celule care contin numele functiilor de transfer ce vor fi folosite in fiecare strat. Ultima intrare contine numele functiei de antrenare folosita. De exemplu, urmatoarea comanda creeaza o retea cu doua straturi, avand un vector de intrare cu doua elemente. Valorile pentru primul element al vectorului de intrare variaza intre -1 si 2, valorile pentru al doilea element al vectorului de intrare variaza intre 0 si 5. Sunt trei neuroni in primul strat si un neuron in al doilea strat (de iesire). Functia de transfer din primul strat este tan-sigmoidala, iar functia de transfer din stratul de iesire este liniara. Functia de antrenarea este traingd (care este descrisa intr-un capitol ulterior).

Aceasta comanda creeaza obiectul “retea” si - in plus - initializeaza ponderile si deplasarile retelei; acum reteaua este pregatita pentru a fi antrenata. 1.4.1- INITIALIZAREA PONDERILOR (init) Inaintea antrenarii unei RNA, trebuiesc initializate ponderile si deplasarile. Comanda newff initializeaza automat ponderile, dar s-ar putea sa vrem sa le reinitializam. Aceasta se poate face cu comanda init. Aceasta functie considera obiectul “retea” ca intrare si returneaza acelasi obiect, dar cu toate ponderile si deplasarile initializate. Iata cum este initializata (sau reinitializata) o retea: net = init(net); 1.5- SIMULAREA (sim) Functia sim simuleaza o retea. Sim ia vectorul de intrare in retea p si obiectul “retea” net si returneaza iesirea retelei a.

Page 9: Fuzzy

SIM simuleaza o retea neuronala. Syntaxa: [Y,Pf,Af] = sim(net,P,Pi,Ai) Descriere: [Y,Pf,Af] = SIM(net,P,Pi,Ai) in care: NET – Reteaua; P – Intrarile in retea; Pi – Decalajele initiale ale intrarii, implicit = zero; Ai - Decalajele initiale ale stratului, implicit = zero; si returneaza: Y – Iesirile din retea; Pf - Decalajele finale ale intrarii; Af - Decalajele finale ale stratului. Observatie: Argumentele Pi, Ai, Pf si Af sunt optionale si se vor folosi numai pentru retele care au intrarea sau vre-un strat decalat. Iata cum putem folosi sim pentru a simula reteaua pe care am creat-o mai sus pentru un singur vector de intrare:

Iesirea ar putea fi diferita, in functie de starea generatorului de numere aleatoare cand reteaua a fost initializata. Mai jos, sim este apelata pentru a calcula iesirile pentru un set concurential cu trei vectori de intrare. Aceasta este modul grupat de simulare, in care toti vectorii de intrare sunt plasati intr-o matrice. Acest lucru este mult mai eficient, decat prezentarea vectorilor pe rand.

1.6- ANTRENAREA Dupa ce ponderile retelei si deplasarile au fost initializate, reteaua este pregatita pentru a fi antrenata. Procesul de antrenare necesita un set de valori privind comportarea retelei: intrarea in retea p si tinta (iesirea) t. In timpul antrenarii, ponderile retelei si deplasarile sunt ajustate iterativ pentru a minimiza functia de performanta a retelei net.performFcn. Functia implicita de performanta pentru retelele cu transmitere inainte este eroarea medie patratica mse – dintre iesirea retelei a si tinta t. Consideram eroarea patratica dintre iesirea retelei si tinta impusa (fig. 1.10):

, ∑=

−=3s

1j

2])j(t)j(3a[E

unde s3 este numarul neuronilor din stratul de iesire. E = f (a3

1, a32, . . . , a3

s3) se numeste suprafata de eroare, prin analogie cu E = f(x, y); dar a = f (w, b), deci E= f (w, b) The network weights resulted from the learning are those for which the error is minimum . The weights and shifts adjusting is made by using the gradient with descent step method :

ki

1ki

ki

ji

1kji

kji

bE)k(bb

;wE)k(ww

∂∂α

∂∂α

−=

−=

(1.3)

where α ( k ) represent the learning rate . The learning algorithm for one only step has got 2 stages : 1o )- Forward - It is determined the error E, in which a 1 = f 1 (IW1,1 . p + b1) a 2 = f 2 (LW2,1 . a1 + b2) a 3 = f 3 (LW3,2 . a2 + b3) , p and t being the input , respectively output vectors from the learning set . 2 o )- Backward - With the relations like (1.3) there are adjusted the weights and the shifts în order (fig. 3.11): LW3,2 ; b3 , LW2,1 ; b2 , IW1,1 ; b 1.

Page 10: Fuzzy

Urmeaza descrierea unor algoritmi de antrenare pentru retelele cu transmitere inainte. Toti acesti algoritmi utilizeaza gradientul functiei de performanta E pentru a determina modul de ajustare a ponderilor cu scopul de a minimiza performanta. Gradientul se determina folosind o tehnica numita propagare inversa, care inseamna efectuarea calculelor in sens invers prin retea. Algoritmul de antrenare prin propagare inversa, in care ponderile variaza in directia gradientului negativ, este descris mai jos. 1.6.1- ALGORITMUL PROPAGARII INVERSE Cea mai simpla implementare a instruirii prin propagare inversa, actualizeaza ponderile retelei si deplasarile in directia in care functia de performanta scade cel mai rapid, adica in directia gradientului negativ. O iteratie a acestui algoritm poate fi scrisa astfel:

unde x k este un vector cu ponderile si deplasarile curente, g k este gradientul curent, iar α k este rata de instruire. Reamintim metoda gradientului negativ: Pentru functia F(x) = F(x1,…, xn), gradientul este

G = grad F = ∇ F = ],...,[n1 x

FxF

∂∂

∂∂ , acest vector indicand directia celei mai mari cresteri.

Dupa fecare punct nou determinat se ia directia de cautare in sens contrar gradientului, adica in sensul dat de -∇ F, deci pe directia celei mai rapide descresteri. Avansul pe aceasta directie se va face atata timp cat valoarea functiei scade, dupa care se va avansa pe noua orientare a gradientului, s.a.m.d., pana la atingerea minimului. O imagine a modului in care actioneaza aceasta metoda – pentru o functie de doua variabile se arata in figura 1.12.

Fig. 1.12

Exista doua modalitati in care poate fi implementat algoritmul gradientului descendent: modul incremental si modul grupat. In modul incremental, gradientul este calculat si ponderile sunt actualizate dupa ce fiecare intrare este aplicata retelei. In modul grupat, toate intrarile sunt aplicate retelei inainte ca ponderile sa fie actualizate. A)- ANTRENAREA GRUPATA (train). In modul grupat, ponderile si deplasarile sunt actualizate numai dupa ce intregul set de antrenare a fost aplicat retelei. Gradientii calculati la fiecare pas de antrenare sunt cumulati pentru a determina variatiile ponderilor si deplasarilor. A1)- ANTRENAREA GRUPATA CU GRADIENT DESCENDENT (traingd) Functia pentru aceasta antrenare este traingd. Daca se doreste antrenarea retelei folosind aceasta

Page 11: Fuzzy

modalitate, mai intai trebuie setata functia trainFcn a retelei la traingd si apoi apelata functia train. Exista numai o singura functie de antrenare asociata unei retele date. Exista 7 parametri de antrenare asociati cu traingd: epochs, show, goal, time, min_grad, max_fail, si lr. Rata de instruire lr (notata cu α in relatia (1.3)) se inmulteste cu negativul gradientului pentru a determina modificarile ponderilor si deplasarilor. Cresterea ratei de instruire duce la marirea pasului. Daca rata de instruire este prea mare algoritmul devine instabil. Daca rata de instruire este prea mica, algoritmul necesita mult timp pentru a deveni convergent. Stadiul antrenarii apare pe ecran pt. fiecare iteratie show a algoritmului. Daca show este setat pe NaN, atunci stadiul antrenarii nu este vizibil. Antrenarea se opreste daca numarul iteratiilor depaseste epochs, sau daca functia de performanta (mse) scade sub goal, sau daca marimea gradientului este mai mica decat mingrad sau daca timpul de antrenare este mai mare decat time secunde. Secventa urmatoare creaza un set de antrenare cu intrarile p si tintele t. In cazul antrenarii grupate, toti vectorii de intrare sunt pusi intr-o singura matrice.

Acum creem reteaua:

Folosim functia minmax pt. a determina domeniul de variatie al intrarilor: pr = minmax (p), in care daca p = (R x Q) matrix, atunci pr = (R x 2) matrix of min. and max. values for each row of p. In aceasta etapa avem posibilitatea sa modificam unii dintre parametrii impliciti de antrenare:

Daca vrem sa folosim parametrii impliciti de antrenare, comenzile de mai sus nu sunt necesare. Acum reteaua pate fi antrenata.

Inregistrarea antrenarii tr contine informatii despre etapa in care se afla antrenarea. Acum reteaua antrenata poate fi simulata, pentru a se obtine raspunsul ei la intrarile din setul de antrenare.

Acest algoritm este ilustrat in programul demo: >>nnd12sd1 En . A2)- ANTRENAREA GRUPATA CU GRADIENT DESCENDENT SI MOMENTUM (traingdm) In afara de traingd, mai exista un algoritm prin grupare pentru retelele cu transmitere inainte,

Page 12: Fuzzy

care duce deseori la o convergenta mai rapida – traingdm (descrestere abrupta cu momentum). “Momentum” permite retelei sa raspunda nu numai la gradientul local, dar si evolutiilor recente in suprafata de eroare. Actionand ca un filtru trece-jos, momentum permite retelei sa ignore abaterile minore din suprafata de eroare. Fara momentum, o retea se poate bloca intr-un minim local. Avand momentum, reteaua poate ocoli asemenea minime. Momentum inseamna sa luam variatiile ponderilor egale cu suma unei parti a ultimei variatii a ponderii, cu noua variatie furnizata de regula propagarii inverse. Marimea ultimei modificari a ponderii este mediata de o constanta momentum mc, care poate fi orice numar intre 0 si 1. Atunci cand constanta momentum este 0, variatia ponderii provine numai din gradient. Daca constanta este egala cu 1, noua modificare a ponderii se ia egala cu ultima variatie, gradientul fiind ignorat. Gradientul este calculat prin adunarea gradientilor inregistrati la fiecare pereche de antrenare, iar ponderile si deplasarile sunt doar reactualizate dupa ce toate perechile de antrenare au fost prezentate. Daca noua valoare a functiei de performanta, la o iteratie data, depaseste functia de performanta la iteratia precedenta, cu mai mult decat un raport predefinit max_perf_inc (de regula = 1.04, adica MSEnou / MSEvechi >1.04), noile ponderi si deplasari sunt ignorate, iar coeficientul momentum mc este setat la zero. Antrenarea grupata cu gradient descendent cu momentum este apelata folosind functia de antrenare traingdm. Functia traingdm este utilizata folosind aceleasi etape ca si la functia traingd, cu exceptia faptului ca parametrii de instruire mc, lr si max_perf_inc pot fi alesi. In urmatoarea secventa, vom recrea reteaua precedenta si o vom reantrena folosind gradientul descendent cu momentum. Parametrii de antrenare pentru traingdm sunt aceeasi ca pentru traingd, dar se adauga factorul momentum mc si cresterea maxima a performantei max_perf_inc.

Facem observatia ca daca se reinitializeaza ponderile si deplasarile inainte de antrenare (apeland newff, ca mai sus) vom obtine o eroare medie patratica diferita, in comparatie cu cea obtinuta folosind traingd. Daca am reinitializa si reantrena din nou folosind traingdm, vom obtine iar o alta eroare medie patratica. Alegerea aleatorie a ponderilor si a deplasarilor initiale va afecta performanta algoritmului. Daca dorim sa comparam performanta unor algoritmi diferiti, fiecare trebuie testat folosind mai multe seturi diferite de ponderi si deplasari initiale. Este indicat sa se utilizeze net = init (net) pt. a reinitializa ponderile, decat sa se recreeze intreaga retea cu newff. Acest algoritm este ilustrat in programul demo: >>nnd12mo En .

Page 13: Fuzzy

1.7- ANTRENAREA MAI RAPIDA Algoritmii de mai sus sunt deseori prea lenti pt. problemele practice. In acest capitol vom discuta cativa algoritmi de inalta performanta care pot converge de la zece pana la o suta de ori mai rapid decat algoritmii prezentati anterior. Toti algoritmii din acest capitol opereaza in modul grupat si sunt apelati cu comanda train. Acesti algoritmi rapizi se impart in doua categorii. Prima categorie foloseste tehnici euristice, care au fost elaborate pe baza analizei performantei algoritmului standard de gradient descendent. O modificare euristica este tehnica momentum, din capitolul anterior. In aceasta categorie se prezinta doua tehnici mai euristice: propagarea inversa cu rata de instruire variabila (traingda) si propagarea inversa flexibila (trainrp). A doua categorie de algoritmi rapizi foloseste tehnici standard de optimizare numerica: gradientul conjugat (traincgf, traincgp, traincgb, trainscg), quasi-Newton (trainbfg, trainoss), si Levenberg-Marquardt (trainlm). 1.7.1- RATA VARIABILA DE INSTRUIRE (traingda, traingdx) In antrenarea standard cu descrestere rapida, rata de instruire (α, lr) este constanta. Performanta algoritmului este foarte senzitiva la aceasta rata. Daca rata este prea mare, algoritmul poate oscila si devine instabil. Daca rata este prea mica, algoritmului ii v-a lua prea mult timp pentru a converge. Stabilirea valorii optime a ratei de instruire, inainte de antrenare, nu este un lucru practic, pt. ca - de fapt - rata de instruire optima variaza in timpul antrenarii. Performanta algoritmului cu descrestere rapida poate fi imbunatatita daca permitem ca rata de instruire sa se modifice in timpul antrenarii. O rata de instruire adaptiva va incerca sa mentina marimea pasului de instruire cat de mare posibila, in timp ce mentine si instruirea stabila. Adaptarea ratei de instruire necesita unele modificari in procedura de antrenare folosita de traingd. Mai intai se calculeaza iesirea initiala a retelei si eroarea. La fiecare epoca se calculeaza noile ponderi si deplasari folosind rata de instruire curenta. Apoi sunt calculate noile iesiri si erori. Ca si la “momentum”, daca noua eroare depaseste eroarea precedenta cu mai mult de un raport prestabilit max_perf_inc (de obicei = 1.04), se v-a renunta la noile ponderi si deplasari si rata de instruire este diminuata (prin inmultirea cu lr_dec = 0.7). In caz contrar, se pastreaza noile ponderi, etc. Daca noua eroare este mai mica decat eroarea precedenta, rata de instruire se mareste (inmultind-o cu lr_inc = 1.05). Acest procedeu mareste rata de instruire, dar numai in masura in care reteau poate fi instruita fara cresterea erorii. Astfel, se obtine o rata de instruire cuasi-optima pentru conditiile locale. Atunci cand o rata de instruire mai mare se poate folosi intr-o instruire stabila, rata de instruire este marita. Cand rata de instruire e prea mare pentru a garanta micsorarea erorii, ea va fi redusa, pana se reia instruirea stabila. Antrenarea prin propagare inversa cu rata de instruire adaptiva se face cu functia traingda, care se apeleaza ca si traingd, exceptie facand parametrii aditionali max_perf_inc, lr_dec si lr_inc. Iata cum se antreneaza reteaua cu doua nivele, pe care am descris-o mai sus.

Page 14: Fuzzy

Functia traingdx combina rata de instruire adaptiva si antrenarea cu momentum. Se apeleaza ca si traingda, cu exceptia faptului ca are coeficientul momentum mc ca un parametru in plus. Acest algoritm este ilustrat in programul demo: >>nnd12vl En . 1.7.2- PROPAGAREA INVERSA FLEXIBILA Retelele multi-strat folosesc de obicei - in straturile ascunse - functii de transfer sigmoidale. Aceste functii sunt numite si functii de “comprimare”, pentru ca ele comprima un domeniu infinit de la intrare intr-un domeniu finit la iesire . Functiile sigmoidale sunt caracterizate de faptul ca panta lor trebuie sa fie zero, cand intrarea este mare. Aceasta duce la aparitia unei probleme, cand se foloseste “coborarea cea mai rapida” la antrenarea unei retele multi-strat cu functii sigmoidale, anume ca gradientul fiind foarte mic, provoaca mici modificari ale valorilor ponderilor si deplasarilor, chiar cand acestea sunt departe de valorile lor optimale. Scopul algoritmului de antrenare prin propagare inversa flexibila (Rprop) este acela de a elimina aceste efectele nedorite cauzate de derivatele partiale. Se foloseste numai semnul derivatei pentru a afla directia actualizarii ponderii; marimea derivatei nu are nici un efect asupra actualizarii ponderii. Marimea variatiei ponderii se determina cu o valoare de actualizare separata. Valoarea actualizarii pentru fiecare pondere si deplasare se amplifica cu un factor delt-inc daca derivata functiei de performanta in raport cu acea pondere are acelasi semn in doua iteratii successive. Valoarea actualizata se micsoreaza cu factorul delt-dec cand derivata in raport cu acea pondere isi schimba semnul fata de iteratia anterioara. Daca derivata are valoarea zero, atunci valoarea actualizata ramane aceeasi. Cand ponderile oscileaza, variatia ponderii va fi redusa. Daca ponderea continua sa se modifice in aceeasi directie pe parcursul mai multor iteratii, atunci marimea variatiei ponderii se va amplifica. In urmatoarea secventa vom recrea reteaua anterioara si o vom antrena folosind algoritmul “Rprop”. Parametrii de antrenare pentru trainrp sunt epochs, show, goal, time, min-grad, max-fail, delt-inc, delt-dec, delta0, deltamax. Am discutat in sectiunea anterioara primii opt parametrii; ultimii doi reprezinta marimea pasului initial si respectiv, marimea pasului maxim. Performanta lui “Rprop” nu este influentata mult de setarile parametrilor de antrenare. In exemplul de mai jos, am lasat majoritatea parametrilor la valorile lor implicite. Am redus parametrul show fata de valoarea anterioara, pentru ca in general “Rprop” converge mult mai rapid decat algoritmii anteriori. Rprop este in general mult mai rapid decat algoritmul standard cu gradient descendent si cere doar o mica marire a necesarului de memorie. Este nevoie sa stocam valorile actualizate pentru fiecare pondere si deplasare, ceea ce este echivalent cu stocarea gradientului.

Page 15: Fuzzy

1.7.3- ALGORITMII CU GRADIENT CONJUGAT Algoritmul de baza al propagarii inverse ajusteaza ponderile in directia celei mai abrupte descresteri (care este gradientul negativ). Aceasta este directia in care functia de performanta descreste cel mai rapid. Facem observatia ca, desi functia descreste cel mai rapid in lungul gradientului negativ, aceasta nu duce neaparat la cea mai rapida convergenta. Algoritmii cu gradient conjugat realizeaza o cautare in lungul directiilor “conjugate”, care duce – in general - la o convergenta mai rapida decat directiile celor mai abrupte descresteri. In aceasta sectiune, vom prezenta patru variante diferite ale algoritmilor cu gradient conjugat. In majoritatea algoritmilor discutati pana acum se foloseste o rata de instruire pentru a determina marimea actualizarii ponderii (dimensiunea pasului). La majoritatea algoritmilor cu gradient conjugat, marimea pasului este ajustata la fiecare iteratie. Se face o cautare in lungul directiei gradientului conjugat, pentru a determina marimea pasului care minimizeaza functia de performanta in lungul acelei linii. Exista cinci functii de cautare incluse in toolbox. Oricare dintre aceste functii poate fi folosita cu functiile de antrenare care sunt descrise in restul capitolului. Anumite functii de cautare sunt cele mai potrivite anumitor functii de antrenare, desi gasirea optimului poate varia in functie de aplicatia specifica. O functie de cautare implicita potrivita este repartizata fiecarei functii de antrenare, dar acest lucru poate fi modificat de catre utilizator. A)- ACTUALIZAREA FLETCHER-REEVES (traincgf) Toti algoritmii cu gradient conjugat pornesc prin a cauta in directia celei mai abrupte descresteri (gradientul negativ), la prima iteratie: po = -go. Apoi se realizeaza o linie de cautare, pentru a determina distanta optima de miscare de-a lungul directiei curente de cautare:

. Apoi se determina urmatoarea directie de cautare, astfel incat ea este “conjugate” directiilor de cautare anterioare. Procedura tipica de determinare a noii directii de cautare este de a combina noua directie a celei mai abrupte descresteri cu directia de cautare anterioara:

. Versiunile diferite ale gradientului conjugat se disting prin modul in care este calculata constanta βk. Pentru actualizarea Fletcher-Reeves, procedura este urmatoarea:

. Acesta este raportul intre patratul normei gradientului curent si patratul normei gradientului precedent. In urmatorul program vom reinitializa reteaua de mai sus si o vom reantrena folosind versiunea Fletcher-Reeves a algoritmului gradientului conjugat. Parametrii lui traincgf sunt epochs, show, goal, time, min-grad, max-fail, srchFcn, scal-tol, alpha, beta, delta, gama, low-lim, up-lim, maxstep, minstep, bmax. Primii sase parametrii sunt ca mai sus. Parametrul srchFcn este denumirea functiei de cautare pe linie; ea poate fi oricare dintre functiile care vor fi descrise in continuare (sau o functie introdusa de utilizator). Restul parametrilor sunt asociati cu rutinele specifice de cautare pe linie si vor fi descrise mai tarziu. In acest exemplu va fi folosita rutina implicita de cautare pe linie srchcha. Traincgf converge in general in mai putine iteratii decat trainrp (desi sunt necesare mai multe calcule pentru fiecare iteratie).

Page 16: Fuzzy

De obicei algoritmii cu gradient conjugat sunt mult mai rapizi decat “propagarea inversa cu o rata variabila de instruire” si sunt uneori mai rapizi decat trainrp, cu toate ca rezultatele vor varia de le o problema la alta. Algoritmii cu gradient conjugat necesita putin mai multa memorie decat algoritmii mai simpli, deci sunt deseori o alegere mai buna pentru retelele cu un numar mare de ponderi. Acest algoritm este ilustrat in programul demo: >>nnd12eg En . B)- ACTUALIZAREA POLAK-RIBIÉRE (traincgp) Polak si Ribiere au propus o alta varianta a algoritmului cu gradient conjugat. Ca si in cazul Fletcher-Reeves, directia de cautare la fiecare iteratie se determina cu:

Pentru actualizarea Polak-Ribiere, constanta βk se calculeaza cu:

Acesta este produsul scalar al variatiilor anterioare in gradient cu gradientul current, divizat cu patratul normei gradientului precedent. In urmatorul program vom recreea reteaua anterioara si o vom antrena folosind varianta Polak-Ribiere a algoritmului cu gradient conjugat. Parametrii lui traincgp sunt aceeasi ca si pentru traincgf. Rutina implicita de cautare pe linie srchcha v-a fi folosita si in acest exemplu. Parametrii show si epochs sunt stabiliti la aceeasi valoare pe care le-au avut pentru traincgf.

Page 17: Fuzzy

Rutina traincgp are o performanta similara cu traincgf. Este dificil de prevazut care algoritm va avea cea mai buna performanta intr-o problema. Memoria necesara pentru Polak-Ribiere (patru vectori) este putin mai mare decat pentru Fletcher-Reeves (trei vectori). C)- RESTARTUL POWELL-BEALE (traincgb) Pentru toti algoritmii cu gradient conjugat, directia de cautare va fi periodic resetata la negativul gradientului. Punctul standard de resetare apare cand numarul de iteratii este egal cu numarul de parametrii din retea (ponderi si deplasari), dar exista si alte metode de resetare care pot imbunatati eficienta antrenarii. O astfel de metoda de resetare a fost propusa de Powell si Beale. Aceasta tehnica se aplica daca exista o foarte mica ortogonalitate intre gradientul curent si cel precedent. Acest fapt este testat in urmatoarea inegalitate:

Daca aceasta conditie e satisfacuta, directia de cautare se reseteaza la negativul gradientului. In urmatorul program, vom recrea reteaua precedenta si o vom antrena folosind versiunea Powell-Beale a algoritmului cu gradient conjugat. Parametrii lui traincgb sunt aceeasi ca cei pentru traincgf. Rutina implicita de cautare pe linie srchcha v-a fi folosita si pentru acest exemplu. Parametrii show si epoch au aceleasi valori pe care le-au avut pentru traincgf.

Rutina traincgb are calitatea de a fi ceva mai buna decat traincgp in cazul unor probleme, desi performanta in cazul unei probleme date este dificil de prevazut. Necesitatile de memorie pentru algoritmul Powell-Beale (sase vectori) sunt ceva mai mari decat cele pentru Polak-Ribiere (patru

Page 18: Fuzzy

vectori). 1.7.4- ALGORITMII QUASI-NEWTON A)- ALGORITMUL “BFGS” (trainbgf) Metoda lui Newton este o alternativa la metodele cu gradient conjugat pentru optimizare rapida. Relatia de baza in metoda lui Newton este:

unde Ak este matricea Hessiana (cu derivatele secunde ale functiei de performanta in raport cu valorile curente ale ponderilor si deplasarilor). Metoda lui Newton converge deseori mai rapid decat metodele cu gradient conjugat. Din pacate, este complicat si costisitor sa se calculeze matricea Hessiana pentru RNA cu transmitere inainte. Exista o categorie de algoritmi bazati pe metoda lui Newton, dar care nu necesita calcularea derivatelor secundare. Aceste sunt numite metode quasi-Newton. Aceste metode actualizeaza la fiecare iteratie o matrice Hessiana aproximativa. Actualizarea este calculata ca o functie de gradient. Metoda quasi-Newton care a avut cel mai mare succes a fost descoperita de Broyden, Fletcher, Goldfarb si Shanno (BFGS), algoritmul fiind implementat in rutina trainbfg. In urmatorul program vom recreea reteaua anterioara si o vom reantrena folosind algoritmul quasi-Newton BFGS. Parametrii pentru trainbfg sunt aceeasi ca si pentru traincgf. Rutina implicita a cautarii pe linie srchbac v-a fi folosita in acest exemplu. Parametrii show si epochs sunt stabiliti la 5, respectiv 300:

Algoritmul BFGS necesita mai multe calcule in fiecare iteratie si mai multa memorie decat metodele cu gradient conjugat, desi in general converge in mai putine iteratii. Hessianul aproximativ trebuie stocat, iar dimensiunile sale sunt n× n, unde n este egal cu numarul ponderilor si deplasarilor din retea. In cazul retelelor foarte mari se recomanda utilizarea “Rprop” sau al unui algoritm cu gradient conjugat. Totusi, pentru retelele mai mici, trainbfg poate fi o functie de antrenare eficienta. B)- LEVENBERG-MARQUARDT (trainlm) La fel ca la metodele quasi-Newton, algoritmul Levenberg-Marquardt a fost proiectat pentru atinge o viteza de antrenare de ordinul doi, fara a fi necesara calcularea matricei Hessiene. Cand functia de performanta are forma unei sume de patrate (caracteristic pt. retelele cu transmitere inainte), atunci matricea Hessiana poate fi aproximata astfel: H = J TJ, iar gradientul poate fi calculat astfel: g = J T e , unde J este matricea Jacobiana care contine primele derivate ale erorilor retelei (adica a functiei

Page 19: Fuzzy

de performanta) in raport cu ponderile si deplasarile, iar e este vectorul erorilor retelei. Matricea Jacobiana poate fi calculata printr-o tehnica standard de propagare inversa (care este mult mai putin complicata decat calcularea matricii Hessiene). Algoritmul Levenberg-Marquardt foloseste aceasta aproximare pt. matricea Hessiana, intr-o recurenta asemanatoare cu metoda Newton:

Cand scalarul μ este zero, aceasta este chiar metoda Newton, folosind matricea Hessiana aproximativa. Cand μ este mare, aceasta devine “gradientul descendent”, cu un pas mic. Metoda Newton este mai rapida si mai precisa in privinta minimului erorii, astfel ca ideea este de a ne deplasa catre metoda lui Newton, cat mai repede posibil. Ca atare, μ este micsorat dupa fiecare pas realizat cu succes (care face o reducere in functia de performanta) si este marit doar, cand in urma pasului, creste functia de performanta. In acest fel, functia de performanta va fi intotdeauna redusa la fiecare iteratie a algoritmului. In urmatorul program reinitializam reteaua anterioara si o reantrenam folosind algoritmul Levenberg-Marquardt. Parametrii pentru trainlm sunt epochs, show, goal, time, min_grad, max_fail, mu, mu_dec, mu_inc, mu_max, mem_reduc. Mai inainte am discutat primii sase parametrii. Parametrul mu este valoarea initiala pentru μ. Aceasta valoare este inmultita cu mu_dec de cate ori functia de performanta se reduce dupa un pas, sau este inmultita cu mu_inc de cate ori un pas va face sa creasca functia de performanta. Daca mu devine mai mare decat mu_max, algoritmul este oprit. Parametrul mem_reduc, care controleaza marimea memoriei utilizata de algoritm, va fi prezentat in sectiunea urmatoare. Parametrii show si epoch sunt fixati la 5 si respectiv 300.

Acest algoritm pare a fi metoda cea mai rapida de antrenare a retelelor neuronale cu transmitere inainte, ce au o marime moderata (pana la cateva sute de ponderi). Acest algoritm este ilustrat in programul demo: >>nnd12m En . RECOMANDARI In general, la problemele de aproximare a unei functii, pentru retelele care contin pana la cateva sute de ponderi, algoritmul LM va avea convergenta cea mai rapida. Acest avantaj este observabil in special daca se cere o mare precizie a antrenarii. In multe cazuri, trainlm poate obtine o eroare medie patratica mai mica decat oricare alt algoritm. Totusi, pe masura ce numarul ponderilor din retea creste, avantajul lui trainlm scade. In plus, performanta lui trainlm este relativ slaba in problemele de “recunoastere a formelor”. Cererile de memorie pt. trainlm sunt mai mari decat pt. alti algoritmi. Prin ajustarea parametrului mem_reduc, discutat mai sus, cererile de memorie se pot reduce, dar cu riscul cresterii timpului de executie. Functia trainrp este cel mai rapid algoritm in problemele de recunoastere a formelor, eficienta ei scazand in problemele de aproximare a unei functii. Performanta ei scade, de asemenea, pe

Page 20: Fuzzy

masura ce se reduce eroarea impusa. Cererile de memorie pentru acest algoritm sunt relativ mici in comparatie cu ceilalti algoritmi. Algoritmii cu gradient conjugat, in particular trainscg, functioneaza bine intr-o varietate larga de probleme, in special pentru retelele cu un numar mare de ponderi. Algoritmul SCG este aproape la fel de rapid ca algoritmul LM in problemele de aproximare a unei functii (mai rapid pentru retelele mari) si este aproape la fel de rapid ca trainrp in problemele de recunoastere a formelor. Performanta lui nu scade la fel de repede ca la trainrp cand se reduce eroarea. Algoritmii cu gradient conjugat au cereri relativ mici de memorie. Performanta lui trainbfg este similara cu cea a lui trainlm; nu cere la fel de multa memorie ca trainlm, dar efortul de calcul creste geometric cu marimea retelei, pt. ca echivalentul unei matrici inverse trebuie calculata la fiecare iteratie. Algoritmul cu rata de instruire variabila traingdx este de obicei mult mai lent decat celelalte metode si are aproximativ aceleasi cereri de memorie ca si trainrp, dar poate fi util pentru unele probleme. LIMITARII SI PRECAUTII Algoritmul cu gradient coborator este in general foarte lent, intrucat pentru o instruire stabila cere rate de instruire mici. Varianta momentum este uzual mai rapida decat gradientul coborator simplu, ea permitand rate de instruire mai mari, cu asigurarea mentinerea stabilitatii, dar ramane prea lenta pentru multe aplicatii practice. Pentru retele de dimensiuni mici si medii, usual se utilizeaza antrenarea Levenberg-Marquardt, daca se dispune de memorie suficienta. Daca memoria este o problema, atunci exista o varietate de alti algoritmi rapizi. Pentru retele mari se va folosi “trainscg” sau “trainrp”. Retelele multistrat sunt capabile de a realiza corect orice calcul liniar sau neliniar si pot aproxima oricat de bine orice functie. Totusi, desi o retea antrenata este – teoretic – capabila de realizari corecte, este posibil ca retro-propagarea si variatiile ei sa nu gaseasca intotdeauna solutia. Alegerea ratei de instruire pentru o retea neliniara constituie o provocare. O rate de instruire prea mare duce la o instruire instabila. Reciproc, o rata de instruire prea mica duce la un timp de antrenare foarte lung. Alegerea unei bune rate de instruire pentru o retea multistrat neliniara nu este deloc usoara. In cazul algoritmilor de antrenare rapida, este indicat de ales valorile implicite ale parametrilor. Suprafata de eroare a unei retele neliniare este complexa. Problema este ca functiile de transfer nenliniare ale retelelor multistrat introduc multe minime locale in suprafata de eroare. Cum gradientul coborator se realizeaza pe suprafata de eroare, este posibil ca solutia sa cada intr-unul din aceste minime locale. Aceasta se poate intampla in functie de conditiile initiale de plecare. Caderea intr-un minim local poate fi buna sau rea, depinzand de cat de aproape este minimul local de cel global si cat de mica eroare se cere. In orice caz, trebuie ratinut ca desi o retea multistrat cu retro-propagare si cu suficienti neuroni poate implementa aproape orice functie, retro-propagarea nu va gasi intotdeauna ponderile corecte pentru solutia optima. Reteaua va trebui reinitializata si reantrenata de cateva ori pentru a avea garantia obtinerii celei mai bune solutii.

1.8- APLICATII 1.8.1- CATEVA RNA SIMPLE Mai intai ne antrenam cu cateva RNA simple, in MATLAB 6.5. Mai jos intrarea P si tinta T defineste o functie simpla, ce se poate plota (fig. 1.13):

figure(1); p=[0 1 2 3 4 5 6 7 8]; t=[0 0.84 0.91 0.14 -0.77 -0.96 -0.28 0.66 0.99]; subplot(211);plot(p,t,'o');grid

In continuare utilizam functia NEWFF pentru a crea o retea cu doua straturi si cu transmitere inainte. Reteaua are o intrare (in domeniul dela 0 la 8), urmata de un prim strat cu 10 neuroni TANSIG, urmat de un strat cu 1 neuron PURELIN. Folosim TRAINLM si retro-propagarea.

Page 21: Fuzzy

Facem simularea retelei, adica se introduce “intrarea” si se scoate “iesirea”. Se observa (fig. 1.144) ca “iesirea” nu este cea dorita (pentru ca RNA nu este antrenata, adica nu i s-au ajustat ponderile).

Fig. 1.13

net=newff([0 8],[10 1],{'tansig','purelin'},'trainlm'); y1=sim(net,p); subplot(212);plot(p,t,'o',p,y1,'x')

Fig. 1.14

Acum antrenam reteaua pana la 50 de epoci, cu o eroare impusa de 0.03, apoi o resimulam (fig. 1.15).

figure(2); net.trainParam.epochs=50; net.trainParam.goal=0.03; net=train(net,p,t); y2=sim(net,p) plot(p,t,'o',p,y1,'x',p,y2,'*');grid

Fig. 1.15

1.8.2- RNA PENTRU RECUNOASTEREA FORMELOR

Acest program realizeaza recunoasterea formelor (clasificarea a doua multimi). In fereastra “Command Window”: OPEN – WORK\RNA\ demo_rna.m – En - Run”. Apare

Page 22: Fuzzy

“Figure 1” , in care – cu mausul – se fac 7 clicuri in coltul din stanga sus (apar 7 “*”) – En si 9 clicuri in coltul din dreapta jos (apar 9 “o”) – En; “Figure 1” se prezinta in figura 1.16.

Fig. 1.16

Dupa rularea programului , in “Training…” apar doua grafice (fig. 1.17): tinta (o functie treapta – cele 7 “*” sunt considerate “zerouri”, iar cele 9 “o” sunt considerate “unu”) si RNA-ua realizata (care aproximeaza tinta) .

Fig. 1.17

% DEMO_RNA.M lx=[0 30] ; ly=[0 30]; ch1='*' ; ch2='o'; n1=7 ; n2=9; cl1=formlot(lx,ly,ch1,n1) ; pause; cl2=formlot(lx,ly,ch2,n2); hold off; pause; p=[cl1 cl2]; pr=[lx;ly]; t=[zeros(1,n1) ones(1,n2)]; % DEFINIRE RETEA s1=9 ; s2=15 ; s3=1; tf1='tansig' ; tf2='tansig' ; tf3='logsig'; plot(cl1(1,:),cl1(2,:),'*') hold on; plot(cl2(1,:),cl2(2,:),'o') hold off ; pause; net=newff(pr,[s1 s2 s3],{tf1 tf2 tf3}); % INSTRUIRE RETEA; net.trainParam.epochs=50; net.trainParam.goal=0.02; net=train(net,p,t); yr=sim(net,p); plot([t' yr']) % t-tinta impusa; yr- iesirea retelei pt cazul cand la intrare s-a aplicat vectorul p, dupa instruire. % FORMLOT.M function cl=formlot(lx,ly,ch,n); % Returneaza coordonatele punctelor marcate cu mausul % cl=formlot(lx,ly,ch,n); % cl reprezinta multimea formelor rezultate in urma apelarii functiei formlot. % Dimensiunea matricei cl este (2 x n). % lx=[lx(1) lx(2)] si ly=[ly(1) ly(2)] delimiteaza spatiul formelor, care

Page 23: Fuzzy

% in acest caz este un dreptunghi ce are urmatoarele coordonate ale varfurilor: % [lx(1) ly(1)], [lx(1) ly(2)], [lx(2) ly(1)], [lx(2) ly(2)] % ch reprezinta caracterul ( + , . , * , o , x ) cu care se marcheaza forma care apartine clasei % n = nr de forme care apartin clasei % ATENTIE! dupa lansarea programului ecranul ramane in 'on' (noua figura se suprapune % peste cea veche) plot(lx,ly,'.'); hold on; x1=[];y1=[]; for i=1:n; [cx,cy]=ginput(1); plot(cx,cy,ch); x1=[x1,cx]; y1=[y1,cy]; end cl=[x1;y1];

Page 24: Fuzzy

2- RECUNOASTEREA FORMELOR Se numeste "vector de forma" (sau − pe scurt − "forma") setul de masuratori indirecte cu ajutorul caruia este descris sau caracterizat un obiect. Fiecare caracteristica poate fi privita ca o variabila intr-un spatiu m − dimensional, numit spatiu al formelor, unde fiecare caracteristica este atribuita unei dimensiuni. Vectorul de forma: x = [x1, x2, . . . , xm]T, unde xi este caracteristica i. Prin recunoasterea formelor se intelege acel ansamblu de metode si tehnici cu ajutorul caruia se poate realiza o clasificare in cadrul unei multimi de obiecte (de ex.: sfere cuburi, prisme, etc.), procese sau fenomene. Aceasta se realizeaza prin compararea cu modele. In memoria calculatorului se stocheaza un set de modele ( prototipuri ), cate unul pentru fiecare clasa. Forma de intrare necunoscuta (neclasificata inca; de ex.: un cub cu colturile rotunjite) este comparata pe rand cu fiecare prototip, clasificarea ei intr-una din clase facandu-se pe baza unui criteriu de selectie: daca forma necunoscuta se potriveste cel mai bine cu modelul “i", atunci ea va apartine clasei “i". Dificultatile care apar sunt legate de alegerea unui model reprezentativ, care sa caracterizeze cat mai bine o clasa de forme, cat si definirea unui criteriu de selectie adecvat, capabil sa clasifice univoc fiecare forma necunocuta. In plus, se face ipoteza ca obiectele simlare − si anume, similare in raport cu o anumita proprietate − se grupeaza impreuna, formand domenii distincte. Fiecare forma apare ca un punct in spatiul formelor . Acest spatiu − notat cu H x − poate fi descris de matricea indicilor x (i, j): H x = [ x ( i, j ) ; i = 1, 2, ..., N ; j = 1, 2, ..., m ] = [ x kT ; k = 1, 2, ..., N ] , (2.1) unde N este numarul de forme. Conceptul de clasificare a formelor poate fi inteles ca o partitionare a spstiului formelor in domenii reciproc exclusive, fiecare domeniu apartinand unei clase. : h 1 ∪ h 2 ∪ ... ∪ h n = H x ; h 1 ∩ h 2 ∩ ... ∩ h n = F , (2.2) unde cu F s-a notat multimea punctelor care constituie frontierele intre clase. Din punct de vedere matematic acest gen de problema de clasificare poate fi definita sub forma unei functii discriminant D j ( x ) asociata clasei de forme h j , ( j = 1, 2, ..., n ) , cu proprietatea ca daca forma reprezentata prin vectorul x face parte din h i , fapt care il vom simboliza x ∈ h i , cu i fixat, atunci valoare lui D i ( x ) trebuie sa fie cea mai mare; adica pentru toti x ∈ h i va fi indeplinita conditia: D i ( x ) > D j ( x ) ; i, j = 1, 2, ... , n ; i ≠ j . (2.3) De exemplu: Sferele sunt corpurile care – la acelasi volum – au suprafata cea mai mica. Frontierele dintre clase, denumite si "limite de decizie", pot fi exprimate cu relatia: F = D i ( x ) − D j ( x ) ; i , j = 1, 2, ...., n ; i ≠ j . (2.4) Functiile discriminant (sau clasificatorii) se pot imparti in doua categorii: neparametrice si parametrice. Daca formele din setul de formare nu pot fi descrise prin masuratori statistice, atunci se utilizeaza functii discriminant "neparametrice", dintre care cei mai folositi sunt clasifcatorii decizionali − teoretici. Clasificatorii "parametrici" se bazeaza pe estimarea parametrilor statistici ai formelor din setul de formare, aceste estimari fiind apoi utilizate pentru stabilirea functiilor discriminant. 2.1.- CASIFICATORII DECIZIONALI − TEORETICI (sau "cu distributii libere") 2.1.1.- Clasificatorul liniar Intr-un spatiu bidimensional x = [ x1, x2 ]T acest clasificator este o functie liniara (un plan perpendicular pe planul formelor): w 1 x1 + w 2 x2 + w 3 = 0 , (2.5) analog cu f = A x + B y + C = 0, cu reprezentarea din figura 2.1 (pentru C < 0). Intr-un spatiu m-dimensional functia este un hiperplan : w 1 x1 + w 2 x2 + ... + w m x m + w m + 1 = 0 . (2.6) In acest caz functia discriminant se ia de forma:

Page 25: Fuzzy

Fig. 2.1

D i ( x ) = , i = 1, 2, ... , n, (2.7) w x wi k k i mk

m

, ,+ +=∑ 1

1

care se poate scrie matricial, pentru cele n clase de forme: D ( x ) = W X , (2.8) unde

W =

w w

w w

m

n n

1 1 1 1

1 1

, ,

, ,

.. ... .. .

.. ..

+

+m

si X =

x

xm

1

1

.

. (2.9)

La vectorul x s-a introdus suplimentar elementul 1 , devenind vectorul X , pentru a da posibilitatea efectuarii operatiei de inmultire. 2.1.2.- Clasificatorul de distanta minima Acesta se bazeaza pe evaluarea distantelor dintre forma ce trebuie clasificata si un set de vectori de referinta din spatiul formelor. Daca vom presupune ca sunt cunoscuti n vectori de referinta, notati cu R 1 , R 2 , . . . , R n , cu R j asociat clasei h j, atunci clasificatorul de distanta minima va atribui forma x clasei h i daca distanta dintre aceasta si vectorul de referinta asociat este minima: x ∈ hi daca d ( x, R i ) = ⏐x − R i⏐ = ⏐x − R

jmin j⏐ . (2.10)

Vectorii de referinta ii consideram ca reprezentand centrele claselor si ii calculam cu relatia:

R j = 11M j i

M j

=∑ xi

( j ) , (2.11)

unde M j este numarul de forme din clasa h j (fig. 2.2). Distanta dintre forma x si vectorul R i al clasei h i este [4]: ⏐x − R i⏐2 = ( x − R i )T ( x − R i ) , (2.12) superscriptul T desemnand operatia de transpunere a unei matrici. Verificam relatia anterioara pentru m = 2 (adica – in plan): x = [x1, y1] T ; R = [x2, y2] T ;

⏐x − R⏐2 = [x1 – x2 y1 – y2] = (x⎥⎦

⎤⎢⎣

⎡−−

21

21

yyxx

1 – x2)2 + (y1 – y2)2, regasindu-se formula distantei

dintre doua puncte. Din relatiile (2.10) si (2.12) rezulta: d 2 ( x, R i ) = ⏐x − R i⏐2 = xT x − xT R i − R iT x + R iT R i (2.13) Deoarece produsul xT x este acelasi pentru toate clasele, el poate fi eliminat si putem schimba si semnul, fara a se modifica suprafata de decizie, obtinandu-se functia discriminant pentru un clasificator de distanta minima:

Page 26: Fuzzy

Fig. 2.2

D i ( x ) = xT R i + R iT x - R iT R i , i = 1, 2, ..., n . (2.14) Se observa ca D i ( x ) este linara, iar distanta este minima cand D i este maxima. 2.1.3.- Clasificatorul liniar pe portiuni Definim distanta dintre o forma necunoscuta x si clasa h i ca cea mai mica distanta dintre x si fiecare vector xj

( i ) , j = 1, 2, ..., M i din h i : d ( x, h i ) = { d ( x, x

j Mi=1 2, ,...,min j

( i ) ) } = { ⏐x − xj Mi=1 2, ,...,min j

( i )⏐} . (2.15)

Daca distanta este definita conform relatiei (2.12), atunci functia de decizie se scrie analog cu (2.14): D i ( x ) = { x

j Mi=1 2, ,...,max T xj

( i ) + ( xj( i ) )T x − ( xj

( i ) )T xj( i ) } , i = 1, 2, ... , n . (2.16)

Daca notam expresia dintre acolade cu Di( j ) ( x ), atunci (2.16) se scrie:

D i ( x ) = { Dj Mi=1 2, ,...,max i

( j ) } , i = 1, 2, ..., n . (2.17)

Deoarece Di( j ) ( x ), este o functie liniara, acest clasificator se numeste liniar pe portiuni.

Un exemplu de suprafata de decizie obtinuta in acest caz, este prezentat in figura 2.3.

2.1.4.- Clasificatori neliniari (polinomiali) Acesti clasificatori au expresia :

D i ( x ) = w k

L

=∑

1i , k f k ( x ) + w i, L + 1 , (2.18)

unde f k ( x ) = , cu k1, k2, ..., kr = 1, ..., m x x xkn

kn

krnr

11

22⋅ . . .

si n1, n2, ... , nr = 0 sau 1. Pentru r = 2 rezulta functia discriminant patratica, cu f k ( x ) = , pentru k1, k2 = 1, ..., m ; n1, n2 = 0 sau 1. x xk

nkn

11

22⋅

Functiile discriminant de tipul 2.1.1 si 2.1.4 sunt reprezentate in figura 2.4, in cazul unui spatiu bidimensional (spatiul formelor este un plan). Fig. 2.3

BIBLIOGRAFIE 1. A. Faure "Perception et reconaissance des formes", ediTESTS, 1985 2. I. Fomin, G. Tarlovski "Statisticeskaia teoria raspoznavania obrazov" Moskva, "Radio I sviazi", 1986 3. V. Neagoe, O. Stanasila "Teoria recunoasterii formelor", Editura Academiei, 1992 4. R. Vancea, s. A. "Recunoasterea formelor. Aplicatii", Editura Academiei, 1989.

Page 27: Fuzzy

Fig. 2.4

Page 28: Fuzzy

3. ALGORITMI GENETICI Un algoritm genetic efectuează operaţii specifice în cadrul unui proces de reproducere guvernat de operatori genetici. Noile soluţii sunt create prin selecţia şi recombinarea cromozomilor existenţi, în vederea optimizării unei funcţii de evaluare specifice fiecărei probleme în parte. Semnificaţia acestei funcţii nu este relevantă pentru algoritm, ceea ce contează fiind numai valoarea sa. În general se pleacă de la o populaţie de cromozomi generată aleator şi fiecare nouă populaţie generată prin reproducere înlocuieşte parţial sau total generaţia anterioară. Funcţia de evaluare globală se îndreaptă spre optim şi oferă soluţii din ce în ce mai bune problemei. Procesul este analog teoriei neo-darwiniste a evoluţiei biologice, care afirmă că organismele adaptate continuu la schimbările de mediu au şansele cele mai mari de supravieţuire. 3.1. Structura algoritmilor genetici Mecanismele fundamentale care realizează legătura dintre algoritmul genetic şi problema care trebuie rezolvată sunt următoarele: - codificarea problemei în termeni de cromozomi, - funcţia de evaluare, care furnizează o măsură a calităţii fiecărui cromozom în contextul problemei respective. Codificarea se realizează de obicei prin şiruri de cifre binare. S-a demonstrat că acest mod de codificare este robust, în sensul adaptării lui la o mare varietate de probleme practice. Ceea ce i se reproşează uneori este precizia soluţiei, limitată la numărul de biţi, pe care se face reprezentarea . Alegerea unui număr suficient de mare de biţi pentru reprezentarea valorilor reale din problemă, înlătură însă acest dezavantaj. Mai jos se prezinta programe scrise in MATLAB , care fac conversia zecimal-binar si invers . function a = zecbin(numar,nrb) %ZECBIN Face conversia zecimal-binar. % NUMAR - numarul zecimal intreg ce trebuie convertit. % NRB - numarul de biti. % Returneaza : un vector binar ca rezultat al conversiei. i=0; while numar>=2 if rem(numar,2)==0 a(1,nrb-i)=0; else a(1,nrb-i)=1; end i=i+1; numar=fix(numar/2); end if numar==1 a(1,nrb-i)=1; end for k=1:nrb-i-1 a(1,k)=0; end function y = binzec(a) %BINZEC Face conversia binar-zecimal. % A - vector ce contine numarul binar de intrare. % Returneaza: un numar zecimal, rezultat al conversiei. numar=0;

Page 29: Fuzzy

nrb=length(a); for i=1:nrb numar=a(1,i)*2^(nrb-i)+numar; end y=numar; Funcţia de evaluare primeşte la intrare şirul de cromozomi şi returnează numere sau liste de numere ce reprezintă performanţa cromozomilor. Ea are rolul mediului înconjurător pentru evoluţia naturală. Structura unui algoritm genetic fundamental este dată mai jos: 1. Se iniţializează populaţia de cromozomi: function a = initial(nrc,nrb) %INITIAL Initializeaza aleator populatia de cromozomi. % NRC - numarul de cromozomi. % NRB - numarul de biti pe cromozom. % Returneaza : o matrice aleatoare A formata din cifre binare, cu numar de linii egal cu numarul de cromozomi si numar de coloane egal cu numarul de biti pe cromozom (= nrb). a=rand(nrc,nrb); a=a>0.5; 2. Se evaluează fiecare cromozom din populaţie. Se selectează părinţii noii populaţii. 3. Se creează o nouă generaţie de cromozomi prin împerecherea cromozomilor selectaţi, folosind operatori genetici. 4. Se şterg membrii populaţiei iniţiale, pentru a fi înlocuiţi cu noua generaţie. 5. Se evaluează noii cromozomi şi se inserează în noua populaţie. 6. Dacă timpul de căutare nu s-a terminat, se merge la pasul 3. În caz contrar, se opreşte execuţia algoritmului. Modul de reprezentare a populaţiei de cromozomi, modul de evaluare a cromozomilor şi modul de reproducere sunt componente esenţiale ale algoritmului genetic şi sunt prezentate în cele ce urmează. Selecţia este un operator genetic care stabileşte şirurile populaţiei curente care vor fi alese pentru a transmite materialul lor genetic generaţiei următoare. Există trei tehnici de selecţie: • cea mai utilizată este selecţia proporţională, care modelează mecanismul selecţiei naturale,

în care cromozomii cu o evaluare mai mare au o şansă mai mare de a fi aleşi. Cunoscută şi sub numele de principiul ruletei, această tehnică presupune parcurgerea următoarelor etape:

1. Se stabileşte funcţia de evaluare pentru fiecare cromozom din populaţia dată Eval xi( ) xi

2. Se sumează toate funcţiile de evaluare Eval Eval xii

= ∑ ( )

3. Cromozomilor li se atribuie aleator numerele naturale i. Repetă până la crearea unui număr suficient de perechi de cromozomi: 4. Se generează numerele aleatoare n şi m, astfel ca 1≤ ≤n m Eval, 5.Se alege cromozomul , unde i este cel mai mic număr care satisface relaţia: xi Eval x nj

j i( ) ≥

≤∑

6. Se alege cromozomul , ca la pasul 5, cu m în loc de n x j

7. Se stabileşte perechea de cromozomi şi . xi x j

Această modalitate de selecţie poate genera serioase probleme tehnice. Dacă un cromozom din populaţie are o funcţie de evaluare de valoare mult mai mare decât a celorlalţi cromozomi, aceasta fiind departe de optim, atunci selecţia proporţională va extinde foarte repede caracteristicile acestui cromozom în populaţie. În câteva generaţii populaţia ar putea fi alcătuită

Page 30: Fuzzy

numai din astfel de cromozomi şi algoritmul genetic nu ar mai putea evolua, deci optimul nu mai poate fi găsit. Acest fenomen este cunoscut sub numele de convergenţă prematură. O altă problemă o constituie gradientul scăzut al funcţiei de evaluare spre sfârşitul căutării. Treptat soluţia optimă este preluată de întreaga populaţie. Efectul este cunoscut sub numele de terminare lentă (slow finishing). • O altă tehnică de selecţie este selecţia pe baza rangului, în care probabilitatea de a fi ales

este o funcţie liniară de locul ocupat de individ (cromozom) în cadrul populaţiei. Avantajul constă în faptul că nu mai este necesară interpolarea permanentă a evaluării ca în cazul precedent. Un caz special de selecţie de acest tip este selecţia prin trunchiere, prin care se elimină o parte din cromozomii cu cea mai slabă evaluare, iar în locul lor se generează alţii, după diferite scheme posibile. Un exemplu este prezentat în continuare:

1. Din populaţia actuală se elimină n cromozomi care au evaluarea cea mai slabă. Repetă de n ori: 2. Se generează un nou cromozom x, folosind principiul ruletei 3. Dacă x diferă de toţi ceilalţi cromozomi ai populaţiei actuale, atunci el este inclus în populaţie; în caz contrar, este supus operatorului de “mutaţie” (explicat mai jos) până ce devine diferit de ceilalţi cromozomi şi este inclus în populaţie. • O metodă euristică de selecţie este selecţia elitistă, care reţine întotdeauna cei mai buni

cromozomi ai populaţiei (de regulă unul singur). Ea garantează convergenţa asimptotică spre un minim global, dar rata de convergenţă este variabilă, funcţie de problemă. Elita poate introduce un efect de dominanţă asupra populaţiei care să ducă la o stagnare timpurie a procesului de evoluţie. Soluţia constă în utilizarea operatorului de mutaţie pentru reducerea sau eliminarea acestui efect .

Încrucişarea (crossover) este operatorul necesar pentru construcţia noilor indivizi ai populaţiei. Populaţia intermediară , formată din n cromozomi , este împărţită în n/2 perechi şi operatorul de încrucişare este aplicat fiecărei perechi cu o anumită probabilitate χ. Valoarea lui χ este de obicei mai mare de 0,6 şi de cele mai multe ori se alege χ = 1. Noii indivizi ai populaţiei sunt generaţi prin combinarea unor părţi alternative de material genetic provenind din două şiruri părinte a1 şi a2. Cea mai simplă schemă este încrucişarea cu un singur. Dacă numărul de biţi din cromozomul-şir este l= nrb, atunci punctul de încrucişare este ales aleator între 1 şi l. Această schemă de încrucişare este prezentată mai jos: 1. Se generează aleator un număr natural p în intervalul [ 1 , l ( a i ) ] ; 2. Se generează noua pereche de cromozomi şi a , după cum urmează: a nou1 nou2

Pentru i se execută următoarea secvenţă: p≤ şi a ia i a inou1 ( ) ( )= 2 a inou2 1( ) ( )= ; Pentru i se execută următoarea secvenţă: p> şi a i a inou1 ( ) ( )= 1 a i a inou2 2( ) ( )= . function [a1,a2] = cross1(a1,a2) %CROSS1 - Realizeaza incrucisarea intr-un singur punct. % A1 - cromozomul a1, A2 - cromozomul a2. % Returneaza : doi cromozomi obtinuti dupa incrucisare. nrb = length(a1); p = fix(nrb*rand+1); for i=1:p, temp(i)=a1(i); a1(i)=a2(i); a2(i)=temp(i); end O variantă mai complexă de încrucişare este încrucişarea în două puncte. O generalizare a

Page 31: Fuzzy

acestei scheme este încrucişarea în puncte multiple, folosită mai rar, numai în situaţiile în care cromozomul conţine un număr foarte mare de biţi. Mai jos prezentăm schema de încrucişare în două puncte: 1. Se generează aleator două numere naturale şi în intervalul [ 1 , l ( a p1 p2 i ) ] ; 2. Se generează noua pereche de cromozomi şi a , după cum urmează: a nou1 nou2

Pentru se execută următoarea secvenţă: p i p1 ≤ ≤ 2

2 şi a ia i a inou1 ( ) ( )= a inou2 1( ) ( )= ; Pentru se execută următoarea secvenţă: p i p2 < < 1

1 şi a i a inou1 ( ) ( )= a i a inou2 2( ) ( )= . Mutaţia permite algoritmului genetic să găsească noi soluţii în cadrul populaţiei şi îl protejează împotriva pierderii de informaţie în cazul unor încrucişări nepotrivite. Rata mutaţiei este foarte redusă, probabilitatea mutaţiei ( notată cu μ ) având valori cuprinse între 0,001 şi 0,01. Dacă operatorul de selecţie reduce diversitatea în populaţie, cel de mutaţie determină o nouă creştere a diversităţii. Cu cât probabilitatea mutaţiei este mai mare, cu atât mai redus este riscul convergenţei premature, dar apare un nou risc datorită faptului că o rată mare de mutaţie va transforma algoritmul genetic într-un algoritm de căutare aleatoare. O schemă tipică de mutaţie pentru un cromozom x x xn=< >1 ,..., este: 1. Se generează aleator un număr z astfel încât 1≤ ≤z n ; 2. Se selectează gena ; xz

3. . x xz z= −1 function y = mutatie(a) %MUTATIE Modifica aleator un bit al vectorului a. % A - vectorul de intrare. % Returneaza : Vectorul modificat. nrb = length(a); z=fix(rand*(nrb-1)+1); a(z)=1-a(z); y = a; 3.2. Algoritmi genetici pentru optimizare numerică Pentru a ilustra cât mai simplu modul de funcţionare a unui algoritm genetic vom rezolva două probleme simple de căutare a valorii maxime a unei funcţii unidimensionale pentru un domeniu de definiţie dat, folosind structura unui algoritm genetic fundamental. Ne propunem să găsim valoarea maximă a funcţiei: , unde x ∈ [ 0 , 31 ] şi ( )f x x= 2 x N∈ . (3.1) Numărul de soluţii posibile este 25 = 32, deci pentru o codificare binară minimală fixăm lungimea cromozomului la 5 biţi. Considerăm că populaţia este formată din 4 indivizi, iar operatorii genetici folosiţi sunt mutaţia uniformă şi încrucişarea într-un punct. Selecţia se face pe principiul ruletei. Funcţia de evaluare este ( )f x . După iniţializarea aleatoare a populaţiei sunt posibile valorile din tabelul 3 .1 . Selecţia cromozomilor care participă la crearea noii generaţii se face folosind principiul ruletei. Cromozomul 3 care are evaluarea cea mai slabă este eliminat. În locul lui se alege un alt cromozom dintre cei rămaşi, pentru a păstra neschimbat numărul de indivizi din populaţie. Este foarte posibilă alegerea cromozomului 2, care are evaluarea maximă şi deci probabilitatea maximă de a fi ales. Împerecherea cromozomilor se face aleator, iar numărul de biţi schimbat între doi cromozomi în cadrul încrucişării într-un singur punct se stabileşte tot aleator. Evoluţia spre noua generaţie se face conform tabelului 3.2 .

Page 32: Fuzzy

Tabelul 3.1. Numărul

cromozomului Reprezentare

binară Valoarea

zecimala xEvaluarea

f(x) Evaluarea relativă(%)

1 01101 13 169 14,4 2 11000 24 576 49,2 3 01000 8 64 5,5 4 10011 19 361 30,9

Suma 1170 100,0 Media 292,5

Maxima 576 Tabelul 3.2.

Cromozom părinte

Număr de biţi încrucişare

Cromozom copil

Valoarea x

Evaluarea f(x) = x2

01101 3 01000 8 64 11000 3 11101 29 841 11000 2 11011 27 729 10011 2 10000 16 256

Suma 1890 Media 472,5

Maxima 841 Observăm până acum o creştere a valorii maxime de la 576 la 841 şi a valorii medii de la 292,5 la 472,5. Următoarele două iteraţii generează rezultatele prezentate în tabelele 3.3 şi respectiv 3.4. Dacă în generaţia imediat următoare nu se obţine o creştere a valorii maxime a funcţiei Tabelul 3.3.

Cromozom Părinte

Număr de biţi încrucişare

Cromozom copil

Valoarea x

Evaluarea f(x)

11101 3 11000 24 576 11101 1 11101 29 841 11011 1 11011 27 729 10000 3 10101 21 441 Suma 2587 Media 646,7 Maxima 841

Tabelul 3.4.

Cromozom părinte

Număr de biţi încrucişare

Cromozom copil

Valoarea x

Evaluarea f(x)

11000 3 11101 29 841 11101 2 11111 31 961 11011 2 11001 25 625 11101 3 11000 24 576 Suma 3003 Media 750,7 Maxima 961

obiectiv , se poate observa o creştere a valorii medii de la 472,5 la 646,7. În ultima generaţie se obţine valoarea maximă 961, corespunzătoare lui

( )f xx = 31, cromozom care reprezintă

Page 33: Fuzzy

soluţia problemei. Datorită instrucţiunilor aleatoare este posibil ca o nouă rulare a programului să furnizeze soluţia corectă ceva mai devreme sau ceva mai târziu, dar datorită alegerii celor mai bune soluţii ca bază pentru generarea unor noi soluţii, convergenţa algoritmului spre soluţia optimă este asigurată. Un alt exemplu, care ne apropie mai mult de o problemă reală de optimizare a unei funcţii de o singură variabilă este dat în cele ce urmează. Ne propunem să găsim valoarea reală a lui x din intervalul [-1,2] care maximizează valoarea funcţiei lui Michalewicz [1], definită prin următoarea expresie: ( ) ( )f x x x= ⋅ ⋅ +sin 10 1π (3.2) Trebuie deci să găsim o valoare din intervalul dat, astfel încât: x0

( ) ( ) [ ]f x f x x0 1 2≥ ∀ ∈, − , (3.3) Reprezentarea grafică a funcţiei este dată în figura 3.1. Rezolvarea analitică a problemei ( )f x

Fig. 3.1

presupune rezolvarea ecuaţiei ( )f x' = 0 , care devine: ( ) ( ) ( )f x x x x' sin cos= ⋅ + ⋅ ⋅ ⋅ =10 10 10 0π π π , (3.4) şi care este echivalentă cu ecuaţia: ( )tan 10 10π π⋅ = − ⋅x x . (3.5) Ecuaţia 3.5 este o ecuaţie transcendentă, care are o infinitate de soluţii de forma:

x

ii

ii

i

i

i

i

=

−+ =

=+

− = − −

⎪⎪

⎪⎪

2 120

1 2

0 02 1

201 2

ε

ε

, , ,...

, ,

,...

(3.6)

unde termeniiεi formează un şir descrescător de numere reale, convergent la zero. Maximul

funcţiei pe domeniul indicat se obţine pentru x19 19

3720

185= + ≈ε , şi este ceva mai mare de

valoarea lui , adică (f 185, ) ( )f 1 85 1 85 182

1 2 85, , sin ,= ⋅ +⎛⎝⎜

⎞⎠⎟ + =π

π.

]

Pentru rezolvarea problemei cu algoritm genetic , pentru început stabilim modul de reprezentare a datelor. Soluţia problemei sau cromozomul este un vector binar de lungime suficientă pentru a asigura precizia dorită. Dacă dorim ca soluţia să aibă 6 zecimale, atunci domeniul trebuie împărţit în 3 1 valori distincte. Lungimea cromozomilor va fi de 22 biţi, deoarece:

[ 21,−06⋅

2 3 10 221 6 22< ⋅ ≤ (3.7)

Page 34: Fuzzy

Corespondenţa dintre valoarea binară a cromozomului şi numărul real pe care acesta îl reprezintă se face printr-o interpolare liniară simplă. Cromozomul care conţine numai biţi de 0 corespunde valorii reale -1, iar cromozomul care conţine numai biţi de 1 corespunde valorii reale +2. Orice alt cromozom reprezintă o valoare reală cuprinsă între cele două limite. function s = interpolare(valmin,valmax,nrb,val) %INTERPOLARE - calculeaza valoarea argumentului pentru aplicatia ceruta. % VALMIN - valoarea minima a argumentului. % VALMAX - valoarea maxima a argumentului. % NRB - numarul de biti pe cromozom. % VAL - valoarea calculata a argumentului, cuprinsa intre 0 si 2^NRB. % Returneaza : valoarea corecta in domeniul de variatie a argumentului. p=(valmax-valmin)/2^nrb; s=valmin+p*val; Populaţia de cromozomi este iniţializată prin generarea unei matrici cu număr de linii egal cu numărul cromozomilor din populaţie şi cu număr de coloane egal cu numărul biţilor dintr-un cromozom, adică 22. Toate elementele matricei sunt cifre binare generate aleator. Funcţia de evaluare a cromozomilor este echivalentă funcţiei ( )f x . Operatorii genetici folosiţi sunt şi aici încrucişarea şi mutaţia. Încrucişarea se face într-un singur punct, iar numărul biţilor care se schimbă între doi cromozomi părinţi este aleator. Mutaţia este uniformă şi - de această dată - se produc mutaţii, deoarece elementele care stabilesc probabilitatea de mutaţie pe generaţie, numărul de cromozomi din populaţie şi lungimea cromozomilor, sunt acum mult mai mari decât în exemplul precedent. Algoritmul genetic folosit pentru rezolvarea problemei are o populaţie formată din 50 de cromozomi, probabilitate de încrucişare de 0,25 şi probabilitate de mutaţie de 0,01. De multe ori se alege o probabilitate de încrucişare unitară. Acest lucru măreşte de obicei convergenţa algoritmului, dar creşte timpul de execuţie. Rezultatele experimentale obţinute pentru o evoluţie pe parcursul a 150 de generaţii sunt prezentate în figura 3.2. şi în tabelul 3.5. Se poate observa că evaluarea maximă este apropiată

Fig. 3.2

de soluţia corectă încă de la prima generaţie. Ea este dată de cel mai bun individ din populaţia iniţială de 50 de indivizi care a fost generată aleator, individ care este păstrat de la o generaţie la alta. Din acest motiv, evaluarea maximă este o funcţie monoton crescătoare. Nu acelaşi lucru se întâmplă cu evaluarea medie, care prezintă şi porţiuni scăzătoare începând cu generaţia 20,

Page 35: Fuzzy

Tabelul 3.5. Numărul generaţiei

Evaluarea medie

Evaluarea maximă

1 1,089383 2,639120 5 1,498987 2,639120 10 1,885667 2,649927 20 2,513873 2,650306 30 2,562338 2,801410 40 2,632469 2,849743 50 2,754230 2,850273

datorită încrucişărilor şi mutaţiilor produse. Deşi valoarea medie a populaţiei este în creştere , datorită eliminării celor mai slabi indivizi la fiecare generaţie, se mai întâmplă, ce-i drept cu o probabilitate destul de mică, ca părinţi reuşiţi să nu genereze întotdeauna copii la fel de reuşiţi sau mai reuşiţi, aşa cum ar fi de dorit. Algoritmul propus converge după mai puţin de 50 de generaţii la valoarea 2,850273, care corespunde unei erori relative de - 0,002 % . S-a folosit o selecţie prin trunchiere folosind principiul ruletei şi eliminând 8 dintre cei mai slabi cromozomi la fiecare generaţie.

BIBLIOGRAFIE 1) Z . Michalewicz “Genetic Algorithms + Data Structures = Evolution Programs”, Springer-Verlag , 1996 . 2) R. Popa “Cercetari privind elaborarea unor noi metode de testare a structurilor numerice”, Teza de doctorat , Universitatea "Dunarea de Jos" din Galati , 1998 .

Page 36: Fuzzy

4. SISTEME FUZZY 4.1. Introducere In anii ‘90 a devenit evident ca expertii umani, care rationeaza aproape exclusiv cu variabile lingvistice si cu o logica aproximativa si vaga, obtin - in multe cazuri - rezultate mai rapide si mai corecte decat calculatoarele (care folosesc o logica binara Booleana, cu 2 valori: 0 si 1; perechea {0, 1} poate utiliza termeni ca {nu, da}, {inchis, deschis}, {jos, sus}). Multimile fuzzy contin elemente care au un anumit grad de nedeterminare , iar rationamentele facute pe baza lor au un grad de imprecizie. Se poate spune ca multimile fuzzy nu au granite bine definite (fuzzy = imprecis, vag). Teoria probabilitatii ( bazata pe statistica, adica pe posibilitatea de a repeta un eveniment de oricate ori dorim ) nu poate modela aceste imprecizii, care se refera la evenimente unice. De exemplu, nu este corecta exprimarea “probabilitatea de rupere “ a unei bare, reprezentand o extrapolare de la multimea de bare identice la o bara unica. Mai precis este sa spunem “posibilitatea de rupere” la o anumita solicitare. Alte situatii in care teoria probabilitatii este irelevanta: clasificarea unor numere dintr-un sir monoton in “mici“ si “mari “, clasificarea unor opere de arta intr-o categorie bazata pe valoare, etc. Diferenta dintre teoria multimilor fuzzy si teoria probabilitatii se poate usor vedea in problema omletei [1]: consideram propozitia “ Hans mananca X oua “, cu X luand valori in U = {1, 2, 3,…}. Putem asocia o distributie de posibilitate lui X , interpretand Π x ( u ) ca fiind “gradul usurintii cu care Hans poate manca u oua”. Putem , de asemenea , asocia o distributie de probabilitate lui X , interpretand P x ( u ) ca probabilitatea de a manca u oua . Cu alte cuvinte, unei variabile lingvistice ( = “ usurinta de a manca oua“ ) i se poate asocia - printr-o anumita procedura - o densitate de posibilitate , la fel cum unei variabile aleatoare ( = “ u oua mancate “ ) i se poate atasa o densitate de probabilitate . Π x ( u ) si P x ( u ) pot avea valorile din tabelul 4.1. Tabelul 4.1

u 1 2 3 4 5 6 7 Π x (u) 1 1 1 1 0.8 0.6 0.4 P x (u) 0.1 0.8 0.1 0 0 0 0

Se observa ca un inalt grad de posibilitate ( Hans mananca 3 oua ) nu implica un grad mare de probabilitate . Din tabelul 2 deducem ca nu este necesar ca distributia de posibilitate sa satisfaca proprietatea ca suma tuturor posibilitatilor sa fie egala cu 1 , ca in cazul sumei probabilitatilor. Gradul de posibilitate reprezinta imprecizia unui eveniment, in timp ce probabilitatea arata frecventa de aparitie a unui eveniment. Rationamentele facute de fiintele inteligente presupune stabilirea universului U al elementelor supuse analizei, iar rezultatul obtinut are valoare doar prin raportarea la respectivele elemente. De exemplu, afirmatia “un rinocer matur de 1,5 tone este usor” este adevarata, avand in vedere ca greutatea medie a rinocerilor este de 2 t. Daca rinocerul de 1,5 t. se compara cu un bivol de 1 t., arunci nu se mai poate face aceeasi afirmatie. U se numeste “universul de discurs”. Pentru o multime crisp (precisa) C, definita pe universul U, se poate defini o functie caracteristica μ C : U → { 0 , 1 } daca si numai daca

(4.1) μC xdaca x Cdaca x C

( ) =∈∉

⎧⎨⎩

10

Acum putem redefini operatiile din teoria multimilor crisp : - complementul lui C, notat cu C’: μC’( x )= 1- μC(x) ;

- intersectia A ∩ B : μA ∩B = min ( μA(x) , μB(x) ) ; - uniunea A ∪ B : μ A ∪ B = max ( μ A ( x ) , μ B ( x ) ) ; (4.2) - egalitatea A = B : μ A ( x ) = μ B ( x ) .

Page 37: Fuzzy

La o multime fuzzy F, functia caracteristica este generalizata la o functie de apartenenta, care atribue fiecarui u ∈ U o valoare in intervalul unitar [0, 1], in loc de multimea cu doua elemente {0, 1}: μ F : U → [ 0 , 1 ] . (4.3) Fiecare element u din U are un grad de apartenenta ( fuzzy ) μ F ( u ) ∈ [ 0 , 1 ] . Multimea fuzzy F este complet determinata prin : F = { u ⏐ μ F ( u ) , u ∈ U } , (4.4) Exemplu: Consideram un cerc de raza R si o multime de bete subtiri de lungime l> 2R. Lasam sa cada aceste bete in zona ocupata de cerc. Unele bete vor cadea in cerc, altele in afara, iar altele il vor intersecta. Peste universul format de multimea betelor definim multimea fuzzy F a “betelor aflate in interiorul cercului”. Betele aflate in exterior vor avea apartenenta zero la aceasta multime, iar cele complet in interior au apartenenta unu. Daca un bat are in interior o parte a sa de lungime ’, apartenenta lui la multimea F se poate calcula cu formula: μ l F = ’/ . l lIn figura 4.1 se da un exemplu de cinci multimi fuzzy intalnite la un aparat de aer conditionat ; μ C

frig reprezinta - spre comparatie - multimea crisp a valorilor de temperatura corespunzatoare starii “ frig “ . μ μ frIg μ rece μ confortabil μ cald μ fierbinte 1 μ Cfrig 0.5_ I I I I I I I I I 16 17 18 19 20 21 22 23 24 25 OC F i g . 4.1 4.2. Operatii cu multimi fuzzy Operatiile din relatiile (4.2) sunt valabile si aici, cele principale fiind reprezentate in figura 4.2. μ μ 1 μ A ∪ B μ A μ B B

μ A μ B μA ∩ B x x a ) b )

Fig. 4.2 In [1], preluat din Zadeh, se propune o notatie mai convenabila pentru multimile fuzzy . Considerand ca C este o multime crisp finita {u 1, u 2, … , u n}, atunci o notatie alternativa este: C = u 1 + u 2 + … + u n , (4.5) unde “ + “ reprezinta o enumerare (inseamna “ si “). Mai departe, o notatie alternativa pentru (u , μ (u)), din (4.4), este μ (u) / u , unde “ / “ denota un dublet si este numit “ separator “. De exemplu 0.9 / x 3 inseamna ca μ ( x 3 ) = 0.9. Multimea din relatia (4.4) poate fi descrisa astfel: F = μ F ( u 1 ) / u 1 + … + μ F ( u n ) / u n = ∑ μ F ( u i ) / u i , (4.6) unde operatorul “ + “ satisface relatia : a / u + b / u = max ( a , b ) / u , (4.7) adica daca acelasi element are doua grade de apartenenta 0.8 si 0.6 atunci gradul sau de apartenenta devine 0.8.

Multimea crisp din (4.5) poate fi privita ca o multime fuzzy: . (4.8) C uii

n

==∑1

1/

Page 38: Fuzzy

O relatie fuzzy reprezinta o multime de “multipleti”, in care un multiplet este o pereche ordonata. Un multiplet binar (dublet) este notat (x, y), iar un multiplet (n - uplu): (x 1 , … , x n). Exemplu: o relatie ternara in N 3 este {(p, q, r) ⏐ p 2 + q 2 = r 2 }, care contine toti tripletii (p, q, r) reprezentand laturile unui triunghi dreptunghic . Aceasta relatie contine elementele (3, 4, 5), (5, 12, 13), etc. In cazul multimilor crisp, relatiile sunt introduse prin functia caracteristica. Considerand ca R este o relatie n - ara definita pe X 1 x …x X n , atunci μ R : X 1 x …x X n → {0, 1} este “functia caracteristica“ a multimii A daca si numai daca pentru toti x 1 , … , x n ,

(4.9) μ R nn

nx x

daca x x Rdaca x x R

( ,..., )( ,..., )( ,... )1

1

1

10

=∈∉

⎧⎨⎩

Intr-o relatie fuzzy functia caracteristica este extinsa pe tot intervalul [0, 1]. O RELATIE FUZZY este o multime fuzzy de multipleti, adica fiecare multiplet are un grad de apartenenta cuprins intre 0 si 1; definitia este: “ Fie U si V universuri masurabile (discrete) si μ R : U x V → [0, 1], atunci (4.10) R u vR

UxV= ∑μ ( , ) / ( , )u v

este o relatie fuzzy binara pe U x V“. Exemplu. Daca U = {1, 2, 3}, atunci “aproximativ egal ” este o relatie fuzzy binara: 1 / ( 1 , 1 ) + 1 / ( 2 , 2 ) + 1 / ( 3 , 3 ) + 0.8 / (1,2) + 0.8 / (2,3) + 0.8/(2,1) + 0.8/(3,2) + + 0 .3 / ( 1 , 3 ) + 0 . 3 / ( 3 , 1 ) . (4.11) Functia de apartenenta a acestei relatii poate fi descrisa astfel :

μ R x y

daca x y

daca x y

daca x y

( , ) ,

,

=

=

− =

− =

⎨⎪⎪

⎩⎪⎪

1

0 8 1

0 3 2

(4.12)

Aceasta functie se poate reprezenta in notatie matriciala, prin tabloul:

Y 1 2 3 1 1 0.8 0.3 (4.13) X 2 0.8 1 0.8 3 0.3 0.8 1

Definim acum doua relatii binare R si S , pe care le vom utiliza in continuare. R = “ x este mult mai mare decat y “ :

y 1 y 2 y 3 y 4 x 1 .8 1. .1 .7 x 2 0 .8 0 0 (4.14) x 3 .9 1. .7 .8

S = “ y este foarte apropiat de x “:

y 1 y 2 y 3 y 4 x 1 .4 0 .9 .6 x 2 .9 .4 .5 .7 (4.15) x 3 .3 0 .8 .5

Pe relatiile fuzzy se definesc operatiile intersectie si reuniune : “Fie relatiile binare R si S definite pe X x Y . Intersectia lui R si S : ∀ ( x , y ) ∈ X x Y : μ R ∩ S ( x , y ) = min ( μ R ( x , y ) , μ S ( x , y ) ) (4.16) Reuniunea lui R si S: ∀ ( x , y ) ∈ X x Y : μ R ∪ S ( x , y ) = max ( μ R ( x , y ) , μ S ( x , y ) ) “ (4.17)

Page 39: Fuzzy

Reuniunea relatiilor (4.14) si (4.15), care inseamna “x este mult mai mare decat y sau y este foarte apropiat de x“, este data de relatia:

y 1 y 2 y 3 y 4 x 1 .8 1 .9 .7 R∪S= x 2 .9 .8 .5 .7 x 3 .9 1 .8 .8

(4.18) Tabloul din (4.18) se obtine suprapunand tablourile din (4.14) si (4.15), iar in fiecare casuta se pune elementul maxim. Doua operatii foarte importante pe multimile si relatiile fuzzy sunt proiectia si extensia cilindrica . Operatia de proiectie comprima o relatie ternara intr-o relatie binara, sau o relatie binara intr-o multime fuzzy, sau o multime fuzzy intr-o valoare crisp unica. Consideram relatia R data in (4.14); proiectia pe X inseamna: x 1 ia valoarea celui mai mare grad de apartenenta din dubletii (x 1, y 1), (x 1, y 2), (x 1, y 3) si (x 1, y 4), adica 1 (maximul de pe prima linie); x 2 este maximul de pe a doua linie, adica .8; x 3 este 1. Astfel se obtine multimea fuzzy: Proiectia lui R pe X = 1 / x 1 + .8 / x2 + 1 / x 3 (4.19) In acelasi mod, proiectia pe Y se face luand valorile maxime din cele patru coloane, rezultand multimea fuzzy: proiectia lui R peY=.9 / y 1 + 1 / y2 + .7 / y 3 + .8 / y4 . (4.20) Extensia cilindrica este operatia opusa proiectiei. Ea extinde o multime fuzzy la o relatie binara fuzzy, o relatie binara la o relatie ternara, etc. Aceasta operatie are urmatorul scop: fie A o multime fuzzy definita pe X si fie R o relatie fuzzy definita pe X x Y, atunci se observa ca este imposibil sa se faca intersectia lui A cu R; daca insa A este extinsa pe X x Y, intersectia este posibila. Consideram multimea fuzzy din relatia (4.19), notata cu A; extensia sa cilindrica pe domeniul X x Y este:

y 1 y 2 y 3 y 4 x 1 1 1 1 1 ec(A)= x 2 .8 .8 .8 .8 x 3 1 1 1 1

(4.21’) Extensia cilindrica pe X x Y a multimii fuzzy din relatia (4.20), notata cu B, este:

y 1 y 2 y 3 y 4 x 1 .9 1 .7 .8 ec(B)= x 2 .9 1 .7 .8 x 3 .9 1 .7 .8

(4.21”) Urmatorul exemplu arata folosirea operatiei de extensie cilindrica pentru intersectia relatiilor si multimilor fuzzy. Exemplu. Consideram din nou relatia R, exprimata prin “x este aproximativ egal cu y“, cu notatia matriciala din (4.13) si presupunem ca “x este mic“, exprimat prin multimea fuzzy: A = 0 . 3 / x 1 + 1. / x 2 + 0 . 8 / x 3 . (4.22) Combinarea relatiei fuzzy R cu multimea fuzzy A, exprimata prin “x este aproximativ egal cu y si x este mic“, se face prin intersectia relatiei R cu extensia lui A. Extensia lui A pe X x Y este:

y 1 y 2 y 3 x 1 .3 .3 .3 ec(A)= x 2 1 1 1 (4.23) x 3 .8 .8 .8

Intersectia lui R cu ec (A):

Page 40: Fuzzy

y 1 y 2 y 3 x 1 .3 .3 .3 R ∩ ec(A)= x 2 .8 1 .8 (4.24) x 3 .3 .8 .8

Tabloul din (4.24) se obtine suprapunand tablourile din (4.13) si (4.23), iar in fiecare casuta se pune elementul minim. Combinarea relatiilor si multimilor fuzzy cu ajutorul proiectiei si extensiei cilindrice se numeste compunere si se noteaza cu simbolul “o“ (= compus). Definitie . Fie A o multime fuzzy definita pe X si R o relatie fuzzy definita pe X x Y. Atunci din compunerea lui A cu R rezulta o multime fuzzy B definita pe Y: B = A o R = pr pe Y ( ec ( A ) ∩ R ) (4.25) sau, pentru ca intersectia se realizeaza cu operatia de minimum, iar proiectia - cu maximum: ( ) ( )(μ μ μB x A Ry x( ) max min , ,= )x y (4.26)

Aceasta este numita relatia de compozitie max - min. Consideram doua relatii R si S, R fiind definita pe X x Y, iar S pe Y x Z. Nu este posibil sa se faca intersectia lui R cu S, pentru ca ele sunt definite pe domenii diferite. In acest caz, se extind ambele relatii pe X x Y x Z, dupa care intersectia se poate realiza. Intersectia se va proiecta pe X x Z: R o S = pr pe X x Z (ec ( R ) ∩ ec ( S )) (4.27) Exemplu. Consideram relatiile R si S din (4.14) si (4.15), unde R este definita pe X x Y, dar admitem ca S este definita pe Z x Y. Deci S exprima ca “y este foarte apropiat de z“. In forma tabelara (se observa ca S este transpus):

z 1 z 2 z 3

y 1 .4 .9 .3 ∩ y 2 0 .4 0 y 3 .9 .5 .8 y 4 .6 .7 .5

y 1 y 2 y 3 y 4

x 1 .8 1. .1 .7 x 2 0 .8 0 0 x 3 .9 1. .7 .8

(4 .28) Acum extindem ambele relatii pe X x Y x Z (ne imaginam doua paralelipipede formate din cuburi mici) si facem intersectia lor, relatia rezultata fiind proiectata pe X x Z:

z 1 z 2 z 3 x 1 .6 .8 .5 x 2 0 .4 0 (4.29) x 3 .7 .9 .7

La acelasi rezultat se ajunge daca se considera tablourile din (4.28) ca matrici carora li se face produsul, dar in locul inmultirii elementelor respective (linie cu coloana) se ia elementul minim - conform relatiei (4.20) - iar in locul sumei produselor elementelor se ia maximul, conform relatiei (4.7). De exemplu , elementul din linia 1 si coloana 2 din (4.29): 0.8 = max {min (0.8; 0.9), min (1; 0.4), min (0.1; 0.5), min (0.7; 0.7)} = max {0.8; 0.4; 0.1; 0.7} (4.30) Enuntul de mai sus reprezinta regula practica de efectuare a relatiei de compozitie max - min . 4.3. Metoda ecuatiei liniare fuzzy Una dintre metodele de clasificare bazate pe sistemele fuzzy, utilizate pentru monitorizarea proceselor de prelucrare mecanica este metoda ecuatiei liniare fuzzy. Aceasta considera ca relatia dintre clase (conditiile de prelucrare) si indicii de monitorizare se poate exprima prin[2]: r = Q o p , (4.31) unde r reprezinta gradele fuzzy pentru indicii de monitorizare, p reprezinta gradele fuzzy pentru

Page 41: Fuzzy

clase, Q este o functie de apartenenta fuzzy, iar simbolul “o“ este operatorul fuzzy de compunere (4.25). Rescriem ecuatia (4.31) in forma matriciala:

(4.32)

rr

r

q q qq q q

q q q

o

pp

pm

n

n

m1 m mn n

1

2

11 12 1

21 22 2

2

1

2

.

.

. .

. .. . . . .. . . . .

. .

.

.,

⎢⎢⎢⎢⎢⎢

⎥⎥⎥⎥⎥⎥

=

⎢⎢⎢⎢⎢⎢

⎥⎥⎥⎥⎥⎥

⎢⎢⎢⎢⎢⎢

⎥⎥⎥⎥⎥⎥

unde q i j este relatia fuzzy dintre indicele de monitorizare i si clasa j. In faza de invatare se determina doi parametri numiti in [2] “frecventa de aparitie“ si “rezistenta suportului“. Notam cu S i = {x (1, i), x (2, i), …, x (N, i)}, multimea care contine indicele de monitorizare i din toate inregistrarile. Elementul maxim din S i il notam cu x i , m a x , iar pe cel minim - x i , min . Divizam intervalul dintre x i , max si x i , min in L subintervale egale (se recomanda L = N / 10 ÷ N / 15, astfel ca sa fie suficiente inregistrari in fiecare interval): Δ x = (x i , max - x i , min ) / L (4.33) Subintervalul k este: v i , k = [x i , min + (k - 1) Δ x , x i , min + k . Δ x ] , ( k = 1 , 2 , … , L ). (4.34) Relatia fuzzy se poate reprezenta printr-o multime cu L elemente, analog cu (4.4): q i , j = { v ( i , k ) ⏐ q ( i , j , k ) , ( k = 1 , 2 , … , L ) , (4.35) in care gradul fuzzy q (i, j, k) este determinat de doi parametri: -frecventa de aparitie f (i, j, k) = C i j k / C i k ; - rezistenta suportului s (i, j, k) = C i j k / C i j , (4.36) unde C i j k este numarul inregistrarilor din S i care apartin clasei j si sunt in subintervalul k, C i k este numarul inregistrarilor din S i care sunt in sub-intervalul k, iar C i j - numarul inregistrarilor din S i care apartin clasei j. Gradul fuzzy q (i, j, k) rezulta din combinarea lui f (i, j, k) si s(i, j, k): q (i, j, k) = α . f (i, j, k) + ( 1 - α ) .s (i, j, k), (4.37) unde 0 ≤ α ≤ 1 este o constanta .

BIBLIOGRAFIE 1. D. Driankov , s.a. , “ An Introduction to Fuzzy Control “ , Springer - Verlag , 1993 . 2. R. Du, M.A. Elbestawi, S.M. Wu “Automated Monitoring of Manufacturing Processes, Part 1: Monitoring Methods, Part 2: Applications”, in ASME Journal of Engineering for Industry, may 1995,vol. 117, Part 1-pag. 121, Part 2 − pag.133. 3. K. Hirota ( editor ) “ Industrial Applications of Fuzzy Technology“ , Springer - Verlag , Tokyo , 1993 . 4. J. Kahlert “ Fuzzy Control fur Ingenieure “, Vieweg , Braunschweig , 1995 . 5. B. Kosko “Neural Networks and Fuzzy Systems“, Prentice Hall 1992, Englewood Cliff N.Y. 6. R. J. Marks II ( editor ) “ Fuzzy Logic Technology and Applications “, I E E E Technical Activities Board , New - York , 1994 , 7. H. N. Teodorescu “Sisteme fuzzy si aplicatii” , vol. I , Institutul Politehnic Iasi , 1989 . 8. T. Terano , s.a. “ Applied Fuzzy Systems “, Academic Press Profesional , 1994 .

Page 42: Fuzzy

5. TOOLBOX-ul “FUZZY LOGIC” [1]5.1. BAZELE LOGICII FUZZY

5.1.1. FUNCTII DE APARTENENTA function y = trimf(x, params)

x = (0:0.2:10)'; y1 = trimf(x, [3 4 5]); y2 = trimf(x, [1 4 9]); subplot(211), plot(x, [y1 y2]); y1 = trimf(x, [2 3 5]); y2 = trimf(x, [4 5 9]); subplot(212), plot(x, [y1 y2]);

Fig. 5.1.1

function y = trapmf(x, params) x = (0:0.1:10)'; y1 = trapmf(x, [2 3 7 9]); y2 = trapmf(x, [4 5 5 7]); y3 = trapmf(x, [5 6 4 6]); plot(x, [y1 y2 y3]);

Fig. 5.1.2

Trapezul exterior este y1, iar cel interior – y3. function y = gaussmf(x, params) GAUSSMF este functia de apartenenta de forma curbei Gauss. GAUSSMF(X, PARAMS) returneaza o matrice care este functia de apartenenta Gauss evaluata in X. PARAMS este un vector cu 2 elemente care determina forma si pozitia functiei de apartenenta. Formula acestei functii de apartenenta este:

GAUSSMF(X, [SIGMA, C]) = EXP(-(X - C).^2/(2*SIGMA^2));

adica 2

2

2)cx(

e)x(g σ−

= De exemplu:

x = (0:0.1:10)'; y1 = gaussmf(x, [0.5 5]);

y2 = gaussmf(x, [1 5]); y3 = gaussmf(x, [2 5]); y4 = gaussmf(x, [3 5]); subplot(211); plot(x, [y1 y2 y3 y4]); y1 = gaussmf(x, [1 2]); y2 = gaussmf(x, [1 4]); y3 = gaussmf(x, [1 6]); y4 = gaussmf(x, [1 8]); subplot(212); plot(x, [y1 y2 y3 y4]);

Fig. 5.1.3

In prima fig. clopotul din centru este y1, iar cel exterior – y4. σ este distanta pe orizontala de la punctul de intersectie cu orizontala 0.5 pana la abscisa maximului. function y = gauss2mf(x, params) Functia de apartenenta de forma doua ramuri Gauss. Formula: y = gauss2mf(x,params);

y = gauss2mf(x,[sig1 c1 sig2 c2]) Descriere: Functia Gauss depinde de doi parametri sig si c. gauss2mf este o combinatie a doua functii Gauss. Prima functie, specificata de sig1 si c1, determina forma ramurii stangi a curbei; a doua functie determina forma ramurii din dreapta a curbei. Daca c1<c2, functia gauss2mf are a valoarea maxima egala cu 1. In caz contrar, valoarea maxima este mai mica decat 1. Parametrii se listeaza in ordinea: [sig1, c1, sig2, c2]. Exemple:

x = (0:0.1:10)'; y1 = gauss2mf(x, [2 4 1 8]); y2 = gauss2mf(x, [2 5 1 7]); y3 = gauss2mf(x, [2 6 1 6]); y4 = gauss2mf(x, [2 7 1 5]); y5 = gauss2mf(x, [2 8 1 4]); plot(x, [y1 y2 y3 y4 y5]);

Curba exterioara este y1, iar cea interioara – y5.

Page 43: Fuzzy

Fig. 5.1.4

function y = gbellmf(x, params) GBELLMF Functia de apartenenta de forma curbei clopot (bell) generalizata. GBELLMF(X, PARAMS) returneaza o matrice care este functia de apartenenta clopot generalizata evaluata la X. PARAMS este un vector cu 3 elemente care determina forma si pozitia acestei functii de apartenenta. Formula:

GBELLMF(X, [A, B, C]) = 1./(1+ABS((X-C)/A))^(2*B);

adica b2

acx1

1xf−

+

=)(

Se observa ca aceasta functie de apartenenta este o extensie a functiei de distributie de probabilitate Cauchy. De exemplu:

x = (0:0.1:10)'; y1 = gbellmf(x, [1 2 5]); y2 = gbellmf(x, [2 4 5]); y3 = gbellmf(x, [3 6 5]); y4 = gbellmf(x, [4 8 5]); subplot(211); plot(x, [y1 y2 y3 y4]); y1 = gbellmf(x, [2 1 5]); y2 = gbellmf(x, [2 2 5]); y3 = gbellmf(x, [2 4 5]); y4 = gbellmf(x, [2 8 5]); subplot(212); plot(x, [y1 y2 y3 y4]);

In prima fig. clopotul din centru este y1, iar cel exterior – y4, iar in a doua fig. curba din centru sus este y1, iar cea exterioara – y4.

Fig. 5.1.5

A = a este distanta pe orizontala de la punctul

de intersectie cu orizontala 0.5 pana la abscisa maximului. function y = sigmf(x, params) SIGMF Functia de apartenenta de forma curbei sigmoid. SIGMF(X, PARAMS) returneaza o matrice care este functia de apartenenta sigmoid evaluate la X. PARAMS este un vector cu 2 elemente care determina forma si pozitia acestei functii de apartenenta. Formula: SIGMF(X, [A, C]) =

1./(1 + EXP(-A*(X-C)))

adica )cx(ae11)x(s −−+

=

De exemplu (fig. 5.1.6): x = (0:0.2:10)'; y1 = sigmf(x, [-1 5]); y2 = sigmf(x, [-3 5]); y3 = sigmf(x, [4 5]); y4 = sigmf(x, [8 5]); subplot(211); plot(x, [y1 y2 y3 y4]); y1 = sigmf(x, [5 2]); y2 = sigmf(x, [5 4]); y3 = sigmf(x, [5 6]); y4 = sigmf(x, [5 8]); subplot(212); plot(x, [y1 y2 y3 y4]);

In prima fig. curba din stg. sus este y1, apoi sunt y2, y4 si y3.

Fig. 5.1.6

function y = dsigmf(x, params) DSIGMF Functia de apartenenta formata prin diferenta dintre doua functii de apartenenta sigmoidale. Formula: y = dsigmf(x,[a1 c1 a2 c2]) Descriere: Functia de apartenenta sigmoidala utilizata aici depinde de doi parametrii a si c: f(x;a,c) = 1/(1 + exp(-a(x-c))). Functia de apartenenta dsigmf depinde de patru parametrii (a1, c1, a2 si c2) si este diferenta dintre doua functii sigmoidale:

Page 44: Fuzzy

f1(x; a1, c1) - f2(x; a2, c2). Parametrii se listeaza in ordinea: [a1 c1 a2 c2]. Exemplu:

x=0:0.1:10; y=dsigmf(x,[5 2 5 7]); plot(x,y) xlabel('dsigmf, P=[5 2 5 7]')

Fig. 5.1.7

function y = psigmf(x, params) PSIGMF Produsul a doua doua functii de apartenenta sigmoidale. PSIGMF(X, PARAMS) returneaza o matrice Y care este produsul a doua doua functii sigmoid evaluate la X. PARAMS este un vector cu 4 elemente care determina forma si pozitia acestei functii de apartenenta. Formula: PSIGMF(X, PARAMS) = = SIGMF(X, PARAMS(1:2)).*SIGMF(X, PARAMS(3:4)); De exemplu:

x = (0:0.2:10)'; params1 = [2 3]; y1 = sigmf(x, params1); params2 = [-5 8]; y2 = sigmf(x, params2); y3 = psigmf(x, [params1 params2]); subplot(211); plot(x, y1, x, y2); title('sigmf'); subplot(212); plot(x, y3, 'g-', x, y3, 'o'); title('psigmf');

Fig. 5.1.8

function y = zmf(x, params) ZMF Functia de apartenenta in forma de Z. ZMF(X, PARAMS) returneaza o matrice care

este functia de apartenenta Z evaluata la X. PARAMS = [X1 X0] este un vector cu 2 elemente care determina punctele de racordare ale acestei functii de apartenenta. Daca X1 < X0, ZMF prezinta o trecere lenta de la 1 (in X1) la 0 (in X0). Daca X1 >= X0, ZMF devine o functie treapta inversa, care sare de la 1 la 0 in (X0+X1)/2. De exemplu:

x = 0:0.1:10; subplot(311); plot(x, zmf(x, [2 8])); subplot(312); plot(x, zmf(x, [4 6])); subplot(313); plot(x, zmf(x, [6 4]));

Fig. 5.1.9

function y = pimf(x, params) PIMF Functia de apartenenta de forma lui π. PIMF(X, PARAMS) returneaza o matrice care este functia de apartenenta π evaluata in X. PARAMS = [A B C D] este un vector cu 4 elemente care determina punctele de racordare ale acestei functii de apartenenta. Parametrii a and d indica "picioarele" curbei, iar b si c indica "umerii" ei. In fond, aceasta functie de apartenenta este produsul lui SMF (vezi mai jos) si ZMF:

PIMF(X, PARAMS) = SMF(X, PARAMS(1:2)).*ZMF(X, PARAMS(3:4))

Se observa ca aceasta functie de apartenenta π poate fi asimetrica, pentru ca are patru parametrii, spre deosebire de functia de apartenenta conventional π, care are numai doi parametrii. De exemplu:

x = (0:0.1:10)'; y1 = pimf(x, [1 4 9 10]); y2 = pimf(x, [2 5 8 9]); y3 = pimf(x, [3 6 7 8]); y4 = pimf(x, [4 7 6 7]); y5 = pimf(x, [5 8 5 6]); plot(x, [y1 y2 y3 y4 y5]);

Page 45: Fuzzy

Fig. 5.1.10

Curba exterioara este y1, iar cea interioara – y5. function y = smf(x, params) SMF Functia de apartenenta in forma de S. SMF(X, PARAMS) returneaza o matrice care este functia de apartenenta S evaluata la X. PARAMS = [X0 X1] este un vector cu 2 elemente care determina punctele de racordare ale acestei functii de apartenenta. Daca X0 < X1, SMF prezinta o trecere lenta de la 0 (in X0) la 1 (in X1). Daca X0 >= X1, SMF devine o functie treapta, care sare de la 0 la 1 in (X0+X1)/2. De exemplu:

x = 0:0.1:10; subplot(311); plot(x, smf(x, [2 8])); subplot(312); plot(x, smf(x, [4 6])); subplot(313); plot(x, smf(x, [6 4]));

Fig. 5.1.11

5.1.2.- REGULI FUZZY IF-THEN

(daca-atunci) O regula fuzzy if-then simpla este:

If x is A then y is B unde A si B sunt valori lingvistice, definite pe multimi fuzzy considerate pe universurile de discurs X si - respectiv – Y. Partea “if” se numeste antecedent (premiza), iar “then” – consecinta (concluzie). Ex.: “If temp. este moderata, then ventilatorul trebuie sa aiba viteza mica”. Facem observatia ca moderat se reprezinta ca un numar intre 0 si 1, ce este returnat de catre antecedent. Viteza mica este reprezentata de o multime fuzzy B, atribuita variabilei de iesire

y. In regula fuzzy if-then, cuvantul is este interpretat diferit, dupa cum apare in antecedent sau in consecinta. In limbajul MATLAB aceasta distinctie se face intre testul relational “= =” (identic) si asignarea variabilei cu simbolul “=”. Deci un mod mai exact de notare a regulii de mai sus este:

“If temp. = = moderata, then vit. ventilatorului = mica”.

La o regula fuzzy if-then, in general, intrarea este valoarea curenta a variabilei de intrare (temperatura), iar iesirea este o multime fuzzy, partea “consecinta” indicand o multime fuzzy (“mic”) ce se atribuie iesirii. In cazul logicii booleene (crisp), regula if-then se aplica usor: daca antecedentul este adevarat, atunci si consecinta este adevarata. In cazul logicii fuzzy, daca antecedentul este adevarat intr-un anumit grad, atunci si consecinta este adevarata in acelasi grad. Functia implication modifica multimea fuzzy atribuita iesirii cu gradul specificat de antecedent. Cel mai adesea aceasta modificare se face prin trunchiere, cu functia min, multimea fuzzy fiind “retezata”, cum se va vedea mai jos. Modul de lucru al acestei reguli se poate vedea pe graficele: “Temp. moderata”-fig. 5.1.12

tempS=12:30; modtempG=triangle(tempS,[14 21 28]);

si “Viteze mici”-fig. 5.1.13 vitezeS=0:.1:4; vitmicG=triangle(vitezeS,[0 0 3]);

Pentru temperatura de 17 o fig. 5.1.12 ne arata

Fig. 5.1.12

ca gradul de adevar al afirmatiei “temperatura de 17 o este moderata” este de 43 %. Aceasta inseamna ca si consecinta este adevarata in acelasi procentaj, multimea fuzzy “Viteze mici” trebuind sa fie retezata cu gradul antecedent 0.43 (fig. 5.1.14). Retezarea limiteaza gradul de adevar al

Page 46: Fuzzy

Fig. 5.1.13

Fig. 5.1.14

consecintei la acelasi grad al antecedentului. Cu alte cuvinte, consecinta este adevarata in aceeasi masura ca si antecedentul. Fig. 5.1.14 ne spune ca ventilatorul trebuie pus la pozitia 1.7, sau mai mica, dar gradul de precizie al acestei indicatii este mediu (43 %). Pentru temperatura de 21o procentajul de mai sus devine 100% (fig. 5.1.13 nu se reteaza, iar ventilatorul este la pozitia 0) Reguli if-then complexe Antecedentul, sau consecinta, poate fi o expresie referitoare la mai multe variabile fuzzy. De exemplu, regula: “If temperatura este moderata or puterea este slaba, then debitul combustibilului in cuptor trebuie sa fie scazut”. Dupa definirea multimilor fuzzy “Putere slaba” si “Debit scazut”(= fig. 5.1.13), pentru valori precizate privind temperatura si puterea se determina gradele fuzzy corespunzatoare si se ia maximul lor, acesta fiind gradul antecedentului, cu care se reteaza graficul din fig. 5.1.13. Reguli if-then multiple Daca ambele grade din antecedentul regulii de mai sus sunt nule, atunci si gradul antecedentului este nul si regula nu se poate aplica. Iesirea din acest impas o reprezinta formularea mai multor reguli, pentru a caracteriza iesirea din sistem pentru toate intrarile posibile. La un sistem cu mai multe iesiri, fiecarei

iesiri i se va atribui propriul set de reguli. CONCLUZII Interpretarea regulilor if-then este un proces compus din 3 parti: 1- Fuzificarea intrarilor: se rezolva toate propozitiile fuzzy din antecedent, rezultand un grad de apartenenta intre 0 si 1. 2- Aplicarea operatorilor fuzzy pentru antecedente cu mai multe parti: rezulta un singur numar, intre 0 si 1. 3- Aplicarea metodei “implication”: Multimea fuzzy de la iesire se formeaza utilizeaza gradul suportului de mai sus. Daca antecedentul este numai partial adevarat (adica are o valoare < 1), atunci multimea fuzzy de la iesire se reteaza. In cazul mai multor reguli, multimea fuzzy corespunzatoare fiecarei iesiri sunt agregate si, in final, multimea fuzzy rezultanta este defuzificata. 5.2.- FUZZY INFERENCE SYSTEMS (FIS) Inferenta fuzzy este procesul prelucrarii unei intrari date, utilizand logica fuzzy, pentru a obtine iesirea. Acest proces cuprinde toate elementele descrise mai sus: functia de apartenenta, operatori logici fuzzy, reguli if-then. Cel mai utilizat tip de “fuzzy inference system” este Mamdani. Metoda de inferenta fuzzy a lui Mamdani a fost propusa in 1975, cu scopul de a controla un sistem tehnic prin sintetizarea unui set de reguli lingvistice de control, obtinute din experienta unor operatori umani.

5.2.1.- SISTEMUL JOB Consideram un sistem (avand acest titlu), cu doua intrari si o iesire, prezentat in diagrama din fig. 5.2.1. Natura paralela a regulilor este o caracteristica importanta a logicii fuzzy, ce permite glisarea simpla dintr-o regiune unde comportarea sistemului este dominata de una dintre reguli, catre alta regiune. Procesul de inferenta fuzzy are 5 etape: fuzificarea variabilelor de intrare, aplicarea operatorilor fuzzy in antecedent, implicarea de la antecedent la consecinta, agregarea consecintelor si defuzificarea. Etapa 1. Fuzificarea intrarilor Se determina gradul in care intrarile apartin multimilor fuzzy corespunzatoare, prin

Page 47: Fuzzy

functia de apartenenta. De exemplu, in ce masura efficiency este big (fig. 5.2.1)? In fig. 5.2.2 se prezinta cum efficiency (apreciata pe o scara de la 0 la 10) este caracterizata (prin functia ei de apartenenta) ca variabila lingvistica big.

Considerand ca gradul de eficienta = 8, deducem ca ea este mare in proportie de 70%. Etapa 2. Aplicarea operatorilor fuzzy Acum stim gradul in care fiecare parte a antecedentului este satisfacuta, pentru fiecare

JOB-ul

Rule 1: If labour is poor or efficiency is low,

then the salary is small

Rule 2: If labour is good,

Sistem cu 2 intrari, o iesire si 3 reguli Fig. 5.2.1

regula . Daca antecedentul unei reguli are mai multe parti, se aplica operatorii fuzzy pentru a obtine un numar care reprezinta rezultatul antecedentului pentru aceea regula. La un operator fuzzy intrarea contine doua sau mai multe grade de apartenenta provenite din fuzificarea intrarilor, iar iesirea este un numar unic. In fig. 5.2.3 este un exemplu de aplicare a operatorului OR (max) la calculul antecedentului regulii 3 din fig. 5.2.1. Etapa 3. Aplicarea metodei implication (fig. 5.2.4) Mai intai trebuie sa avem in vedere ponderea regulii (un numar subunitar) cu care se inmulteste numarul determinat de antecedent.

Fig. 5.2.2 Uzual, aceasta pondere = 1. Multimea fuzzy din consecinta este acum prelucrata utilizand o functie asociata antecedentului. Intrarea pentru implication este un numar dat de catre antecedent, iar iesirea este o multime fuzzy. Etapa 4. Agregarea tuturor iesirilor Agregarea este procesul prin care multimile fuzzy, reprezentand iesirile pentru fiecare regula,

then the salary is average

Rule 3: If labour is excellent or efficiency is big, then the salary is generous

Input 1 labour (0-10)

Input 2 efficiency (0-10)

Σ Output salary (10-100)

Intrarile sunt crisp (nr. finite in

domeniul dat)

Toate regulile se evalueaza in paralel, cu

rationam. fuzzy

Iesirile din reguli sunt

combinate si defuz.

Reultatul este un nr.crisp

big

Efficiency is big

INPUT Efficiency = 8

0.7

Rezultatul fuzif.

Page 48: Fuzzy

1. Fuzificarea intrarilor 2. Apl. oper. OR (max)

Fig. 5.2.3

sunt combinate intr-o singura multime fuzzy. Intrarea pentru procesul de agregare este lista iesirilor (retezate) furnizate de metoda implication pentru fiecare regula, iar iesirea este o multime fuzzy pentru fiecare variabila de iesire. Cea mai utilizata este metoda max (maximului). Consideram ca iesirile din cele 3 reguli din

a)

b)

c)

Fig. 5.2.5 fig. 5.2.1sunt – respectiv - multimile fuzzy retezate din fig. 5.2.5. Suprapunand aceste 3 figuri si luand la fiecare abscisa ordonata maxima, rezulta graficul din fig. 5.2.6

Fig. 5.2.6

Etapa 5. Defuzificarea Intrarea in procesul de defuzificare este multimea fuzzy obtinuta prin agregarea de mai sus, iar iesirea este un numar (obtinut – de regula – cu functia centroid).

0.0

labour is excellent or efficiency is big

Labour = 3 Efficiency = 8

0.0

excellent big 0.7

0.7

1. Fuzificarea intrarilor

labour is excellent or efficiency is big then salary is generous

Labour = 3 Efficiency = 8

excellent big

2. Apl. oper. OR (max)

3. Apl. met. implication (min)

Fig. 5.2.4

Page 49: Fuzzy

5.2.2.- DIAGRAMA DE INFERENTA FUZZY

Aceasta diagrama se obtine prin alaturarea figurii 2.4 (repetata – cu modificarile corespunzatoare - pentru fiecare regula din fig. 2.1) cu figurile 5.2.5,6. Modulul “Rule Viewer” (descris mai jos) reprezinta implementarea aceastei diagrame.

5.3.- REALIZAREA FIS-ULUI In fuzzy logic toolbox (F-L-T) sunt 5 unelte GUI (graphical user interface): - FIS-E (the Fuzzy Inference System

Editor); - MF-E (the Membership Function Editor); - R-E (the Rule Editor); - R-V (the Rule Viewer); - S-V (the Surface Viewer). FIS-E nu are un numar limitat de intrari, dar acest numar trebuie limitat pentru memorie. MF-E defineste formele functiilor de apartenenta asociate fiecarei intrari.

R-E editeaza toate regulile ce definesc comportarea sistemului. R-V si S-V vizualizeaza FIS. R-V poate arata care reguli sunt active, sau ce forme pentru MF influenteaza rezultatul. S-V arata dependenta unei iesiri in functie de una sau doua intrari.

5.3.1.- JOB-ul

Se pune problema : “Dandu-se un numar intre 1 si 10 care reprezinta calitatea of labour la servici (10 fiind “excellent”) si un alt numar intre 1 si 10 care reprezinta calitatea of the efficiency la acel job (10 fiind “big”), cat trebuie sa fie the salary ?” Rezolvarea incepe cu formularea unor reguli bazate pe experienta: 1- If labour is poor or the efficiency is low, then the salary is small. 2- If labour is good, then the salary is average.

5.3.2.- FIS-E

Fig. 5.3.1

FIS-E F_log_1

File Edit View

F_log_1 (Mamdani)

Dublu clic pe “system diagram”

to open R-E

Dublu clic pe un “input

variable icon” to open MF-E

Dublu clic pe “icon for

output variable”

to open MF-ENumele sist. se poate

schimba cu File – Save as

Camp de edit. pt. numele var. de i/o

Meniuri pop-up pt. ajustarea inferentei si

defuzif.

Help Close Aceasta linie descrie ultima

operatie

Page 50: Fuzzy

3- If labour is excellent or the efficiency is big, then the salary is generous. Admitem ca un salariu “average” este 50%, unul “generous”- 100%, iar unul “small”-10%. Vrem sa construim un nou FIS; se econom. timp luand unul deja construit, tastand: >>fuzzy tipper. Se va incarca un FIS asociat cu fisierul tipper.fis (fig. 5.3.1). Sus stanga sunt cele doua variabile de intrare, iar la dreapta- variabila de iesire; in centru este numele sistemului si tipul de inferenta (implicit – Mamdani; mai este tipul Sugeno, explicat in alt capitol). In stanga jos sunt meniuri derulante ce permit modificarea diferitelor componente ale procesului de inferenta, iar in dreapta jos: numele variabilei de i/o si tipul MF. Pentru pornirea de la zero, se tasteaza

>>fuzzy (la promptul MATLAB). Se deschide FIS-E, cu “input 1” si “output 1”. Vom construi un sistem cu 2 intrari si o iesire: Edit – Add input → apare un careu galben “input 2”; schimbare numelor: clic in careul “input 1” (conturul devine rosu) – In campul de editare din dreapta jos se scrie “labour”- En; analog pentru “input 2” → ”efficiency” si pentru careul din dreapta (bleu) “output 1” → “salary”- File – Save to workspace as…- In campul de editare al casetei ce se deschide se tasteaza: F_log_1 – OK. Trecem la definirea functiei de apartenenta asociate fiecarei variabile, cu MF-E, ce se poate deschide in trei moduri: - View – Edit MF; - Dublu clic pe careul “salary”; - La prompt se scrie “>>mfedit”. Apare figura 5.3.2.

5.3.3.- MF-E

Fig. 5.3.2

MF-E : F_log_1

File Edit View

FIS Variables

MF plots

Input var. “labour”

Current variable Name labour Type input Range [0 10] Displ. Range [0 10]

Current MF Name good Type gaussmf Params [1.5 5]

Help Close

“Variable Palette” Clic pe o var. si

edit MF

Clic pe o linie pt. a o selecta. Se poate

schimba numele. Se trage cu maus-ul pt.

a o misca sau schimba forma

Se poate schimba numele

Pop-up menu pt. schimb.

tipului

Page 51: Fuzzy

MODUL DE LUCRU 1- In zona “Variable Palette” (FIS Variables) se selecteaza variabila de intrare “labour” (dublu clic pe ea) – in campurile de editare din stanga jos se scrie [0 10]. 2- Edit – Add MFs – apare o fereastra in care: 3- Se alege “gaussmf” si “3” (adica 3 curbe Gauss pevtru “labour”). 4- In zona “MF plots” se face clic pe curba din stanga; in zona din dreapta jos i se schimba numele din “mf1” in “poor”- En. Ajustarea formei MF: - se trage cu maus-ul in stanga sau dreapta (vor fi afectati parametrii matematici); - clic pe un mic patrat de pe curba si apoi tragere spre “outside” (pentru dilatare), sau spre “inside” (pentru contractie); - in zona din dreapta jos se tasteaza parametrii doriti - En. Pentru curba “poor” parametrii sunt [1.5 0].

5- Curba din centru “good” are parametrii [1.5 5], iar cea din dreapta “excel.” [1.5 10]. 6- Clic pe variabila de intrare “efficiency” – in “Range” si “Displ. Range” (stanga jos) se scrie [0 10]. 7- Edit – Add MFs → 2 “trapmf” (pentru “efficiency”). 8- Clic pe trapezul din stanga - i se schimba numele in “low” si param. [0 0 1 3]. 9- Trapezul din dreapta→ “big” si parametrii [7 9 10 10]. 10- In zona “Variable Palette” (FIS Variables) se selecteaza “salary” – in “Range” si “Displ. Range” se scrie [0 100] - Edit – Add MFs → “trimf” si “3” – MF “small” → [0 25 40]; MF “average” → [40 55 70]; MF “generous” → [70 85 100]. Apelare R-E: - View – Edit rules. . .; - Se scrie “ruleedit” la prompt. Apare fig. 5.3.3.

5.3.4.- R-E

Fig. 5.3.3

R-E : F_log_1

File Edit View

1 If (labour is poor) or (efficiency is low) then (the salary is small) (1) 2 If (labour is good) then (the salary is average) (1) 3 If (labour is excellent) or (efficiency is big) then (the salary is generous) (1)

If or then labour is efficiency is the salary is

poorgood excellent none

lowbig none

smallaverage generous none

not not not

Connection or

and

Weight

1 Delete rule Add rule Change rule < >

FIS Name Help Close

Inp. or out. selection menus

Rgulile se introd.

automat cu GUIs

Page 52: Fuzzy

Alegand “none” in meniuri, se exclude acea varianta in regula respectiva; alegand “not”, apare varianta negata. Pentru a insera prima regula: sub “labour” se selecteaza “poor”; sub “efficiency”– low; sub “salary”- small; in zona “Connection”- or. Numarul din coada este ponderea ce se poate aplica fiecarei reguli (se poate schimba scriind sub “Weight” un numar ∈ [0 1]) –Clic pe “Add rule”. Analog pentru regulile 2 si 3. Modificarea unei reguli: clic pe ea – se fac modificarile - clic pe “Change rule”. In meniul “Options”- Format – este activat “Verbose” (adica forma lingvistica a regulilor, ca mai sus) – alegand “Symbolic”, apare: 1 (labour = = poor) or (efficiency = = low) → (salary = small) (1)

2 … 3 … Se continua cu: View – View rules.

5.3.5.- R-V In figura 5.3.4 fiecare regula este un rand de ploturi, iar fiecare coloana este o variabila; primele doua coloane (galbene) = antecedentul (partea “if”), iar a treia coloana (bleu) = consecinta (partea “then”). Plotul blanc de sub “efficiency” corespunde lui “none”. Vectorul de intrare se poate introduce: - prin scriere in zona din stanga jos; - clic oriunde in ploturile de intrare - linia rosie se va translata pe orizontala spre punctul de clic; - se trage cu maus-ul linia rosie.

Fig. 5.3.4

R-V : F_log_1

File Edit . . .

Labour = 5

Effic. =5 Salar. =

Intrari (galben) Iesiri (bleu)

Input [5 5] Plot points 101 Move : left right …

Oppened syst. Help Close

Fiec. rand = o regula.

Clic pe o regula.pt. a o vedea in

“status bar”

Trage ac. linie pt. a

schim. intrarile si a

genera o noua iesire

Ac. linie da val.

defuzificata

Casutele de mai sus = iesirea fiec. reguli. Aici se face agregarea si

defuzif.

Deplas. ploturi

Dupa asta, PC-ul realizeaza un nou calcul si se poate vedea procesul de inferenta in actiune. La regula 1 se poate observa cum consecinta “salary is small” este retezata cu gradul

rezultat din antecedent; acesta este procesul implication in actiune. R-V da o interpretare intregului FIS, aratand cum forma diferitelor MF influenteaza rezultatul final. Se poate lucra cu pana la 30 reguli si 7 variabile.

Page 53: Fuzzy

R-V arata un singur calcul in timp, in detaliu. Pentru a vedea intreaga suprafata de iesire (adica intreaga anvergura a iesirii, in functie de intreaga anvergura a intrarii): View – View surface.

5.3.6.- S-V (fig. 5.3.5) Schimbarea “X grids” (sau “Y grids”): se modif. 15 – Clic pe “X grids”. “Ref. Input”: pentru sisteme care au mai multe intrari decat permite plotul; de

exemplu, la un sistem cu o iesire si 4 intrari, se ploteaza o iesire in functie de 2 intrari, celelalte 2 intrari fiind constante.

5.3.7.- IMPORTUL SI EXPORTUL DIN GUI-TOOLS

Pentru redeschiderea unui FIS, el trebuie salvat pe disc (ca un text ASCII), cu sufixul “fis”.

Fig. 5.3.5

S-V : F_log_1

File Edit . . .

X (input) labour Y (intput) efficiency Z (output) salary X grids : 15 Y grids : 15 Evaluate

Ref. Input :

Help Close

Spr. de raspuns pt. orice iesire, in functie de una sau doua intrari.

Cu mausul se pot roti axele

Se poate introd. alta intrare, care nu apare in

spr.

Clic cand vreti sa plotati

Cea mai recenta operatie

Page 54: Fuzzy

5.4.- MODUL DE LUCRU IN “COMMAND LINE”

Pentru a se deschide un FIS existent in F-L-T: >> a=readfis('tipper.fis'), sau: (‘f_log_1.fis’). MATLAB raspunde: a = name: 'tipper' type: 'mamdani' andMethod: 'min' orMethod: 'max' defuzzMethod: 'centroid' impMethod: 'min' aggMethod: 'max' input: [1x2 struct] output: [1x1 struct] rule: [1x3 struct] Etichetele din stanga listei reprezinta diferitele componente ale structurii MATLAB asociate cu “tipper.fis”. OBS.: “tipper.fis” este analog cu “F_log_1.fis” din cap. 5.3.2, variabilele avand alte nume: labour → service; efficiency → food; salary → tip, referindu-se la un “dineu la restaurant”. Se pot accesa componente ale structurii MATLAB, asociate cu “tipper.fis”, cu comenzi de tipul:

>> a.type ans = mamdani

Analog: a.input a.input(1), mf(1) Functia “getfis(a)” returneaza aproximativ aceleasi informatii ca si “a” (de mai sus): >> getfis(a) Name = tipper Type = mamdani NumInputs = 2 InLabels = service food NumOutputs = 1 OutLabels = tip NumRules = 3 AndMethod = min OrMethod = max ImpMethod = min AggMethod = max DefuzzMethod = centroid ans = tipper Pentru ca unele campuri de mai sus nu sunt parti ale structurii “a”, nu se obtin informatii tastand “a.Inlabels”, ci “getfis(a,’Inlabels’)”, sau – similar:

getfis(a, ‘input’,1) getfis(a, ‘output’,1) getfis(a, ‘input’,1,’mf’,1). Functia “getfis” este modelata dupa functia Handle Graphics “get”. Exista si “setfis”, care permite schimbarea proprietatilor unui FIS; de ex. schimbarea numelui: a=setfis(a,’name’,’the job’); sau, mai simplu: a.name=’the job’; Apelarea GUI-Tools: >>fuzzy(a) → va apare FIS-E; >>mfedit(a) → MF-E; >>ruleedit(a) → R-E; >>ruleview(a) → R-V; >>surfview(a) → S-V. Dupa deschiderea unui GUI, altul se dechide mai comod cu meniul pull-down.

5.4.1.- VIZUALIZAREA FUNCTIILOR Exista trei functii pentru vizualizarea FIS: plotfis, plotmf si gensurf. >>plotfis(a) → apar trei careuri (de sus) din FIS-E (fig. 5.3.1). Dupa inchiderea unei figuri MATLAB, sau fereastra GUI, functia “plotmf” ploteaza toate MF asociate unei variabile date: >>plotmf(a,’input’,1) → fig. 5.4.1.

Fig. 5.4.1

>>plotmf(a,’output’,1) → fig. 5.4.2.

Fig. 5.4.2

Aceste ploturi vor apare in MF-E sau intr-o figura MATLAB, daca “plotmf” este apelata cand una, sau cealalta, este deschisa. >>gensurf (a) → ploteaza oricare iesire, in functie de una sau doua intrari.

Page 55: Fuzzy

5.4.2- CONSTRUIREA UNUI FIS, PORNIND DE LA ZERO

Regulile se pot construi cu functia “addrule”. Fiecare variabila (de intrare, sau de iesire) si fiecare MF are un index. Regulile se construiesc cu propozitii de forma:

if input1 is MF1 or input2 is MF3 then output1 is MF2 (weight = 0.5)

Aceasta regula se transforma intr-o structura, pe baza urmatoarei logici: daca sistemul are m intari si n iesiri, atunci primele m numere din structura regulii corespund intrarilor de la 1 la m. Numarul din coloana 1 este indexul pentru MF asociata cu intrarea 1; numarul din coloana 2 este indexul pentru MF asociata cu intrarea 2; s.a.m.d. Analog – urmatoarele n coloane, referitoare la iesiri. Coloana m + n +1 reprezinta ponderea asociata cu aceasta regula (uzual = 1), iar coloana m + n +2 reprezinta conectivul (AND = 1 si OR = 2). Structura regulii de mai sus are forma: 1 3 2 0.5 2. O prima cale de construire a unui FIS, utilizand linii de comenzi in sintaxa MATLAB, este cu functia “newfis”. A doua cale utilizeaza comenzile F-L-T: a=newfis(‘tipper’); a=addmf(a,’input’,1,’service’,0 10]); a=addmf(a,’input’,1,’poor’,’gaussmf’,[1.5 0]); a=addmf(a,’input’,1,’good’,’gaussmf’,[1.5 5]); a=addmf(a,’input’,1,’excellent’,’gaussmf’,[1.5 10]); a=addvar(a,’input’,’food’,[0 10]); a=addmf(a,’input’,2,’rancid’,’trapmf’,[-2 0 1 3]); a=addmf(a,’input’,2,’delicious’,’trapmf’,[7 9 10 12]); a=addvar(a,’output’,’tip’,[0 30]); a=addmf(a,’output’,1,’cheap’,’trimf’,[0 5 10]); a=addmf(a,’output’,1,’average’,’trimf’,[10 15 20]);

a=addmf(a,’output’,1,’generous’,’trimf’,[20 25 30]); ruleList=[… 1 1 1 1 2 2 0 2 1 1 3 2 3 1 2 ]; a=addrule(a,ruleList);

5.4.3- EVALUAREA FIS De ex., evaluam “tipper” pentru intr. [1 2]: >> a=readfis('tipper'); >> evalfis([1 2],a) ans = 5.5586 Facand mai multe evaluari simultane, se realizeaza o crestere de viteza: >> evalfis([3 5;2 7],a) ans = 12.2184 7.7885

5.5.- INFERENTA FUZZY

DE TIP SUGENO Aceasta este – in multe privinte - similara inferentei Mamdani (de mai sus), primele doua parti ale ale procesului (fuzificarea intrarilor si aplicarea operatorului fuzzy) fiind identice. Principala deosebire este ca la inferenta Sugeno MF a iesirilor sunt numai liniare, sau constante. O regula fuzzy pentru un model fuzzy Sugeno de ordinul zero are forma:

if x is A and y is B then z = k, unde A si B sunt multimi fuzzy, iar k este o constanta. Deci toate MF a iesirilor sunt singleton-uri. In figura 5.5.1 se arata prelucrarea uneia din cele trei reguli ale sistemului din cap. 5.2

Fig. 5.5.1

1. Fuzificarea intrarilor

labour is excellent or efficiency is big then salary is generous

Labour = 3 Efficiency = 8

excellent big

2. Apl. oper. OR (max)

3. Apl. met. implication (min)

Agregarea tuturor iesirilor se realizeaza suprapunand careul din dreapta figurii 5.5.1 cu careurile omoloage din celelalte doua reguli, rezultand fig. 5.5.2.

Defuzificarea se face – de regula – cu metoda mediei ponderate, adica se ia suma produselor dintre cele trei abscise cu ordonatele corespunzatoare si se imparte la suma

Page 56: Fuzzy

ordonatelor.

Fig. 5.5.2

Modelul fuzzy Sugeno de ordinul unu are forma:

if x is A and y is B then z = p*x +q*y+r, unde A si B sunt multimi fuzzy, iar p, q si r sunt constante. Acum in careul corespunzator iesirii din figura 5.5.1 apare un “singleton mobil”, lungimea lui avand o variatie liniara. Datorita dependentei liniare a fiecarei reguli de variabilele de intrare in sistem, metoda Sugeno este indicata ca un supervizor interpolator a mai multor controlere liniare aplicate diferitelor conditii de operare a unui sistem dinamic neliniar. De ex., comportarea unui avion se poate schimba brusc cu altitudinea si viteza. Controlerele liniare, desi sunt usor de implementat si se adapteaza oricaror conditii de zbor, trebuie reglate des pentru a se adapta cu starile variabile ale aeronavei. Un FIS Sugeno este cel mai potrivit in acest caz, pentru ca poate interpola cu usurinta amplificatorii liniari aparuti in spatiul intrarilor. Analog, un sistem Sugeno este indicat pentru modelarea sistemelor neliniare, prin interpolarea mai multor modele liniare.

5.5.1- UN EXEMPLU: “DOUA LINII” Consideram un sistem cu o intrare si o iesire, existent in “sugeno1.fis”: >> fismat=readfis('sugeno1'); >> getfis(fismat,'output',1) Name = output NumMFs = 2 MFLabels = line1 line2 Range = [0 1] Variabila de iesire are doua MF: >> getfis(fismat,'output',1,'mf',1) Name = line1 Type = linear Params = [-1 -1] >> getfis(fismat,'output',1,'mf',2) Name = line2 Type = linear

Params = [1 -1] Acestea sunt functii liniare de variabila de intrare. MF line1 este definit de ecuatia: output=(-1)*input+(-1), iar MF line2 este definit de ecuatia: output=(1)*input+(-1). MF ale intrarilor si regulile precizeaza care dintre functiile de iesire se vor activa si cand. >> showrule(fismat) ans = 1. If (input is low) then (output is line1) (1) 2. If (input is high) then (output is line2) (1) Functia “plotmf” ne arata ca MF low se refera la valori ale intrarii < 0, iar high – la valori > 0. >> subplot(211),plotmf(fismat,'input',1); → fig. 5.5.3-a. Functia “gensurf” arata cum iesirea din sistemul fuzzy se comuta usor de la linia numita line1 la line2: >> subplot(212),gensurf(fismat) → fig. 5.5.3-b

Fig. 5.5.3

Acest exemplu arata cum sistemul de tip Sugeno permite incorporarea sistemelor liniare in sisteme fuzzy. Extrapoland, se poate construi un sistem fuzzy care sa comute intre cateva controlere liniare si optimale, in timp ce sistemul neliniar se misca in spatiul sau.

5.6.- “anfis” si ANFIS EDITOR GUI Pana acum am studiat structuri de FIS care transmit intrarile in sistem la intrarile in MF, intrarile in MF la reguli, regulile la iesirile din ele, aceste iesiri la iesirile din MF si iesirile din MF la o valoare unica a iesirii din sistem. Am lucrat numai cu MF tipice si alese cam arbitrar. Asadar, am aplicat inferenta fuzzy pentru modelarea sistemelor la care structura regulilor este predeterminata de interpretarea pe care am dat-o caracteristicilor variabilelor din model.

Page 57: Fuzzy

In continuare vom prezenta functia “anfis” si ANFIS Editor GUI din F-L-T. Aceste instrumente aplica tehnicile de inferenta fuzzy pentru modelarea datelor. Vom vedea cum, folosind aceste aplicatii din F-L-T, parametrii MF se vor alege automat. Consideram ca vrem sa aplicam inferenta fuzzy unui sistem pentru care avem o multime de date de i/o pe care le utilizam pentru modelare. Nu este necesar sa avem o structura predeterminata a modelului. Sunt cazuri in care – pe baza datelor - nu se poate discerne ce MF trebuie alese. In locul unei alegeri a parametrilor pentru o MF arbitrara, acesti parametrii se pot alege astfel ca sa adapteze MF datelor de i/o, utilizand metoda de instruire neuro-adaptiva (din “anfis”). Aceste tehnici furnizeaza, pentru modelarea fuzzy, o metoda de instruire a informatiilor privind o multime de date, cu scopul calcularii parametrilor MF care permit cel mai bine FIS-ului asociat sa urmareasca datele de i/o. Aceasta metoda de instruire actioneaza similar cu RNA. Functia F-L-T care realizeaza aceasta ajustare a parametrilor MF se numeste “anfis” si se poate accesa prin linie de comanda, sau prin ANFIS Editor GUI. ANFIS este acronimul de la adaptive neuro-fuzzy inference system. Plecand de la un set de date de i/o, “anfis” construieste un FIS la care parametrii MF sunt ajustati utilizand un algoritm “backprop”, singur sau combinat cu o metoda a resturilor patratice. Aceasta ii permite sistemului fuzzy sa se instruiasca pe baza datelor pe care le modeleaza. Pentru interpretarea spatiului de i/o se utilizeaza o structura de tip retea – similara cu o RNA – ce prelucreaza intrarile in sistem spre intrarile in MF si parametrii asociati, apoi iesirile din MF si parametrii asociati spre iesirile din sistem. Parametrii asociati cu MF se vor modifica in timpul procesului de instruire. Calculul (sau modificarea) acestor parametrii se face cu un vector gradient, care indica masura in care FIS modeleaza datele de i/o pentru un set dat de parametrii. Dupa obtinerea vectorului gradient, pentru ajustarea parametrilor se poate aplica orice rutina de optimizare, in vederea reducerii erorii (definite ca suma patratelor diferentelor dintre iesirile actuale si cele dorite).

Modelarea cu “anfis” este similara multor tehnici de identificare a sistemelor. Mai intai se realizeaza o structura parametrizata a modelului (relationand intrarile la MF, pe acestea la reguli, apoi la iesiri, etc.). In continuare se colecteaza date de i/o, intr-o forma adecvata pentru ca “anfis” sa le utilizeze pentru antrenare. Apoi “anfis” antreneaza modelul FIS in vederea ameliorarii datelor ce-i sunt prezentate, modificand parametrii MF corespunzator cu criteriul de eroare folosit. Acest tip de modelare este eficient daca datele de antrenare prezenate “anfis”-ului pentru estimarea parametrilor MF sunt integral reprezentative pentru caracteristicile datelor pe care FIS-ul antrenat le va modela. Acest lucru nu se intampla frecvent, uneori datele fiind afectate de zgomot de masurare. Acesta este momentul in care validarea modelului intra in joc.

5.6.1- VALIDAREA MODELULUI PE

BAZA DATELOR PENTRU VERIFICARE SI TESTARE

Validarea modelului este procesul in care vectorii de intrare din setul de date de i/o, care nu s-au folosit la antrenarea FIS, sunt prezentati modelului FIS antrenat, pentru a vedea cat de bine modelul FIS estimeaza valorile corespunzatoare iesirii din setul de date. Aceasta se realizeaza cu testing data set din ANFIS Ed. GUI. Pentru validarea modelului, “anfis” mai are un alt tip de set de date, numit checking data set, utilizat pentru a vedea potentialul modelului de a se potrivi cu datele. Cand checking data este prezentat “anfis”-ului, analog cu datele de antrenare, modelul FIS se alege astfel ca sa aiba parametrii asociati corspunzatori erorii minime a modelului datelor de verificare. O chestiune ce apare la validarea modelelor construite folosind tehnici adaptive este selectarea unui set de date care sa fie reprezentative pentru datele pe care modelul este antrenat sa le modeleze si – in plus – sa fie suficient de diferite de setul de date de antrenare, astfel ca validarea sa nu devina triviala. Daca s-a colectat o mare cantitate de date, sunt sperante ca acestea sa contina toate trasaturile reprezentative necesare, astfel ca

Page 58: Fuzzy

selectarea unui set de date, in vederea verificarii sau testarii, este usoara. Totusi, daca se apreciaza ca zgomotul de masurare este prezent, este posibil ca setul de date de antrenare sa nu includa toate trasaturile reprezentative. Ideea de baza a utilizarii unui set de date de verificare pentru validarea modelului este aceea ca dupa un anumit moment al antrenarii, modelul incepe sa se potriveasca cu setul de date de antrenare. In principiu, eroarea modelului pentru setul de date de verificare tinde sa descreasca pana cand antrenarea depaseste momentul mentionat mai sus, pentru ca apoi sa creasca brusc.

5.6.2- LIMITARI ALE ANFIS ANFIS este mai complex ca FIS, dar nu este valabil pentru toate variantele FIS, el suportand numai sisteme tip Sugeno, care trebuie sa fie: - de ordinul 1 sau 0; - cu o iesire, obtinuta prin defuzificarea mediei ponderate (MF a iesirii – liniara sau const.); - cu ponderea 1 pentru fiecare regula. Daca structura FIS nu indeplineste aceste constrangeri, se da eroare. Mai mult, ANFIS nu accepta customizari, adica nu iti poti crea propriile MF si functii de defuzificare, ci se vor utiliza cele din dotare.

5.6.3- ANFIS EDITOR GUI Se tast.: >>anfisedit; apare:

Fig. 5.6.1

ANFIS Ed.

File Edit View

ANFIS info

# of inp.: 1 # of out.: 1 # of inp. mfs: 0

Structure

Clear Plot

Load data

Type From Generate

FIS Train FIS

Test FIS

Help Close

Load, save or open a fuz. Sug. sys.

Open or edit a FIS with other

GUIs

Plot region Testing data appears in blue as … Training data appears in blue as ooo Checking data appears in blue as +++ FIS output appear in red as xxx

Situatia cu nr. de i/o si nr.i/o

din MFs

Dupa generarea sau incarcarea

unui FIS, cu ac. buton se poate

deschide o reprez. grafica a structurii sale

de i/o

Incarcarea sau antrenarea,

testarea, verificarea

datelor de pe disc sao

workspace, sau load demodata. Datele apar in “plot region”

Testarea datelor atasate modelului FIS. Plotul apare in “plot region”

Descarca datele selectate sub

“Type” si sterge “plot region”

Incarca sau genereaza FIS

din datele incarcate, utilizand

propriile MFs si reguli

Anterneaza FIS dupa apl. met. de optimiz., a

tolerantei erorii si nr. de epoci. Ac. genereaza plotul erorii, in “plot region”

Cu acest GUI se poate: - incarca date (de antrenare, testare sau verificare), selectand in “Load data” butonul radio corespunzator, apoi “Load data…”;

datele incarcate sunt plotate in zona “Plot”. - genera sau incarca un model FIS initial, cu butonul “Generate FIS”; - vizualiza structura unui model FIS, dupa ce

Page 59: Fuzzy

un model FIS initial a fost generat sau incarcat, cu butonul “Structure”; - alege metoda de optimizare parametrica a modelului FIS: back propagation, sau o combinatie a lui cu resturi patratice (metoda hibrida). - alege numarul epocilor de anternare si a tolerantei erorii de antrenare; - antrena modelul FIS → butonul “Train Now”; antrenarea ajusteaza parametrii MFs si ploteaza eroarea; - vizualiza iesirea modelului FIS in functie de iesirea din datele de antrenare (sau verificare, sau testare) → butonul “Test Now”. Aceasta functie ploteaza datele de testare atasate iesirii din FIS, in zona “Plot”. De asemenea se poate utiliza bara meniu a lui ANFIS Editor GUI pentru a incarca o initializare a antrenarii FIS, a salva FIS-ul anternat, a deschide un nou sistem Sugeno sau sa deschidem orice alt GUIs pentru a interpreta modelul FIS antrenat.

TESTARE SI ANTRENARE Pentru a incepe antrenarea unui FIS, utilizand “anfis” sau ANFIS Ed. GUI, mai intai trebuie sa avem un set de date de antrenare care sa contina perechile de date de i/o necesare pentru modelarea sistemului tinta. Alteori trebuie sa avem un set de date de testare cu care sa verificam capacitatea de generalizare a FIS-ului rezultat si / sau un set de date de verificare, utilizate la ajustarea modelului in timpul antrenarii. Utilizarea setului de date de testare si a setului de date de verificare pentru validarea modelului, s-a prezentat mai sus. Asa cum s-a aratat, potrivirea se realizeaza prin testarea FIS-ului antrenat cu datele de antrenare, prin comparare cu datele de verificare si alegerea parametrilor MFs astfel ca sa aiba eroarea de verificare minima (aceasta eroare indicand potrivirea modelului). Pentru a realiza acest obiectiv, se vor examina atent graficele erorii de antrenare. Uzual, seturile de date pentru antrenare si verificare se colecteaza pe baza observarii sistemului tinta si sunt stocate in fisiere separate. NOTA: Orice set de date ce se incarca in ANFIS Editor GUI (sau in linia de comanda “anfis”) trebuie sa fie o matrice cu datele de intrare aranjate ca vectori, cu exceptia ultimei coloane, in care se pun datele de iesire.

5.7.- CLUSTERIZAREA FUZZY Clusterizarea datelor numerice este baza multor clasificari si algoritmi de modelare ale sistemelor. Scopul clusterizarii este de a identifica grupurile naturale dintr-o multime de date. F-L-T are instrumente care permit gasirea clusterilor in datele de i/o. Cu informatiile despre clusteri se poate genera un FIS de tip Sugeno, care modeleaza optim comportarea datelor folosind un set minim de reguli. Regulile fac ele insele partitia, pe baza calitatilor fuzzy asociate fiecarui cluster de date. Acest tip de generare a unui FIS se poate realiza automat utilizand in linia de comanda functia genfis2

5.7.1- CLUSTERIZAREA FUZZY A MEDIILOR C

Aceasta este o tehnica de clusterizare a datelor la care fiecare punct de date apartine unui cluster, cu un anumit grad de apartenenta. In F-L-T exista functia “fcm” care incepe cu alegerea centrelor clusterilor (in locatia medie a fiecarui cluster). Aceasta alegere este cel mai adesea inexacta; ca urmare “fcm” atribuie fiecarui punct de date un grad de apartenenta pentru fiecare cluster. Corectand iterativ centrele clusterilor si gradele de apartenenta, “fcm” deplaseaza centrele clusterilor spre locatia lor corecta. Aceasta iteratie se bazeaza pe minimizarea unei functii obiectiv ce reprezinta distanta de la un punct de date la centrul clusterului, ponderata cu gradul de apartenenta respectiv. Iesirea din “fcm” este o lista a centrelor clusterilor si a gradelor de apartenenta pentru fiecare punct de date. Cu aceste informatii se poate construi un FIS creand MF pentru calitatile fuzzy ale fiecarui cluster. Exemplu: CLUSTERI IN PLAN Incarcam un set de date:

>> load fcmdata.dat >> plot (fcmdata(:,1),fcmdata(:,2),'o')

Apare figura 5.7.1. Acum apelam functia “fcm” si ii cerem sa gaseasca doi clusteri in acest set de date,

>> [center,U,obj_fcn]=fcm(fcmdata,2); Iteration count = 1, obj. fcn = 8.933363 Iteration count = 2, obj. fcn = 6.910409 Iteration count = 3, obj. fcn = 5.431071 Iteration count = 4, obj. fcn = 4.082928 Iteration count = 5, obj. fcn = 3.830947 Iteration count = 6, obj. fcn = 3.802926

Page 60: Fuzzy

Fig. 5.7.1

Iteration count = 7, obj. fcn = 3.798428 Iteration count = 8, obj. fcn = 3.797611 Iteration count = 9, obj. fcn = 3.797462 Iteration count = 10, obj. fcn = 3.797435 Iteration count = 11, obj. fcn = 3.797430,

pana cand functia obiectiv nu mai descreste semnificativ. Variabila “center” contine coordonatele centrelor a doi clusteri, “U” contine gradele de apartenenta pentru fiecare dintre punctele de date, iar “obj_fcn” contine evolutia functiei obiectiv. Functia “fcm” este o bucla iterativa ce contine subrutinele: “initfcm” (care initializeaza problema), “distfcm” (calculeaza distantele), “stepfcm” (care face o iteratie completa). Plotul functiei obiectiv arata progresul clusterizarii: >> plot(obj_fcn) → Fig. 5.7.2. In programul de mai jos “fcm” clasifica doi clusteri:

[center,U,obj_fcn]=fcm(fcmdata,2); maxU=max(U); index1=find(U(1,:)==maxU); index2=find(U(2,:)==maxU); line(fcmdata(index1,1),fcmdata(index1,2),'linestyle','none','marker','o','color','g'); line(fcmdata(index2,1),fcmdata(index2,2),'linest yle','none','marker','x','color','r');

Fig. 5.7.2

hold on plot(center(1,1),center(1,2),'ko','markersize',15,'LineWidth',2) plot(center(2,1),center(2,2),'kx','markersize',15,'LineWidth',2);

In figura 5.7.3 centrele clusterilor se indica cu caractere bold.

Fig. 5.7.3

5.8- LUCRUL CU SIMULINK

SIMULINK este acronimul pentru cuvintele simulation si link (legatura). Acest termen face trimitere la “simulare”, adica reproducerea artificiala a ce se intampla, sau s-ar putea intampla, in lumea reala. SIMULINK este un toolbox in MATLAB 6.5.

5.8.1- CART & POLE Consideram problema: DINAMICA CULISEI CU UN PENDUL INVERSAT (CART & POLE Simulation), din fig. 5.8.1 (Sa se proiecteze un controler care sa echilibreze un pendul montat – inversat – cu o articulatie, de o culisa si sa mentina culisa la o anumita pozitie. Pentru realizarea echilibrului se actioneaza cu o forta orizontala c)

Fig. 5.8.1

Cinematica acestui sistem:

Page 61: Fuzzy

.j)cossin(L

i)sinLcosLx(a

;j)sinL(i)cosLx(v

;j)cosLh(i)sinLx(r

2

2C

C

C

1

1

1

θθθθ

θθθθ

θθθθ

θθ

⋅+⋅−

−⋅⋅−⋅⋅+=

⋅⋅−+⋅⋅+=

⋅++⋅+=

&&&

&&&&&

&&&

⎪⎪⎪

⎪⎪⎪

=−−

−⋅+⋅

−⋅

⋅−⋅=

0c)sin

cos(mLcos3

L4tgg

cos3L4tggx

2 θθ

θθθθ

ΜθΜ

θθ

θ

&

&&&&

&&&&

(5.8.1) Dinamica o studiem cu metoda lui d’Alembert (fig. 5.8.2):

(5.8.5) in care: mM +=Μ . (5.8.6)

Ecuatia diferentiala a lui θ :

)]./cosm3/4(L[/]//)sinLmc(cossing[

;cosccossinLm

sing)cosm33.1(L;csinLm

tgg)cosmcos3

4(L

2

2

2

2

2

ΜθΜ

θθθθθ

θθθθ

θΜθθΜ

θθ

θΜθθθ

Μ

⋅−⋅

⋅⋅+⋅−⋅=

⋅−⋅⋅⋅−

−⋅=⋅⋅−⋅⋅

−⋅⋅−

−⋅=⋅⋅−⋅

&&&

&

&&

&

&&

(5.8.7) Schema in SIMULINK pentru aceasta problema exista in MATLAB: >>slcp – En → apare schema din figura 5.8.3. Clic dreapta pe blocul “Cart & Pole Dynamics”- Look under mask → apare figura 5.8.4. Pentru implementarea in SIMULINK a schemelor din figurile 5.8.3 si 5.8.4 (comasate), plecand de la zero, procedam astfel: Fig. 5.8.2 La promptul MATLAB tastam: >>simulink – En (sau clic pe butonul cu rosu din bara de sus)– Files – New – Model – Se deschide fereastra “Untitled” - In fereastra din stanga “...Library…” clic pe “Simulink”, apoi (mai jos) pe “Sources” - Din semi-fereastra din dreapta se trage blocul “Signal Generator” {Produce una dintre urmatoarele forme de unda: sinus, patrata, dinte de ferastrau, zgomot aleator cu distr. uniforma} – Dublu clic pe bloc - Se deschide o caseta: in “Wave form” se alege “square”; la “Amplitudine” → 1.5; “Frequency” (= pulsatia) → 0.628 = π/5 rad/s. Schimbam eticheta in “Target Position”. Scrierea unei etichete: Dublu clic stanga la pozitia dorita - Se tasteaza textul – Clic in alta parte. Se poate muta in alta pozitie, cu butonul stang. Stergerea unei etichete: Clic in ea – Se sterge textul - Clic in alta parte.

HcxM

0sinVLcosHL3

mL)cossin(mLmgV

)sincos(mLxmH

2

2

2

−=

=⋅−⋅+

+⋅−=

−⋅+⋅=

&&

&&

&&&

&&&&&

θθθ

θθθθ

θθθθ

(5.8.2) Rezolvam acest sistem de ecuatii:

)sincos(mLxmcxM

0sincosmLsinmLsinmgcossinmL

cosmLcosxm3

mL

2

2

22

2

θθθθ

θθθ

θθθθθθ

θθθθ

&&&&&&&

&

&&&

&&&&&&

−⋅−⋅−=

=⋅+

+⋅+−⋅−

−⋅+⋅⋅+

(5.8.3) Deducem:

⎪⎩

⎪⎨⎧

=−−⋅++

=−+

0c)sincos(mLx)mM(

0singcosxL34

2 θθθθ

θθθ

&&&&&

&&&&

Se mai trage blocul (din dreapta figurii 5.8.3) “Scope” (osciloscopul) si cele doua blocuri “Constant” (din partea stanga a figurii 5.8.3).

(5.8.4)

Page 62: Fuzzy

Fig. 5.8.3

Fig. 5.8.4

Dublu clic pe blocul “Constant” – In caseta ce se deschide se tasteaza: “Constant value” → 0.1538, pentru al doilea bloc, caruia i se schimba si eticheta in “Target …”.Clic (in stanga) pe “Nonlinear” – Se trage “Switch” (comutator) {Iesirea este egala cu prima intrare cat timp semnalul de comanda (a doua intrare) este ≥ decat o valoare de prag; in caz contrar, iesirea este = cu a treia intrare}. Dublu clic pe bloc – “Treshold” (valoarea de prag) → 0. Clic (in stangga) pe “Signals…” – Se trag succesiv cinci blocuri “Mux” {Are mai multe intrari, dar o singura iesire; el realizeaza combinarea a n semnale scalare intr-un singur canal de iesire} - Dublu clic pe bloc – “Nr. of inputs” → 4 (de ex.); “Display option” → none.

De exemplu in figura 5.8.4 un bloc “Mux” are patru intrari: u(1)=c; u(2)=sinθ; u(3)=cosθ; u(4)= ; (5.8.8) θ&la blocul “Mux” de jos mai apare o a cincea intrare: u(5)= . (5.8.9) θ&&Rotirea blocurilor: selectare – clic dreapta – Format … , sau cu butonul FORMAT … Se mai trag blocurile “Inport” {Defineste un port de intrare [utilizat in operatia group, sau pentru a crea o S-function (explicate mai jos)]. Se numeroteaza cu numere naturale, incepand cu 1 (care este cel mai de sus)} si “Outport” {Analog cu precedentul, dar pentru iesire}. Dublu clic pe blocul “in_1” din fig. 5.8.4 – In campul “Port number” se tasteaza: 1; in “Port

Page 63: Fuzzy

dimens. (-1 for dynamically sized)”: -1; in “Sample time”: -1; in rest: auto. Clic (in stanga) pe “Functions…” – Se trag patru blocuri “Fcn”, notate in fig. 5.8.4 cu “cos…”, “sin…” si “f(u)”. {“Fcn” este cel mai versatil bloc. El permite implementarea oricarei functii de i/o exprimata printr-o relatie matematica. Intrarea se indica prin litera “u”. De exemplu, functia:

⎪⎩

⎪⎨

≤<>

=

2uifu3u2if)r*usin(

3uif)ucos(5y

2

unde r este o constanta, are forma (in blocul “Fcn”): 5*cos(u)*(u>3)+sin(r*u)*(u>2&& u<=3)+u^2*(u<=2). “Fcn” poate lucra si cu mai multe semnale la intrare, notate: u(1), . . . u(n). Iesirea din “Fcn” este intotdeauna o valoare scalara} - Dublu clic pe blocul “Fcn” – In campul “Expression” se tasteaza functia dorita. De exemplu, blocul “f(u)” din figura 5.8.4 (centru sus), avand intrarile (5.8.8) si iesirea

, implementeaza functia (5.8.7): θ&&(g*u(2)-u(3)*(u(1)+m*l*u(4) *u(4) *u(2))/

(mc+m))/(l*(4/3-m*u(3) *u(3))/ (mc+m)), (5.8.10) in care: mc = M ; l = L, (5.8.11) iar blocul “f(u)” din figura 5.8.4 (centru jos), avand intrarile (5.8.8), (5.8.9) si iesirea , implementeaza prima fun. din (5.8.5):

x&&

g*u(2)/ u(3)-4*l* u(5)/(3* u(3)). (5.8.12) Se mai trage in figura 5.8.3 (dreapta sus) un bloc “S-function” {Acesta permite includerea unei S-function intr-o schema Simulink. O S-function este un fisier ASCII care inplementeaza o functie generica prin: - o schema Simulink; -o structura tip MATLAB; -o procedura C sau Fortran (Mex-file)} – Dublu clic pe bloc – In campul “S-function name” se tasteaza: animcp, iar in “S-function param.”: Clic (in stanga) pe “Math”- Din semi-fereastra din dreapta se trage blocul “Sum”- Se deschide o caseta: in “Icon shape” se alege “rectangular”, iar in “List of signs” tastam “+-“ - OK – Se roteste blocul. Clic (in stanga) pe “Continuous”- Se trag succesiv patru blocuri “Integrator”. Clic (in stanga), mai jos de “Simul.”, pe “Fuzzy Logic Toolbox” (sau se tasteaza: >>fuzblock – En) – Se trage blocul “Fuzzy Logic Controller” (FLC) {In stanga mai este

blocul “FLC with R-V” care este o extensie a lui “FLC”, permitand vizualizarea prelucrarii regulilor in timpul simularii. Daca se trage “FLC with R-V” si se face clic dreapta pe el – Look under mask – Apare figura 5.8.5, in care

Fig. 5.8.5

blocul “Zero-Order Hold” este din grupul (din stanga) “Discrete”. Acest bloc implementeaza si retine o functie esantionata, avand ca parametru perioada de esantionare. El discretizeaza semnalele: esantioneaza semnalul da la intrare la un anumit moment si retine aceasta valoare la iesire, pana la urmatorul moment.} – Pentru a initia FLC (cu sau fara R-V): dublu clic pe bloc – In campul “FIS File or Structure” se tasteaza: fismatrix . {Blocul FLC genereaza automat o reprezentare cu o diagrama bloc pentru FIS (abilitate numita Fuzzy Wizard), utilizand blocuri existente in Simulink. Fuzzy Wizard nu poate manipula FIS cu MF custom, sau cu functiile AND, OR, IMP si AGG in afara celor de mai jos: -orMethod: max; -andMethod: min, prod; -impMethod: min, prod; -aggMethod: max. In aceste cazuri, blocul FLC utilizeaza S-function “sffis”, pentru a simula FIS.} – Clic dreapta pe blocul FLC– Look under mask – Apare figura 5.8.6.

Fig. 5.8.6

Daca in figura 5.8.3 facem clic dreapta pe blocul FLC – Look under mask – Apare o figura analoaga cu fig. 5.8.6, dar in centru scrie FIS, iar dedesubt: FIS Wizard - Clic dreapta pe blocul FIS Wizard – Apare o fereastra mai mare…

Page 64: Fuzzy

Daca blocurile nu sunt aliniate, se trag (cu butonul din stanga) in pozitia corecta. Pentru trasarea conexiunilor intre blocuri, se procedeaza (de exemplu) astfel: Se pozitioneaza mausul la iesirea (>) din “f(u)” si se apasa butonul stgan: promptul devine o cruce; mentind butonul apasat se misca mausul spre dreapta, pana la atingerea intrarii (>) in primul “Integrator”; daca operatia s-a facut corect, parantezele unghiulare dispar si dreapta se transforma in sageata - Analog se leaga cele doua integratoare – Se plaseaza promptul la mijlocul unei linii si se apasa tasta Ctrl: promptul devine o cruce; se misca mausul in jos si apoi la stganga (astfel s-a introdus un punct de legatura) – Cu tasta Ctrl apasata se traseaza o orizontala ce depaseste putin blocul “Mux” si apoi o verticala in sus; se selecteaza ultima linie si, cu clic stanga pe capatul ei se traseaza o orizontala la “Mux” – Daca dreptele nu perpendiculare, se face clic stganga in coltul ce trebuie modificat - Promptul devine un cerc - Se misca mausul pana ce coltul devine drept – Analog se conecteaza celelalte blocuri. 5.8.2- OPERATIUNEA “GROUP” (grupare) Claritatea unei scheme bloc se deterioreaza odata cu cresterea numarului de blocuri. O schema complexa se poate descompune in subscheme mai simple, ceea ce este benefic pentru analiza si depanare (fiecare componenta se testeaza separat, apoi se testeaza intrega schema). Nu exista un criteriu unic care sa dea cea mai buna descomp. Cea mai utilizata este descrierea pe doua nivele, dar se poate merge si mai adanc. Un numar de blocuri elementare se poate grupa intr-un super-bloc numit group, ce este similar cu blocurile din Simulink. O schema obtinuta prin gruparea blocurilor poate fi ulterior grupata intr-un super-grup, s.a.m.d. Gruparea se realizeaza cu metoda numita selection via bounding box (selectare cu un careu limita): Clic intr-un punct din schema (unde nu este vre-un bloc sau o linie); butonul se tine apasat – Promptul devine o cruce neagra, cu o cruce alba in interior – Miscand mausul, apare un careu punctat – La terminarea apasarii, toate blocurile si liniile incluse (chiar partial) in careu sunt selectate –

CTRL+G (sau: Options – Group) – Apare un bloc ca in figura 5.8.7, numit ca in eticheta;

Fig. 5.8.7

eticheta se va modifica, pt. evitarea confuziei. Daca pe acest bloc se face dublu clic, se deschide o fereastra in care apare schema detaliata a grupului, la care intrarea este un inport, iar iesirea – un outport. Daca grupul are mai multe i/o, fiecare port se eticheteaza cu un numar, incepand cu 1. Simulink numeroteaza automat porturile, numarul 1 fiind cel mai de sus; aceasta ordine se poate modifica ulterior. Daca porturile blocului “group” nu sunt specificate, Simulink le insereaza automat. De aceea putem sa nu tinem cont, punand porturile de i/o (utilizand blocurile din “Signals…”) inainte de operatia group. CTRL+U (sau: Options – Ungroup) este operatia inversa.

5.8.3- UTILIZAREA MASTII (MASK) Blocurile realizate cu optiunea “group” au acelasi icon, deosebindu-se numai prin nume si nu au “help”. Acest dezavantaj se poate surmonta mascand grupul: Se selecteaza grupul – Options – Mask – Se deschide o fereastra de dialog, in care sunt campurile: - New block type → numele blocului. - Dialog strings separated by ⏐ → etichetele parametrii blocului (prima este titlul blocului). - Initialization commands → se definesc comenzile de initializare si corespondenta intre parametrii ferestrei si ai variabilelor blocului. Stringurile ferestrei se acceseaza cu notatia: @1, @2, s.a.m.d. Aceste variabile sunt locale, neproducand nici-un efect exterior. Acest camp suporta orice expresie MATLAB. - Drawing commands → se deseneaza un icon adecvat. Admite comanda plot (similara) cu cea din MATLAB. - Help string → text ce apare la clic pe butonul “Help”. La dublu clic pe blocul mascat se deschide o fereastra de dialog; este posibil ca – in locul acestei deschidei - sa se apeleze o functie

Page 65: Fuzzy

MATLAB, daca in Dialog strings…se noteaza o functie MATLAB inclusa in comanda “eval”. De exemplu: Eval(‘load data_sat’) → la dublu

clic pe bloc, se va incarca fisierul “data_sat.mat”. Iconul blocului se poate desena utilizand functia MATLAB “iconedit”, ce permite desenarea cu mausul.

Page 66: Fuzzy

6.- MONITORIZAREA PROCESULUI DE UZARE A SCULEI LA STRUNJIRE, UTILIZAND O RETEA NEURONALA ARTIFICIALA

6.1.- INTRODUCERE Cercetarile actuale privind procesele de prelucrare mecanica sunt orientate pe doua obiective importante: cresterea calitatii si reducerea pretului de cost. Pentru atingerea acestor obiective, metodele inteligentei artificiale sunt - cu siguranta - cele mai moderne mijloace. Studiul dinamicii masinilor - unelte se realizeaza aici in sensul "monitorizarii", adica verificarea si corectarea functionarii masinii. Utilizarea retelelor neuronale artificiale (R N A) in cadrul monitorizarii este una din cele mai noi metode dedicate acestui scop . Starea procesului de prelucrare este urmarita cu niste senzori ale caror semnale se proceseaza in calculator, apoi el identifica o clasa din multimea claselor ( conditiilor de lucru ) c = [ c 1 , c 2 , . . . , c n ] , conform relatiei: daca tinf < x ≤ tsup , atunci c = c i , (6.1.1) unde x este multimea indicilor ( vectorul ) de monitorizare x = [ x1 , x2 ,. . . , x m ] , iar t - valorile limita admisibile. Indicele de monitorizare x i este legat de semnalul y i ( t ) al senzorului prin: x i = P (y i), unde P(.) este un operator ce poate fi dependent de timp, neliniar, sau chiar de forma neanalitica. Deci x i poate fi chiar semnalul y i sau alta valoare ( referitoare la y i ), in domeniul timpului sau frecventei. Inregistrarile se pot ordona ca in tabelul 6.1.1, in care m este numarul indicilor de monitorizare, n - numarul claselor , iar N- numarul inregistrarilor . Deci x k = [ x ( k ,1) , x ( k ,2 ) , . . . , x (k , m)]. Tabelul 6.1.1

Inre - Indicii de monitorizare C L A S E gistr. X 1 X 2 ..... X i ...... X m ( Conditiile procesului )

x 1

x( 1,1 ) x( 1,2 ) ........ x( 1,i ) ........ x( 1,m ) c ( x 1 ) ∈ [ c 1, c 2,....,c n ]

x 2

x( 2,1 ) x( 2,2 ) ......... x( 2,i ) ......... x( 2,m ) c ( x 2 ) ∈ [ c 1, c 2,....,c n ]

... ... ... ... ... ... ... ..... x N

x( N,1) x( N,2) ......... x( N,i ) ....... x(N,m ) c ( x N) ∈ [ c 1, c 2,....,c n ]

reprezinta “vectorul k”, iar c ( x k ) ∈ [c1 ,c 2 ,..., c n ] indica faptul ca la aceasta inregistrare a rezultat una din clasele : c1 , c 2 ,... , c n . Procesul de aschiere poate fi privit ca un sistem dinamic, a carui intrare este x, iar iesirea - c Se poate introduce functia Q : c → x , (6. 1.2) care este "obscura ", pentru ca asupra ei nu se pot face decat masuratori indirecte care sunt , sau despre care se poate prespune ca sunt legate de functie . Daca pentru Q nu se poate obtine nici-o relatie teoretica , atunci se poate utiliza o metoda de interpretare a datelor care este formata din doua faze : instruire si clasificare. In faza de instruire se formeaza o relatie empirica intre x si c pentru un set de masuratori la care se cunosc atat c cat si x (o parte a datelor din tabelul 6.1.1). In faza de clasificare se utilizeaza restul datelor din tabelul 1.1, in scopul predictiei lui c, testand astfel si ajustand relatia empirica. Se face astfel inversarea functiei Q: Q -1 : x → c . (6.1.3) Acum relatia empirica este capabila sa clasifice o noua inregistrare x intr-o anumita clasa c i . Functia Q poate avea diferite aspecte : analitica (putin probabil), o retea neuronala artificiala , o recunoastere a formelor , un sistem fuzzy , etc .

6.2.- MONITORIZAREA UZURII SCULEI

Pentru monitorizarea procesului de strunjire , in [3] se prezinta conditiile (starile) sculei definite in tabelul 6.2.1, in care: “scula deteriorata” se identifica printr-un crater de uzura pe fata de degajare, avand o suprafata mai mare de 0,05 mm2 ; “trepidatiile” sunt identificate printr-un

Page 67: Fuzzy

Tabelul 6.2.1

zgomot de inalta frecventa si urme pe suprafata prelucrata; “aschierea intermitenta” este produsa de prelucrarea unei piese care are un canal pe suprafata, în lungul directiei de avans . Asupra conditiilor din tabelul 2.1 vom inteveni, pentru a le aduce in concordanta cu [7, 8], din care citam (fig. 6.2.1): “Criteriile uzuale pentru uzura cutitelor din otel rapid si a cutitelor cu placute din carburi metalice sunt :

Fig. 6.2.1

-latimea medie a uzurii prin desprindere pe fata de asezare principala este VBB = 0,3 mm, daca aceasta are o forma regulata ; -latimea maxima a aceleiasi uzuri VBB max = 0,6 mm, daca aceasta are o forma neregulata”. C = rε = raza de varf a sculei = max. 2 mm. Vom adapta clasele h1 , h3 , h4 si h5, ( din tabelul 2.1 conform acestor prescriptii si vom reordona clasele ca in tabelul 2.2 . In legatura cu clasa h2 , in [8] se arata ca "deteriorarea avansata (catastrofala) inseamna deteriorarea intensiva a taisurilor cutitului, dupa o perioada de aschiere normala, sub actiunea combinata a tuturor factorilor ce concura la prelucrare". Pentru evaluarea cantitativa a acestei stari, propunem o depasire cu mai mult de 0,1 mm a criteriilor de uzura, iar depasirea cu pana la 0,1 mm desemnand o “uzura severa”. Vom elimina clasa h7 din tabelul 6.2.1, pt. ca aschierea intermitenta (care s-ar intampla in cazul prezentei unui canal de pana) nu se intalneste pe strung, realizarea canalului fiind ultima operatie din procesul tehnologic de prelucrare a arborelui. In concluzie, cele n = 7 clase referitoare la conditiile de lucru sunt cele din tabelul 6.2.2, in care la primele trei clase conditiile de lucru sunt normale, iar la celelalte clase - anormale. Pentru obtinerea indicilor de monitorizare vom utiliza: - marci tensometrice lipite pe cutit, pentru masurarea componentelor fortei de aschiere (Fy -forta

Page 68: Fuzzy

Tabelul 6.2.2 Clasa

Starea sculei

Identificare pe scula

Identificare pe piesa

c 1

Normala V B < 0,1 mm, sau V B max < 0,2 mm

---------

c 2 Uzura usoara 0,11<VB<0,2mm,sau 0,21<VBmax<0,4mm

---------

c 3 Uzura medie 0,21<VB<0,3mm,sau 0,41<VBmax<0,6mm

---------

c 4 Uzura severa 0,31<VB<0,4mm,sau 0,61<VBmax<0,7mm

---------

c 5 Deteriorarea sculei

V B > 0,41 mm, sau VBmax > 0,71mm

---------

c 6 Trepidatii Cutit nou Urme c 7 Strunjire in gol --------- ---------

de respingere, Fz -forta principala); - accelerometre puse pe portcutit pentru masurarea acceleratiile vibratiilor (ax , ay ,az); - puterea data de motorul electric (W). Semnalele senzorilor se inregistreaza simultan cu aparatul SPIDER 8 (H.B.M.). Spider este un sistem electronic de masurare ce se conecteaza la un PC si executa masurari electrice a marimilor mecanice (tensiuni, forte, acceleratii) si temperaturi. Fiecare canal are un convertor A/D separat, care permite masurarea frecventelor de la 1/s la 9600/s.

6.3.- SIMULAREA MONITORIZARII

Vom modela functia Q din (6.1.2, 3) cu o RNA la care vectorul de intrare are m = 11 elemente, iar vector de iesire n = 8 elemente (clase). Dupa instruire, toate elementele vectorului de iesire din RNA vor fi zero, cu exceptia unuia ( avand valoarea 1 ) a carui pozitie reprezinta numarul clasei. Vom simula monitorizarea unui strung , pentru a avea astfel soft-ul (in MATLAB 6.5) pregatit. Vibrogramele reprezentand: - variatiile componentelor Fx , Fy , Fz ale fortei de aschiere ; - deplasarea relativa y dintre cutit si piesa , pe directia de respingere ; - puterea W furnizata de motorul electric ; le realizam cu functiile RANDN si RAND . Avand in vedere relatiile dintre componentele fortei de aschiere: Fx = ( 0,25 ÷ 0,35 ) Fz ; Fy = (0,35 ÷ 0,50 ) Fz , vom lua: Fz = 100 + 20 .* randn ( 1 , N ) ; Fy = 42 + 10 .* randn (1 , N); Fx = 30 + 6 .* randn ( 1 , N ) , in care N este numarul de esantioane . In privinta deplasarii relative y: y = 1.5 .* randn ( 1 , N ); puterea de aschiere o consideram: W = 25 + 5.*rand ( 1 , N ) . Pe baza consideratiilor de mai sus , INDICII DE MONITORIZARE sunt : X1 = F = ( 222

zyx FFF ++ )1 / 2 → valoarea medie a fortei rezultante de aschiere , unde ( F este valoarea medie); X2 = CF = [ max ( Fy ) - min ( Fy ) ] / Fy → factorul de varf al fortei Fy ;

X3 = 22

zy

y

v

y

FF

FFF

+= → raportul fortelor medii , din planul vertical ;

X4 → rata traversarii mediei pentru forta Fy ( numarul intersectiilor oscilogramei Fy cu valoarea sa medie ) ; acest indice este calculat cu ajutorul unei variabile de tip contor , care se mareste cu o unitate atunci cand produsul [ Fy ( k ) - Fy ] [ Fy ( k + 1 ) - Fy ] este negativ , fapt ce se

Page 69: Fuzzy

intampla cand curba Fy ( t ) intersecteaza orizontala Fy . X5 → media densitatii spectrale de putere a lui Fy in banda de frecvente 1 - 125 Hz ; X6 → media densitatii spectrale de putere a lui Fy in banda de frecvente 126 - 250 Hz ; X7 → media densitatii spectrale de putere a lui Fy in banda de frecvente 251 - 500 Hz ; X8 → media densitatii spectrale de putere a vibratiei y in banda de frecvente 0 - 125 Hz ; X9 → media densitatii spectrale de putere a vibratiei y in banda de frecvente 126 - 250 Hz ; X10 → media densitatii spectrale de putere a vibratiei y in banda de frecvente 251 - 500 Hz ; X11 → valoarea medie patratica a puterii de aschiere W. Matricea P , de dimensiuni ( 11 x Q ) – continand cei 11 indici de monitorizare ( X1 ÷ X11 ) si in care Q este numarul de experimente , are aspectul din relatia (6.3.1) . P = 1.0e+004 * Columns 1 through 4 0.01115160236262 0.01111776208232 0.01128320014418 0.01114477828469 0.00011872250749 0.00013863976981 0.00013464454684 0.00014977366854 0.00003837450623 0.00003824647822 0.00003865774920 0.00003882892721 0.01240000000000 0.01400000000000 0.01200000000000 0.01320000000000 1.19649632745768 1.14774467329114 1.19195116081064 1.16814906208573 0.01449785276532 0.00834934135711 0.01067465623032 0.01128964235457 (6.3.1) 0.00917486420559 0.01114635004294 0.01009532191768 0.01272595316720 0.00019465249851 0.00038721111922 0.00027689491860 0.00017997231379 0.00018259338286 0.00027753290547 0.00026326336937 0.00017247427052 0.00019509725158 0.00028420715164 0.00026315476562 0.00022039394774 0.00274914751134 0.00275807333095 0.00274997052944 0.00274503600945 Pentru evaluarea DENSITATII SPECTRALE DE PUTERE se pleaca de la realizarile procesului aleator Y ( t ) , pe un interval finit [ -T , T ] : x( 1 )

T ( t ) , x( 2 )T ( t ) , . . . , x( n )

T ( t ) ; x( i )T ( t )

= 0 in afara intervalului [ -T , T ] . Acestor realizari li se aplica transformata Fourier directa :

X( i )T ( jν ) = F [x( i )

T ( t ) ] = , ( i = 1 , 2 , . . . , n ) . ∫+∞

∞−

Π− ⋅⋅ dtetx tjiT

ν2)( )(

Formam expresiile 2)( )(

21 νjXT

iT , ( i = 1 , 2 , . . . , n ) , numite periodograme .

Densitatea spectrala de putere Px x este limita (cand T → ∞) a mediei multimii periodogramelor:

∑=

∞→=

n

iTxx jP1

lim)( ν 12

2

TX jT

i( ) ( )ν .

Densitatea spectrala de putere o calculam cu functia PSD: Pxx = PSD (X, NFFT, Fs, WINDOW) care estimeaza aceasta caracteristica a unui semnal (vector) X utilizand metoda medierii periodogramelor (Welch). Fs este frecventa de esantionare utilizata pentru scalarea figurilor: Fs = 1 / Δ , unde Δ este perioada de esantionare. Teorema de esantionare (Shannon) arata ca: Fs ≥ 2 fm a x , unde fm a x este cea mai inalta frecventa din spectrul semnalului. In cazul prelucrarii pe strung fm a x = 500 Hz , deci Fs = 1000 Hz . [ Pxx , F ] = PSD ( X , NFFT , Fs , NOVERLAP ] returneaza un vector al frecventelor avand aceeasi dimensine ca si Pxx , iar PSD se estimeaza suprapunand sectiunile lui X cu NOVERLAP esantioane. Valorile implicite ale parametrilor sunt: NFFT = 256 ( sau LENGTH ( X ) , daca este mai mic), NOVERLAP = 0 , WINDOW = HANNING ( NFFT ) , Fs = 2 . Parametrii impliciti se pot obtine omitandu-i, sau inseriind o matrice goala []. Vom utiliza : [ Pxx , f ] = psd ( x , [ ] , 1000 ) , unde length ( Pxx ) = 256 / 2 +1 = 129 , deci elementele lui Pxx care corespund frecventelor indicilor de monitorizare X5 ÷ X10 ii determinam cu relatiile: 125 / u = 250 / v = 500 / 129 → u = 32 ; v = 64 . Unitatea de masura a densitatii spectrale de putere o determinam utilizand teorema lui Parseval :

Page 70: Fuzzy

SUM ( Pxx ) / LENGTH ( Pxx ) = SUM ( X.^2 ) / LENGTH ( X ) = COV ( X ) . Valoarea RMS a semnalului este: RMS ( X ) = ( COV ( X ))1 / 2 . Daca semnalul de intrare se masoara in Volts, atunci Pxx se masoara in [ Volt^2 / Hz ] . Densitatile spectrale de putere pentru forta Fy si deplasarea relativa y se prezinta in figura 6.3.1. Clasa rezultata la experimentul ( simulat ) i , care deci corespunde la o serie de 11 indici de

Fig . 6.3.1

monitorizare, o stabilim cu functia REM ( = restul impartirii ) in secventa MATLAB : T = zeros ( 8 , Q ) ; for i = 1 : Q in = ( i - 1 ) * N ; cl = rem ( in , 8 ) + 1 ; T ( cl , i ) = 1 ; end

in care : Q = numarul de experimente , N = numarul de esantioane , 8 = numarul claselor , T = matrice de dimensiune ( 8 x Q ) in care rangul elementului nenul din coloana i este clasa rezultata (una din cele 8 clase). Pentru Q = 20 a rezultat matricea T din relatia (6.3.2). T = Columns 1 through 20 1 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 1 0 0 0 0 0 0 1 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 1 0 0 0 0 0 0 1 0 0 0 0 0 0 0 1 0 0 0 0 0 0 1 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 1 0 0 (6.3.2) 0 0 0 0 1 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 1 0 0 0 0 0 0 1 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 1 0 0 0 0 0 0 1 0 0 0 0 0 0 0 1 0 0 0 0 0 0 RNA-a cu r = 11 intrari ( indicii de monitorizare ) si s3 = 8 iesiri ( clase ) o realizam cu 3 straturi , avand s1 = 15 neuroni pe primul strat, s2 = 19 neuroni pe al doilea strat si s3 = 8 . Functiile de activare sunt : tansig pentru primele doua straturi si logsig pentru ultimul. Reteaua -

Page 71: Fuzzy

creata cu functia newff , antrenata cu functia train ( cu learning rate lr = 0.003 ) si simulata cu functia sim - are urmatoarea evolutie : TRAINLM, Epoch 0/50, MSE 0.480514/0.05, Gradient 46421.1/1e-010 TRAINLM, Epoch 15/50, MSE 0.163363/0.05, Gradient 350.185/1e-010 TRAINLM, Epoch 30/50, MSE 0.102061/0.05, Gradient 310.379/1e-010 (6.3.3) TRAINLM, Epoch 45/50, MSE 0.101914/0.05, Gradient 81.7795/1e-010 TRAINLM, Epoch 50/50, MSE 0.1019/0.05, Gradient 93.6065/1e-010 TRAINLM, Maximum epoch reached, performance goal was not met. Reteaua furnizeaza la iesire matricea yr , avand aceleasi dimensiuni ( 8 x Q ) ca si matricea T . O parte a matricei yr este aratata in relatia (6.3.4). yr = Columns 8 through 14 0.0064 0.0000 0.1623 0.0000 0.0043 0.0002 0.0000 0.0000 0.0000 0.0003 0.0000 0.0000 0.0000 0.0000 0.8282 0.0128 0.0145 0.0006 0.1757 0.0001 0.0463 0.0039 0.0000 0.6531 0.0004 0.3958 0.0007 0.0000 (6.3.4) 0.0002 0.0003 0.0000 0.1537 0.0001 0.0563 0.0091 0.8925 0.0930 0.0020 0.0030 0.3629 0.0022 0.0179 0.0000 0.1384 0.0017 0.6219 0.0004 0.1858 0.0128 0.0174 0.9997 0.0035 0.0180 0.0030 0.0016 1.0000 Rangul elementului maxim din coloana i este clasa furnizata de RNA . Din compararea coloanelor matricelor T (6.3.2) si yr (6.3.4) se observa ca clasificarea a reusit numai in cazul coloanelor 8 , 10 , 11 , 14. In figura 6.3.2 se arata tinta (“o”) si iesirile din RNA (“x”); din totalul de Q = 20 coloane , clasificarea a reusit pentru 8 coloane , deci rata succesului este 8 / 20 = 0,4 = 40 % .

Fig. 6.3.2

In acest moment aceasta rata ne satisface, pentru ca clasificarea nu este realizata pentru un caz real. In situatia reala , performanta RNA o vom ameliora prin : - cresterea ratei de instruire ( lr ) , a numarului de neuroni ( s1 , s2 ) , a numarului de epoci ( 50 in (6.3.3)) si a numarului de straturi; - schimbarea functiilor de activare si a punctului de initializare a ponderilor si deplasarilor .

Page 72: Fuzzy

6.4.- STANDUL EXPERIMENTAL A) COMPONENTELE FORTEI DE ASCHIERE Fortele Fy si Fz se vor masura cu ajutorul a doua marci tensometrice 1 si 2 (fig. 6.4.1), lipite pe cutitul de strung si conectate la SPIDER. Marcile sunt de tipul HBM (scurte, R=120 Ω). Cutitul (armat cu placuta aschietoare, avand dimensiunile: h = 37 mm ; a = 23 ; b = 23) este solicitat la incovoiere de catre forta Fz si la compresiune de Fy . Masurand deformatiile relative ε1 si ε2 , se pot calcula eforturile unitare indicate in figura 6.4.1: σ 1 = E ε 1 , σ 2 = E ε 2 . (6.4.1) Eforturile unitare de compresiune si incovoiere sunt : σ c = Fy / ( a b ) , σ i = M / W = ( Fz h – Fy a / 2 ) / ( b a 2 / 6 ) . (6.4.2)

Fig. 6.4.1- Masurarea tensometrica a componentelor fortei de aschiere

Din figura 6.4.1: σ1 = σi + σ c , σ2 = σi - σ c , (6.4.3) de unde : σ i = ( σ1 + σ2 ) / 2 , σ c = ( σ1 - σ 2 ) / 2 . (6.4.4) Rezulta: F y = a b ( σ1 - σ2 ) / 2 , F z = a2 b ( 2σ1 - σ2 ) / ( 6 h ) . (6.4.5) Pentru compensarea termica, se face un montaj tensometric identic cu cel din figura 6.4.1, pe alt cutit.

Solicitarea de incovoiere a cutitului este produsa de Fz si Fy : 6/ab2/aF

;6/ab

hF2

yz2

zz

⋅=

⋅= σσ .

Se stie ca: Fy ≈ 0,3 Fz , deci %909.037F

5,11F3,0

z

z

z

y ==⋅⋅

=σσ

; ca urmare, incovoierea produsa de

Fy se poate neglija. Relatiile (6.4.2) devin :

%303,0;F107,523

F3,0;F018,06/23

37F

i

cz

42

zcz3

zi ==⋅⋅=

⋅=⋅=

⋅= −

σσ

σσ

In concluzie, solicitarile produse de Fy se pot neglija si cu montajul tensometric masuram numai forta principala de aschiere Fz= a2 b σ / ( 6 h ) , (6.4.6) in care vom lua: σ = (σ1 + σ2 ) / 2 . (6.4.7) Marcile de pe fetele superioare ale celor doua cutite se leaga la un canal al aparatului SPIDER, iar cele de pe fetele inferioare - la alt canal, conform conexiunii in semi-punte din figura 6.4.2, in

Page 73: Fuzzy

care pinul 8 este semnalul de masurat, pinii 5 si 6 – tensiunea de excitatie a puntii, pinii 13 si 12–senzorii circuitului. Experimentul s-a efectuat pe un strung S N B 400 X 1500 (Arad). S-a procedat astfel :

Fig. 6.4.2

a)- S-au etalonat marcile , incarcand static cutitul pe fata de degajare - in apropierea varfului - cu o greutate G = 10 daN. Indicatiile celor doua marci sunt in sensuri opuse, pentru ca marcile tensometrice sunt solicitate 1- la compresiune, iar 2- la intindere:

ε1 I n r = - 0,006.41 ; ε2

I n r = 0,0037. Aceasta asimetrie consideram ca se datoreaza neliniaritatilor din sistem. In medie:

ε I n r e g = (5, 1 + 3, 7 ) .10 -3 / 2 = 4,4 . 10 -3 . (6.4.8) Greutatea G provoaca o alungire relativa: ε = σ / E = M / ( E W ) = G h / ( E b a 2 / 6 ) = 6 x 3,7 / ( 2,1 x 10 6 x 2,33) x G ; ε = 0,869 x 10 -6 x G → ε real = 8,69 x 10 -6 (6.4.9) Scara alungirilor relative: K = ε r e a l / ε I n r e g = 1,957 x 10 -3 . (6.4.10) b)- S-au realizat 186 inregistrari in timpul strunjirii longitudinale a unui cilindru din OLC 45 (Φ113, L = 1000), cu un cutit de strung cu carbura metalica P 20 si ℜ = 45o. De exemplu, pentru regimul de lucru nr. 101: turatia n = 250 rot/min., avansul longitudinal s = 0,292 mm/rot., adancimea de aschiere t = 1 mm , diametrul piesei ∅ = 107 mm, s-au obtinut oscilogramele din figura 6.4.3, în care curba cu coordonatele negative este ε1

I n r , iar cea cu coordonatele pozitive

-0,04

-0,02

0

0,02

0,04

1 9 17 25 33 41 49 57 65 73 81 89 97

Fig. 6.4.3 - ε 1 I n r (t) si ε 2 I n r (t)

este ε2 I n r .

Page 74: Fuzzy

Numerele de pe abscisa din aceasta figura si din figurile asemanatoare, de mai jos, reprezinta multiplii intervalului de timp de esantionare: Δ t = 0,5 / 4800 = 1,041666 . 10-4 s. (6.4.11) Aspectul calitativ al vibrogramelor consideram ca este corespunzator, verificand relatia | ε1 | >ε2, sau σ1 >σ2 , rezultata din (6.4.3). De regula, la inceputul si sfarsitul inregistrarii se observa o deviatie, datorita - in principal -necompensarii termice: cutitul in lucru se incalzeste, iar cutitul martor ramane la temperatura mediului ambiant. Cum fiecare regim de lucru a durat cca. 30 sec., in prima jumatate a timpului conectandu-se aparatul Spider pentru 1 sec., intre inregistrari fiind (evident) o pauza pentru schimbarea parametrilor regimului de aschiere si pentru transmiterea la PC a datelor culese, vom considera necompensarea termica ca fiind neglijabila. Formula (6.4.6) devine, tinand cont de (6.4.7 si 6.4.10) si de faptul ca ε1 < 0 :

)(10975,1101,2

7,3123,2

2KE

h6ba

2E

h6ba

2h6baF

inr1

inr2

363

inr1

inr2

2real1

real2

221

2

z

εε

εεεεσσ

−⋅⋅⋅⋅⋅

=

=−

⋅⋅⋅=−

⋅⋅=+

⋅=

F z = 1136 ( ε2 I n r - ε1

I n r ) [daN], (6.4.12) De exemplu, in experimentul nr. 101 oscilograma Fz (t) se prezinta in fig. 6.4.4.

6 46 66 87 07 27 47 6

1 1 5 2 9 4 3 5 7 7 1 8 5 9 9 1 1 3 1 2 7 1 4 1 1 5 5 1 6 9 1 8 3

Fig. 6.4.4 – Fz (t)

B) ACCELERATIILE PORTCUTITULUI Pe o placuta solidara cu portcutitul s-au montat 3 accelerometre Bruel&Kjaer, de tip 4329, avand domeniul de masura 0,1 < f < 20 KHz si numarul de fabricatie: - 75281 (cu sensibilitatea s = 12,5 mV/g, pentru acceleratia pe directia x (ax); - 75284 (cu sensibilitatea s = 11,5 mV/g, pentru acceleratia pe directia y (ay); - 75282 (cu sensibilitatea s = 13,5 mV/g, pentru acceleratia pe directia z (az). Conectarea fiecarui accelerometru la aparatul Spider se face conform schemei din fig. 6.4.5.

Fig. 6.4.5

Exista relatia: ]s/m[as81,9g

sa

]g/mV[s]mV[aa 2

reala ⋅=⋅== , (6.4.13)

Page 75: Fuzzy

in care a [mV] este semnalul intrat in Spider; deci valoarea inregistrata in PC este :

inrz

inrz

realz

inry

inry

realy

inrx

inrx

realx

a727,0a5,13

81,9a

a853,0a5,11

81,9a

a785,0a5,12

81,9a

⋅=⋅=

⋅=⋅=

⋅=⋅=

(6.4.14)

De exemplu, la inregistrarea nr. 101 s-au obtinut oscilogramele din fig. 6.4.6.

- 0 .0 0 6- 0 .0 0 4- 0 .0 0 2

00 .0 0 20 .0 0 40 .0 0 60 .0 0 8

1 1 7 3 3 4 9 6 5 8 1 9 7 1 1 3 1 2 9 1 4 5 1 6 1 1 7 7

a)- Acc. axinr(t)

- 0 .0 0 8- 0 .0 0 6- 0 .0 0 4- 0 .0 0 2

00 .0 0 20 .0 0 40 .0 0 60 .0 0 8

1 1 7 3 3 4 9 6 5 8 1 9 7 1 1 3 1 2 9 1 4 5 1 6 1 1 7 7

b)- Acc. ayinr(t)

- 0 .0 1 2- 0 .0 1

- 0 .0 0 8- 0 .0 0 6- 0 .0 0 4- 0 .0 0 2

00 .0 0 20 .0 0 40 .0 0 6

1 1 7 3 3 4 9 6 5 8 1 9 7 1 1 3 1 2 9 1 4 5 1 6 1 1 7 7

c)- Acc. azinr(t)

Fig. 6.4.6 C)- TEMPERATURA MEDIE A TAISULUI SCULEI [5] a)- Caldura de aschiere. Bilantul termic la aschierea metalelor În procesul de aschiere are loc ridicarea temperaturii aschiei, sculei si semifabricatului, ca urmare a transformarii unui procent de 99,5% din lucrul mecanic de aschiere în caldura. Exista

Page 76: Fuzzy

trei surse de caldura (figura 6.4.7): - planul de forfecare; - suprafata de degajare a sculei; - fata de asezare a sculei. Daca se noteaza cu Qφ, Qγ si Qα cantitatea de caldura provenita din aceste surse, atunci, cantitatea totala de caldura este data de relatia: Q=Qφ+Qγ+Qα. (6.4.15) Caldura degajata se propaga în aschie, scula, piesa si mediul înconjurator astfel ca se poate face precizarea: mspspap QQQQQQQQ ++++++= γγααφφ , (6.4.16)

Fig. 6.4.7. Surse de caldura la aschiere

unde: este cantitatea de caldura provenita din transformarea lucrului mecanic de deformare

în planul de forfecare si preluata de piesa; - cantitatea de caldura provenita din

transformarea lucrului mecanic de deformare în planul de forfecare si preluata de aschie; - cantitatea de caldura provenita din transformarea lucrului mecanic de frecare pe fata de asezare si preluata de piesa; - cantitatea de caldura provenita din transformarea lucrului mecanic de frecare pe fata de asezare si preluata de scula; - cantitatea de caldura provenita din

transformarea lucrului mecanic de frecare pe fata de degajare si preluata de scula; - cantitatea de caldura provenita din transformarea lucrului mecanic de frecare pe fata de degajare si preluata de aschie; Q

pQφ

aQφ

pQα

sQα

sQγ

aQγ

m – cantitatea de caldura preluata direct de mediul ambiant. Repartizarea caldurii de aschiere între aschie, piesa, scula si mediul ambiant depinde de procedeul de aschiere, caracterististicile termice ale materialului piesei si sculei, de regimul de aschiere, în special de viteza de aschiere. Orientativ, cantitatea de caldura - la strunjire – se repartizeaza astfel: 75% în aschie; 20% în piesa; 4% în scula; 1% în mediul ambiant, dar difera mult de aceasta stare, odata cu cresterea vitezei de aschiere. b)- Metode experimentale pentru masurarea temperaturii taisului sculei Metodele experimentale pentru masurarea temperaturii de aschiere pot fi împartite în doua grupe:

- metode prin care se determina temperatura medie a aschiei si a semifabricatului (metoda calorimetrica; metoda culorii de revenire; metoda substantelor termocolore);

- metode prin care se determina temperatura diferitelor zone ale aschiei sau ale sculei (metoda termoelectrica, metoda radiatiei). Pentru determinarea temperaturii medii a taisului, se pot utiliza termocuplele formate de materialul sculei si al piesei (termocuplul natural). Scula trebuie, în mod obligatoriu, izolata din punct de vedere electric fata de batiul masinii. In inregistrarile de la nr. 1 la 144 s-a utilizat aparatul Spider, conform conexiunii din fig. 6.4.8.

Page 77: Fuzzy

Fig. 6.4.8

Circuitul inchizandu-se prin cutia de viteze si cutia de avansuri, contactele realizandu-se in diferite puncte (de la un regim de aschiere la altul), inregistrarile din PC nu sunt relevante. Ca urmare, pt. inregistrarile de la nr. 145 la 191 s-a utilizat un montaj in care circuitul electric piesa-scula se închide printr-un colector cu grafit (fig. 6.4.9).

Fig. 6.4.9

Voltmetrul masoara o tensiune direct proportionala cu temp. Scara voltmetrului are 48 de diviziuni, la care corespunde 20 mV, deci o diviziune are 20 / 48 = 0,417 mV/div. Acest termocuplu nu se poate etalona pentru ca nu se poate reproduce contactul scula-piesa intr-un cuptor (cu temperatura cunoscuta). D)- RUGOZITATEA R a a suprafetei prelucrate Incepand cu inregistrarea nr. 89 am masurat si rugozitatea, cu aparatul portabil “Surtronic 3+” produs de firma “Taylor / Hobson – Pneumo” (Anglia). Parametrul Ra al rugozitatatii este media aritmetica a distantelor de la profilul suprafetei la linia

medie: dx)x(yL1R

L

0a ⋅= ∫ .

E)- PUTEREA data de motorul electric In capitolul 6.2 s-a aratat ca pentru obtinerea indicilor de monitorizare in [3] s-a utilizat si puterea data de motorul electric. Pentru acest parametru am avut la dispozitie aparatul pentru masurarea puterii unui motorul electric trifazat CIRCUTOR CVM-B (Spania). Nu am utilizat acest aparat pentru ca o perturbatie in procesul de aschiere se amortizeaza in lantul cinematic ce se termina cu motorul electric. Consideram ca fi util de masurat puterea instantanee P = Fz .v, ce implica inregistrarea si variatiei vitezei (turatiei) piesei.

Page 78: Fuzzy

6.5.- REZULTATE EXPERIMENTALE In [3], se efectueaza 624 inregistrari, cutitul fiind deteriorat in 49 cazuri, iar la pag. 134 se indica frecventa de esantionare ν esant = 2 000 Hz. Apreciem aceasta ca fiind cam mare, pentru ca la pag. 135 apare ν max = 500 Hz si – conform teoremei lui Shannon ν esant > 2 ν max . In [4] se arata ca ansamblul scula – piesa are doua frecvente proprii: ν 1 = 150 Hz si ν 2 = 2 500 Hz. S-au realizat 191 inregistrari, parametrii aparatului “Spider” fixandu-se la: frecventa de esantionare = 9600 /s, numarul de perioade = 1, esantioane / perioada = 4800; adica aparatul esantioneaza semnalele primite cu frecventa de 9600 Hz, dar poate transmite la PC o inregistrare cu 4800 esantioane, ce corespunde deci la 0,5 sec. OBS.: La primele 39 de inregistrari frecventa de esantionare a fost de 4800 /s. Fiecare regim de lucru a durat cca. 30 sec., pe la jumatatea timpului conectandu-se aparatul Spider pentru 1 sec. a)- REGIMURILE DE ASCHIERE Diametrul piesei D = 113 ÷ 93,4 mm, adancimea de aschiere t = 0,5 ÷ 3 mm, turatia n = 63 ÷ 500 rot/min., avansul longitudinal s = 0,024 ÷ 0,5 mm/rot.; viteza de aschiere v = π Dmed n / 1000 = 22,3 ÷ 177,4 m/min. La fiecare trecere pe intreaga lungime (L = 1000 mm) a piesei s-a mentinut constanta t, variindu-se s sau n. b)- UZURA CUTITULUI Dupa fiecare trecere s-a masurat uzura sculei, cu o lupa Brinell. Pata de uzura a avut un aspect neregulat (de forma unui triunghi), deci s-a utilizat criteriul de uzura VBmax. Inregistrarile la care s-au atins limitele claselor din tabelul 6.2.2 s-au determinat prin interpolare. c)- VALIDAREA INREGISTRARILOR Eliminam primele 39 de inregistrari, pentru ca frecventa de esantionare a fost de 4800 Hz. Mai eliminam inregistrarile la care ε 1

inr si ε 2inr nu au aspectul din fig. 6.4.3 (in care ε 1

inr < 0 si ε 2inr

> 0): - la inregistrarile nr. 65 ÷ 71 si 88, ε 1inr are valori pozitive; - la inregistrarile nr. 145 si 186, ε 2inr are valori negative; - la 178 si 181 marca tensometrica de jos (ε 1inr) nu a dat semnal; - la 173 accelerometrul ax nu a dat semnal. Inregistrarile 119 ÷ 123 s-au realizat in apropierea unui capat al barei, care prezenta o zona dura pe suprafata, obtinuta – credem – printr-o calire accidentala provocata de o cantitate de apa ajunsa pe piesa la procesul de debitare. Eliminam si aceste inregistrari, pentru ca ele sunt realizate in conditii diferite de celelalte. La inregistrarea nr. 42 s-a rupt varful cutitului, datorita vitezei mari de aschiere (176 m/min.) si scula a trebuit sa fie reascutita; deci prima inregistrare validata are nr. 43. Ca urmare: - in clasa “c1” (VBmax ≤ 0,2 mm) se incadreaza inregistrarile 43 ÷ 63, 72 ÷ 75, 77 ÷ 87, adica 36 Inregistrari (cu cate 4800 esantioane), care le impartim pe fiecare in cate 5 parti (cu cate 960 esantioane), notate cu a ÷ e; dispunem deci de 180 inregistrari; de exemplu, inregistrarea 80c se prezinta in fig. 6.5.1; - clasa “c2” (0,2 < VBmax ≤ 0,4 mm) → 89 ÷ 94, 96 ÷ 112 ⇒ 23 Inr. x 5 parti = 115 inr.; inregistrarea 090c se prezinta in fig. 6.5.2; - “c3” (0,4 < VBmax ≤ 0,6 mm) → 113 ÷ 118, 124 ÷ 130, 132 ÷ 144, 146 ÷ 163 ⇒ 44 Inr. x 5 parti = 220 inr.; inregistrarea 115c se prezinta in fig. 6.5.3; - “c4” (0,6 < VBmax ≤ 0,7 mm) → 164 ÷ 171, 174 ÷ 177, 179 ⇒ 13 Inr. x 5 parti = 65 inr.; inregistrarea 179c se prezinta in fig. 6.5.4;

Page 79: Fuzzy

0

5

1 0

1 5

2 0

2 5

1 1 5 2 9 4 3 5 7 7 1 8 5 9 9 1 1 3 1 2 7 1 4 1 1 5 5 1 6 9 1 8 3

a) – Fz

- 0 .0 1

- 0 .0 0 5

0

0 .0 0 5

0 .0 1

1 1 7 3 3 4 9 6 5 8 1 9 7 1 1 3 1 2 9 1 4 5 1 6 1 1 7 7

b)- Ax

- 0 .0 0 6- 0 .0 0 4- 0 .0 0 2

00 .0 0 20 .0 0 40 .0 0 60 .0 0 8

1 1 7 3 3 4 9 6 5 8 1 9 7 1 1 3 1 2 9 1 4 5 1 6 1 1 7 7

c)- Ay

- 0 .0 1

- 0 .0 0 5

0

0 .0 0 5

0 .0 1

1 1 7 3 3 4 9 6 5 8 1 9 7 1 1 3 1 2 9 1 4 5 1 6 1 1 7 7

d)- Az Fig. 6.5.1

Page 80: Fuzzy

5 45 65 86 06 26 46 6

1 1 6 3 1 4 6 6 1 7 6 9 1 1 0 6 1 2 1 1 3 6 1 5 1 1 6 6 1 8 1

a)- Fz

- 0 .0 0 6- 0 .0 0 4- 0 .0 0 2

00 .0 0 20 .0 0 40 .0 0 60 .0 0 8

1 1 7 3 3 4 9 6 5 8 1 9 7 1 1 3 1 2 9 1 4 5 1 6 1 1 7 7

b)- Ax

- 0 .0 0 8-0 .0 0 6-0 .0 0 4-0 .0 0 2

00 .0 0 20 .0 0 40 .0 0 60 .0 0 8

0 .0 1

1 1 7 3 3 4 9 6 5 8 1 9 7 1 1 3 1 2 9 1 4 5 1 6 1 1 7 7

c)- Ay

- 0 .0 1 5

- 0 .0 1

- 0 .0 0 5

0

0 .0 0 5

0 .0 1

1 1 7 3 3 4 9 6 5 8 1 9 7 1 1 3 1 2 9 1 4 5 1 6 1 1 7 7

d)- Az Fig. 6.5.2

Page 81: Fuzzy

7 27 47 67 88 08 28 48 6

1 1 6 3 1 4 6 6 1 7 6 9 1 1 0 6 1 2 1 1 3 6 1 5 1 1 6 6 1 8 1

a)- Fz

- 0 .0 1

- 0 .0 0 5

0

0 .0 0 5

0 .0 1

1 1 7 3 3 4 9 6 5 8 1 9 7 1 1 3 1 2 9 1 4 5 1 6 1 1 7 7

b)- Ax

- 0 .0 0 8- 0 .0 0 6- 0 .0 0 4- 0 .0 0 2

00 .0 0 20 .0 0 40 .0 0 60 .0 0 8

1 1 7 3 3 4 9 6 5 8 1 9 7 1 1 3 1 2 9 1 4 5 1 6 1 1 7 7

c)- Ay

- 0 .0 1- 0 .0 0 8- 0 .0 0 6- 0 .0 0 4- 0 .0 0 2

00 .0 0 20 .0 0 40 .0 0 6

1 1 7 3 3 4 9 6 5 8 1 9 7 1 1 3 1 2 9 1 4 5 1 6 1 1 7 7

d)- Az Fig. 6.5.3

Page 82: Fuzzy

0

5 0

1 0 0

1 5 0

2 0 0

1 1 7 3 3 4 9 6 5 8 1 9 7 1 1 3 1 2 9 1 4 5 1 6 1 1 7 7

a)- Fz

- 0.015

- 0.01

- 0.005

0

0.005

0.01

1 15 29 43 57 71 85 99 113 127 141 155 169 183

b)- Ax

- 0 .0 0 4- 0 .0 0 3- 0 .0 0 2- 0 .0 0 1

00 .0 0 10 .0 0 20 .0 0 30 .0 0 4

1 1 7 3 3 4 9 6 5 8 1 9 7 1 1 3 1 2 9 1 4 5 1 6 1 1 7 7

c)- Ay

- 0 .0 1 5

- 0 .0 1

- 0 .0 0 5

0

0 .0 0 5

0 .0 1

1 1 7 3 3 4 9 6 5 8 1 9 7 1 1 3 1 2 9 1 4 5 1 6 1 1 7 7

d)- Az Fig. 6.5.4

Page 83: Fuzzy

- “c5” (VBmax > 0,7 mm) → 180, 182 ÷ 184 ⇒ 4 Inr. x 5 parti = 20 inr.; inregistrarea 183c se prezinta in fig. 6.5.5 (numai Fz );

140

145

150

155

160

1 15 29 43 57 71 85 99 113 127 141 155 169 183

Fig. 6.5.5 - Fz - “c6” (Trepidatii) → 64, 67, 76, 95, 131, 172, 185 ⇒ 7 Inr. x 5 parti = 35 inr.; inregistrarea 131c se prezinta in fig. 6.5.6; - “c7” (Strunjire in gol) → 187 ÷ 191 ⇒ 5 inr. x 5 parti = 25 inr.; inregistrarea 188c se prezinta in fig. 6.5.7 (numai Fz ); Pentru validarea inregistrarilor am cautat perechi de inregistrari avand parametrii regimurilor de aschiere apropiati, dar apartinand la clase diferite (tabelul 6.5.1). Tabelul 6.5.1

v [m/min] s [mm/rot] c1 c2 c3 c4 0,096-0,151 72 ÷ 75 157 ÷163

113 – 134 0,167-0,250 153 ÷156 0,264-0,334 91← 90 ÷ 92 114 ÷115 0,353-0,416 89, 93 116 ÷118 174 ÷176

In acest tabel am depistat perechile de inregistrari: - 90 si 115 (la care s = 0,334, v = 131 ÷ 133, t = 1 ÷ 1,2), inregistrarile grafice evidentiind ca valorile medii ale fortei Fz difera, cutitul cu uzura mai mare (c3) generand o forta mai mare, cu cca. 20 N; - 91 si 114 (s = 0,302, v = 131 ÷ 133, t = 1 ÷ 1,2), comentariul fiind analog, diferenta fortelor medii fiind de cca. 10 N. In tabelul 6.5.2 am gasit perechile de inregistrari 89 si 116 (s = 0,353, v = 131 ÷ 133), 93 si 117 (s = 0,375, v = 131 ÷ 133), avand un comportament analog cu perechile de mai sus. Tabelul 6.2

v[m/min] s [mm/rot] t [mm] c2 c3 c4 0,5 ÷ 0,7

113 – 134 0,353 - 1,0 ÷ 1,2 89, 93 116 ÷118 →117 - 0,416 1,4 ÷ 1,5 2 174 ÷176

Din tabelul 6.5.3 deducem tabelul 6.5.4.

Page 84: Fuzzy

02 04 06 08 0

1 0 01 2 0

1 1 5 2 9 4 3 5 7 7 1 8 5 9 9 1 1 3 1 2 7 1 4 1 1 5 5 1 6 9 1 8 3

a) - Fz

- 0 ,0 6

- 0 ,0 4

- 0 ,0 2

0

0 ,0 2

0 ,0 4

0 ,0 6

1 1 5 2 9 4 3 5 7 7 1 8 5 9 9 1 1 3 1 2 7 1 4 1 1 5 5 1 6 9 1 8 3

b) - Ax

- 0 ,0 3

- 0 ,0 2

- 0 ,0 1

0

0 ,0 1

0 ,0 2

0 ,0 3

1 1 5 2 9 4 3 5 7 7 1 8 5 9 9 1 1 3 1 2 7 1 4 1 1 5 5 1 6 9 1 8 3

c) - Ay

- 0 ,1 5

- 0 ,1

- 0 ,0 5

0

0 ,0 5

0 ,1

1 1 5 2 9 4 3 5 7 7 1 8 5 9 9 1 1 3 1 2 7 1 4 1 1 5 5 1 6 9 1 8 3

d) – Az Fig. 6.5.6

Page 85: Fuzzy

-1

0

1

2

3

4

5

1 15 29 43 57 71 85 99 113 127 141 155 169 183

Fig. 6.5.7 - Fz Tabelul 6.5.3

v s t c1 c2 c3 c4 0,5 – 0,7 57-61;78-84 →80,84

86 - 75 0,167 - 1 – 1,2 105 – 106 - 0,250 1,4 – 1,5 124, 152 2 171

Tabelul 6.5.4

Clasa Inregistrarea v s t Fz [daN] c1 057 86 0,25 0,5 23 – 31 084 85 26 – 32

c2 105 83 0,212 1 51 – 61 c3 124 79,3 0,25 1,4 64 – 71 c4 171 75,4 0,25 2 94 – 106

Din tabelul 6.5.5 deducem tabelul 6.5.6. Tabelul 6.5.5

v s t c1 c2 c3 c4 0,5 – 0,7 53-56;85-87 →54

86 - 75 0,264 - 1 – 1,2 99 – 102 →100 - 0,334 1,4 – 1,5 125-128, 148-151 →127,149 2 168← 164-170

Tabelul 6.5.6

Clasa Inregistrarea v s t Fzc1 54 86 0,5 34 – 44 87 85 27 – 34

c2 100 83 0.302 1 73 –78 c3 127 80 1,4 71 – 82 149 77 1,5 82 - 95

c4 168 75,4 2 98 – 109 Din tabelele 6.5.4 si 6.5.6 se observa ca la inregistrarile cu regimuri de aschiere apropiate, valoarea medie a fortei Fz creste cu adancimea de aschiere si cu uzura, asa cum era de asteptat.

Page 86: Fuzzy

6.6.- PRELUCRAREA INREGISTRARILOR 6.6.1- PRELUCRAREA INITIALA Cele 22 de inregistrari evidentiate in finalul cap. 6.5.c le mutam (numai partile “c”) intr-un tabel ”Tab” in EXCEL (numai coloanele “a z” si “F z”); apoi le-am transferat in MATLAB, in care recompunem tabelul ”Tab”, redenumit “t44”. Calculam 12 indici de monitorizare: X1 = v = viteza de aschiere; X2 = t = adancimea de aschiere; X3 = s = avansul longitudinal; X4 = zF = valoarea medie a fortei principale de aschiere; X5 = banda de variatie a lui Fz (inregistrarea continand 960 de esantioane, am impartit-o in 4 parti egale – de cate 240 esantioane – si am calculat maximul si minimul pt. fiecare parte; X5 este diferenta dintre media maximelor si media minimelor); X6 = numarul intersectiilor oscilogramei Fz cu valoarea sa medie zF ; X7 = media densitatii spectrale de putere a lui Fz in banda de frecvente 1 - 2400 Hz ; X8 = media densitatii spectrale de putere a lui Fz in banda de frecvente 2401 - 4800 Hz ; X9 = media densitatii spectrale de putere a lui Fz in banda de frecvente 4801 - 9600 Hz ; X10 = media densitatii spectrale de putere a lui az

inr in banda de frecvente 1 - 2400 Hz ; X11 = media densitatii spectrale de putere a lui az

inr in banda de frecvente 2401 - 4800 Hz ; X12 = media densitatii spectrale de putere a lui az

inr in banda de frecvente 4801 - 9600 Hz . Acesti indici, calculati pt. cele 22 de inregistrari, formeaza matricea “x”, cu 22 linii si 12 coloane: Tabelul 6.6.1 x = Columns 1 through 6 8.6350e+001 5.0000e-001 3.0200e-001 3.8853e+001 8.0770e+000 3.3500e+002 8.6350e+001 5.0000e-001 2.5000e-001 2.6718e+001 7.1227e+000 4.0300e+002 8.4000e+001 5.0000e-001 2.0800e-001 2.0495e+001 5.6573e+000 3.6900e+002 8.4800e+001 5.0000e-001 2.5000e-001 2.9545e+001 6.4752e+000 4.9000e+002 8.4800e+001 5.0000e-001 3.0200e-001 3.1602e+001 6.6115e+000 4.6200e+002 1.3300e+002 1.0000e+000 3.5300e-001 5.9944e+001 5.8277e+000 2.6100e+002 1.3300e+002 1.0000e+000 3.3400e-001 6.0192e+001 5.2483e+000 3.7300e+002 1.3300e+002 1.0000e+000 3.0200e-001 5.8123e+001 6.8160e+000 2.8000e+002 1.3300e+002 1.0000e+000 3.7500e-001 6.3598e+001 5.2313e+001 2.3000e+001 8.3200e+001 1.0000e+000 3.0200e-001 7.5374e+001 6.9523e+000 4.2600e+002 8.3200e+001 1.0000e+000 2.1200e-001 5.7096e+001 6.4070e+000 3.5500e+002 1.3060e+002 1.2000e+000 3.0200e-001 7.7719e+001 9.1675e+000 2.2300e+002 1.3060e+002 1.2000e+000 3.3400e-001 8.1786e+001 7.6339e+000 2.7400e+002 1.3060e+002 1.2000e+000 3.5300e-001 8.9496e+001 7.7021e+000 2.5700e+002 1.3060e+002 1.2000e+000 3.7500e-001 9.1637e+001 7.4976e+000 3.0600e+002 7.9300e+001 1.4000e+000 2.5000e-001 6.6836e+001 8.0429e+000 3.1900e+002 7.9300e+001 1.4000e+000 3.0200e-001 7.6972e+001 9.7469e+000 1.7500e+002 1.2680e+002 1.4000e+000 3.7500e-001 9.0849e+001 2.9854e+001 9.4000e+001 7.7300e+001 1.5000e+000 3.0200e-001 8.8157e+001 8.2474e+000 2.6700e+002 7.5400e+001 2.0000e+000 3.0200e-001 1.0288e+002 9.2016e+000 2.8800e+002 7.5400e+001 2.0000e+000 2.5000e-001 1.0079e+002 9.1334e+000 2.2000e+002 7.1000e+001 3.0000e+000 4.1600e-001 1.5647e+002 1.9494e+001 6.5000e+001 Columns 7 through 12 1.0015e+004 1.3224e+000 1.0440e+000 1.6103e-006 4.6126e-006 2.4307e-005 4.7806e+003 1.6893e+000 9.2422e-001 2.0110e-006 2.5255e-006 1.5556e-005 2.8031e+003 1.3177e+000 6.2598e-001 5.1053e-007 4.9767e-006 1.4966e-005 5.8249e+003 1.0303e+000 1.6544e+000 5.9237e-007 5.3176e-006 1.5565e-005

Page 87: Fuzzy

6.6682e+003 1.0552e+000 1.5393e+000 4.4930e-007 3.5887e-006 1.8399e-005 2.4241e+004 7.4094e-001 6.3477e-001 1.2092e-005 2.9389e-006 1.8129e-005 2.4126e+004 7.9150e-001 7.6272e-001 1.2318e-005 4.2582e-006 1.9059e-005 2.2393e+004 9.0462e-001 5.9583e-001 1.2425e-005 2.8956e-006 2.5164e-005 2.8037e+004 9.8662e-001 9.8148e-001 1.3472e-005 4.6359e-006 2.0672e-005 3.8184e+004 1.3660e+000 1.6390e+000 1.4274e-005 7.1711e-006 1.7458e-005 2.1723e+004 1.0602e+000 6.8397e-001 1.5730e-005 3.3052e-006 1.1485e-005 4.0237e+004 1.2860e+000 6.8552e-001 2.3626e-005 9.1872e-006 1.0742e-005 4.4759e+004 1.1099e+000 4.5915e-001 2.2549e-005 6.2768e-006 7.3750e-006 5.3456e+004 1.0607e+000 8.0039e-001 2.2212e-005 6.4283e-006 8.7312e-006 5.6160e+004 1.2366e+000 1.0382e+000 2.2164e-005 5.6076e-006 8.3173e-006 2.9887e+004 8.8511e-001 6.8384e-001 3.4395e-006 4.6723e-006 1.0022e-005 3.9564e+004 1.3431e+000 6.5909e-001 3.2688e-006 3.7426e-006 1.5528e-005 5.5562e+004 1.1869e+000 7.7111e+000 3.8126e-006 7.5537e-006 4.4260e-003 5.1683e+004 1.2146e+000 6.6422e-001 4.7469e-006 6.9971e-006 8.2586e-006 7.0257e+004 1.7075e+000 1.5874e+000 2.2816e-006 5.8361e-006 1.6512e-005 6.7549e+004 1.6576e+000 6.8277e-001 2.0409e-006 6.8975e-006 1.5319e-005 1.6128e+005 1.5042e+000 1.0078e+000 5.1467e-006 6.5868e-006 1.6759e-005 RNA va recunoaste clasele mai usor, daca ele sunt separate (nu se intrepatrund). Pentru a avea o imagine despre cum sunt dispuse clasele, calculam cateva distante dintre vectorii transpusi pe liniile matricei “x”. Distanta dintre doi vectori A si B: )BA()BA(BA T −−=− . Verificare: A = [ x1 y1 ] T ; B = [ x2 y2 ] T ;

221

221

21

212121

2 )yy()xx(yyxx

]yyxx[BA −+−=⎥⎦

⎤⎢⎣

⎡−−

⋅−−=− ,

regasindu-se distanta dintre doua puncte A = ( x1 , y1 ) si B = ( x2 , y2 ) din planul xOy. Fiecare vector (forma) apares ca un punct in spatiul formelor cu 12 dimensions, punctele apartinand fiecarei clase formand un “nor”. Am calculat distantele dintre un numar de puncte: d90_115 = 2.0633e+004; d90_91 = 1.7355e+003; d114_115 = 4.5223e+003; d91_114 = 1.7843e+004; d89_93 = 3.8041e+003; d116_117 = 2.7049e+003; d89_116 = 2.9215e+004; d93_117 = 2.8125e+004; d57_84 = 1.0479e+003; d57_105 = 1.6943e+004; d57_124 = 2.5106e+004; d57_171 = 6.2768e+004; d54_87 = 3.3490e+003; d127_149 = 1.2119e+004; d87_100 = 3.1516e+004; d87_149 = 4.5015e+004; d87_168 = 6.3589e+004; d57_80 = 1.9778e+003. Mai jos, notatia “0C” inseamna ca cele doua puncte apartin aceleiasi clase; “1C” inseamna ca cele doua puncte apartin de doua clase vecine; “2C” - cele doua puncte apartin de doua clase, avand alta clasa intre ele; “3C” - cele doua puncte au alte doua clase intre ele. Din domeniile de variatie ale distantelor: 0C → 1048 ÷ 12 129 ; 1C → 16 943 ÷ 31 516 ; 2C → 25 106 ÷ 45 015 ; 3C → 62 768 ÷ 63 589 , se observa o singura intrepatrundere (in cazul acestui lot limitat de vectori). Deci, putem sa spunem ca indicii de monitorizare au fost alesi corect. Din tabelul 6.6.1 observam in coloana indicelui X6 ca numai 3 valori sunt de ordinul zecilor (printre care si cea din linia 18, corespunzand inregistrarii nr. 131, din clasa “c6” (Trepidatii)), restul fiind de ordinul sutelor. Concluzionam ca si celelalte doua inregistrari (linia 9 → Inr. 093 si linia 22 → Inr. 179) apartin de c6 , in loc de c2 , respectiv c4 . Acest fapt este confirmat in coloana X5 , valoarea acestui indice pt. cele 3 inregistrari fiind de ordinul zecilor, pt. rest fiind de ordinul unitatilor. Cu inregistrarile din cap. 6c formam doua loturi, numite Instruire si Clasificare (conform cap. 6.6.1), primul lot avand 60% din nr. total de inregistrari (cele notate cu “a”, “c” si “e”), iar lotul al doilea contine inregistrarile notate cu “b” si “d”.

Page 88: Fuzzy

Coloanele “az” si “Fz” apartinand inregistrarilor din lotul “Instruire” le mutam intr-un tabel numit “Tabel_a (b, c, . . .)” pe care-l transferam in MATLAB, unde il recompunem in 7 tabele, corespunzatoare celor 7 clase: Tab_C1, . . . ,Tab_C7. Pe baza valorilor indicilor de monitorizare X6 si X5 am mai mutat in clasa c6 inregistrarile 72 ÷ 75 (din clasa c1) si 180 (din c5). Analiza vizuala a tabelelor “Tabel_a.xls”, “Tabel_b.xls”, . . . ,releva – cu exceptia a doua cazuri – ca inregistrarile dintr-o clasa au valorile medii ale lui Fz apropiate si in crestere de la o clasa la alta (cu cresterea uzurii), cum era de asteptat. Prima exceptie o face inregistrarea 092, la care forta Fz med este de 5-6 ori mai mica ca la inregistrarile vecine (ce au regimuri de aschiere apropiate), fapt datorat – credem – unei defectiuni in circuitul marcilor tensometrice. Eliminam si aceasta inregistrare. A doua exceptie o face inregistrarea 103, la care partile c, d si e prezinta un Fz med la jumatatea valorii din partile a si b (adica se inregistreaza o “cadere” in ultima parte a graficului Fz med (t)). Cauza credem ca este aceeasi ca mai sus. Aceasta inregistrare o pastram, considerand ca reteaua este capabila sa surmonteze aceste erori in datele de intrare. 6.6.2- ANALIZA SPECTRALA A INREGISTRARILOR (FFT Discrete Fourier transform) FFT(X) realizeaza discrete Fourier transform (DFT) a vectorului X. FFT(X,N) realizeaza FFT in N puncte, prelungita cu zero-uri daca X un numar mai mic decat N puncte si trunchiata daca numarul este mai mare. Pentru un vector x (de lungime N), DFT este un vector X (de lungime N), cu elementele: N X(k) = sum x(n)*exp(-j*2*pi*(k-1)*(n-1) / N), 1 <= k <= N. n=1 Relatiile dintre DFT si coeficientii Fourier “a” si “b” din: N/2 x(n) = a0 + sum (a(k)*cos(2*pi*k*t(n) / (N*dt) + b(k)*sin(2*pi*k*t(n) / (N*dt))) k=1 N sunt: a0 = X(1) / N = (sum x(n)) / N, a(k) = 2*real(X(k+1)) / N, b(k) = -2*imag(X(k+1)) / N, n=1 unde x este un semnal discret, de lungime N, esantionat la timpul t cu intervalul dt. Observatie: t(n) / dt = n. Pentru a testa programul de dezvoltare in serie Fourier, il aplicam functiei: x = 3 + 4*sin(2*pi*50*t) + 2*sin(2*pi*100*t) + 5*sin(2*pi*350*t); Rezultatul se prezinta in fig. 6.6.1, in care se observa ca este corect.

Acest program il aplicam in continuare unor inregistrari: 43 (apartinand clasei C1), 89 (C2) ,113 (C3), 164 (C4), 185 (C5) si 64 (C6), pentru analiza spectrala a lui az si Fz. Graficele se prezinta – respectiv – in figurile 6.6.2 ÷ 6.6.7. La inregistrarile din clasa C6 (vezi fig. 6.5.6) se observa ca Fz are o variatie periodica, de perioada mare: T ≈ 100.Δt = 100.1/9600, deci cu frecventa f = 1 / T = 96 Hz, care apare si in figura 6.6.7, aceasta fiind frecventa fundamentala a vibratiilor Din reprezentarea grafica Fz = Fz (t) pt. inregistrarea nr. 64 se obs. ca amplitudinea

Fig. 6.6.1 vibratiilor este de aproximativ 2.5 N, valoare ce se verifica in fig. 6.6.7.

Page 89: Fuzzy

Fig. 6.6.2

Fig. 6.6.3

Fig. 6.6.4

Page 90: Fuzzy

Fig. 6.6.5

Fig. 6.6.6

Fig. 6.6.7

Page 91: Fuzzy

6.6.3.- MONITORIZAREA UZURII SCULEI UTILIZAND R.N.A. A) AMELIORAREA GENERALIZARII O problema care apare la antrenarea RNA se numeste “potrivire perfecta”: eroarea din setul de antrenare este condusa spre o valoare foarte mica, dar la prezentarea unor noi date retelei, eroarea este mare. Deducem ca reteaua a memorizat exemplele din timpul antrenarii, dar nu poate sa generalizeze in cazuri noi. O metoda pentru ameliorarea generalizarii RNA consta in utilizarea unor retele suficient de mari. Cu cat reteaua este mai mare, cu atat mai complexe sunt functiile ce le poate crea. O retea mica nu va avea suficienta putere de a potrivi perfect toate datele. Se observa ca daca numarul parametrilor din RNA este mult mai mic decat numarul datelor din setul de antrenare, atunci probabilitatea potrivirii perfecte este foarte mica. Daca se colecteaza mai multe date si creste marimea setului de antrenare, atunci nu sunt necesare metodele de mai jos (ce se aplica in situatiile cand dorim sa realizam maximul, in cadrul unei cantitati limitate de date). OPRIREA PREMATURA O alta metoda pentru ameliorarea generalizarii este “oprirea prematura”. In aceasta tehnica datele disponibile sunt impartite in trei subseturi. Primul este setul de antrenare, care este folosit pentru calculul gradientului si pentru actualizarea ponderilor si deplasarilor. Al doilea este setul de validare. Eroarea in acest subset este monitorizata in timpul procesului de antrenare. Eroarea de validare va descreste, in mod normal, in timpul fazei initiale de antrenare, la fel ca si eroarea din setul de antrenare. Dar, cand reteaua incepe sa potriveasca perfect datele, eroarea din setul de validare va incepe – de regula - sa creasca. Cand eroarea de validare creste pe durata unui numar specificat de iteratii, antrenarea este oprita, iar ponderile si deplasarile sunt readuse la minimul erorii de validare. Eroarea in setul de testare (al 3-lea subset) nu este folosita in timpul antrenarii, ci pentru compararea diferitelor modele. Ea este utila pentru a o plota in timpul procesului de antrenare. Daca aceasta eroare atinge un minim la un numar de iteratii semnificativ diferit decat eroarea din setul de validare, aceasta poate indica o impartire gresita a datelor. Oprirea prematura poate fi folosita cu oricare dintre functiile de antrenare. Este nevoie doar de trecerea datelor de validare in functia de antrenare. Nu trebuie folosit un algoritm care converge prea repede. Daca folosim un asemenea algoritm (ca trainlm), va trebui sa fixam parametrii de antrenare astfel incat convergenta sa fie relativ lenta (de exemplu: setam “mu” la o valoare relativ mare, cum ar fi 1, si setam “mu_dec” si “mu_inc” la valori apropiate de 1, cum ar fi 0.8 si 1.5, respectiv). Functiile de antrenare trainscg si trainrp sunt recomandate in cazul opririi premature. Alegerea setului de validare este de asemenea important. El ar trebui sa fie reprezentativ pentru toate elementele din setul de antrenare. Este indicat sa antrenam reteaua incepand cu diferite conditii initiale. E posibil ca orice metoda sa dea gres in anumite situatii. Prin testarea diferitelor conditii initiale, se poate verifica robustetea retelei. B) PRE-PROCESAREA SI POST-PROCESAREA Antrenara retelelor neuronale poate fi mai eficienta daca anumite pre-procesari sunt executate pe intrarile in retea si tintele. MEDIA SI DEVIATIA STANDARD (prestd, poststd, trastd) Inainte de antrenare, este util sa scalam intrarile si tintele astfel incat sa se incadreze intr-un domeniu specificat. O abordare in acest sens este de a normaliza media si deviatia standard in setul de antrenare. Aceasta procedura este aplicata cu functia prestd. Ea normalizeaza intrarile si tintele astfel incat ele vor avea media zero, iar deviatia standard unitara. Urmatorul cod ilustreaza folosirea lui prestd: [pn,meanp,stdp,tn,meant,stdt] = prestd(p,t); Intrarile in retea si tintele initiale sunt date in matricile p si t. Intrarile si tintele normalizate pn si tn, care sunt returnate, vor avea mediile nule si deviatiile standard unitare. Vectorii meanp si stdp

Page 92: Fuzzy

contin mediile si deviatiile standard ale intrarilor originale, iar vectorii meant si stdt contin mediile si deviatiile standard ale tintelor originale. Dupa ce reteaua a fost antrenata, acesti vectori ar trebui folositi pentru transformarea viitoarelor intrari aplicate retelei. Ei astfel devin parte din retea, la fel ca ponderile si deplasarile din retea. Daca prestd este folosita pentru a scala intrarile si tintele, atunci iesirea retelei este antrenata sa produca iesiri cu medie nula si deviatie standard unitara. Daca vrem sa convertim aceste iesiri in aceleasi unitati care erau folosite pentru tintele originale, atunci trebui sa folosim rutina poststd. In urmatorul cod, vom simula reteaua care a fost antrenata in codul anterior si apoi convertim iesirea retelei inapoi la unitatile originale.

an = sim(net,pn); a = poststd(an,meant,stdt);

Iesirea an din retea corespunde tintelor normalizate tn. Iesirea ne-normalizata a este in aceleasi unitati ca si tintele originale t. Daca prestd este folosita pentru preprocesarea datelor setului de antrenare, atunci ori de cate ori reteaua antrenata este folosita pentru intrari noi, ele trebuie pre-procesate cu mediile si derivatiile standard care au fost calculate pentru setul de antrenare. Aceasta se poate face cu rutina trasd. In urmatorul cod aplicam un nou set de intrari retelei pe care tocmai am antrenat-o.

pnewn = trastd(pnew,meanp,stdp); anewn = sim(net,pnewn); anew = poststd(anewn,meant,stdt);

ANALIZA COMPONENTELOR PRINCIPALE (prepca, trapca) In unele situatii, dimensiunea vectorului de intrare este mare, dar componentele vectorilor sunt corelati foarte mult. In aceasta situatie este bine sa se reduca dimensiunea lor. O procedura eficace pentru executarea acestei operatii este analiza componentelor principale. Aceasta tehnica are trei efecte: ortogonalizeaza componentele vectorilor de intrare (astfel ca ei sa nu fie corelati intre ei); ordoneaza componentele ortogonale rezultate (componente principale) astfel incat cele cu variatiile maxime sunt primele; elimina acele componente care contribuie cel mai putin la variatia din setul de date. Urmatorul cod prezinta folosirea prepca, care executa analiza componentelor principale.

[pn,meanp,stdp] = prestd(p); [ptrans,transMat] = prepca(pn,0.02);

Se observa ca mai intai se normalizeaza vectorii de intrare folosind prestd, astfel incat sa aiba medie zero si varianta unitara. Aceasta este o procedura standard cand folosim componentele principale. In acest exemplu, al doilea argument din prepca este 0.02. Aceasta inseamna ca prepca elimina acele componente principale care contribuie cu mai putin de 2% la variatia totala din setul de date. Matricea ptrans contine vectorii de intrare transformati. Matricea transMat contine matricea de transformare a componentelor principale. Dupa ce reteaua a fost antrenata, aceasta matrice trebuie folosita pentru transformarea urmatoarelor intrari aplicate retelei. Ea devine o parte a retelei, asa cum sunt ponderile si deplasarile. Daca multiplicam vectorii de intrare normalizati pn cu matricea transMat, vom obtine vectorii de intrare transformati ptrans. Daca prepca este folosita pentru pre-procesarea datelor din setul de antrenare, atunci ori de cate ori reteaua antrenata este folosita cu intrari noi, ele trebuie pre-procesate cu matricea de transformare care a fost calculata pentru setul de antrenare. Acest lucru se poate efectua cu rutina trapca. In urmatorul cod, aplicam un set nou de intrari unei retele pe care am antrenat-o deja.

pnewn = trastd(pnew,meanp,stdp); pnewtrans = trapca(pnewn,transMat); a = sim(net,pnewtrans);

6.6.4- RULAREA R.N.A. Vom aplica tehnicile descrise mai sus. Setul de antrenare va contine inregistrarile din lotul “Instruire”, deci 60% din numarul total de inregistrari. Setului de validare ii alocam inregistrarile “b” din lotul “Clasificare”, iar in setul de testare vor intra inregistrarile “d”; fiecare set are deci 20 % din numarul inregistrarilor.

Page 93: Fuzzy

RNA are 3 nivele, cu s1 = 23 neuroni, s2 = 27, s3 = 7 (= numarul claselor). Matricea de intrare p are dimensiunile 12 (indici de monitorizare) x 655 (inregistrari), iar matricea de iesire y are dimensiunile 7 (clase) x 655. Functiile de antrenare sunt: tf1 = purelin, tf2 = tansig, tf2 = logsig, deci vectorii de iesire au 7 elemente, cu valori in domeniul (0, 1). In secventa cu instructiuni: [ma, ia]=max(a); [mt, it]=max(t); c = ia = = it; n = 1: 655; nc = [n, c]; mt = 1 (evident), iar “ma” este valoarea maximului pe coloana lui “a”; daca indicii “ia” si “it” (care dau pozitia respectivelor maxime) sunt identici, atunci maximele pe coloanele lui”a” coincid cu maximele pe coloanele lui ”t” si in matricea c (1x655) elementul respectiv este egal cu 1, iar in caz contrar ia valoarea 0. “nc” este o matrice cu doua linii, pe prima linie numarandu-se inregistrarile, iar a doua linie are elementele 1 (corect), sau 0 (eroare). Primele rulari (cu functiile de antrenare trainrp, trainscg, etc) au indicat erori numai in pozitiile corespunzatoare inregistrarilor din clasele c5 si c7, adica la clasele care au cele mai putine inregistrari. Marirea numarului de inregistrari – fara a efectua noi experiente – se poate face adaugand, intr-o clasa aceleasi inregistrari de mai multe ori, eventual afectate de un zgomot de medie 0.1; de exemplu, daca inregistrarile sunt cuprinse in tabelul “Tabel 112”, ce are dimensiunile 960 x 6, atunci se adauga inregistrarile: Tabel 112 + randn(960,6)*0.1. Ca urmare: - inpatrim inregistrarile din clasa c5: la primul set atasam un zgomot de medie 0.1, al doilea set este identic cu cel original, iar la al treilea set atasam un zgomot de medie 0.15; - intreim inregistrarile din clasa c7, procedand analog ca mai sus (numai primul si al doilea set). In concluzie, clasele din cap. 6.5.c au forma finala: - in clasa “c1” (VBmax ≤ 0,2 mm) se incadreaza inregistrarile 43 ÷ 63, 77 ÷ 87, adica 32 Inregistrari (cu cate 4800 esantioane); - clasa “c2” (0,2 < VBmax ≤ 0,4 mm) → 89 ÷ 91, 94, 96 ÷ 112 ⇒ 21 Inregistrari; - “c3” (0,4 < VBmax ≤ 0,6 mm) → 113 ÷ 118, 124 ÷ 130, 132 ÷ 144, 146 ÷ 163 ⇒ 44 Inr.; - “c4” (0,6 < VBmax ≤ 0,7 mm) → 164 ÷ 171, 174 ÷ 177 ⇒ 12 Inr.; - “c5” (VBmax > 0,7 mm) → 182 ÷ 184 ⇒ 3 Inr. + 3 Inr. (cu zgomot) + 3 Inr. + 3 Inr. (cu zgomot) = 12 Inr.; - “c6” (Trepidatii) → 64, 67, 72 ÷ 76, 93, 95, 131, 172, 179, 180, 185 ⇒ 14 Inr.; - “c7” (Strunjire in gol) → 187 ÷ 191 ⇒ 5 Inr. + 5 Inr. (cu zgomot) + 5 Inr. ⇒ 15 Inr. Deci, c5 va contine 60 de inregistrari, c7 – 75 inregistrari, iar numarul coloanelor din matricele de mai sus creste de la 655 la 750. Cu instructiunile: ind = find(c = = 0); dim = length(ind); er = dim / 750, Gasim – respectiv – indicii elementelor lui “c” care sunt nuli, numarul de elemente din “ind” si eroarea retelei. Mai jos se prezinta rezultatele unei rulari: R = 8 ; Q = 750 Exista o redundanta in setul de date, pentru ca analiza componentelor principale a redus dimensiunea vectorilor de intrare de la 12 la 8. TRAINRP, Epoch 0/300, MSE 1.53359/0, Gradient 0.292509/1e-006 TRAINRP, Epoch 25/300, MSE 0.487294/0, Gradient 0.0150939/1e-006 TRAINRP, Epoch 43/300, MSE 0.477332/0, Gradient 0.0148044/1e-006 TRAINRP, Validation stop. ind = Columns 1 through 18 440 441 445 446 447 448 449 450 454 455 456 457 458 459 463 468 472 473 Columns 19 through 36 474 475 476 477 481 482 483 519 520 521 533 545 594 595 596 646 647 658 Column 37 672 dim = 37 ; er = dim / 750 = 0.0493 = 4.93 %.

Page 94: Fuzzy

Un mijloc de diagnostic util este de a plota erorile de antrenare, validare si testare pentru a verifica progresul antrenarii. Resultatul se prezinta in figura 6.6.8.

Fig. 6.6.8

Rezultatul este rezonabil, pentru ca erorile de validare si testare au caracteristice similare. In alte rulari: - efectuate in aceleasi conditii, rezultatele au fost de doua ori ca mai sus, iar o data au fost: 51 epoci; dim = 27 ; er = 3.6 %; - fara functia “init” (de reinitializare a ponderilor si deplasarilor), in doua rulari erorile au fost 4.67% si 13.3%; - cu functia de antrenare trainscg fara “init” eroarea a fost de 5.33%, iar cu “init”- 25.6%. 6.6.5- CALCULE STATISTICE In matricea de intrare p, avand dimensiunile 12 (indici de monitorizare) x 750 (inregistrari), calculam pt. fiecare coloana (inregistrare): - media aritmetica (a celor 12 indici) μ ;

- abaterea medie patratica (deviatia standard) ∑=

−−

=N

kkx

N 1

2)(1

1 μσ , unde N = 12;

rezultatele se prezinta in fig. 6.6.9, in care clasei c1 ii sunt alocate inregistrarile 1 ÷ 160, c2 → 161 ÷ 265, c3 → 266 ÷ 485, c4 → 486 ÷ 545, c5 → 546 ÷ 605, c6 → 606 ÷ 675, c7 → 676 ÷ 750. Se obs. ca cele doua grafice au aceeasi alura, iar clasele sunt usor de separat (in functie de valorile lui μ si σ). Concluzionam ca indicii de monitorizare au fost alesi corect.

6.7.- MONITORIZAREA

Monitorizarea unui strung inseamna ca in timpul procesului continuu de aschiere (fig. 6.7.1) sa se conecteze aparatul “Spider”, care sa transmita la PC o inregistrare pe baza careia RNA sa spuna in ce clasa se situeaza prelucrarea (conform tabelului 6.2.2). Apoi “Spider” se conecteaza din nou, s.a.m.d. In cazul in care clasa este mai mare de 3 (deci “anormala”), PC trebuie sa dea un semnal sonor, sau sa opreasca prelucrarea. Mai detaliat: inregistrarea are 4800 de esantioane, fiind un tabel in EXCEL cu 4800 linii si 3 coloane (A = ε 1inreg, B = ε 2inreg, C = a z). Transferul Spider → PC se face in cca. 1 min. Din acest tabel se selecteaza alt tabel (mai mic) cu 960 linii si 4 coloane, primul element fiind ales aleator, la o locatie mai mare de A500. In a IV-a coloana se calculeaza functia Fz (= 1136*A-1136*B), conform relatiei (6.4.12). Acest tabel se transfera in MATLAB, unde se calculeaza cei 12 indici de monitorizare care se prezinta la intrarea RNA, cum se arata la finalul cap. 6.6.4.

Page 95: Fuzzy

Fig. 6.6.9

Fig. 6.7.1

Pentru a vedea cum raspunde RNA am utilizat cateva dintre inregistrarile initiale (prezentate in finalul cap. 6.6.1); rezultatele sunt cele din tab. 6.7.1. Tab. 6.7.1

Nr. crt.

Inreg. Clasa v [m/min]

t [mm]

s [mm/rot]

Epoci Eroarea %

Clasa din RNA

Timpul [min]

0 1 2 3 4 5 6 7 8 9

1 046 1 69 0.5 0.25 43 4.93 1 10 2 183 5 71 3 0.302 40 4.4 5 8 3 168 4 75.4 2 0.302 76 2.5 4 6 4 174 4 120.6 2 0.416 67 3.47 4 8 5 099 2 83.2 1 0.334 43 4.93 2 6 190 7 0 0 0 47 3.6 7 7 7 095 6 83.2 1 0.353 47 23.87 6 7

La primele 4 inregistrari, dupa prima rulare s-a mai facut si o a II-a rulare, ce a durat 2 min.,

Page 96: Fuzzy

clasa data de RNA coincizand cu cea de la prima rulare. Coincidenta valorilor din coloanele 2 si 8 ne arata ca RNA furnizeaza rezultate corecte. In cadrul monitorizarii reale, cand aschierea va fi continua, pt. evitarea “necompensarii termice” (vezi cap. 6.4.A) trebuie folosita racirea cu apa a cutitului. Dar, apa poate provoca deranjamente in circuitele marcilor tensometrice, desi acestea sunt protejate (cu Poxipol). Ca urmare, pentru acest stadiu al experimentului va trebui sa eliminam marcile tensometrice si sa masuram componentele fortei de aschiere cu dinamometrul KISLER (Austria). In plus, coloana nr. 9 din tabelul 6.7.1 ne arata ca hard-ul actual ne furnizeaza informatii tardive, adica aflam ca scula este – de exemplu - in clasa 4 (Uzura severa), cand este posibil ca ea sa fi ajuns in clasa 5 (Deteriorare), sau 6 (Trepidatii). Deci este necesar un PC specializat, care sa reduca cat mai mult timpul de raspuns. Pentru a verifica eficacitatea soft-ului, vom relua rularile ca in tabelul 6.7.1, dar pentru o treime din cele 44 de inregistrari din clasa a 3-a. Rezultatul se prezinta in tab. 6.7.2, in care “L” este Tab. 6.7.2

Nr. crt.

Inreg. v [m/min]

t [mm]

s [mm/rot]

L [mm]

Epoci Eroarea %

Clasa din RNA

0 1 2 3 4 5 6 7 8

1 115 130.6 1.2 0.334 245 40 4.4 2 2 118 130.6 1.2 0.416 90 76 2.53 3 3 126 79.3 1.4 0.292 770 43 4.93 3 4 129 79.3 1.4 0.353 630 43 4.93 3 5 133 63.4 1.4 0.353 425 40 4.4 4 6 136 63.4 1.4 0.292 300 76 2.53 3 7 139 63.4 1.4 0.212 200 64 2.67 3 8 142 63.4 1.4 0.167 120 67 3.47 3 9 146 77.3 1.5 0.375 780 43 4.93 3 10 149 77.3 1.5 0.302 615 47 3.6 3 11 152 77.3 1.5 0.25 480 47 23.87 3 12 155 123.7 1.5 0.177 340 40 4.4 3 13 158 123.7 1.5 0.146 230 31 15.2 3 14 161 123.7 1.5 0.118 130 76 2.53 3

distanta de la mijlocul zonei aschiate la universal. Se observa ca numai inregistrarile de la nr. 1 si 5 nu au dat clasa corecta (3), ci o clasa vecina. Alte doua rulari realizate pt. fiecare dintre aceste inregistrari – cu modificarea locatiei primului element din tabelul (960 x 4) – au indicat clasa corecta (3). Deci la 25 de rulari, numai doua au fost eronate, eroarea fiind de 8 %. Consideram ca aceasta eroare se va micsora daca vom lua mai multe inregistrari in tab. 6.7.1 si 2.

6.8.- METODA FUZZY C-MEANS [2,6]

Pentru comparatie cu metoda RNA, vom clasifica cele 750 de inregistrari utilizand metoda fuzzy c - means. Clusterizarea fuzzy este o metoda de determinare a clusterilor optimali intr-un spatiu vectorial, pe baza normelor euclidiene pentru distanta dintre vectori. Fuzzy c-means (FCM) este o metoda de clusterizare a datelor in care fiecare punct de date apartine unui cluster, cu un anumit grad de apartenenta. Cu aceasta metoda se pot grupa puncte de date dintr-un spatiu multidimensional intr-un numar de clustere diferite. Pentru un set de date din tabelul 6.6.1: X = ( x1 , x2 , . . . , xN ) , (6.8.1) obiectivul este sa clasificam datele in n clusteri fuzzy (clase). O valoare de apartenenta care descrie gradul de apartenenta a fiecarei date la fiecare clasa este: μ k , j ( xk ) ∈ [ 0 , 1 ] , ( 1 ≤ j ≤ n , 1 ≤ k ≤ N ) . (6.8.2)

Page 97: Fuzzy

Matricea de partitie este definita astfel: , (6.8.3) μ

μ μ

μ μ

( )

( ) . . ( ). .. .( ) . . ( )

n

x x

x x

N N

n n

=

⎢⎢⎢⎢⎢

⎥⎥⎥⎥⎥

11 1 1

1 1 N N

N

unde valorile de apartenenta sunt supuse la urmatoarele conditii:

, (6.8.4) μ k jj

nk

=∑ = =

11 1, ( ,..., )

adica suma valorilor de apartenenta a datelor la toti clusterii fuzzy (clase) trebuie sa fie unitara. Indicele de performanta pentru matricea de partitie este:

J = ( μj

n

k

N

==∑∑

11k j )w || xk - vj || 2 , (6.8.5)

unde vj este un vector pseudo-centru de greutate a clasei j:

vj = ( )

( )

μ

μ

k jw

kk

N

k jw

k

N

x⋅∑

=

=

1

1

, ( j = 1 , 2 , . . . , n ) (6.8.6)

si w > 1 este o pondere a valorilor de apartenenta; || xk - vj || este norma euclidiana, adica

distanta dintre xk si vj : || xk - vj || = ( ( , ) ( , ))x k i v j ii

m−∑

=

2

1 . (6.8.7)

Matricea de partitie optima se obtine cand indicele de performanta J isi atinge minimul, adica atunci cand suma fluctuatiilor interioare claselor are valoarea minima. In faza de instruire, procedura este: 1.- Construirea matricei de partitie. Euristic se determina μ tk , j , care satisface (6.8.4):

, (6.8.8) μ

μ μ

μ μ

( )

( ) . . ( ). ..( ) . . ( )

n

x x

x x

tN

tN

nt

n Nt

N

=

⎢⎢⎢⎢⎢

⎥⎥⎥⎥⎥

11 1 1

1 1

.

Sari la pasul 2, luand t = 0 . 2.- Calculeaza vectorul cu pseudo-centrele de greutate pentru fiecare cluster din matricea de partitie:

vjt =

( )

( )

μ

μ

k jt w

kk

N

k jt w

k

N

x⋅∑

=

=

1

1

, ( j = 1 , . . . , n ) . (6.8.9)

3.- Modifica fiecare valoare de apartenenta:

μ

αα

k jt

k

k jt

kt

wn

xx v

x v

+−

=

=−

⎝⎜⎜

⎠⎟⎟∑

11 1

1

1( ) / ( ) , if xk ≠ vjt ; (6.8.10)

pana cand xk = vjt , apoi: μ t+1

k , j ( xk ) = 1 , daca j = α ; μ t+1k , j ( xk ) = 0 , daca j ≠ α .

Matricea de partitie modificata este re-organizata:

, (6.8.11) μ

μ μ

μ μ

t

tN

tN

nt

n Nt

N

n

x x

x x

+

+ +

+ +

=

⎢⎢⎢⎢⎢

⎥⎥⎥⎥⎥

1

111

1 11

11

11

( )

( ) . . ( ). .. .( ) . . ( )

4.- Se verifica daca convergenta matricei de partitie este indeplinita:

Page 98: Fuzzy

⏐μ t+1k j - μ tk j ⏐< ε , (6.8.12)

unde ε este un prag de convergenta. Daca convergenta nu este indeplinita, sari la pasul 2 luand t = t + 1 . In faza de clasificare, pentru o noua inregistrare x, avand centrele clusterilor [expresia finala din 6.8.9)], se calculeaza gradul fuzzy a noii inregistrari cu o relatie de tipul (6.8.10):

μ

αα

k j

j

wn

xx v

x v

( ) / ( )=−

⎝⎜⎜

⎠⎟⎟∑

=

11 1

1

, if x ≠ vj ; (6.8.13)

pana cand x = vj , apoi: μ j ( x ) = 1 , daca j = α si μ j ( x ) = 0 , daca j ≠ α . In concluzie, conditiile de proces se identifica prin gradele fuzzy maxime. Functia fcm din toolbox-ul “Fuzzy Logic” incepe cu o alegere initiala a centrelor clusterilor, in locatia medie a fiecarui cluster. Aceasta alegere este – cel mai adesea - incorecta. In plus, fcm atribuie fiecarui punct de date un grad de apartenenta la fiecare cluster. Prin actualizarea iterativa e centrelor clusterilor si a gradelor de apartenenta pentru fiecare punct de date, fcm muta iterativ centrele clusterilor spre locatia "corecta" din interiorul unui set de date. Aceasta iteratie se bazeaza pe minimizare unei functii obiectiv care reprezinta distanta de la oricare punct de date la centrul clusterului, ponderata cu gradul de apartenenta al punctului de date. fcm este o functie ce are la iesire o lista de centre de clusteri si cateva grade de apartenenta pentru fiecare punct de date. Descriere: [center, U, obj_fcn] = fcm(data, cluster_n) aplica metoda clusterizarii fuzzy c-means unui set de date. Argumentele de intrare in aceasta functie sunt: data (setul de date de clusterizat; fiecare linie este un punct de date inregistrate); cluster_n (numarul clusterilor (> 1)). Argumentele de iesire din aceasta functie sunt: center (centrele finale ale clusterilor, in care fiecare linie este un centru); U (forma finala a matricei de partitie fuzzy (sau matricea functiilor de apartenenta)); obj_fcn (valorile functiilor obiectiv in timpul iteratiilor). fcm(data,cluster_n,options) are un argument aditional options, pentru a controla parametrii clusterizarii, a introduce un criteriu de oprire si/sau a seta iteratiile: - options(1): exponent for the partition matrix U (default: 2.0); - options(2): maximum number of iterations (default: 100); - options(3): minimum amount of improvement (default: 1e-5); - options(4): info display during iteration (default: 1); Daca nu se specifica nici-o optiune, se utilizeaza valorile implicite. Procesul clusterizarii se opreste cand se atinge numarul maxim de iteratii, sau cand castigul la functia obiectiv dupa doua iteratii consecutive este mai mic decat minimul castigului specificat. Pentru argumentul de intrare “data” egal cu matricea p’= x (750x12) din cap. 6.6.5 (pe o coloana din U (7x750) fiind gradele de apartenenta ale unui vector la cele 7 clase), programul ce atribuie vectorul clasei pentru care gradul de apartenenta este maxim, da rezultatul din fig. 6.8.1 si mai jos. Iteration count = 1, obj. fcn = 647350640000.421870 . . . Iteration count = 31, obj. fcn = 121863345485.359880 . . . Iteration count = 61, obj. fcn = 120594760756.125920 . . . Iteration count = 91, obj. fcn = 120594676310.747500 . . . Iteration count = 108, obj. fcn = 120594676310.453870 Iteration count = 109, obj. fcn = 120594676310.453890 Iteration count = 110, obj. fcn = 120594676310.453890 Coloana nr. 100 din U: U100 = [ 0.0006 0.9990 0.0000 0.0001 0.0002 0.0000 0.0000 ] T

Page 99: Fuzzy

Fig. 6.8.1

O a doua rulare are ca rezultat o figura analoaga cu fig. 6.8.1, orizontalele avand aceeasi componenta, dar pe alte nivele. Un program analog, in care s-au utilizat numai 4 coloane din matricea x (750x12) si anume, cele mai importante: 4 (Fz), 6 (Nr. intersectiilor), 7 (Densitatea spectrala Fz) si 10 (Densitatea spectrala az), furnizeaza aceleasi rezultate. De asemenea, acelasi rezultat s-a obtinut si cand setul de date pentru clusterizat a avut 2 coloane: marimile din fig. 6.6.9. Interpretarea figurii 6.8.1 este urmatoarea: clasele stabilite la metoda RNA (reamintite langa fig. 6.6.9) se regasesc partial in fig. 6.8.1, fiind numerotate intr-o alta ordine (c1 este acum clasa nr. 2, dar c7 este tot 2, ceea ce nu este corect; c2 este 1, majoritatea inregistrarilor fiind pe nivelul 1; c3 este impartita pe nivelele 1 si 5, ceea ce nu convine; c4 este 4, majoritatea inregistrarilor fiind pe nivelul 4, etc.). Se obs. ca sunt alocate putine inregistrarilor la 3 clase (3, 4 si 7). In concluzie, metoda fuzzy c - means da erori mult mai mari in comparatie cu metoda RNA.

BIBLIOGRAFIE 1- Balan, G, 2002, The monitoring of a lathe using an artificial neural network, Grant type A nr. 33 445, Theme 19, Cod CNCSIS 451 2- Bezdek, J.C., 1981, Pattern Recognition with Fuzzy Objective Function Algorithms, Plenum Press, New York 3- Du, R., Elbestawi, M. A., Wu, S. M., 1995, Automated Monitoring of Manufacturing Processes, Part 1: Monitoring Methods, Part 2: Applications, ASME Journal of Engineering for Industry, may, vol. 117, Part 1-pp. 121 - 132, Part 2 − pp .133 - 141. 4- Epureanu, A., 1983, Technologies in machine building, EDP, Romania. 5- N. Oancea, s.a. Procese de aschiere. Experimente de laborator, Ed. TEHNICA-INFO Chisinau, 2002 6- Ryan, J., Ryan, M., Power, J., 1994, Using fuzzy logic, Prentice Hall 7- STAS 12046 / 1 - 81, Cutting life testing. Wear. General notions 8- STAS 12046 / 2 - 81 , Cutting life testing . Tool - life testing methods in turning tools 9- MATLAB 6.5

Page 100: Fuzzy

6.6.- PRELUCRAREA INREGISTRARILOR 6.6.1- PRELUCRAREA INITIALA Cele 22 de inregistrari evidentiate in finalul cap. 6.5.c le mutam (numai partile “c”) intr-un tabel ”Tab” in EXCEL (numai coloanele “a z” si “F z”); apoi le-am transferat in MATLAB, in care recompunem tabelul ”Tab”, redenumit “t44”. Calculam 12 indici de monitorizare: X1 = v = viteza de aschiere; X2 = t = adancimea de aschiere; X3 = s = avansul longitudinal; X4 = zF = valoarea medie a fortei principale de aschiere; X5 = banda de variatie a lui Fz (inregistrarea continand 960 de esantioane, am impartit-o in 4 parti egale – de cate 240 esantioane – si am calculat maximul si minimul pt. fiecare parte; X5 este diferenta dintre media maximelor si media minimelor); X6 = numarul intersectiilor oscilogramei Fz cu valoarea sa medie zF ; X7 = media densitatii spectrale de putere a lui Fz in banda de frecvente 1 - 2400 Hz ; X8 = media densitatii spectrale de putere a lui Fz in banda de frecvente 2401 - 4800 Hz ; X9 = media densitatii spectrale de putere a lui Fz in banda de frecvente 4801 - 9600 Hz ; X10 = media densitatii spectrale de putere a lui az

inr in banda de frecvente 1 - 2400 Hz ; X11 = media densitatii spectrale de putere a lui az

inr in banda de frecvente 2401 - 4800 Hz ; X12 = media densitatii spectrale de putere a lui az

inr in banda de frecvente 4801 - 9600 Hz . Acesti indici, calculati pt. cele 22 de inregistrari, formeaza matricea “x”, cu 22 linii si 12 coloane: Tabelul 6.6.1 x = Columns 1 through 6 8.6350e+001 5.0000e-001 3.0200e-001 3.8853e+001 8.0770e+000 3.3500e+002 8.6350e+001 5.0000e-001 2.5000e-001 2.6718e+001 7.1227e+000 4.0300e+002 8.4000e+001 5.0000e-001 2.0800e-001 2.0495e+001 5.6573e+000 3.6900e+002 8.4800e+001 5.0000e-001 2.5000e-001 2.9545e+001 6.4752e+000 4.9000e+002 8.4800e+001 5.0000e-001 3.0200e-001 3.1602e+001 6.6115e+000 4.6200e+002 1.3300e+002 1.0000e+000 3.5300e-001 5.9944e+001 5.8277e+000 2.6100e+002 1.3300e+002 1.0000e+000 3.3400e-001 6.0192e+001 5.2483e+000 3.7300e+002 1.3300e+002 1.0000e+000 3.0200e-001 5.8123e+001 6.8160e+000 2.8000e+002 1.3300e+002 1.0000e+000 3.7500e-001 6.3598e+001 5.2313e+001 2.3000e+001 8.3200e+001 1.0000e+000 3.0200e-001 7.5374e+001 6.9523e+000 4.2600e+002 8.3200e+001 1.0000e+000 2.1200e-001 5.7096e+001 6.4070e+000 3.5500e+002 1.3060e+002 1.2000e+000 3.0200e-001 7.7719e+001 9.1675e+000 2.2300e+002 1.3060e+002 1.2000e+000 3.3400e-001 8.1786e+001 7.6339e+000 2.7400e+002 1.3060e+002 1.2000e+000 3.5300e-001 8.9496e+001 7.7021e+000 2.5700e+002 1.3060e+002 1.2000e+000 3.7500e-001 9.1637e+001 7.4976e+000 3.0600e+002 7.9300e+001 1.4000e+000 2.5000e-001 6.6836e+001 8.0429e+000 3.1900e+002 7.9300e+001 1.4000e+000 3.0200e-001 7.6972e+001 9.7469e+000 1.7500e+002 1.2680e+002 1.4000e+000 3.7500e-001 9.0849e+001 2.9854e+001 9.4000e+001 7.7300e+001 1.5000e+000 3.0200e-001 8.8157e+001 8.2474e+000 2.6700e+002 7.5400e+001 2.0000e+000 3.0200e-001 1.0288e+002 9.2016e+000 2.8800e+002 7.5400e+001 2.0000e+000 2.5000e-001 1.0079e+002 9.1334e+000 2.2000e+002 7.1000e+001 3.0000e+000 4.1600e-001 1.5647e+002 1.9494e+001 6.5000e+001 Columns 7 through 12 1.0015e+004 1.3224e+000 1.0440e+000 1.6103e-006 4.6126e-006 2.4307e-005 4.7806e+003 1.6893e+000 9.2422e-001 2.0110e-006 2.5255e-006 1.5556e-005 2.8031e+003 1.3177e+000 6.2598e-001 5.1053e-007 4.9767e-006 1.4966e-005 5.8249e+003 1.0303e+000 1.6544e+000 5.9237e-007 5.3176e-006 1.5565e-005

Page 101: Fuzzy

6.6682e+003 1.0552e+000 1.5393e+000 4.4930e-007 3.5887e-006 1.8399e-005 2.4241e+004 7.4094e-001 6.3477e-001 1.2092e-005 2.9389e-006 1.8129e-005 2.4126e+004 7.9150e-001 7.6272e-001 1.2318e-005 4.2582e-006 1.9059e-005 2.2393e+004 9.0462e-001 5.9583e-001 1.2425e-005 2.8956e-006 2.5164e-005 2.8037e+004 9.8662e-001 9.8148e-001 1.3472e-005 4.6359e-006 2.0672e-005 3.8184e+004 1.3660e+000 1.6390e+000 1.4274e-005 7.1711e-006 1.7458e-005 2.1723e+004 1.0602e+000 6.8397e-001 1.5730e-005 3.3052e-006 1.1485e-005 4.0237e+004 1.2860e+000 6.8552e-001 2.3626e-005 9.1872e-006 1.0742e-005 4.4759e+004 1.1099e+000 4.5915e-001 2.2549e-005 6.2768e-006 7.3750e-006 5.3456e+004 1.0607e+000 8.0039e-001 2.2212e-005 6.4283e-006 8.7312e-006 5.6160e+004 1.2366e+000 1.0382e+000 2.2164e-005 5.6076e-006 8.3173e-006 2.9887e+004 8.8511e-001 6.8384e-001 3.4395e-006 4.6723e-006 1.0022e-005 3.9564e+004 1.3431e+000 6.5909e-001 3.2688e-006 3.7426e-006 1.5528e-005 5.5562e+004 1.1869e+000 7.7111e+000 3.8126e-006 7.5537e-006 4.4260e-003 5.1683e+004 1.2146e+000 6.6422e-001 4.7469e-006 6.9971e-006 8.2586e-006 7.0257e+004 1.7075e+000 1.5874e+000 2.2816e-006 5.8361e-006 1.6512e-005 6.7549e+004 1.6576e+000 6.8277e-001 2.0409e-006 6.8975e-006 1.5319e-005 1.6128e+005 1.5042e+000 1.0078e+000 5.1467e-006 6.5868e-006 1.6759e-005 RNA va recunoaste clasele mai usor, daca ele sunt separate (nu se intrepatrund). Pentru a avea o imagine despre cum sunt dispuse clasele, calculam cateva distante dintre vectorii transpusi pe liniile matricei “x”. Distanta dintre doi vectori A si B: )BA()BA(BA T −−=− . Verificare: A = [ x1 y1 ] T ; B = [ x2 y2 ] T ;

221

221

21

212121

2 )yy()xx(yyxx

]yyxx[BA −+−=⎥⎦

⎤⎢⎣

⎡−−

⋅−−=− ,

regasindu-se distanta dintre doua puncte A = ( x1 , y1 ) si B = ( x2 , y2 ) din planul xOy. Fiecare vector (forma) apares ca un punct in spatiul formelor cu 12 dimensions, punctele apartinand fiecarei clase formand un “nor”. Am calculat distantele dintre un numar de puncte: d90_115 = 2.0633e+004; d90_91 = 1.7355e+003; d114_115 = 4.5223e+003; d91_114 = 1.7843e+004; d89_93 = 3.8041e+003; d116_117 = 2.7049e+003; d89_116 = 2.9215e+004; d93_117 = 2.8125e+004; d57_84 = 1.0479e+003; d57_105 = 1.6943e+004; d57_124 = 2.5106e+004; d57_171 = 6.2768e+004; d54_87 = 3.3490e+003; d127_149 = 1.2119e+004; d87_100 = 3.1516e+004; d87_149 = 4.5015e+004; d87_168 = 6.3589e+004; d57_80 = 1.9778e+003. Mai jos, notatia “0C” inseamna ca cele doua puncte apartin aceleiasi clase; “1C” inseamna ca cele doua puncte apartin de doua clase vecine; “2C” - cele doua puncte apartin de doua clase, avand alta clasa intre ele; “3C” - cele doua puncte au alte doua clase intre ele. Din domeniile de variatie ale distantelor: 0C → 1048 ÷ 12 129 ; 1C → 16 943 ÷ 31 516 ; 2C → 25 106 ÷ 45 015 ; 3C → 62 768 ÷ 63 589 , se observa o singura intrepatrundere (in cazul acestui lot limitat de vectori). Deci, putem sa spunem ca indicii de monitorizare au fost alesi corect. Din tabelul 6.6.1 observam in coloana indicelui X6 ca numai 3 valori sunt de ordinul zecilor (printre care si cea din linia 18, corespunzand inregistrarii nr. 131, din clasa “c6” (Trepidatii)), restul fiind de ordinul sutelor. Concluzionam ca si celelalte doua inregistrari (linia 9 → Inr. 093 si linia 22 → Inr. 179) apartin de c6 , in loc de c2 , respectiv c4 . Acest fapt este confirmat in coloana X5 , valoarea acestui indice pt. cele 3 inregistrari fiind de ordinul zecilor, pt. rest fiind de ordinul unitatilor. Cu inregistrarile din cap. 6c formam doua loturi, numite Instruire si Clasificare (conform cap. 6.6.1), primul lot avand 60% din nr. total de inregistrari (cele notate cu “a”, “c” si “e”), iar lotul al doilea contine inregistrarile notate cu “b” si “d”.

Page 102: Fuzzy

Coloanele “az” si “Fz” apartinand inregistrarilor din lotul “Instruire” le mutam intr-un tabel numit “Tabel_a (b, c, . . .)” pe care-l transferam in MATLAB, unde il recompunem in 7 tabele, corespunzatoare celor 7 clase: Tab_C1, . . . ,Tab_C7. Pe baza valorilor indicilor de monitorizare X6 si X5 am mai mutat in clasa c6 inregistrarile 72 ÷ 75 (din clasa c1) si 180 (din c5). Analiza vizuala a tabelelor “Tabel_a.xls”, “Tabel_b.xls”, . . . ,releva – cu exceptia a doua cazuri – ca inregistrarile dintr-o clasa au valorile medii ale lui Fz apropiate si in crestere de la o clasa la alta (cu cresterea uzurii), cum era de asteptat. Prima exceptie o face inregistrarea 092, la care forta Fz med este de 5-6 ori mai mica ca la inregistrarile vecine (ce au regimuri de aschiere apropiate), fapt datorat – credem – unei defectiuni in circuitul marcilor tensometrice. Eliminam si aceasta inregistrare. A doua exceptie o face inregistrarea 103, la care partile c, d si e prezinta un Fz med la jumatatea valorii din partile a si b (adica se inregistreaza o “cadere” in ultima parte a graficului Fz med (t)). Cauza credem ca este aceeasi ca mai sus. Aceasta inregistrare o pastram, considerand ca reteaua este capabila sa surmonteze aceste erori in datele de intrare. 6.6.2- ANALIZA SPECTRALA A INREGISTRARILOR (FFT Discrete Fourier transform) FFT(X) realizeaza discrete Fourier transform (DFT) a vectorului X. FFT(X,N) realizeaza FFT in N puncte, prelungita cu zero-uri daca X un numar mai mic decat N puncte si trunchiata daca numarul este mai mare. Pentru un vector x (de lungime N), DFT este un vector X (de lungime N), cu elementele: N X(k) = sum x(n)*exp(-j*2*pi*(k-1)*(n-1) / N), 1 <= k <= N. n=1 Relatiile dintre DFT si coeficientii Fourier “a” si “b” din: N/2 x(n) = a0 + sum (a(k)*cos(2*pi*k*t(n) / (N*dt) + b(k)*sin(2*pi*k*t(n) / (N*dt))) k=1 N sunt: a0 = X(1) / N = (sum x(n)) / N, a(k) = 2*real(X(k+1)) / N, b(k) = -2*imag(X(k+1)) / N, n=1 unde x este un semnal discret, de lungime N, esantionat la timpul t cu intervalul dt. Observatie: t(n) / dt = n. Pentru a testa programul de dezvoltare in serie Fourier, il aplicam functiei: x = 3 + 4*sin(2*pi*50*t) + 2*sin(2*pi*100*t) + 5*sin(2*pi*350*t); Rezultatul se prezinta in fig. 6.6.1, in care se observa ca este corect.

Acest program il aplicam in continuare unor inregistrari: 43 (apartinand clasei C1), 89 (C2) ,113 (C3), 164 (C4), 185 (C5) si 64 (C6), pentru analiza spectrala a lui az si Fz. Graficele se prezinta – respectiv – in figurile 6.6.2 ÷ 6.6.7. La inregistrarile din clasa C6 (vezi fig. 6.5.6) se observa ca Fz are o variatie periodica, de perioada mare: T ≈ 100.Δt = 100.1/9600, deci cu frecventa f = 1 / T = 96 Hz, care apare si in figura 6.6.7, aceasta fiind frecventa fundamentala a vibratiilor Din reprezentarea grafica Fz = Fz (t) pt. inregistrarea nr. 64 se obs. ca amplitudinea

Fig. 6.6.1 vibratiilor este de aproximativ 2.5 N, valoare ce se verifica in fig. 6.6.7.

Page 103: Fuzzy

Fig. 6.6.2

Fig. 6.6.3

Fig. 6.6.4

Page 104: Fuzzy

Fig. 6.6.5

Fig. 6.6.6

Fig. 6.6.7

Page 105: Fuzzy

6.6.3.- MONITORIZAREA UZURII SCULEI UTILIZAND R.N.A. A) AMELIORAREA GENERALIZARII O problema care apare la antrenarea RNA se numeste “potrivire perfecta”: eroarea din setul de antrenare este condusa spre o valoare foarte mica, dar la prezentarea unor noi date retelei, eroarea este mare. Deducem ca reteaua a memorizat exemplele din timpul antrenarii, dar nu poate sa generalizeze in cazuri noi. O metoda pentru ameliorarea generalizarii RNA consta in utilizarea unor retele suficient de mari. Cu cat reteaua este mai mare, cu atat mai complexe sunt functiile ce le poate crea. O retea mica nu va avea suficienta putere de a potrivi perfect toate datele. Se observa ca daca numarul parametrilor din RNA este mult mai mic decat numarul datelor din setul de antrenare, atunci probabilitatea potrivirii perfecte este foarte mica. Daca se colecteaza mai multe date si creste marimea setului de antrenare, atunci nu sunt necesare metodele de mai jos (ce se aplica in situatiile cand dorim sa realizam maximul, in cadrul unei cantitati limitate de date). OPRIREA PREMATURA O alta metoda pentru ameliorarea generalizarii este “oprirea prematura”. In aceasta tehnica datele disponibile sunt impartite in trei subseturi. Primul este setul de antrenare, care este folosit pentru calculul gradientului si pentru actualizarea ponderilor si deplasarilor. Al doilea este setul de validare. Eroarea in acest subset este monitorizata in timpul procesului de antrenare. Eroarea de validare va descreste, in mod normal, in timpul fazei initiale de antrenare, la fel ca si eroarea din setul de antrenare. Dar, cand reteaua incepe sa potriveasca perfect datele, eroarea din setul de validare va incepe – de regula - sa creasca. Cand eroarea de validare creste pe durata unui numar specificat de iteratii, antrenarea este oprita, iar ponderile si deplasarile sunt readuse la minimul erorii de validare. Eroarea in setul de testare (al 3-lea subset) nu este folosita in timpul antrenarii, ci pentru compararea diferitelor modele. Ea este utila pentru a o plota in timpul procesului de antrenare. Daca aceasta eroare atinge un minim la un numar de iteratii semnificativ diferit decat eroarea din setul de validare, aceasta poate indica o impartire gresita a datelor. Oprirea prematura poate fi folosita cu oricare dintre functiile de antrenare. Este nevoie doar de trecerea datelor de validare in functia de antrenare. Nu trebuie folosit un algoritm care converge prea repede. Daca folosim un asemenea algoritm (ca trainlm), va trebui sa fixam parametrii de antrenare astfel incat convergenta sa fie relativ lenta (de exemplu: setam “mu” la o valoare relativ mare, cum ar fi 1, si setam “mu_dec” si “mu_inc” la valori apropiate de 1, cum ar fi 0.8 si 1.5, respectiv). Functiile de antrenare trainscg si trainrp sunt recomandate in cazul opririi premature. Alegerea setului de validare este de asemenea important. El ar trebui sa fie reprezentativ pentru toate elementele din setul de antrenare. Este indicat sa antrenam reteaua incepand cu diferite conditii initiale. E posibil ca orice metoda sa dea gres in anumite situatii. Prin testarea diferitelor conditii initiale, se poate verifica robustetea retelei. B) PRE-PROCESAREA SI POST-PROCESAREA Antrenara retelelor neuronale poate fi mai eficienta daca anumite pre-procesari sunt executate pe intrarile in retea si tintele. MEDIA SI DEVIATIA STANDARD (prestd, poststd, trastd) Inainte de antrenare, este util sa scalam intrarile si tintele astfel incat sa se incadreze intr-un domeniu specificat. O abordare in acest sens este de a normaliza media si deviatia standard in setul de antrenare. Aceasta procedura este aplicata cu functia prestd. Ea normalizeaza intrarile si tintele astfel incat ele vor avea media zero, iar deviatia standard unitara. Urmatorul cod ilustreaza folosirea lui prestd: [pn,meanp,stdp,tn,meant,stdt] = prestd(p,t); Intrarile in retea si tintele initiale sunt date in matricile p si t. Intrarile si tintele normalizate pn si tn, care sunt returnate, vor avea mediile nule si deviatiile standard unitare. Vectorii meanp si stdp

Page 106: Fuzzy

contin mediile si deviatiile standard ale intrarilor originale, iar vectorii meant si stdt contin mediile si deviatiile standard ale tintelor originale. Dupa ce reteaua a fost antrenata, acesti vectori ar trebui folositi pentru transformarea viitoarelor intrari aplicate retelei. Ei astfel devin parte din retea, la fel ca ponderile si deplasarile din retea. Daca prestd este folosita pentru a scala intrarile si tintele, atunci iesirea retelei este antrenata sa produca iesiri cu medie nula si deviatie standard unitara. Daca vrem sa convertim aceste iesiri in aceleasi unitati care erau folosite pentru tintele originale, atunci trebui sa folosim rutina poststd. In urmatorul cod, vom simula reteaua care a fost antrenata in codul anterior si apoi convertim iesirea retelei inapoi la unitatile originale.

an = sim(net,pn); a = poststd(an,meant,stdt);

Iesirea an din retea corespunde tintelor normalizate tn. Iesirea ne-normalizata a este in aceleasi unitati ca si tintele originale t. Daca prestd este folosita pentru preprocesarea datelor setului de antrenare, atunci ori de cate ori reteaua antrenata este folosita pentru intrari noi, ele trebuie pre-procesate cu mediile si derivatiile standard care au fost calculate pentru setul de antrenare. Aceasta se poate face cu rutina trasd. In urmatorul cod aplicam un nou set de intrari retelei pe care tocmai am antrenat-o.

pnewn = trastd(pnew,meanp,stdp); anewn = sim(net,pnewn); anew = poststd(anewn,meant,stdt);

ANALIZA COMPONENTELOR PRINCIPALE (prepca, trapca) In unele situatii, dimensiunea vectorului de intrare este mare, dar componentele vectorilor sunt corelati foarte mult. In aceasta situatie este bine sa se reduca dimensiunea lor. O procedura eficace pentru executarea acestei operatii este analiza componentelor principale. Aceasta tehnica are trei efecte: ortogonalizeaza componentele vectorilor de intrare (astfel ca ei sa nu fie corelati intre ei); ordoneaza componentele ortogonale rezultate (componente principale) astfel incat cele cu variatiile maxime sunt primele; elimina acele componente care contribuie cel mai putin la variatia din setul de date. Urmatorul cod prezinta folosirea prepca, care executa analiza componentelor principale.

[pn,meanp,stdp] = prestd(p); [ptrans,transMat] = prepca(pn,0.02);

Se observa ca mai intai se normalizeaza vectorii de intrare folosind prestd, astfel incat sa aiba medie zero si varianta unitara. Aceasta este o procedura standard cand folosim componentele principale. In acest exemplu, al doilea argument din prepca este 0.02. Aceasta inseamna ca prepca elimina acele componente principale care contribuie cu mai putin de 2% la variatia totala din setul de date. Matricea ptrans contine vectorii de intrare transformati. Matricea transMat contine matricea de transformare a componentelor principale. Dupa ce reteaua a fost antrenata, aceasta matrice trebuie folosita pentru transformarea urmatoarelor intrari aplicate retelei. Ea devine o parte a retelei, asa cum sunt ponderile si deplasarile. Daca multiplicam vectorii de intrare normalizati pn cu matricea transMat, vom obtine vectorii de intrare transformati ptrans. Daca prepca este folosita pentru pre-procesarea datelor din setul de antrenare, atunci ori de cate ori reteaua antrenata este folosita cu intrari noi, ele trebuie pre-procesate cu matricea de transformare care a fost calculata pentru setul de antrenare. Acest lucru se poate efectua cu rutina trapca. In urmatorul cod, aplicam un set nou de intrari unei retele pe care am antrenat-o deja.

pnewn = trastd(pnew,meanp,stdp); pnewtrans = trapca(pnewn,transMat); a = sim(net,pnewtrans);

6.6.4- RULAREA R.N.A. Vom aplica tehnicile descrise mai sus. Setul de antrenare va contine inregistrarile din lotul “Instruire”, deci 60% din numarul total de inregistrari. Setului de validare ii alocam inregistrarile “b” din lotul “Clasificare”, iar in setul de testare vor intra inregistrarile “d”; fiecare set are deci 20 % din numarul inregistrarilor.

Page 107: Fuzzy

RNA are 3 nivele, cu s1 = 23 neuroni, s2 = 27, s3 = 7 (= numarul claselor). Matricea de intrare p are dimensiunile 12 (indici de monitorizare) x 655 (inregistrari), iar matricea de iesire y are dimensiunile 7 (clase) x 655. Functiile de antrenare sunt: tf1 = purelin, tf2 = tansig, tf2 = logsig, deci vectorii de iesire au 7 elemente, cu valori in domeniul (0, 1). In secventa cu instructiuni: [ma, ia]=max(a); [mt, it]=max(t); c = ia = = it; n = 1: 655; nc = [n, c]; mt = 1 (evident), iar “ma” este valoarea maximului pe coloana lui “a”; daca indicii “ia” si “it” (care dau pozitia respectivelor maxime) sunt identici, atunci maximele pe coloanele lui”a” coincid cu maximele pe coloanele lui ”t” si in matricea c (1x655) elementul respectiv este egal cu 1, iar in caz contrar ia valoarea 0. “nc” este o matrice cu doua linii, pe prima linie numarandu-se inregistrarile, iar a doua linie are elementele 1 (corect), sau 0 (eroare). Primele rulari (cu functiile de antrenare trainrp, trainscg, etc) au indicat erori numai in pozitiile corespunzatoare inregistrarilor din clasele c5 si c7, adica la clasele care au cele mai putine inregistrari. Marirea numarului de inregistrari – fara a efectua noi experiente – se poate face adaugand, intr-o clasa aceleasi inregistrari de mai multe ori, eventual afectate de un zgomot de medie 0.1; de exemplu, daca inregistrarile sunt cuprinse in tabelul “Tabel 112”, ce are dimensiunile 960 x 6, atunci se adauga inregistrarile: Tabel 112 + randn(960,6)*0.1. Ca urmare: - inpatrim inregistrarile din clasa c5: la primul set atasam un zgomot de medie 0.1, al doilea set este identic cu cel original, iar la al treilea set atasam un zgomot de medie 0.15; - intreim inregistrarile din clasa c7, procedand analog ca mai sus (numai primul si al doilea set). In concluzie, clasele din cap. 6.5.c au forma finala: - in clasa “c1” (VBmax ≤ 0,2 mm) se incadreaza inregistrarile 43 ÷ 63, 77 ÷ 87, adica 32 Inregistrari (cu cate 4800 esantioane); - clasa “c2” (0,2 < VBmax ≤ 0,4 mm) → 89 ÷ 91, 94, 96 ÷ 112 ⇒ 21 Inregistrari; - “c3” (0,4 < VBmax ≤ 0,6 mm) → 113 ÷ 118, 124 ÷ 130, 132 ÷ 144, 146 ÷ 163 ⇒ 44 Inr.; - “c4” (0,6 < VBmax ≤ 0,7 mm) → 164 ÷ 171, 174 ÷ 177 ⇒ 12 Inr.; - “c5” (VBmax > 0,7 mm) → 182 ÷ 184 ⇒ 3 Inr. + 3 Inr. (cu zgomot) + 3 Inr. + 3 Inr. (cu zgomot) = 12 Inr.; - “c6” (Trepidatii) → 64, 67, 72 ÷ 76, 93, 95, 131, 172, 179, 180, 185 ⇒ 14 Inr.; - “c7” (Strunjire in gol) → 187 ÷ 191 ⇒ 5 Inr. + 5 Inr. (cu zgomot) + 5 Inr. ⇒ 15 Inr. Deci, c5 va contine 60 de inregistrari, c7 – 75 inregistrari, iar numarul coloanelor din matricele de mai sus creste de la 655 la 750. Cu instructiunile: ind = find(c = = 0); dim = length(ind); er = dim / 750, Gasim – respectiv – indicii elementelor lui “c” care sunt nuli, numarul de elemente din “ind” si eroarea retelei. Mai jos se prezinta rezultatele unei rulari: R = 8 ; Q = 750 Exista o redundanta in setul de date, pentru ca analiza componentelor principale a redus dimensiunea vectorilor de intrare de la 12 la 8. TRAINRP, Epoch 0/300, MSE 1.53359/0, Gradient 0.292509/1e-006 TRAINRP, Epoch 25/300, MSE 0.487294/0, Gradient 0.0150939/1e-006 TRAINRP, Epoch 43/300, MSE 0.477332/0, Gradient 0.0148044/1e-006 TRAINRP, Validation stop. ind = Columns 1 through 18 440 441 445 446 447 448 449 450 454 455 456 457 458 459 463 468 472 473 Columns 19 through 36 474 475 476 477 481 482 483 519 520 521 533 545 594 595 596 646 647 658 Column 37 672 dim = 37 ; er = dim / 750 = 0.0493 = 4.93 %.

Page 108: Fuzzy

Un mijloc de diagnostic util este de a plota erorile de antrenare, validare si testare pentru a verifica progresul antrenarii. Resultatul se prezinta in figura 6.6.8.

Fig. 6.6.8

Rezultatul este rezonabil, pentru ca erorile de validare si testare au caracteristice similare. In alte rulari: - efectuate in aceleasi conditii, rezultatele au fost de doua ori ca mai sus, iar o data au fost: 51 epoci; dim = 27 ; er = 3.6 %; - fara functia “init” (de reinitializare a ponderilor si deplasarilor), in doua rulari erorile au fost 4.67% si 13.3%; - cu functia de antrenare trainscg fara “init” eroarea a fost de 5.33%, iar cu “init”- 25.6%. 6.6.5- CALCULE STATISTICE In matricea de intrare p, avand dimensiunile 12 (indici de monitorizare) x 750 (inregistrari), calculam pt. fiecare coloana (inregistrare): - media aritmetica (a celor 12 indici) μ ;

- abaterea medie patratica (deviatia standard) ∑=

−−

=N

kkx

N 1

2)(1

1 μσ , unde N = 12;

rezultatele se prezinta in fig. 6.6.9, in care clasei c1 ii sunt alocate inregistrarile 1 ÷ 160, c2 → 161 ÷ 265, c3 → 266 ÷ 485, c4 → 486 ÷ 545, c5 → 546 ÷ 605, c6 → 606 ÷ 675, c7 → 676 ÷ 750. Se obs. ca cele doua grafice au aceeasi alura, iar clasele sunt usor de separat (in functie de valorile lui μ si σ). Concluzionam ca indicii de monitorizare au fost alesi corect.

6.7.- MONITORIZAREA

Monitorizarea unui strung inseamna ca in timpul procesului continuu de aschiere (fig. 6.7.1) sa se conecteze aparatul “Spider”, care sa transmita la PC o inregistrare pe baza careia RNA sa spuna in ce clasa se situeaza prelucrarea (conform tabelului 6.2.2). Apoi “Spider” se conecteaza din nou, s.a.m.d. In cazul in care clasa este mai mare de 3 (deci “anormala”), PC trebuie sa dea un semnal sonor, sau sa opreasca prelucrarea. Mai detaliat: inregistrarea are 4800 de esantioane, fiind un tabel in EXCEL cu 4800 linii si 3 coloane (A = ε 1inreg, B = ε 2inreg, C = a z). Transferul Spider → PC se face in cca. 1 min. Din acest tabel se selecteaza alt tabel (mai mic) cu 960 linii si 4 coloane, primul element fiind ales aleator, la o locatie mai mare de A500. In a IV-a coloana se calculeaza functia Fz (= 1136*A-1136*B), conform relatiei (6.4.12). Acest tabel se transfera in MATLAB, unde se calculeaza cei 12 indici de monitorizare care se prezinta la intrarea RNA, cum se arata la finalul cap. 6.6.4.

Page 109: Fuzzy

Fig. 6.6.9

Fig. 6.7.1

Pentru a vedea cum raspunde RNA am utilizat cateva dintre inregistrarile initiale (prezentate in finalul cap. 6.6.1); rezultatele sunt cele din tab. 6.7.1. Tab. 6.7.1

Nr. crt.

Inreg. Clasa v [m/min]

t [mm]

s [mm/rot]

Epoci Eroarea %

Clasa din RNA

Timpul [min]

0 1 2 3 4 5 6 7 8 9

1 046 1 69 0.5 0.25 43 4.93 1 10 2 183 5 71 3 0.302 40 4.4 5 8 3 168 4 75.4 2 0.302 76 2.5 4 6 4 174 4 120.6 2 0.416 67 3.47 4 8 5 099 2 83.2 1 0.334 43 4.93 2 6 190 7 0 0 0 47 3.6 7 7 7 095 6 83.2 1 0.353 47 23.87 6 7

La primele 4 inregistrari, dupa prima rulare s-a mai facut si o a II-a rulare, ce a durat 2 min.,

Page 110: Fuzzy

clasa data de RNA coincizand cu cea de la prima rulare. Coincidenta valorilor din coloanele 2 si 8 ne arata ca RNA furnizeaza rezultate corecte. In cadrul monitorizarii reale, cand aschierea va fi continua, pt. evitarea “necompensarii termice” (vezi cap. 6.4.A) trebuie folosita racirea cu apa a cutitului. Dar, apa poate provoca deranjamente in circuitele marcilor tensometrice, desi acestea sunt protejate (cu Poxipol). Ca urmare, pentru acest stadiu al experimentului va trebui sa eliminam marcile tensometrice si sa masuram componentele fortei de aschiere cu dinamometrul KISLER (Austria). In plus, coloana nr. 9 din tabelul 6.7.1 ne arata ca hard-ul actual ne furnizeaza informatii tardive, adica aflam ca scula este – de exemplu - in clasa 4 (Uzura severa), cand este posibil ca ea sa fi ajuns in clasa 5 (Deteriorare), sau 6 (Trepidatii). Deci este necesar un PC specializat, care sa reduca cat mai mult timpul de raspuns. Pentru a verifica eficacitatea soft-ului, vom relua rularile ca in tabelul 6.7.1, dar pentru o treime din cele 44 de inregistrari din clasa a 3-a. Rezultatul se prezinta in tab. 6.7.2, in care “L” este Tab. 6.7.2

Nr. crt.

Inreg. v [m/min]

t [mm]

s [mm/rot]

L [mm]

Epoci Eroarea %

Clasa din RNA

0 1 2 3 4 5 6 7 8

1 115 130.6 1.2 0.334 245 40 4.4 2 2 118 130.6 1.2 0.416 90 76 2.53 3 3 126 79.3 1.4 0.292 770 43 4.93 3 4 129 79.3 1.4 0.353 630 43 4.93 3 5 133 63.4 1.4 0.353 425 40 4.4 4 6 136 63.4 1.4 0.292 300 76 2.53 3 7 139 63.4 1.4 0.212 200 64 2.67 3 8 142 63.4 1.4 0.167 120 67 3.47 3 9 146 77.3 1.5 0.375 780 43 4.93 3 10 149 77.3 1.5 0.302 615 47 3.6 3 11 152 77.3 1.5 0.25 480 47 23.87 3 12 155 123.7 1.5 0.177 340 40 4.4 3 13 158 123.7 1.5 0.146 230 31 15.2 3 14 161 123.7 1.5 0.118 130 76 2.53 3

distanta de la mijlocul zonei aschiate la universal. Se observa ca numai inregistrarile de la nr. 1 si 5 nu au dat clasa corecta (3), ci o clasa vecina. Alte doua rulari realizate pt. fiecare dintre aceste inregistrari – cu modificarea locatiei primului element din tabelul (960 x 4) – au indicat clasa corecta (3). Deci la 25 de rulari, numai doua au fost eronate, eroarea fiind de 8 %. Consideram ca aceasta eroare se va micsora daca vom lua mai multe inregistrari in tab. 6.7.1 si 2.

6.8.- METODA FUZZY C-MEANS [2,6]

Pentru comparatie cu metoda RNA, vom clasifica cele 750 de inregistrari utilizand metoda fuzzy c - means. Clusterizarea fuzzy este o metoda de determinare a clusterilor optimali intr-un spatiu vectorial, pe baza normelor euclidiene pentru distanta dintre vectori. Fuzzy c-means (FCM) este o metoda de clusterizare a datelor in care fiecare punct de date apartine unui cluster, cu un anumit grad de apartenenta. Cu aceasta metoda se pot grupa puncte de date dintr-un spatiu multidimensional intr-un numar de clustere diferite. Pentru un set de date din tabelul 6.6.1: X = ( x1 , x2 , . . . , xN ) , (6.8.1) obiectivul este sa clasificam datele in n clusteri fuzzy (clase). O valoare de apartenenta care descrie gradul de apartenenta a fiecarei date la fiecare clasa este: μ k , j ( xk ) ∈ [ 0 , 1 ] , ( 1 ≤ j ≤ n , 1 ≤ k ≤ N ) . (6.8.2)

Page 111: Fuzzy

Matricea de partitie este definita astfel: , (6.8.3) μ

μ μ

μ μ

( )

( ) . . ( ). .. .( ) . . ( )

n

x x

x x

N N

n n

=

⎢⎢⎢⎢⎢

⎥⎥⎥⎥⎥

11 1 1

1 1 N N

N

unde valorile de apartenenta sunt supuse la urmatoarele conditii:

, (6.8.4) μ k jj

nk

=∑ = =

11 1, ( ,..., )

adica suma valorilor de apartenenta a datelor la toti clusterii fuzzy (clase) trebuie sa fie unitara. Indicele de performanta pentru matricea de partitie este:

J = ( μj

n

k

N

==∑∑

11k j )w || xk - vj || 2 , (6.8.5)

unde vj este un vector pseudo-centru de greutate a clasei j:

vj = ( )

( )

μ

μ

k jw

kk

N

k jw

k

N

x⋅∑

=

=

1

1

, ( j = 1 , 2 , . . . , n ) (6.8.6)

si w > 1 este o pondere a valorilor de apartenenta; || xk - vj || este norma euclidiana, adica

distanta dintre xk si vj : || xk - vj || = ( ( , ) ( , ))x k i v j ii

m−∑

=

2

1 . (6.8.7)

Matricea de partitie optima se obtine cand indicele de performanta J isi atinge minimul, adica atunci cand suma fluctuatiilor interioare claselor are valoarea minima. In faza de instruire, procedura este: 1.- Construirea matricei de partitie. Euristic se determina μ tk , j , care satisface (6.8.4):

, (6.8.8) μ

μ μ

μ μ

( )

( ) . . ( ). ..( ) . . ( )

n

x x

x x

tN

tN

nt

n Nt

N

=

⎢⎢⎢⎢⎢

⎥⎥⎥⎥⎥

11 1 1

1 1

.

Sari la pasul 2, luand t = 0 . 2.- Calculeaza vectorul cu pseudo-centrele de greutate pentru fiecare cluster din matricea de partitie:

vjt =

( )

( )

μ

μ

k jt w

kk

N

k jt w

k

N

x⋅∑

=

=

1

1

, ( j = 1 , . . . , n ) . (6.8.9)

3.- Modifica fiecare valoare de apartenenta:

μ

αα

k jt

k

k jt

kt

wn

xx v

x v

+−

=

=−

⎝⎜⎜

⎠⎟⎟∑

11 1

1

1( ) / ( ) , if xk ≠ vjt ; (6.8.10)

pana cand xk = vjt , apoi: μ t+1

k , j ( xk ) = 1 , daca j = α ; μ t+1k , j ( xk ) = 0 , daca j ≠ α .

Matricea de partitie modificata este re-organizata:

, (6.8.11) μ

μ μ

μ μ

t

tN

tN

nt

n Nt

N

n

x x

x x

+

+ +

+ +

=

⎢⎢⎢⎢⎢

⎥⎥⎥⎥⎥

1

111

1 11

11

11

( )

( ) . . ( ). .. .( ) . . ( )

4.- Se verifica daca convergenta matricei de partitie este indeplinita:

Page 112: Fuzzy

⏐μ t+1k j - μ tk j ⏐< ε , (6.8.12)

unde ε este un prag de convergenta. Daca convergenta nu este indeplinita, sari la pasul 2 luand t = t + 1 . In faza de clasificare, pentru o noua inregistrare x, avand centrele clusterilor [expresia finala din 6.8.9)], se calculeaza gradul fuzzy a noii inregistrari cu o relatie de tipul (6.8.10):

μ

αα

k j

j

wn

xx v

x v

( ) / ( )=−

⎝⎜⎜

⎠⎟⎟∑

=

11 1

1

, if x ≠ vj ; (6.8.13)

pana cand x = vj , apoi: μ j ( x ) = 1 , daca j = α si μ j ( x ) = 0 , daca j ≠ α . In concluzie, conditiile de proces se identifica prin gradele fuzzy maxime. Functia fcm din toolbox-ul “Fuzzy Logic” incepe cu o alegere initiala a centrelor clusterilor, in locatia medie a fiecarui cluster. Aceasta alegere este – cel mai adesea - incorecta. In plus, fcm atribuie fiecarui punct de date un grad de apartenenta la fiecare cluster. Prin actualizarea iterativa e centrelor clusterilor si a gradelor de apartenenta pentru fiecare punct de date, fcm muta iterativ centrele clusterilor spre locatia "corecta" din interiorul unui set de date. Aceasta iteratie se bazeaza pe minimizare unei functii obiectiv care reprezinta distanta de la oricare punct de date la centrul clusterului, ponderata cu gradul de apartenenta al punctului de date. fcm este o functie ce are la iesire o lista de centre de clusteri si cateva grade de apartenenta pentru fiecare punct de date. Descriere: [center, U, obj_fcn] = fcm(data, cluster_n) aplica metoda clusterizarii fuzzy c-means unui set de date. Argumentele de intrare in aceasta functie sunt: data (setul de date de clusterizat; fiecare linie este un punct de date inregistrate); cluster_n (numarul clusterilor (> 1)). Argumentele de iesire din aceasta functie sunt: center (centrele finale ale clusterilor, in care fiecare linie este un centru); U (forma finala a matricei de partitie fuzzy (sau matricea functiilor de apartenenta)); obj_fcn (valorile functiilor obiectiv in timpul iteratiilor). fcm(data,cluster_n,options) are un argument aditional options, pentru a controla parametrii clusterizarii, a introduce un criteriu de oprire si/sau a seta iteratiile: - options(1): exponent for the partition matrix U (default: 2.0); - options(2): maximum number of iterations (default: 100); - options(3): minimum amount of improvement (default: 1e-5); - options(4): info display during iteration (default: 1); Daca nu se specifica nici-o optiune, se utilizeaza valorile implicite. Procesul clusterizarii se opreste cand se atinge numarul maxim de iteratii, sau cand castigul la functia obiectiv dupa doua iteratii consecutive este mai mic decat minimul castigului specificat. Pentru argumentul de intrare “data” egal cu matricea p’= x (750x12) din cap. 6.6.5 (pe o coloana din U (7x750) fiind gradele de apartenenta ale unui vector la cele 7 clase), programul ce atribuie vectorul clasei pentru care gradul de apartenenta este maxim, da rezultatul din fig. 6.8.1 si mai jos. Iteration count = 1, obj. fcn = 647350640000.421870 . . . Iteration count = 31, obj. fcn = 121863345485.359880 . . . Iteration count = 61, obj. fcn = 120594760756.125920 . . . Iteration count = 91, obj. fcn = 120594676310.747500 . . . Iteration count = 108, obj. fcn = 120594676310.453870 Iteration count = 109, obj. fcn = 120594676310.453890 Iteration count = 110, obj. fcn = 120594676310.453890 Coloana nr. 100 din U: U100 = [ 0.0006 0.9990 0.0000 0.0001 0.0002 0.0000 0.0000 ] T

Page 113: Fuzzy

Fig. 6.8.1

O a doua rulare are ca rezultat o figura analoaga cu fig. 6.8.1, orizontalele avand aceeasi componenta, dar pe alte nivele. Un program analog, in care s-au utilizat numai 4 coloane din matricea x (750x12) si anume, cele mai importante: 4 (Fz), 6 (Nr. intersectiilor), 7 (Densitatea spectrala Fz) si 10 (Densitatea spectrala az), furnizeaza aceleasi rezultate. De asemenea, acelasi rezultat s-a obtinut si cand setul de date pentru clusterizat a avut 2 coloane: marimile din fig. 6.6.9. Interpretarea figurii 6.8.1 este urmatoarea: clasele stabilite la metoda RNA (reamintite langa fig. 6.6.9) se regasesc partial in fig. 6.8.1, fiind numerotate intr-o alta ordine (c1 este acum clasa nr. 2, dar c7 este tot 2, ceea ce nu este corect; c2 este 1, majoritatea inregistrarilor fiind pe nivelul 1; c3 este impartita pe nivelele 1 si 5, ceea ce nu convine; c4 este 4, majoritatea inregistrarilor fiind pe nivelul 4, etc.). Se obs. ca sunt alocate putine inregistrarilor la 3 clase (3, 4 si 7). In concluzie, metoda fuzzy c - means da erori mult mai mari in comparatie cu metoda RNA.

BIBLIOGRAFIE 1- Balan, G, 2002, The monitoring of a lathe using an artificial neural network, Grant type A nr. 33 445, Theme 19, Cod CNCSIS 451 2- Bezdek, J.C., 1981, Pattern Recognition with Fuzzy Objective Function Algorithms, Plenum Press, New York 3- Du, R., Elbestawi, M. A., Wu, S. M., 1995, Automated Monitoring of Manufacturing Processes, Part 1: Monitoring Methods, Part 2: Applications, ASME Journal of Engineering for Industry, may, vol. 117, Part 1-pp. 121 - 132, Part 2 − pp .133 - 141. 4- Epureanu, A., 1983, Technologies in machine building, EDP, Romania. 5- N. Oancea, s.a. Procese de aschiere. Experimente de laborator, Ed. TEHNICA-INFO Chisinau, 2002 6- Ryan, J., Ryan, M., Power, J., 1994, Using fuzzy logic, Prentice Hall 7- STAS 12046 / 1 - 81, Cutting life testing. Wear. General notions 8- STAS 12046 / 2 - 81 , Cutting life testing . Tool - life testing methods in turning tools 9- MATLAB 6.5

Page 114: Fuzzy

7. AMELIORAREA DINAMICII MASINILOR - UNELTE CU SISTEME DE CONTROL FUZZY ADAPTIVE

7.1. INTRODUCERE In general, controlul adaptiv ajusteaza in timp real unii parametrii variabili ai procesului de aschiere cu scopul de a maximiza performantele masinii. Prezentam un sistem de control fuzzy adaptiv pentru procesele de aschiere, adecvat pentru diferite conditii de prelucrare. Aplicarea controlului adaptiv la procesul de aschiere (prin varierea avansului), permite mentinerea unei forte constante de aschiere cand conditiile de lucru sufera modificari semnificative. Performantele sistemelor conventionale de control pentru procesele de aschiere propuse pana in prezent [1,4] sunt limitate in cazul variatiilor semnificative ale conditiilor de lucru. Controlerele fuzzy adaptive au performante mai bune decat controlerele conventionale, dupa cum demonstreaza rezultatele experimentale [3]. Sistemele de control in bucla inchisa (la care marimea de comanda depinde de iesirea sistemului fizic) au structura generala din figura 7.1.

Fig. 7.1

Figura 7.2 ilustreaza tipurile de comenzi dorite cand iesirea din proces este in diferite zone vecine cu punctul de functionare stabila y S . ym a x y ( t ) u m a x y S u ( t ) zona zona constrangerii zona stabila normala u → u m a x

u = slab Δ u = K . e +. . . t

Fig. 7.2 Controlerul trebuie sa indeplineasca urmatoarele trei obiective:

- sa elimine orice eroare semnificativa a iesirii y a procesului, printr-o ajustare corespunzatoare a comenzii u;

- sa previna depasirea de catre iesirea y a unei valori maxime impuse ym a x , adica pentru orice k, y ( k ) ≤ ym a x ;

- sa produca comenzi slabe in vecinatatea punctului de functionare stabila yS , adica fluctuatiile minore ale iesirii din proces sa nu se transmita spre comanda. Un regulator (controler) PI conventional nu poate indeplini cele trei obiective, dar un operator cu experienta le indeplineste cu usurinta. Regulatorul PI (legea de reglare proportional-integrala) este descris de ecuatia:

Page 115: Fuzzy

u ( t ) = KP ⋅ e ( t ) + KI ⋅ ∫ e ( t ) dt (7.1) Daca derivam aceasta relatie, se obtine: & &u K e K eP I= ⋅ + ⋅ . (7.2) Versiunea discreta a acestei ecuatii se scrie: Δ u ( k ) = K P .Δ e ( k ) + K I . e ( k ) , (7.3) in care : - Δ u ( k ) este variatia comenzii: Δ u ( k ) = u ( k ) - u ( k - 1) ; (7.4) - e ( k ) ese eroarea: e ( k ) = yS - y ( k ) ; (7.5) - Δ e ( k ) este variatia erorii: Δ e ( k ) = e ( k ) - e ( k - 1 ) = y ( k - 1 ) - y ( k ); (7.6) - k este esantionul k de timp. Sarcinile controlerului, enumerate mai sus, pretind coeficienti variabili in relatia (7.1). Deducem ca un controler PI conventional este incapabil sa satisfaca toate obiectivele, dar ar putea fi implementat cu ajutorul rationamentului interpolativ si aproximativ (fuzzy). Controlerele fuzzy folosesc o baza de cunostinte constand din reguli if - then de tipul: if (starea procesului) then (comanda), (7.7) in locul expresiei analitice (7.1). Partea “starea procesului“ din relatia (7.7) este numita antecedent (premize) si consta dintr-o descriere a iesirii din proces la esantionul k de timp. Descrierea se face prin valori particulare ale erorii, variatiei erorii si constrangerilor. Partea “comanda“ din (7.7) este numita consecvent (concluzia) si consta dintr-o descriere a comenzii care trebuie sa fie produsa pentru a rezulta iesirea particulara din proces data de antecedent. Descrierea se face prin valori ale variatiei comenzii. Aceasta forma de reprezentare exprima cunostinte euristice si empirice folosite in limbajul de comunicare natural. Relatiile fuzzy de tipul (7.7) pot fi vazute ca o generalizare a sistemelor deterministe discrete de tipul (7.3), in sensul ca ultimele se obtin din primele prin inlocuirea marimilor fuzzy cu marimi deterministe (numere reale). Un sistem lingvistic (fuzzy) nu este compatibil cu sistemele tehnice (deterministe) existente, fiind incapabil sa primeasca semnale uzuale sau sa genereze comenzi acceptate de sistemele de actionare. Este deci necesara gasirea unei modalitati de cuplare a sistemelor fuzzy cu cele deterministe prin interefete numeric/simbolic (prin functii de fuzzificare a marimilor de intrare) si simbolic/numeric (prin functii de defuzzificare a marimilor de iesire). Aceste operatii nu schimba nici natura starilor sistemului fuzzy, nici natura regulilor de baza care leaga marimile de intrare de cele de iesire. Uzual, regula (7.7) este compusa si anume de tipul “cu antecedent multiplu conjunctiv“, adica: daca x este A~

1 si A~2 si ... si A~

L atunci y este B~S. (7.8)

Presupunând o noua multime fuzzy A~S = A~

1∩A~2 ∩?…∩A~

L, exprimata prin functia de

apartenenta: μA~

S ( x ) = min [μA~

1 ( x ) , μA~

2 ( x ) ,. . ., μA~

L ( x )] , (7.9)

utilizând definitia intersectiei fuzzy (Cap. 4), regula compusa initiala poate fi rescrisa: daca x este SA~ atunci y este S B~ . (7.10)

Datele de intrare, regulile, comanda (sau actiunea) sunt - in general - multimi fuzzy exprimate sub forma unor functii de apartenenta definite pe universul corespunzator fiecarei marimi. Metoda utilizata pentru evaluarea regulilor este cunoscuta sub numele de rationament aproximativ sau rationament interpolativ fiind in mod uzual realizata prin compunerea de relatii fuzzy aplicate unei ecuatii relationale fuzzy. Nivelele de abstractizare din controlerul fuzzy si din controlerul conventional sunt complet diferite: a)- Relatia analitica a unui controler conventional este doar o legatura intre variabilele Δ u, Δ e si e, fara a ne informa asupra scopurilor pe care aceasta relatie le serveste. In contrast, regula if - then utilizata de un controler fuzzy prezinta relatia dintre cele trei variabile, explicitand directionalitatea ei, adica de la E si Δ E spre Δ U. Aceasta cauzalitate defineste scopul relatiei dintre aceste variabile, anume calcularea valorii lui Δ u .

Page 116: Fuzzy

b)- Alta diferenta dintre nivelele de abstractizare ale celor doua controlere consta in reprezentarea valorilor pe care le pot lua cele trei variabile. Intr-o regula if - then variabilele au expresii verbale, apartinand unei multimi de valori lingvistice L, compusa din 8 multimi fuzzy: L = { NB , NM , NS , NZ , PZ , PS , PM , PB } (7.11) unde P, N, Z, S, M, si B corespund - respectiv - lui: pozitiv, negativ, zero, mic (small), mediu si mare (big). c)- Se observa ca in cazul unui controler fuzzy valorile lui E si ΔE exprima explicit o relatie intre doua valori consecutive ale iesirii din proces, adica - de exemplu - o eroare E = NS inseamna ca diferenta yS - y (k) este mica si y (k) > yS , iar daca variatia erorii ΔE = PB inseamna ca y (k - 1) - y (k) este mare si y (k) < y (k - 1); deducem ca: yS < y (k) < y (k - 1). Aceste informatii nu se pot obtine de la un controler conventional, care lucreaza cu valori numerice. 7.2. VARIABLE LINGVISTICE O variabla lingvistica este reprezentata in rationamentul aproximativ de cadrul urmator: ⟨ X , LX , X , MX ⟩ , (7.12) unde: - X este numele simbolic al variabilei lingvistice, de ex. varsta, temperatura, eroare, variatia erorii, etc. - LX este multimea valorilor lingvistice pe care X le poate lua. In cazul erorii, LX uzual este multimea din (1) sau o submultime a ei. LX este numita si multimea termenilor lui X. - X este domeniul fizic real in care variabla lingvistica X ia valori (deterministe). In cazul variabilei lingvistice temperatura, acesta poate fi intervalul [-20o C, 40o C]. In cazul erorii si variatiei erorii, desi exista un domeniu fizic real, se utilizeaza un “domeniu normalizat” [- 6, 6], ca in figura 7.3. X poate fi discret sau continuu. μ NB NM NS NZ PZ PS PM PB 1 E sau ΔE - 6 - 4 - 2 0 2 4 6 Fig. 7.3 - MX este o functie semantica care da o interpretare valorii lingvistice in functie de elementele cantitative din X, adica MX : LX → ~ ~LX , (7.13) unde ~ ~LX este denumirea multimii fuzzy definita pe X, adica (7.10):

continuuesteXcacazulinxxXL

discretesteXcacazulinxxXL

XLX

XLX

∑=

=

/)(~~

/)(~~

μ

μ (7.14)

Cu alte cuvinte, MX este o functie care are ca argument un simbol, de exemplu small si furnizeaza “semnificatia“ adica simbolul - small ca o multime fuzzy. In locul lui se poate utiliza μ

~ ~LX

L X , adica functia de apartenenta, fara un argument. De exemplu, consideram variabila lingvistica E desemnând eroarea. Cadrul lui E este ⟨ E, LE, E, ME ⟩, unde LE este data de relaţia (7.11), E = [-6, 6] si ME :LE → ~ ~LE . Acest cadru

Page 117: Fuzzy

este arătat în figura 7.3. Deci, , (7.15) ~~ ~ ~ ( ; , ) /NB LE L x x= = − −∫−

16

66 4

unde funcţia L : U → [0,1] este o funcţie cu doi parametrii, definita astfel (fig. 7.4): L 1 u α β Fig. 7.4. Funcţia L

(7.16) L uu

u uu

( ; , ),

( ) / ( ) ,,

α βα

β α β αβ

=<

− − ≤>

⎨⎪

⎩⎪

1

0 β≤

β≤

,

u β≤

, (7.17) ~ ~ ~ ~ ( ; , , ) /NM LE x x= = − − −∫−

26

66 4 2Λ

in care funcţia triunghi Λ : U → [ 0 , 1] este o funcţie cu trei parametrii, definita astfel (fig. 7.5): Λ 1 u α β γ Fig. 7.5. Funcţia Λ

(7.18) Λ ( ; , , )

,( ) / ( ) ,( ) / ( ) ,

,

u

uu uu u

u

α β γ

αα β α αγ β γ β γ

γ

=

<− − ≤− − ≤ ≤

>

⎨⎪⎪

⎩⎪⎪

0

0

(7.19)

~~ ~ ~ ( ; , , ) /

~ ~ ~ ~ ( ; , ) / ,

NS LE x x

PB LE x x

= = − −∫

⋅⋅

= = ∫

36

6

76

6

4 2 0

4 6

Λ

Γ

unde funcţia Γ : U → [0, 1] este o funcţie cu doi parametrii definita astfel (fig. 7.6):

(7.20) Γ ( ; , ),

( ) / ( ) ,,

uu

uu

α βα

α β α αβ

=<

− − ≤>

⎨⎪

⎩⎪

0

07.3. CONTROLERE FUZZY Controlerele fuzzy au diagrama bloc din figura 7.7, care detaliaza figura 7.1 si in care modulul "baza de cunostinte" contine cunostinte relativ la toate partitiile fuzzy ale intrarilor si iesirilor.

Page 118: Fuzzy

Γ 1 α β u Fig. 7.6. Funcţia Γ

Fig. 7.7

Principalele elemente de proiectare specifice unui sistem de control fuzzy sunt urmatoarele: 1. Strategii de fuzzificare si de interpretare a operatorilor de fuzzificare; 2. Baza de cunostinte: a) discretizarea/normalizarea universului de discurs; b) obtinerea partitiilor fuzzy pentru spatiile de intrare-iesire; c) alegerea functiilor de apartenenta pentru multimile fuzzy primare ; 3. Baza de reguli: a) alegerea variabilelor de stare (intrare) si variabilelor de control (iesire) ale procesului; b) determinarea surselor de cunostinte necesare realizarii regulilor de control fuzzy; c) determinarea tipului regulilor de control fuzzy. 4. Definirea elementelor logice necesare in luarea deciziei: a) definirea implicatiei fuzzy; b) realizarea mecanismului de inferenta (rationament). 5. Alegerea metodelor de defuzzificare si interpretarea rezultatelor. In cazul unui controler fuzzy simplu metodologia utilizata si rezultatele celor 5 etape mentionate mai sus sunt fixate, in timp ce intr-un controler fuzzy adaptiv acestea sunt modificate in conformitate cu anumite legi adaptive, in scopul optimizarii controlerului. Adaptabilitatea controlului se realizeaza aici prin acumularea masuratorilor experimentale si generarea unor ameliorari in regulile de control. Baza de reguli a unui controler fuzzy contine un grup de reguli care sunt permanent active. O regula are forma, de exemplu: daca e este PB si Δ e este PB, atunci Δ u este PS , care este exprimarea simbolica a urmatoarei relatii cauzale formulata in limbajul natural: “daca eroarea curenta este pozitiva si mare si variatia -erorii este pozitiva si mare, atunci se impune o crestere mica a valorii iesirii din controler“. Aceste reguli au semnificatiile: - Daca valoarea lingvistica a lui e are semn negative, inseamna ca iesirea din proces y are o valoare deasupra punctului de functionare yS , pentru ca e ( k ) = yS - y ( k ) < 0. Reciproc, daca valoarea lingvistica a lui e are semn pozitiv, deducem ca valoarea curenta a lui y este sub punctul de functionare. - Daca valoarea lingvistica a lui Δ e are semn negativ, inseamna ca iesirea din proces y ( k ) a crescut fata de precedenta valoare y ( k -1 ) , pentru ca Δ e ( k ) = y ( k -1 ) - y ( k ) < 0.

Page 119: Fuzzy

- O valoare lingvistica de “zero“ pentru e inseamna ca iesirea din proces este la punctul de functionare. “Zero“ pentru Δ e inseamna ca iesirea din proces nu s-a modificat fata de valoarea precedenta, adica y ( k -1 ) - y ( k ) = 0 . - O valoare lingvistica a lui Δ u ( k ) avand semn pozitiv inseamna ca iesirea din controler u ( k - 1 ) trebuie sa creasca pentru a rezulta valoarea iesirii din controler la momentul de timp k, deoarece u ( k ) = u ( k - 1 ) + Δ u ( k ) . Marimea lui Δ u ( k ) este marimea cresterii (sau descresterii – pentru Δ u ( k ) < 0) valorii lui u ( k - 1) . De acum vom distinge simbolurile reprezentand valorile lingvistice de interpretarea lor (data de o multime fuzzy). Multimile fuzzy se vor nota cu “∼“, pus sus sau jos. Consideram ca multimea termenilor lui e, Δ e si Δ u au fost alese toate egale in marime si continand aceleasi expresii pentru valorile lingvistice, adica, LE = L ΔE = L ΔU = {NB, NM, NS, Z, PS, PM, PB}. In tabelul 7.1 prezentam baza de reguli a unui controler de tip PI. 4 0 1 Tabelul 7.1

Δ e NB NM NS Z PS PM PB NB NB NB NB NB NM NS Z NM NB NB NB NM NS Z PS NS NB NB NM NS Z PS PM E Z NB NM NS Z PS PM PB PS NM NS Z PS PM PB PB PM NS Z PS PM PB PB PB PB Z PS PM PB PB PB PB

3 2 In acest tabel, casuta din rindul al doilea si prima coloana, de exemplu, defineşte regula: daca valoarea lui e ( k ) este NM si valoarea lui Δ e ( k ) este NB, atunci valoarea lui Δ u ( k ) este NB . Mulţimea regulilor se poate imparţi în următoarele cinci grupe: - Grupa 0: în acest grup, ambele E si Δ E sunt (pozitive sau negative) mici sau nule. Aceasta înseamnă ca valoarea curenta a ieşirii din proces y a deviat de la punctul de funcţionare, dar este aproape de el. Variaţia Δ u ( k ), adăugată precedentei ieşiri din controler u ( k - 1 ) se indica sa fie mica sau zero, pentru a corecta micile deviaţii de la punctul de funcţionare. - Grupa 1 : în acest grup E este negativ mare sau mediu ceea ce arata ca y ( k ) este mult mai sus decât punctul de funcţionare. Concomitent, cum Δ E este pozitiv, deducem ca y se miscă spre punctul de funcţionare. Variaţia Δ u ( k ) impusa de acest grup pentru u ( k - 1 ) accelerează sau încetineşte apropierea de punctul de funcţionare. De exemplu, daca y ( k ) este mult mai sus de punctul de funcţionare (e ( k ) este NB) si se mişca spre acest punct cu un pas mic (Δ e ( k ) este Ps) atunci mărimea pasului trebuie sa fie sensibil crescută (Δ u ( k ) este NM). - Grupa 2: E este sau aproape de punctul de funcţionare (PS, Z, NS) sau mult sub el (PM, PB) în acelaşi timp, ΔE fiind pozitiv, y se depărtează de punctul de funcţionare. Ca urmare, o variaţie pozitiva Δ u ( k ), pentru u ( k - 1 ) are rolul de a schimba acest trend si a face ca y, în loc sa se depărteze, sa înceapă sa se mişte spre punctul de funcţionare. - Grupa 3: E este PM sau PB, ceea ce înseamnă ca y ( k ) este mult sub punctul de funcţionare. Variaţia Δ u ( k ) impusa de acest grup pentru u ( k - 1 ) accelerează sau încetineşte apropierea de punctul de funcţionare. De exemplu, daca y ( k ) este mult sub punctul de funcţionare (e ( k ) este PB) si se mişcă spre acest punct cu un pas relativ mare (Δ e ( k ) este NM) atunci mărimea pasului trebuie sa fie puţin crescută (Δ u ( k ) este PS). - Grupa 4: E este sau aproape de punctul de funcţionare (Ps, Z, NS) sau mult mai sus (NM, NB). în acelaşi timp, Δ E fiind negativ, y se depărtează de punctul de funcţionare. Ca urmare, o

Page 120: Fuzzy

variaţie negativa Δ u ( k ), pentru u ( k - 1 ) are rolul de a schimba acest trend si a face ca y, în loc sa se depărteze, sa înceapă sa se mişte spre punctul de funcţionare. Daca se doreşte o rezoluţie mai buna în jurul punctului de funcţionare, atunci se poate largi domeniul valorilor lingvistice, de ex.: PZ, NZ, PVS, NVS, unde V corespunde lui foarte (very). Trebuie subliniat ca mărirea dimensiunii mulţimii termenilor duce la creşterea numărului de reguli. Datele de intrare, regulile, comanda (sau acţiunea) sunt - în general - mulţimi fuzzy exprimate sub forma unor funcţii de apartenenţa definite pe universul corespunzător fiecărei mărimi. Metoda utilizata pentru evaluarea regulilor este cunoscuta sub numele de raţionament aproximativ, fiind în mod uzual realizata prin compunerea de relaţii fuzzy aplicate unei ecuaţii relaţionale fuzzy. In figura 7.8 se prezintă un sistem de control fuzzy în bucla închisa.

Fig. 7.8. Sistem de control fuzzy

Intrarea pentru procesul de aşchiere provine de la controler, iar procesul răspunde cu o ieşire care este o mărime măsurata. Mărimea de ieşire fiind o cantitate precisa, ea trebuie fuzificată intr-o mulţime fuzzy care reprezintă intrarea pentru controler (ce înglobează în structura lui reguli lingvistice) Ieşirea controlerului fuzzy este o serie de alte mulţimi fuzzy. Intrucât majoritatea sistemelor fizice nu pot interpreta comenzi (mulţimi) fuzzy, ieşirea controlerului fuzzy trebuie sa fie transformata intr-o cantitate crisp utilizând metode de defuzificare. Aceste valori de ieşire si control crisp (defuzificate) devin valori de intrare pentru proces si întregul ciclu în bucla închisă se repeta. 7.4. FUZZIFICARE Prin fuzzificarea unei marimi de intrare (reala), se intelege atribuirea valorilor functiilor de apartenenta ale marimii respective la una sau mai multe valori fuzzy prestabilite. Altfel spus, fuzzificarea este – prin definitie - procesul de transformare a unei marimi crisp intr-o cantitate fuzzy. Exemplu - Marimea masurata este temperatura, iar gradele lingvistice sunt “mare” ( M

~ ),

“mediu” ( M e~ ) si “mic” ( m

~ ), cu functiile de apartenenta (7.18) corespunzatoare (figura 7.9):

Fig. 7.9

μ m ( t ) = Λ ( t ; 10 , 20 , 30 ) ; μ M e ( t ) = Λ ( t ; 20 , 30 , 40 ) ; μ M ( t ) = Λ ( t ; 30 , 40 , 50 ) . Daca valoarea măsurată este t1 = 25o C , atunci prin fuzzificare se obţine :

Page 121: Fuzzy

μm~

( 25 ) = 0.5 ; μMe~

( 25 ) = 0.5 ; μM~

( 25 ) = 0 .

Deci, în mulţimea valorilor lingvistice pentru temperatura Lt ={m, Me, M}, valoarea crisp t1 = 25o C va fi caracterizata de tripletul t1 = 25o C → T1 = {0.5; 0.5; 0} în care - în ordinea din Lt - sunt precizate gradele de apartenenţă pentru valorile crisp ale termenilor lingvistici. Daca valoarea măsurată este t2 = 32 o C , atunci : μm

~(32) = 0; μMe

~(32) = 0.8; μ (32) = 0.2 si M

~

T2 ={ μ m ( t2 ) , μ Me ( t2 ) , μ M ( t2 ) } = { 0 ; 0.8 ; 0.2 }. 7.5. NORMALIZARE Sa presupunem ca eroarea E este definita prin opt variabile lingvistice, etichetate A1 , . . . , A8 care partiţionează spaţiul fizic al erorii [-Em , Em] iar variaţia erorii Δ E este definita prin şapte variabile lingvistice BB1 , . . . , B7 care constituie o partiţie a spaţiului variaţiei erorii [-Δ Em , ΔEm].Vom normaliza aceste domenii în acelaşi interval [- a, a] unde, de regula a = 6, utilizând

relaţiile: E n = aEm

⎝⎜

⎠⎟ ⋅ E ; Δ E n = a

EmΔ⎛

⎝⎜

⎠⎟ ⋅ Δ E . (7.21)

Cele opt valori fuzzy A ~

i ( i = 1 , . . . , 8 ) pentru eroare corespund valorilor lingvistice din

relaţia (7.11). Pentru variaţia erorii Δ E corespund şapte valori lingvistice B ~

j (j = 1, . . . , 7)

respectiv PB, PM, PS, Z, NS, NM, NB. Funcţia de apartenenţă pentru E este arătată în tabelul 7.2; analog se procedează cu Δ E. Tabelul 7.2

E -6 -5 -4 -3 -2 -1 -0 +0 1 2 3 4 5 6 A i

A1 ( PB) 0 0 0 0 0 0 0 0 0 0 0.1 0.4 0.8 1 A2 (PM) 0 0 0 0 0 0 0 0 0 0.2 0.7 1 0.7 0.2 A3 (Ps) 0 0 0 0 0 0 0 0.3 0.8 1 0.5 0.1 0 0 A4 (PZ) 0 0 0 0 0 0 0 1 0.6 0.1 0 0 0 0 A5 (NZ) 0 0 0 0 0.1 0.6 1 0 0 0 0 0 0 0 A6 (Ns) 0 0 0.1 0.5 1 0.8 0.3 0 0 0 0 0 0 0 A7 (NM) 0.2 0.7 1 0.7 0.2 0 0 0 0 0 0 0 0 0 A8 (NB) 1 0.8 0.4 0.1 0 0 0 0 0 0 0 0 0 0

Variabila de ieşire fuzzy (cantitatea de control ΔU) are asociate şapte valori fuzzy în universul de discurs ΔU = {-7, -6, . . . , 7}. Variabila de control va fi descrisa prin cantităţile de control C

~ k ( k

= 1 , . . . , 7) care partiţionează universul de discurs. Tabelul 7.3 reprezintă variabila de control normalizata Δ U care este definita prin şapte valori lingvistice. Aceste valori numerice reprezintă Tabelul 7.3

ΔU -7 -6 -5 -4 -3 -2 -1 0 1 2 3 4 5 6 7 Ci C1 PB 0 0 0 0 0 0 0 0 0 0 0 0.1 0.4 0.8 1 C2 PM 0 0 0 0 0 0 0 0 0 0.2 0.7 1 0.7 0.2 0 C3 Ps 0 0 0 0 0 0 0 0.4 1 0.8 0.4 0.1 0 0 0 C4 Z 0 0 0 0 0 0 0.5 1 0.5 0 0 0 0 0 0 C5 Ns 0 0 0 0.1 0.4 0.8 1 0.4 0 0 0 0 0 0 0 C6 NM 0 0.2 0.7 1 0.7 0.2 0 0 0 0 0 0 0 0 0 C7 NB 1 0.8 0.4 0.1 0 0 0 0 0 0 0 0 0 0 0

funcţii analoage celor din fig. 7.3. Deci normalizarea înseamnă realizarea situaţiei din fig. 7.3.

Page 122: Fuzzy

7.6. FACTORI DE SCARA Factorii de scara joaca un rol similar coeficienţilor din relaţiile (7.1) ÷ (7.3). De exemplu, un controler fuzzy de tip PI poate fi reprezentat astfel: Ku . Δ u ( k ) = f ( Ke . e ( k ) , K Δ . Δ e ( k ) ) (7.22) unde Ke , K Δ si Ku sunt factori de scara pentru e, Δ e si Δ u respectiv, iar f este o funcţie neliniară. 7.7. MOTORUL DE INFERENTA (rationament) Interpretarea aşa-numitei propoziţie fuzzy atomica “E este NB“ se face prin mulţimea fuzzy ~~NB sau prin funcţia de apartenenţă μ N B , definita pe domeniul fizic normalizat E =[-6, 6] a variabilei fizice “eroare“ (fig. 7.3). Semnificaţia expresiei simbolice “E este NB“ ne indica gradul în care aceasta propoziţie este satisfăcută pentru o valoare precizata a erorii: a)- O valoare exacta este atribuita simbolului E. Aceasta se numeşte asignarea variabilei (A), de ex., A (E) = -5 ∈ [-6, 6]. b)- Gradul de apartenenţă a lui -5 la μ N B (fig. 7.3) este: μ N B (-5) = 0.5. Acest grad de apartenenţă reprezintă gradul în care propoziţia atomica “E este NB“ este satisfăcută în aceste circumstanţe particulare. Pe baza propoziţiilor fuzzy atomice si a conectivelor lingvistice “si“,“sau”,“nu“ se pot forma propoziţii fuzzy compuse, de ex., X este A si X este B; X este nu A. Uzual, regula (7.7) este compusa si anume de tipul “cu antecedent multiplu conjunctiv“, adică: daca x este 1A~ si 2A~ si . . . si LA~ atunci y este s B~ . (7.23)

Presupunând o noua mulţime fuzzy s A~ = 1 A~ ∩ 2 A~ ∩...∩ LA~ , exprimata prin funcţia de

apartenenţă μA~

s ( x ) = min [μA~

1 ( x ) ,μA~

2 ( x ) ,.., μA~

L ( x )] , (7.24)

obţinută utilizând definiţia intersecţiei fuzzy (4.2), regula compusă iniţială poate fi rescrisă daca x este sA~ atunci y este s B~ (7.25)

Semnificaţia regulii fuzzy if-then “daca X este A, atunci Y este B“ este reprezentata ca o relaţie fuzzy definita pe X x Y, unde X si Y sunt domeniile variabilelor lingvistice X si Y. Construcţia acestor relaţii fuzzy se face astfel: a)- semnificaţia regulii antecedent “X este A“ este data de mulţimea fuzzy ~ ( ) /A xAX= ∫ μ x ;

b)- semnificaţia regulii consecinţa “Y este B“ este data de mulţimea fuzzy ~ ( ) /B yBY= ∫ μ y ; c)- semnificaţia regulii fuzzy if - then este o relaţie fuzzy μ R astfel ca ∀ ∈ ∀ ∈ = ∗x X y Y x y x yR A, : ( , ) ( ) B ( )μ μ μ (7.26) unde “*“ este un operator fuzzy . Când regulile antecedent sau consecinţa sunt propoziţii fuzzy compuse, atunci mai întâi se determina funcţiile de apartenenţă corespunzătoare fiecărei propoziţii compuse. In final, operatorul “*“ se aplica funcţiilor de apartenenţă astfel determinate. Sa consideram doua propoziţii fuzzy p: E este NB ; q: ΔE este PS , semnificaţia lor fiind: ~~ ( ) / ; ~~ ( ) /NB e e PS e eNB

ePS

e= =∫ ∫μ μ

ΔΔ Δ

Δ

Semnificaţia lui “si” în propoziţia r: E este NB si ΔE este Ps este reprezentata de o relaţie fuzzy definita pe ε x Δε : μ μ μr N B P S

e x ee e e e e e( , ) min( ( ), ( ) / ( , )Δ Δ

Δ= ∫

In raţionamentul aproximativ regula de inferenţa compozitională este de importanta majora. Aceasta utilizează o relaţie fuzzy pentru a reprezenta legătura dintre doua propoziţii fuzzy. Forma sa simbolica generala este: daca S1 este P si S1

~R s2 , atunci S2 este Q , (7.27) unde S1 si S2 sunt nume simbolice pentru variabile, P si Q sunt proprietăţi ale variabilelor

Page 123: Fuzzy

definite de mulţimile fuzzy QsiP ~~ (reprezentând semnificaţia lui P si Q), “S1 ~R S2“ se citeşte

“S1 este în relaţia ~R cu S2“ si semnificaţia ei este reprezentata de relaţia fuzzy μ R ; ~P este definita pe X si ~R pe X x Y. In [9] se propune ca interpretarea regulii (7.27) sa fie: )),(,)((minmax)(,)~~(~ yxxyadicaYpeRPprojQ RPxQ μμμ == o . (7.28)

ExempluPe domeniul discret X = Y = {1, 2, 3, 4} consideram P = “mic“, cu μ P = 1 / 1 + 0.6 / 2 + 0.2 / 3 si R = “aproximativ egal“, fiind o relaţie binara cu μ R = 1 / ((1, 1) + (2, 2) + (3, 3) + (4, 4)) + + 0.5 / (( 1, 2 ) + ( 2 , 3 ) + ( 3 , 4 )) .

, ( ) ( 2.05.06.01

15.0005.015.00

05.015.0005.01

02.06.01~~~=

⎟⎟⎟⎟⎟

⎜⎜⎜⎜⎜

== oo RPQ )

unde s-a utilizat regula practica din relaţia (4.30). Rezultatul este mulţimea fuzzy μ Q = 1 / 1 + 0.6 / 2 + 0.5 / 3 + 0.2 / 4 , care desemnează expresia lingvistica “aproximativ mic“ . Exista un număr de relaţii care se pot utiliza pentru a reprezenta semnificaţia lui “daca X este A , atunci Y este B“, si anume ~ ~ ~B A R= o . (7.29) Pentru controlul fuzzy, cea mai utilizata este aşa numita implicaţia Mamdani ~ ( ~ ) ( ~ )R ce A ce B= ∩ , adică μ R ( x , y ) = min ( μ A ( x ) , μ B ( y ) ). (7.30) B

De exemplu, daca

~ . / . / . / /~ . / . / . /

A x x x

si B y y y

= + + +

= + +

0 1 0 4 0 7 1

0 2 0 5 0 91 2 3

1 2 3

x4 ,

y1 y2 y3

x1 0.1 0.1 0.1 R = x2 0.2 0.4 0.4

x3 0.2 0.5 0.7 x4 0.2 0.5 0.9

In [2] se demonstrează ca în cazul folosirii implicaţiei Mamdani pentru interpretarea semnificaţiei unei reguli, de ex.: daca e este PM , atunci u este NS, (7.31) pentru o valoare exacta e* este (fig. 7.10):

Fig. 7.10. Implicaţia Mamdani

∀ = = = ∫∫∫∫ ∗u u e e e u e u e u u u uCNS R LE LU CLUUUExUE: ( ) ( ) / ( , ) / ( , ) min( ( ), ( )) / ( ) / ,*μ μ μ μ μ μo (7.32)

Page 124: Fuzzy

unde : - figura 7.10.a ne arata ca gradul de adevar al afirmatiei „e*=2.5 este PM” este de 25%. Aceasta inseamna ca consecinta este adevarata in acelasi procentaj, multimea fuzzy NS trebuind sa fie retezata cu gradul antecedentului (= 0.25). Adica consecinta este adevarata in aceeasi masura ca si antecedentul. Daca e*=4, atunci procentajul de mai sus devine 100%, dupa cum era de asteptat. - linia groasa în figura 7.10 b reprezintă mulţimea fuzzy “retezată“ CNS; fiecare abscisa u are gradul fuzzy dat de ordonata corespunzatoare; deci gradele fuzzy maxime le are u ∈ [-3.5; -0.5]; u trebuie fixat la o valoare u ∈ [-3.5; -0.5], dar gradul de precizie al acestei indicatii este mic (25%). - μ* ( e ) este funcţia de apartenenţă obţinută după fuzzificarea intrării crisp e* :

, (7.33) ∀ ==⎧

⎨⎪

⎩⎪e e daca e e

in caz contrar: ( ) ,

,*

10

si se numeşte SINGLETON FUZZY. Procesul descris de (7.32) se numeşte “firing“ (prelucrare). Acum vom considera cazul regulilor multiple , cu intrare crisp , fiecare regula fiind reprezentata astfel : daca e este LE ( k ) atunci u este LU ( k ) , k = 1 , 2 , . . . , n , (7.34) unde “e este LE ( k ) “ este interpretata aşa: ~ ~ ( ) /( )

( )LE e ekLEE k= ∫ μ ,

si “u este LU ( k )“ este interpretata aşa: ~ ~ ( ) /( )( )LU u uk

LUU k= ∫ μ .

Interpretarea Mamdani a regulii (7.34) este:∀ = ∫k R e u e ukL E LUE xU k k: ~ min( ( ) , ( ) / ( , )( )

( ) ( )μ μ (7.35)

si semnificaţia întregii mulţimi de reguli se defineşte astfel : , (7.36) ~ ~ ( )R R k

k

n=

=1U

care înseamnă ca: ))(,)((minmax),(max),(:, )()()( ueueueue kkk ULELkRkR μμμμ ==∀ . (7.37)

in acord cu (7.32), firing-ul setului de reguli se exprima astfel: ; (7.38) ))(,)((minmax)(:,..,~~

)()(** ueuueiRU kk LULEk

U μμμμ =∀= o

aceasta relaţie se numeşte inferenţa compoziţională de baza. Daca raţionamentul se face separat pentru fiecare regula, rezultatul va fi n mulţimi fuzzy retezate CLU(1 ) , . . ., CLU( n ) , una pentru fiecare regula, unde: ) (7.39) ∀ ∀ =u k u e uCLU LE LUk k, : ( ) min( ( ) , (( ) ( ) ( )

*μ μ μ k )

aceasta relaţie este numita inferenţa de baza a regulii individuale. Daca se aplica reuniunea

tuturor ieşirilor (cu regula maximului): , (7.40) ~ ~~ ~ ( )U CLU k

k

n=

=1U

atunci se obţine acelaşi rezultat ca în (7.38). Deci, în inferenţa compoziţională de baza mai întâi se combina toate regulile în ~R si apoi se prelucrează cu intrarea fuzzy μ* (prin operaţia de compoziţie), iar în inferenţa de baza a regulii individuale mai întâi se prelucrează fiecare regula individuala cu intrarea crisp e* , obţinându-se n mulţimi fuzzy retezate, care apoi se combina intr-o mulţime fuzzy generala. Aceste doua metode sunt echivalente pentru inferenţa de tip Mamdani. Uzual, se prefera al doilea tip de inferenţa, fiind foarte eficienta computaţional. Deci, principala abordare în inferenţa este inferenţa de baza a regulii individua . sarcina acestui tip de inferenţa este de a calcula valoarea generala a ieşirii de control, pe baza contribuţiilor individuale ale fiecărei reguli în baza de reguli. Fiecare asemenea contribuţie individuala reprezintă valoare ieşirii de control calculata ca o singura regula . Ieşirea din modulul de fuzzificare , reprezentând valori curente (exacte) ale variabilelor de stare ale procesului, se compara cu fiecare regula antecedent, stabilindu-se gradul de potrivire a fiecărei reguli. Acest grad de potrivire reprezintă gradul de satisfacere a propoziţiei fuzzy.

Page 125: Fuzzy

Modul de lucru pentru un controler fuzzy de tip PI este: - Expresia simbolica a regulii k este: if E is LE(k)

n - m and Δ E is LΔE(k)n - m , then ΔU is LΔU(k)

n - m , (k = 1, 2, . . ., n). (7.41) unde LE(k) , L ΔE(k) , si LΔU(k) sunt valori lingvistice din multimile E, LΔE, and LΔU, respectiv. Semnificatia acestor valori lingvistice este reprezentata prin functiile de apartenenta, sau multimile fuzzy μLE(k) , μL ΔE(k) si μ L ΔU(k) . Semnificatia regulii de mai sus, in sensul implicatiei de tip Mamdani, este data de relatia fuzzy R( k):∀e, Δ e, Δ u: μ R ( k ) (e, Δ e, Δ u) = min (μ LE ( k ) (e), μ L ΔE ( k ) ( Δ e),μ L ΔU ( k ) ( Δ u)).( 7.42) Semnificatia intregului set de reguli este reuniunea semnificatiilor regulilor individuale μ R ( k ) , (k = 1, 2, . . . , n). Ca urmare, relatia fuzzy reprezentand the set de reguli este: ∀ e, Δ e, Δ u: μ R (e, Δ e, Δ u)= max (μ R ( 1 ) , . . . , μ R ( n ) ), (7.43) unde fiecare μ R ( k) este definit de (7.42). - Se fuzifica intrarile exacte e* - ca in (7.33) - si Δe* (analog). - μ*

E si μ*ΔE se combina intr-o functie de apartenenta μ a n t , reprezentand semnificatia regulii

antecedent: ∀ e, Δ : μa n t (e, Δe) = min (μ*E (e), μ*

ΔE (Δe)). (7.44) - Analog cu (7.39) calculam: ∀ Δ u, ∀ k: μ C L ΔU ( k ) (Δ u) = min (μ a n t ( k ) (e, Δ e), μ L ΔU (Δ u) . (7.45) - Formula finala pentru iesirea din control: ∀ Δ u: μ ΔU (Δ u) = max (μ C L ΔU ( 1 ) , . . . , μ C L ΔU ( n ) ). (7.46)

Page 126: Fuzzy

7.8. DEFUZZIFICARE Operatia de asignare a unei valori reale corespunzatoare unei functii de apartenenta se numeste defuzzificare, fiind necesara in numeroase aplicatii in care rezultatele sunt fuzzy. In esenta, defuzzificarea reprezinta procesul de transformare a unei marimi fuzzy intr-o marime crisp. Iesirea unui proces (sistem) fuzzy poate fi - din punct de vedere logic - reuniunea a doua sau mai multe functii de apartenenta fuzzy, definite pe universul de discurs al variabilei de iesire. De exemplu, putem presupune ca iesirea fuzzy a unui sistem este alcatuita din doua parti: prima parte de forma trapezoidala C

~ 1 si a doua - de forma triunghiulara C~ 2 . Reuniunea acestor doua

functii de apartenenta este multimea fuzzy C~ = C

~ 1∪ C~ 2 . In general, iesirea fuzzy C a unui

proces poate implica mai multe functii de apartenenta fuzzy de diferite forme; in acest caz ~

C =

. Corespunzator conventiei adoptate exista mai multe metode de defuzzificare, alegerea

metodei in aplicatii bazându-se pe criterii care tin de aprecierea rezultatelor obtinute in fiecare aplicatie data .

~

C~i

k

=1U i

a) Metoda maximului functiei de apartenenta. Aceasta metoda furnizeaza ca rezultat al defuzzificarii, valoarea crisp u*, pentru care μC

~( u * ) ≥ μC

~( u ) , ∀ u∈U (fig. 7.11). Daca

functia de apartenenta isi atinge maximul intr-un singur punct, valoarea reprezentativa a functiei de apartenenta se considera ca fiind valoarea variabilei (u *) pentru care se atinge maximul respectiv.

b) Metoda (abscisei) centrului de masa este una dintre cele mai utilizate metode de defuzzificare si permite calculul valorii u* (fig. 7.12) conform relatiei:

Fig. 7.11

Fig. 7.12

u* = μ

μ

C

C

u u du

u du~

~

( )

( )

⋅ ⋅

∫∫

. (7.47)

c) Metoda mediei ponderate este aplicabila pentru functii de apartenenta simetrice, fiind prezentata in figura 7.13 din care rezulta ca valoarea defuzzificata se obtine prin ponderarea valorilor functiilor de apartenenta in punctele de maxim:

u* =a b( . ) ( . )

. .5 95 9

++

. (7.48)

In cazul in care functia de apartenenta isi atinge maximul in mai multe puncte, sau pe unul sau mai multe intervale, se poate aplica metoda punctului mediu sau metoda mediei maximelor prezentata in cele ce urmeaza.

Fig. 7.13

Fig. 7.14

d) Metoda mediei maximelor presupune calculul lui u* (fig. 7.14) unde: u * = ( a + b ) / 2 . (7.49)

Page 127: Fuzzy

7.9. AGREGAREA REGULILOR FUZZY Majoritatea sistemelor bazate pe reguli contin mai multe reguli. Procesul de obtinere a concluziei globale pornind de la contributia individuala a consecventului fiecarei reguli din baza de reguli se numeste agregarea regulilor . Exemplu: Fie o problema de decizie bazata pe cunostinte imprecise, in care intervin trei multimi fuzzy B

~1 , B

~2 , B

~3 a caror functii de apartenenta sunt reprezentate in figura 7.15.

a ) b ) c )

Fig. 7.15 - Functiile de apartenenta pentru B~

1, B~

2, B~

3

Se cere sa se determine in urma agregarii acestor cunostinte valoarea reala a raspunsului. In concordanta cu metoda centrului de masa se poate calcula u* astfel (fig. 7.16):

u * = μ

μ

B

B

u udu

u du~

~

( )

( )

∫∫

=

( . ) . ( . ). .

.3 3

32

50

1

1

3 6

4

5 5

3 6

4u u du u du

uu du u du+ +

−⎛⎝⎜

⎞⎠⎟ +

⎣⎢∫ ∫ ∫∫

+ ( ) (.

u u du u du− + + −∫ ∫ ∫5 85 5

6

6

7

7

8) :u u du⎤

⎦⎥

: ( . ) ( . ) ( . ).

.

.3 3

32

51

0

1

3 6

3 6

4

4

5 5u du du

udu du∫ ∫ ∫ ∫+ +

−⎛⎝⎜

⎞⎠⎟ + +

⎣⎢ ( ) ( )

.u du du u du− + + − ⎤

⎦⎥∫ ∫ ∫5 85 5

6

6

7

7

8 = 4.9 m

Fig. 7.16

In conformitate cu metoda mediei ponderate rezulta (fig. 7.17. a): u* = ( . . ) ( . ) ( . )

. .3 2 5 5 5 1 6 5

3 5 1x x x+ +

+ + = 5.41 m ,

iar in conformitate cu metoda mediei maximelor (fig. 7.17.b) rezulta: u * = (6 + 7) / 2 = 6.5 m.

a) metoda mediei ponderate b) metoda mediei maximelor

Fig. 7.17 7.10. CONVERSIA DINTRE VARIABILELE FUZZY SI CANTITATILE PRECISE La iesirea sistemului se poate utiliza un instrument pentru masurarea erorii e si calculul variatiei erorii Δe ambele fiind numere crisp. O procedura standard de fuzzificare permite obtinerea functiilor de apartenenta corespunzatoare cantitatilor fuzzy (A~ i , B

~ j ) → vezi cap.7.5. Sistemul

de control fuzzy primeste la intrare (de la iesirea procesului) fapte de tipul si producand la A ~

B ~

Page 128: Fuzzy

iesirea sa valoarea fuzzy (vezi cap.7.5), corespunzatoare marimii de comanda conform

tabelului 7.3. Inainte insa de realizarea actiunii de control trebuie de obtinut marimea de control precisa Δ e prin conversia lui C in Δ u. Acest lucru se obtine printr-o metoda de defuzificare.

C ~

Realizarea tabelei de control. Când procedurile anterioare au fost realizate pentru toate valorile corespunzatoare lui e si Δ e se obtine tabela de control, care poate arata ca in tabelul 7.4. Tabelul 7.4

Δ e e -6 -5 -4 -3 -2 -1 0 1 2 3 4 5 6 -6 7 6 7 6 7 7 7 4 4 2 0 0 0 -5 6 6 6 6 6 6 6 4 4 2 0 0 0 -4 7 6 7 6 7 7 7 4 4 2 0 0 0 -3 6 6 6 6 6 6 6 3 2 0 -1 -1 -1 -2 4 4 4 5 4 4 4 1 0 0 -1 -1 -1 -1 4 4 4 5 4 4 1 0 0 0 -3 -2 -1 0- 4 4 4 5 1 1 0 -1 -1 -1 -4 -4 -4 0+ 4 4 4 5 1 1 0 -1 -1 -1 -4 -4 -4 1 2 2 2 2 0 0 -1 -4 -4 -3 -4 -4 -4 2 1 1 1 -2 0 -3 -4 -4 -4 -3 -4 -4 -4 3 0 0 0 0 -3 -3 -6 -6 -6 -6 -6 -6 -6 4 0 0 0 -2 -4 -4 -7 -7 -7 -6 -7 -6 -7 5 0 0 0 -2 -4 -4 -6 -6 -6 -6 -6 -6 -6 6 0 0 0 -2 -4 -4 -7 -7 -7 -6 -7 -6 -7

Acest tabel contine acum cantitati numerice precise utilizate de catre sistemele hardware industriale. In cazul in care valorile din tabelul 7.4 sunt reprezentate intr-un sistem tri-ortogonal avand axele e, Δ e si Δ u, ele reprezinta suprafata de control (de raspuns). 7.11. PROBLEMA “PENDULUL INVERS” [10] Figura 7.18 prezinta un pendul invers, care a constituit un caz de studiu important in teoria controlului fuzzy .

Se doreste proiectarea si analiza unui controler fuzzy pentru sistemul alcatuit dintr-un pendul invers a carei ecuatie diferentiala este data de:

Fig. 7.18

J . d 2 θ / d t 2 = ( m l g ) sin θ - τ ; - m 2 l . d 2 θ / d t 2 + ( m g ) sin θ = τ = u ( t ) , lin care m = masa pendulului , = lungimea pendulului , θ = deviatia unghiulara in raport cu axa verticala , in sensul acelor de ceas , τ = u ( t ) = cuplul aplicat pendulului (in sens trigonometric), adica actiunea de control.

l

Sinteza controlerului. Presupunând x1 =θ si x2 = dθ /dt variabilele de stare, reprezentarea spatiului de stare pentru sistemul neliniar definit prin ecuatia anterioara este data prin: d x1 / d t = x 2 ; d x2 /d t = (g / ) sin x l 1 - ( 1 / m 2 l ) u ( t ) . Se cunoaste ca pentru unghiuri θ mici sin θ ≈ θ , cu unghiul θ masurat in radiani. Aceasta relatie este folosita pentru liniarizarea ecuatiilor neliniare de stare: d x 1 / d t = x 2 ; d x 2 / d t = ( g / ) x l 1 - ( 1 / m 2 l ) u ( t ) . Daca x1 este masurat in “grade” si x2 este masurat in "grade pe secunda“ prin alegerea lui = g si m = 180 / ( π ⋅ l l 2 ) , (egalitati numerice) se obtin ecuatiile discrete si liniarizate, care pot fi reprezentate prin ecuatiile cu diferente : d x 1 / d t = x 2 ; d x 2 / d t = x 1 - u . x 1 ( k + 1 ) = x 1 ( k ) + x 2 ( k ) ; x 2 ( k + 1 ) = x 1 ( k ) + x 2 ( k ) - u ( t ) . Pentru aceasta problema se presupune ca universurile de discurs pentru cele doua variabile sunt:

Page 129: Fuzzy

- 2 o ≤ x 1 ≤ 2 o si - 5 ( o / s ) ≤ x 2 ≤ 5 ( o / s ) . Pasul 1.- Se construiesc functiile de apartenenta pentru marimile de intrare ca multimi fuzzy: x1 pe universul de discurs [- 2o, 2o] pentru valorile lingvistice pozitiv (P), zero (Z) si negativ (N) asa cum se arata in figura 7.19a; x2 cu valorile lingvistice pozitiv (P), zero (Z) si negativ (N) definite pe universul de discurs [- 5o/s, + 5o/s] , asa cum se arata in figura 7.19b.

a) b)

c)

Fig. 7.19 Pasul 2.- Pentru partitionarea spatiului de control (iesire) se vor construi cinci functii de apartenenta aferente lui u (k) pe universul sau de discurs (- 24 ≤ u ( k ) ≤ 24 N.m.rad.), asa cum se arata in figura 7.19c . De notat este faptul ca universul de discurs a fost partitionat in sapte valori lingvistice din care vor fi folosite numai cinci (NB, N, Z, P, PB).

Pasul 3.- Se construiesc noua reguli de control (chiar daca nu se folosesc toate) conform tabelei alaturate. Pasul 4.- Utilizând regulile reprezentate in tabela, se vor realiza inferentele fuzzy, bazându-ne pe conditiile initiale crisp x1 (0) = 1o si x2 (0) = - 4o/s in patru parti (0 ≤ k ≤ 3).

Fiecare ciclu de simulare se va baza pe functiile de apartenenta aferente variabilelor de intrare si va produce functia de apartenenta corespunzatoare actiunii de control u(k). Se va defuzzifica functia de apartenenta pentru marimea de control folosind metoda centrului de greutate, dupa care se vor folosi ecuatiile cu diferente in vederea obtinerii noilor valori pentru x1 si x2 . Fiecare ciclu de simulare, diferit de cel initial, va demara cu noile valori pentru x1 si x2 ca si conditii initiale pentru ciclul urmator. In figura 7.20 sunt evidentiate conditiile initiale pentru x1 si respectiv x2 . Din tabela de control rezulta: Daca ( x 1 = P ) si ( x 2 = Z ) , atunci ( u = P ) ⇔ min ( 0.5 , 0.2 ) = 0.2 ( P ) ; Daca ( x 1 = P ) si ( x 2 = N ) , atunci ( u = Z ) ⇔ min ( 0.5 , 0.8 ) = 0.5 ( Z ) ; Daca (x 1 = Z ) si ( x 2 = Z ) , atunci ( u = Z ) ⇔ min ( 0.5 , 0.2 ) = 0.2 ( Z ) ; Daca ( x 1 = Z ) si ( x 2 = N ) , atunci ( u = N ) ⇔ min (0.5 , 0.8 ) = 0.5 ( N )

a) b)

Fig. 7.20 Figura 7.21a evidentiaza reuniunea multimilor fuzzy trunchiate corespunzatoare variabilei de control u, iar in figura 7.21b se reprezinta valoarea de control defuzzificata u*.

Page 130: Fuzzy

a) b)

Fig. 7.21 In felul acesta primul ciclu al simularii se incheie. Cu valoarea defuzzificata a variabilei de control (u = - 2) si folosind ecuatiile: x1 ( k+1 ) = x1 ( k ) + x2 ( k ) ; x2 ( k+1 ) = x1 ( k ) + x2 ( k ) - u ( t ) , se determina conditiile initiale pentru iteratia urmatoare (fig. 7.22), si anume: x1 ( 1 ) = x1 ( 0 ) + x2 ( 0 ) = 1 - 4 = - 3 ; x2 ( 1 ) = x1 ( 0 ) + x2 ( 0 ) - u ( 0 ) = 1 - 4 - ( - 2 ) = -1 .

a) x 1( 1 ) = - 3 b) x 2 ( 1 ) = -1

Fig. 7.22 Din tabela de control se obtine: Daca ( x1 = N ) si ( x2 = N ) , atunci ( u = NB ) ; min ( 1 , 0.2 ) = 0.2 ( NB ) ; Daca ( x1 = N ) si ( x2 = Z ) , atunci ( u = N ) ; min ( 1 , 0.8 ) = 0.8 ( N ) . Prin reuniunea consecventilor fuzzy si defuzzificarea iesirii se obtine la acest ciclu de inferenta valoarea de control u = -9.6 (conform fig. 7.23).

Fig. 7.23

Se utilizeaza in acest moment u = -9.6 pentru determinarea conditiilor initiale corespunzatoare iteratiei 3 (aratate in figura 7.24), dupa cum urmeaza: x1 ( 2 ) = x1 ( 1 ) + x2 ( 1 ) = -3 -1 = -4 , x2 ( 2 ) = x1 ( 1 ) + x2 ( 1 ) - u ( 1 ) = -3 -1 - ( -9.6 ) = +5.6 .

Fig. 7.24

Utilizând in continuare tabela de control se obtine pentru aceste valori regula: Daca (x1 = N ) si ( x2 = P ) , atunci ( u = Z ) ; min ( 1 , 1 ) = 1( Z ) . Rezultatele activarii acestei reguli si valoarea defuzzificata a variabilei de control u ( z ) = 0.0

Page 131: Fuzzy

sunt aratate in figura 7.25 , noile valori initiale pentru iteratia urmatoare fiind: x1 ( 3 ) = x1 ( 2 ) + x2 ( 2 ) = -4 + 5.6 = 1.6 x2 ( 3 ) = x1 ( 2 ) + x2 ( 2 ) - u ( 2 ) = - 4 + 5.6 - ( -0.0 ) = 1.6 (conform fig. 7.26).

Fig. 7.25

Fig. 7.26

Din tabela de control obtinem: Daca ( x1 = Z ) si ( x2 = P ) , atunci ( u = P ) ; min ( 0.25 , 0.3 ) = 0.3 ( P ) ; Daca ( x1 = Z ) si ( x2 = Z ) , atunci ( u = Z ) ; min ( 0.25 , 0.7 ) = 0.25 ( Z ) ; Daca (x1 = P ) si ( x2 = P ) , atunci ( u = PB ) ; min ( 0.75 , 0.3 ) = 0.3 ( PB ) ; Daca (x1 = P ) si ( x2 = Z ) , atunci ( u = P ) ; min ( 0.75 , 0.7 ) = 0.7 ( P ) . aratate grafic in figura 7.27, valoarea defuzzificata pentru marimea de comanda fiind u ( 3 ) = 5. 28 .

Fig. 7.27

Pentru u ( 3 ) = 5. 28 se determina conditiile initiale pentru iteratia urmatoare, obtinându-se: x1 ( 4 ) = x1 ( 3 ) + x2 ( 3 ) = 1.6 + 1.6 = 3.2 ; x2 ( 4 ) = x1 ( 3 ) + x2 ( 3 ) - u ( 3 ) = 1.6 + 1.6 - ( 5.28 ) = -2. 08 . Rezulta in aceasta situatie valoarea u ( 4 ) = 1.12 si procesul de simulare poate continua cu un numar de pasi corespunzator pâna când actiunea de control duce sistemul intr-o stare stabila . 7.12. CONTROLUL FUZZY ADAPTIV Cele mai multe procese din lumea reala, la care se aplica controlul automat, sunt neliniare, adica valorile parametrilor proprii se modifica odata cu schimbarea punctului de operare. Cum schemele de control conventionale sunt liniare, un controler poate fi reglat pentru a avea o buna performanta la un punct de operare particular, sau pentru o perioada limitata de timp. Controlerele trebuie sa fie reglate din nou daca punctul de operare se schimba, sau reglate periodic daca procesul este variabil in timp. Aceste considerente au condus la aparitia controlerelor adaptive, care se autoregleaza pentru a corespunde caracteristicilor curente ale procesului. Controlerele fuzzy contin un numar de parametrii care se pot altera in vederea modificarii performantei si anume: - regulile if – then; - factorii de scara; - multimile fuzzy reprezentand semnificatia valorilor lingvistice.

Page 132: Fuzzy

Vom utiliza numai primele doua metode. Componenta adaptiva a controlerului fuzzy adaptiv consta din doua parti: a)- evaluarea performantei; b)- mecanismul de adaptare. a)- Evaluarea performantei reprezinta o valoare pentru corectia ceruta la iesirea procesului y in vederea obtinerii unei bune performante. De exemplu: if E is VL and Δ E is VL , then C is NVL , unde C este corectia ceruta, Z = zero , S = mic (small), M = mediu, L = mare (large), J = exact (just), V = foarte (very), P = pozitiv, N = negativ. Adica, daca eroarea este mare si creste rapid, atunci este necesara o corectie mare pentru ca procesul sa revina la punctul de operare. Intreaga evaluare este descrisa in tabelul de decizie 7.5 (din [8]). Tabelul 7.5 Change in error ( Δ E ) Towards set - point Away from set - point NVL NL NJL NM NJM NS Z S JM M JL L VL NVL Z Z Z Z Z Z VL VL VL VL VL VL VL Below NL Z Z Z JM JM M VL VL VL VL VL VL VL set - NJL Z Z Z JM JL L VL VL VL VL VL VL VL point NM Z Z Z JM JM M JL JL JL JL L L VL

NJM Z Z Z Z Z Z JM JM JM M JL L VL NS Z Z Z Z Z Z S S S JM M JL L

Error NZ Z Z Z Z Z Z Z Z Z S JM M J; E PZ Z Z Z Z Z Z Z Z Z NS NJM NM NJL S Z Z Z Z Z Z NS NS NS NJM NM NJL NL JM Z Z Z Z Z Z NJM NJM NJM NM NJL NL NVL

Above M Z Z Z NJM NJM NM NJL NJL NJL NJL NL NL NVL set - JL Z Z Z NJM NJL NL NVL NVL NVL NVL NVL NVL NVL point L Z Z Z NJM NJM NM NVL NVL NVL NVL NVL NVL NVL

VL Z Z Z Z Z Z NVL NVL NVL NVL NVL NVL NVL Starea controlului este monitorizata de modulul “Rule Modification”. Cand se detecteaza o iesire nedorita din process, regulile de control fuzzy sunt modificate pe baza corectiilor din tabelul de decizie. Pentru a adapta controlerul este necesara o corectie corespunzatoare a iesirii de control. Deci corectia ceruta la iesirea din proces trebuie sa fie transmisa ca modificare a intrarii in proces, adica a iesirii de control. Pentru un sistem cu o singura intrare si o singura iesire, daca evaluarea performantei specifica, la timpul nT, corectia ceruta la iesirea procesului Δ y ( nT ) = c ( nT ), atunci modificare impusa la intrarea in proces, sau corectia intrarii, este data de r ( nT ) = c ( nT ), adica ameliorarea intrarii se ia egala cu corectia ceruta la iesire [2]. Aceasta ameliorare (corectie) a intrarii r (nT) reprezinta cantitatea care trebuie adaugata intrarii in proces (adica - iesirii din controler), pentru a compensa slabele performante curente. b)- Mecanismul de adaptareSe pune intrebarea: care iesiri din controler sunt responsabile de aceste slabe performante? Aceasta depinde de dinamica procesului. Un proces de ordin inalt, cu decalaje mari de timp, pretinde ajustarea pe o lunga perioada de timp a iesirilor din control, si viceversa. Iesirile din controler supuse corectiei se aleg in faza proiectarii sistemului de control . Notam esantionul actual de timp cu n si admitem ca iesirea din controler, considerata cu m intervale de timp inapoi, are o influenta majora asupra performantei reglajulului actual. Valorile numerice ale erorii, variatiei erorii si iesirii din controler la acel timp (din trecut) erau e (nT - mT), Δ e (nT - mT) si u (nT - mT), respectiv. Aceste valori pot fi descrise de multimile fuzzy (analog cu (7.33)):

(7.50) ⎩⎨⎧ −=

=− ,,)(,

)(~~otherwise0

mTnThhif1hHL mn

Page 133: Fuzzy

unde H~ este , sau E~ E~~Δ , sau U~ , iar h este e, sau Δ e, sau u, respectiv. Raspunsul controlerului la m intervale de timp in trecut se poate exprima prin setul de n reguli: if E is LE(i)

n - m and Δ E is L ΔE(i)n - m , then U is LU(i)

n – m , (i = 1, 2, . . ., n). (7.51) Consideram, deci, ca evaluarea performantei clasifica performanta actuala ca slaba si indica modificarea iesirii din controler (considerata cu m intervale de timp in trecut), printr-o ameliorare a intrarii cu r (nT); adica, iesirea din controler la acel moment (din trecut) trebuie sa fie: v ( nT - mT ) = u ( nT - mT ) + r ( nT ) (7.52) si nu u ( nT - mT ) Aceasta noua iesire din control este descrisa de multimea fuzzy:

(7.53) ⎩⎨⎧ +−=

=− ,,)()(,

)(~~otherwise0

nTrmTnTuuif1uVL mn

iar raspunsul corect al controlerului este descrisa de setul de n reguli: if E is LE(i)

n - m and Δ E is L ΔE(i)n - m , then U is L V(i)

n - m , (i = 1, 2, . . ., n). (7.54) Pentru a adapta controlerul sa reflecte acest nou raspuns, regula i (cea rea) care indica iesirea din control L U(i)

n - m , trebuie sa fie stearsa si regula noua (cea buna) care indica iesirea din control LV(i)

n - m , trebuie sa fie inserata in locul ei. Consideram ca la esantionul de timp n setul complet de reguli este descris de relatia matriciala Rn. Semnificatiile regulilor rea (7.51) si buna (7.54) pot fi exprimate prin matricele cu relatii fuzzy: Rbad = LEn - m x LΔEn - m x LUn - m ; Rgood = LEn - m x LΔEn - m x LVn - m , (7.55) unde “x” este produsul cartezian. Trebuie sa fie generata o noua matrice relationala Rn +1 care sa nu mai includa relatia Rbad , dar sa includa relatia Rgood . Aceste cerinte se pot exprima simbolic: Rn + 1 = (Rn but not Rbad ) else Rgood , adica Rn + 1 = (Rn ∩ R‘

bad ) ∪ Rgood (7.56) unde R’ este complementul lui R; altfel spus, in Rn + 1 toate elementele coresponzand lui R‘

bad au fost inlocuite cu elementele lui Rgood . 7.13. CONTROLERUL FUZZY 7.13.1. INTRODUCERE In [3] se propune un controler fuzzy (fig. 7.28) cu o baza de reguli optimala, realizata printr-un proces automat, adaptiv. El se compune din trei subsisteme:

Fig. 7.28

- un controler fuzzy;

Page 134: Fuzzy

- factori de scara on-line adaptati pentru diferite conditii de aschiere; - un subsistem off-line auto-instruibil pentru modificarea bazei de reguli.

Etapele proiectarii unui astfel de controler fuzzy adaptiv sunt urmatoarele: 1)- Stabilirea variabilelor de intrare

Variabilele de intrare eroarea fortei e si variatia erorii fortei Δ e au definitiile [analoage cu (7.5, 7.6)]: e (j) = [Fr - Fc (j)].K e , (7.57) unde Fr este valoarea de referinta a fortei de aschiere, iar Fc - valoarea curenta a acestei forte. Δ e = (eroarea curenta a fortei - eroarea precedenta a fortei) . K Δ = = [e (j) - e (j - 1)] . K Δ = [Fc (j - 1) - Fc (j)] K e K Δ , (7.58) unde K e si K Δ sunt factorii de scara pe care ii vom explica mai jos. In continuare, e si Δ e sunt fuzzificate, devenind variabilele lingvistice E si ΔE, adecvate pentru rationamentul (inferenta) fuzzy. 2)- Generarea bazei de dateIn figura 7.3 se prezinta functiile de apartenenta uzuale, pentru multimile fuzzy in domeniul E si ΔE. Figura 7.29 [3] ilustreaza functiile de apartenenta in domeniul iesirii ΔU, care urmeaza sa fie defuzzificate. Aceste functii sunt de tipul L (7.16), sau Γ (7.20).

Fig. 7.29

3)- Generarea bazei de reguli In general, o baza de reguli simetrica este mai adecvata scopurilor controlului [3]. In cazul controlerului fuzzy, fiecare element al multimii fuzzy este cuantificat cu un index intreg, ca in (7.11): L1 = NB, L2 = NM, L3 = NS, L4 = NZ, L5 = PZ, L6 = PS, L7 = PM, L8 = PB. (7.59) Baza de reguli initiala se poate obtine din urmatoarea functie [6]: g ( i , j ) = < P . i + Q . j + R > , (7.60) unde P, Q si R sunt constante care se aleg; i, j si g sunt indicii multimilor fuzzy din (7.53); operatorul “ < > “ este definit prin relatia: < a > = min {8, {1, max < a >o }} , (7.61) in care < a >o este intregul cel mai apropiat de a. In scopul controlului este de dorit sa se genereze o baza de reguli fuzzy simetrica, in care P si Q au - in general - valori apropiate; R determina simetria axiala a tabelului. In tabelul 7.6 se Tabelul 7.6

E Δ U NB NM NS NZ PZ PS PM PB NB NB NM NM NM NS NS NZ PZ NM NB NM NM NS NS NZ PZ PZ NS NM NM NS NS NZ PZ PZ PS Δ E NZ NM NS NS NZ PZ PZ PS PS PZ NS NS NZ NZ PZ PS PS PM PS NS NZ NZ PZ PS PS PM PM PM NZ NZ PZ PS PS PM PM PB PB NZ PZ PS PS PM PM PB PB

prezinta o baza initiala de reguli, dedusa pentru : P = 0.58 ; Q = 0.54 ; R = - 0.54 , deci g (i, j) = < 0.58 * i + 0.54 * j - 0.54 > = < 0.54 * (i + j - 1) + 0.04 * i >. (7.62)

Page 135: Fuzzy

De exemplu: pentru i = 3, (adica E = L3 = NS) si j = 6 (adica ΔE = L6 = PS) se obtine: g (3, 6) = < 0.54 * 8 + 0.04 * 3 > = < 4.44 > = min {8, max {1, 4}} = 4, deci Δ U = L4 = NZ; g (7, 8) = < 0.54 * 14 + 0.04 * 7 > = < 7.84 > = min {8, 8} = 8, deci Δ U = L8 = PB. Cateva elemente din tabelul 7.6 difera numai cu o treapta de omoloagele lor din tabelul 7.1, din cauza generarii numerice a primelor. Aceasta generare automata a bazei de reguli necesita modificari ulterioare; o tehnica adaptiva pentru ameliorarea performantelor se prezinta in continuare. 4)- Generarea iesirii din mecanismul de inferentaRegulile lingvistice de control au forma: Regula i, j: Daca E este Ai si Δ E este BB j atunci ΔU este Ci j , (i, j = 1, 2, . . . , 8), (7.63) unde Ai , BBj si Ci j sunt valori lingvistice. In controlerul nostru sunt 8 * 8 = 6 4 reguli de control. ExampleConsideram valoarea exacta e* = 2.25 si Δ e* = 6.1. Din figura 7.30 (dedusa din figurile 7.3 si 7.29) se constata ca in acest caz urmatoarele valori lingvistice si respectivele grade fuzzy vor fi activate: “E” : PS ↔ μ P S ( 2 . 25 ) = 0 . 75 ; PM ↔ μ P M ( 2 . 25 ) = 0 . 25 . “ΔE” : PB ↔ μ P B ( 6 . 1 ) = 1 .

Fig. 7.30

Ca urmare, din baza de reguli (tab. 7.6) numai doua reguli sunt activate: R ( 6 , 8 ) : If E is PS and ΔE is PB , then ΔU is PM ; R ( 7 , 8 ) : If E is PM and ΔE is PB , then ΔU is PB . Observatie: Valoarea lui ΔE a fost deliberat aleasa Δe > 6 pentru reducerea (la doua) a numarului regulilor activate; daca am fi ales o valoare ⏐Δe⏐< 6, ar fi fost activate 4 reguli. In figurile 7.30 si 7.31 se poate vedea aplicarea modului de lucru (fig. 7.10) pentru cele doua reguli de mai sus. In figura 7.30, pentru R (6, 8): μ a n t = min (0.75; 1) = 0.75; in a treia figura apare multimea fuzzy retezata ( hasurata) μ CPM . In figura 7.31, pentru R (7, 8): μ a n t = min (0.25; 1) = 0.25 ⇒ μ CPB .

Fig. 7.31

In figura 7.32, in concordanta cu relatia (7.46): μ ΔU ( Δu ) = max ( μ CPM , μ CPB ) . 5)- Defuzzificarea iesirii

Page 136: Fuzzy

Iesirea Δu, utilizata la modificarea avansului masinii, o obtinem cu metoda (abscisei) centrului de masa. Pentru suprafata hasurata din figura 7.32, centrul de masa are abscisa:

u

21

2C21C1

Kuuand673

75032750354750333227503

AAuAuAu

⋅==

=⋅+⋅

⋅⋅+⋅⋅⋅=

++

=

*

*

;.

./.../)/.(

ΔΔ

ΔΔΔ

(7.64) 7.13.2. ADAPTAREA ON - LINE A FACTORILOR DE SCARA

Fig. 7.32 Marirea factorilor de scara a intrarii Ke si KΔ duce la cresterea sensibilitatii in apropierea punctului de functionare stabila, o mai mica sensibilitate in timp si viceversa. Pe de alta parte, alegerea unui mic factor Ku are ca efect o crestere lenta in timp a raspunsului [3]. Obiectivul controlului, in cazul controlerului fuzzy adaptiv pentru mentinerea fortei de aschiere constanta, este realizarea unei benzi de toleranta in jurul fortei de referinta. Daca forta cade inauntrul acestei benzi, controlerul trebuie sa genereze actiuni de control mici, sau neglijabile, astfel ca sa nu afecteze serios procesul de aschiere. La aparitia unei schimbari bruste a conditiilor de aschiere, forta va iesi din aceasta banda si controlerul trebuie sa genereze o actiune de control substantiala, pentru a compensa aceasta eroare semnificativa a fortei. Pentru o aschiere cu freza deget in [3] s-a luat valoarea de referinta a fortei de aschiere Fr =20 N, cu o banda de toleranta de ± 10 %, iar factorul de scara:

Kdaca F F

daca F Fer C

r C

=− ≤

− >

⎧⎨⎪

⎩⎪

0 2 2

1 2

,

, (7.65)

numarul 2 fiind 20 % din 20 N. Factorul de scara pentru variatia erorii - care are un rol important in raspunsul tranzitoriu - s-a luat KΔ = 3. Factorul de scara al iesirii K u joaca rolul de factor general de amplificare al controlerului, adica mentine amplificarea intregului sistem constanta, astfel ca o forta constanta este imuna la schimbarile conditiilor de aschiere. Este evident ca supraincarcarea sculei va duce la distrugerea ei, fiind de dorit regimul de subincarcare. Ca urmare, in [3] se prevede:

(7.66) K

e nT U nT Tdaca e nT subincarcare F F

e nT U nT Tdaca e nT raincarcare F F

u

com

C r

com

C r

=

× + × −

≥ ≤− × + × −

< >

⎨⎪⎪

⎩⎪⎪

[ . ( ) . ] ( ) ,( ) ( ) ;

[ . ( ) . ] ( ) ,( ) sup ( )

0 0003 0 00840

0 0005 0 01570 ,

unde nT este esantionul curent de timp, iar Uc o m este comanda avansului masinii. Se observa ca in cazul supraincarcarii constantele alese sunt aproape duble in comparatie cu cele de la subincarcare, controlerul realizand astfel o scadere rapida a avansului in situatia supraincarcarii si o crestere lenta la subincarcare, prevenind astfel distrugerea sculei. 7.13.3. ALGORITMUL ADAPTIV Ecuatiile (7.60 si 7.61) genereaza o baza de reguli foarte elementara; sunt necesare modificari ulterioare pentru a atinge performante de control mai bune. Pentru ameliorarea controlului este necesara o corectie corespunzatoare aplicata intrarii in proces. a)- Evaluarea performantelorIntrucat scopul controlului este mentinerea fortei de aschiere in cadrul unei benzi de toleranta, tinta controlului se va lua in jurul erorii nule, adica T = {NZ, PZ} = {L4 , L5 }. (7.67) Intr-un controler fuzzy adaptiv calitatea controlului este data de patru elemente: e (nT - mT), Δ e (nT - mT), Δ u (nT - mT) si e (nT), respectiv. Aceste valori se pot descrie prin multimi fuzzy:

Page 137: Fuzzy

E (nT - mT)] = F [e (nT - mT)] ; Δ E (nT - mT)] = F [Δ e (nT - mT)] ; Δ U (nT - mT)] = F [Δ u (nT - mT)] ; E ( nT ) = F [ e ( nT )] , (7.68) unde F reprezinta procesul de fuzificare, iar aceste patru submultimi apartin multimii de valori lingvistice (7.59): {L1 , L2 , . . . , L8 }, fiind notate - respectiv - cu: Li , Lj , LK i j , Lp i j . Ca urmare, un set de date Dn corespunzator unui moment oarecare se poate defini: Dn = { i , j , Ki j , pi j } , ( n = 1 , 2 , . . . , N ) , (7.69) unde N este numarul esantioanelor de timp. Relatia (7.68) arata ca marimile corespunzatoare simbolurilor i, j si Ki j (la m intervale de timp in trecut) sunt dominante pentru performanta prezenta pi j . b)- Mecanismul adaptiv este compus din: b1)- Reteaua adaptivaToate seriile Dn se vor procesa in cadrul retelei adaptive (ce contine 8 x 8 = 64 noduri) ca in figura 7.33, generand o corectie Δ Ki j care modifica baza de reguli.

Pentru fiecare intrare Dn , in retea se va activa nodul (i, j) care va furniza o ameliorare ΔKij , adecvata gradului de bun sau de rau a actiunii de control corespunzatoare. De exemplu, daca o actiune de control PB (adica Ki j = 8) produce - dupa m intervale de timp - o eroare NB (adica pi j =1) atunci reducand actiunea de control, va rezulta o eroare mai mica; deci trebuie sa se genereze o corectie negativa. Corectia este definita in [3] prin relatia:

Δ Kw p daca p

w p daca pi ji j i j

i j i j

=− ≤

− >

⎧⎨⎪

⎩⎪

( ) ,

( ) ,

4 4

5 4

;

. (7.70)

unde w este o pondere a carei marime se determina Figura 7.33 prin simulare si experiment. b2)- Modificarea regulilorNoul indice Ki j va fi: Ki j = cel mai apropiat intreg de (Ki j + jiKΔ ), (7.71)

unde jiKΔ este media valorilor Δ Ki j pentru nodul (i, j) rezultate din prelucrarea unui grup de date. 7.13.4. SIMULARE Consideram strunjirea semifabricatului din figura 7.34, parametrii regimului de aschiere fiind:

n = 1500 rot / min.= 25 rot / s. ; s = 0,2 mm / rot. ; tmin = 0,2 mm ; tmax = 0,7 mm ; perioada de esantionare Δ T = 0,02 s. (7.72)

ℵ=90o

Fig. 7.34

Forta de aschiere - la strunjire - are componentele: Fx - forta radiala (de respingere), Fy or - f ta tangentiala (principala), Fz - forta axiala (de avans). Aceste componente au expresiile [7]:

[ ]

[ ]daNst45HBCF

daNst45

121HBCF

7502500

exy

750902

0e

xx

,,

,,

sinsin)(

coscos)(

⎟⎟⎠

⎞⎜⎜⎝

⎛ℵ

=

⎥⎥⎦

⎢⎢⎣

⎡⎟⎟⎠

⎞⎜⎜⎝

⎛ ℵ+=

(7.73)

Page 138: Fuzzy

[ ]daNst45

HBCF 4050

0e

zz,

,

sinsin)( ⎟⎟

⎞⎜⎜⎝

⎛ ℵ=

in care: t este adancimea de aschiere [mm]; s - avansul [mm / rot]; HB - duritatea Brinell a materialului prelucrat; ℵ - unghiul de atac principal; Cx , Cy , Cz si e au valorile din tabelul 7.7. Tabelul 7.7 Material Duritate HB C x C y C z E Oteluri si ≤ 170 18.13 27.9 11.16 0.35 aliaje de Al > 170 2.32 3.57 1.43 0.75 Forta de aschiere rezultanta, care se doreste a fi constanta, este: F F F Fx y z= + +2 2 2 . (7.74) Calculam Fext = F (text ), (ext = min, max) ; tmed = (tmin + tmax ) / 2 . (7.75) Forta de referinta o luam: Fr = F (tmed ), (7.76)

iar relatia (7.65) o substituim cu: Kdaca F F F

daca F F Fer C r

r C r

=− ≤ ⋅

− > ⋅

⎧⎨⎪

⎩⎪

0 2 0 1

1 0

, ,

, ,1 (7.77)

0,1 reprezentand banda de toleranta de 10 %. Calculam: Eext = (Fr - Fext )Ke , (ext = min, max) ; Em = MAX (⏐Emin ⏐, ⏐Emax ⏐).

Aplicam relatia (7.21): En = ⎟⎟⎠

⎞⎜⎜⎝

mE6 ⋅ E . (7.78)

Vom alege Δ Em , iar Δ En = ⎟⎟⎠

⎞⎜⎜⎛ ⋅ Δ E . (7.79) ⎝ mE

Marimile normalizate En si Δ En sunt reprezentate grafic in figura 7.3, ΔU este in figura 7.29, iar baza initiala de reguli este in tabelul 7.6. Sa vedem cum variaza in timp forta principala de aschiere la intrarea cutitului in semifabricatul din figura 7.34: - experienta arata ca intrarea cutitului in semifabricat nu se produce la primul contact, ci dupa timpul K1T (din cauza elasticitatii sistemului mecanic), unde T este perioada unei rotatii complete a piesei, iar K1 - un coeficient ce se poate determina experimental inregistrand variatia fortei de aschiere si observand momentul cand aceasta incepe sa creasca. - dupa intrarea cutitului in semifabricat este evident ca la prima rotatie, grosimea aschiei (a = s, s fiind avansul ) variaza liniara: a = λ τ . In [5] la pag. 379 se prezinta - sub forma unor curbe - rezultatele unui experiment privind influenta variatiei grosimii aschiei asupra apasarii specifice (p = Fz / (a . b), in care b = t, b fiind latimea aschiei, iar t - adancimea de aschiere). Experimentul este realizat pentru procesul de

brosare, dar cum strunjirea este un proces similar, consideram ca rezultatele se pot extrapola. Curbele - trasate pentru diferite materiale - se pot suficient de bine aproxima cu hiperbole: p = c / t ; dar p = Fz / (s . t), deci c / t = Fz / (s . t) ⇒ Fz = c . s = c λ τ ; Fz = K2 τ . La urmatorul prag (t = 0.4) din figura 7.34, rationamentul se repeta, dar valoarea initiala a fortei Fz este egala cu valoarea ei finala din figura 7.35. BIBLIOGRAFIE 1.- Gh. Bastiurea, s.a., Comanda numerica a masinilor

Fig. 7.35 unelte, Editura tehnica, 1976

Page 139: Fuzzy

2.- D. Driankov, s.a., An Introduction to Fuzzy Control, Springer-Verlag, 1993 3.- P. L. Hsu, W. R. Fann Fuzzy Adaptive Control of Machining Processes With a Self - Learning Algorithm, Transactions of the ASME, Journal of Manufacturing Science and Engineering, nov. 1996, vol. 118, pag. 522 4.- Y. Koren Control of Machine Tools, in Transactions of the ASME, Journal of Manufacturing Science and Engineering, nov. 1997, vol. 119, pag. 749 5.- A. Oprean, s.a., Bazele aschierii si generarii suprafetelor, EDP, Bucuresti, 1981 6.- X. T. Peng Generating Rules for Fuzzy Logic Controller, in Fuzzy Sets and Systems, 1990, vol. 36, no. 1, p. 83 - 89 7.- C. Picos, et al. Normarea tehnica pentru prelucrari prin aschiere, Editura Tehnica, Bucuresti, 1979 8.- T. J. Procyk, E. H. Mamdani A Linguistic Self - Organizing Process Controler, Automatica, 15 (1), 1979 9.- L. A. Zadeh et al. Fuzzy Sets and Their Applications to Cognitive and Decision Processes, New York, Academic Press, 1975 10.- V . Mazilescu Sisteme de inteligenta artificiala, Vol. II, Editura PAX AURA MUNDI, Galati, 1998