Sei sulla pagina 1di 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 nct 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, pna 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:

Fig. 1.2 - R este numarul elementelor din vectorul de intrare; - vectorul de intrare p este reprezentat de bara groasa verticala din stnga, 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.

Fig. 1.5 c)- Functia log-sigmoid:


1 F( x ) = , k >0 , 1 + e k x

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


ex 1 : R [ -1 , 1 ] . ex +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:

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

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 IW matricea ponderilor intrarilor, avnd 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:
1,1

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

Fig. 1.10

Fig. 1.11

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 tansigmoidala, 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.

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):
E = [ a 3( j ) t( j ) ] 2 ,
j =1 s3

unde s3 este numarul neuronilor din stratul de iesire. E = f (a31, a32, . . . , a3s3) 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 : E wikj = wikj1 ( k ) ; wi j (1.3) E k k 1 bi = bi ( k ) k bi 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.

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 F F G = grad F = F = [ , ... , ] , acest vector indicand directia celei mai mari cresteri. x1 xn 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

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,

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 .

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.

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, maxfail, 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.

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

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-RIBIRE (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 PolakRibiere 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.

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

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

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

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.

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

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

% 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];

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:

Fig. 2.1 Di(x)=


k =1

w i ,k x k + w i ,m +1

, i = 1, 2, ... , n,

(2.7)

(2.8) care se poate scrie matricial, pentru cele n clase de forme: D ( x ) = W X , unde x1 w1,1 .. .. w1,m+1 . . . W= si X= . (2.9) . . xm w n ,1 .. .. w n ,m+1 1 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 = min x Rj . (2.10)
j

Vectorii de referinta ii consideram ca reprezentand centrele claselor si ii calculam cu relatia: 1 Mj ( j ) Rj= (2.11) xi , M j i =1 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 x2 x R2 = [x1 x2 y1 y2] 1 = (x1 x2)2 + (y1 y2)2, regasindu-se formula distantei y1 y 2 dintre doua puncte. Din relatiile (2.10) si (2.12) rezulta: d 2 ( x, R i ) = x R i2 = xT x xT R i R iT x + R iT R i (2.13) T Deoarece produsul x 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:

Fig. 2.2 Di(x)=x Ri+Ri x-Ri Ri , i = 1, 2, ..., n . (2.14) Se observa ca D i ( x ) este linara, iar distanta este minima cand D i este maxima.
T T T

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 ) = min { d ( x, xj( i ) ) } = min { x xj( i )} . (2.15)
j= 1,2 ,...,M i j= 1,2 ,...,M i

Daca distanta este definita conform relatiei (2.12), atunci functia de decizie se scrie analog cu (2.14): D i ( x ) = max { xT xj( i ) + ( xj( i ) )T x ( xj( i ) )T xj( i ) } , i = 1, 2, ... , n . (2.16)
j= 1,2 ,...,M i

Daca notam expresia dintre acolade cu Di( j ) ( x ), atunci (2.16) se scrie: D i ( x ) = max { Di( j ) } , i = 1, 2, ..., n .
j= 1,2 ,...,M i

(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 :
Di(x)= w i , k f k ( x ) + w i, L + 1 , k =1 1 n2 nr xn k1 x k 2 ... x kr , cu k1, k2, ...,

(2.18)

unde f k ( x ) = kr = 1, ..., m si n1, n2, ... , nr = 0 sau 1. Pentru r = 2 rezulta functia discriminant patratica, cu 1 n2 f k ( x ) = xn k1 x k 2 , pentru k1, k2 = 1, ..., m ; n1, n2 = 0 sau 1. 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.

Fig. 2.4

3. ALGORITMI GENETICI Un algoritm genetic efectueaz operaii specifice n cadrul unui proces de reproducere guvernat de operatori genetici. Noile soluii sunt create prin selecia i recombinarea cromozomilor existeni, n vederea optimizrii unei funcii de evaluare specifice fiecrei probleme n parte. Semnificaia acestei funcii nu este relevant pentru algoritm, ceea ce conteaz fiind numai valoarea sa. n general se pleac de la o populaie de cromozomi generat aleator i fiecare nou populaie generat prin reproducere nlocuiete parial sau total generaia anterioar. Funcia de evaluare global se ndreapt spre optim i ofer soluii din ce n ce mai bune problemei. Procesul este analog teoriei neo-darwiniste a evoluiei biologice, care afirm c organismele adaptate continuu la schimbrile de mediu au ansele cele mai mari de supravieuire. 3.1. Structura algoritmilor genetici Mecanismele fundamentale care realizeaz legtura dintre algoritmul genetic i problema care trebuie rezolvat sunt urmtoarele: - codificarea problemei n termeni de cromozomi, - funcia de evaluare, care furnizeaz o msur a calitii fiecrui 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 adaptrii lui la o mare varietate de probleme practice. Ceea ce i se reproeaz uneori este precizia soluiei, limitat la numrul de bii, pe care se face reprezentarea . Alegerea unui numr suficient de mare de bii pentru reprezentarea valorilor reale din problem, nltur 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;

nrb=length(a); for i=1:nrb numar=a(1,i)*2^(nrb-i)+numar; end y=numar; Funcia de evaluare primete la intrare irul de cromozomi i returneaz numere sau liste de numere ce reprezint performana cromozomilor. Ea are rolul mediului nconjurtor pentru evoluia natural. Structura unui algoritm genetic fundamental este dat mai jos: 1. Se iniializeaz populaia 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 populaie. Se selecteaz prinii noii populaii. 3. Se creeaz o nou generaie de cromozomi prin mperecherea cromozomilor selectai, folosind operatori genetici. 4. Se terg membrii populaiei iniiale, pentru a fi nlocuii cu noua generaie. 5. Se evalueaz noii cromozomi i se insereaz n noua populaie. 6. Dac timpul de cutare nu s-a terminat, se merge la pasul 3. n caz contrar, se oprete execuia algoritmului. Modul de reprezentare a populaiei de cromozomi, modul de evaluare a cromozomilor i modul de reproducere sunt componente eseniale ale algoritmului genetic i sunt prezentate n cele ce urmeaz. Selecia este un operator genetic care stabilete irurile populaiei curente care vor fi alese pentru a transmite materialul lor genetic generaiei urmtoare. Exist trei tehnici de selecie: cea mai utilizat este selecia proporional, care modeleaz mecanismul seleciei naturale, n care cromozomii cu o evaluare mai mare au o ans mai mare de a fi alei. Cunoscut i sub numele de principiul ruletei, aceast tehnic presupune parcurgerea urmtoarelor etape: 1. Se stabilete funcia de evaluare Eval ( xi ) pentru fiecare cromozom xi din populaia dat 2. Se sumeaz toate funciile de evaluare Eval = Eval ( xi )
i

3. Cromozomilor li se atribuie aleator numerele naturale i. Repet pn la crearea unui numr suficient de perechi de cromozomi: 4. Se genereaz numerele aleatoare n i m, astfel ca 1 n, m Eval 5.Se alege cromozomul xi , unde i este cel mai mic numr care satisface relaia: 6. Se alege cromozomul x j , ca la pasul 5, cu m n loc de n

Eval ( x
j i

)n

7. Se stabilete perechea de cromozomi xi i x j . Aceast modalitate de selecie poate genera serioase probleme tehnice. Dac un cromozom din populaie are o funcie de evaluare de valoare mult mai mare dect a celorlali cromozomi, aceasta fiind departe de optim, atunci selecia proporional va extinde foarte repede caracteristicile acestui cromozom n populaie. n cteva generaii populaia ar putea fi alctuit

numai din astfel de cromozomi i algoritmul genetic nu ar mai putea evolua, deci optimul nu mai poate fi gsit. Acest fenomen este cunoscut sub numele de convergen prematur. O alt problem o constituie gradientul sczut al funciei de evaluare spre sfritul cutrii. Treptat soluia optim este preluat de ntreaga populaie. Efectul este cunoscut sub numele de terminare lent (slow finishing). O alt tehnic de selecie este selecia pe baza rangului, n care probabilitatea de a fi ales este o funcie liniar de locul ocupat de individ (cromozom) n cadrul populaiei. Avantajul const n faptul c nu mai este necesar interpolarea permanent a evalurii ca n cazul precedent. Un caz special de selecie de acest tip este selecia prin trunchiere, prin care se elimin o parte din cromozomii cu cea mai slab evaluare, iar n locul lor se genereaz alii, dup diferite scheme posibile. Un exemplu este prezentat n continuare: 1. Din populaia 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 toi ceilali cromozomi ai populaiei actuale, atunci el este inclus n populaie; n caz contrar, este supus operatorului de mutaie (explicat mai jos) pn ce devine diferit de ceilali cromozomi i este inclus n populaie. O metod euristic de selecie este selecia elitist, care reine ntotdeauna cei mai buni cromozomi ai populaiei (de regul unul singur). Ea garanteaz convergena asimptotic spre un minim global, dar rata de convergen este variabil, funcie de problem. Elita poate introduce un efect de dominan asupra populaiei care s duc la o stagnare timpurie a procesului de evoluie. Soluia const n utilizarea operatorului de mutaie pentru reducerea sau eliminarea acestui efect . ncruciarea (crossover) este operatorul necesar pentru construcia noilor indivizi ai populaiei. Populaia intermediar , format din n cromozomi , este mprit n n/2 perechi i operatorul de ncruciare este aplicat fiecrei 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 populaiei sunt generai prin combinarea unor pri alternative de material genetic provenind din dou iruri printe a1 i a2. Cea mai simpl schem este ncruciarea cu un singur. Dac numrul de bii din cromozomul-ir este l= nrb, atunci punctul de ncruciare este ales aleator ntre 1 i l. Aceast schem de ncruciare este prezentat mai jos: 1. Se genereaz aleator un numr natural p n intervalul [ 1 , l ( a i ) ] ; 2. Se genereaz noua pereche de cromozomi a1nou i a 2 nou , dup cum urmeaz: Pentru i p se execut urmtoarea secven: a1nou (i ) = a 2 (i ) i a 2 nou (i ) = a1 (i ) ; Pentru i > p se execut urmtoarea secven: a1nou (i ) = a1 (i ) i a 2 nou (i ) = a 2 (i ) .
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 ncruciare este ncruciarea n dou puncte. O generalizare a

acestei scheme este ncruciarea n puncte multiple, folosit mai rar, numai n situaiile n care cromozomul conine un numr foarte mare de bii. Mai jos prezentm schema de ncruciare n dou puncte: 1. Se genereaz aleator dou numere naturale p1 i p2 n intervalul [ 1 , l ( a i ) ] ; 2. Se genereaz noua pereche de cromozomi a1nou i a 2 nou , dup cum urmeaz: Pentru p1 i p2 se execut urmtoarea secven: a1nou (i ) = a 2 (i ) i a 2 nou (i ) = a1 (i ) ; Pentru p2 < i < p1 se execut urmtoarea secven: a1nou (i ) = a1 (i ) i a 2 nou (i ) = a 2 (i ) . Mutaia permite algoritmului genetic s gseasc noi soluii n cadrul populaiei i l protejeaz mpotriva pierderii de informaie n cazul unor ncruciri nepotrivite. Rata mutaiei este foarte redus, probabilitatea mutaiei ( notat cu ) avnd valori cuprinse ntre 0,001 i 0,01. Dac operatorul de selecie reduce diversitatea n populaie, cel de mutaie determin o nou cretere a diversitii. Cu ct probabilitatea mutaiei este mai mare, cu att mai redus este riscul convergenei premature, dar apare un nou risc datorit faptului c o rat mare de mutaie va transforma algoritmul genetic ntr-un algoritm de cutare aleatoare. O schem tipic de mutaie pentru un cromozom x =< x1 ,..., xn > este: 1. Se genereaz aleator un numr z astfel nct 1 z n ; 2. Se selecteaz gena x z ; 3. x z = 1 x z .
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 ct mai simplu modul de funcionare a unui algoritm genetic vom rezolva dou probleme simple de cutare a valorii maxime a unei funcii unidimensionale pentru un domeniu de definiie dat, folosind structura unui algoritm genetic fundamental. Ne propunem s gsim valoarea maxim a funciei: f ( x ) = x 2 , unde x [ 0 , 31 ] i x N . (3.1) 5 Numrul de soluii posibile este 2 = 32, deci pentru o codificare binar minimal fixm lungimea cromozomului la 5 bii. Considerm c populaia este format din 4 indivizi, iar operatorii genetici folosii sunt mutaia uniform i ncruciarea ntr-un punct. Selecia se face pe principiul ruletei. Funcia de evaluare este f ( x ) . Dup iniializarea aleatoare a populaiei sunt posibile valorile din tabelul 3 .1 . Selecia cromozomilor care particip la crearea noii generaii 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 rmai, pentru a pstra neschimbat numrul de indivizi din populaie. Este foarte posibil alegerea cromozomului 2, care are evaluarea maxim i deci probabilitatea maxim de a fi ales. mperecherea cromozomilor se face aleator, iar numrul de bii schimbat ntre doi cromozomi n cadrul ncrucirii ntr-un singur punct se stabilete tot aleator. Evoluia spre noua generaie se face conform tabelului 3.2 .

Tabelul 3.1. Numrul cromozomului 1 2 3 4

Reprezentare binar 01101 11000 01000 10011 Suma Media Maxima

Valoarea zecimala x 13 24 8 19

Evaluarea f(x) 169 576 64 361 1170 292,5 576

Evaluarea relativ(%) 14,4 49,2 5,5 30,9 100,0

Tabelul 3.2. Cromozom printe 01101 11000 11000 10011

Numr de bii Cromozom ncruciare copil 3 01000 3 11101 2 11011 2 10000 Suma Media Maxima

Valoarea x 8 29 27 16

Evaluarea f(x) = x2 64 841 729 256 1890 472,5 841

Observm pn acum o cretere a valorii maxime de la 576 la 841 i a valorii medii de la 292,5 la 472,5. Urmtoarele dou iteraii genereaz rezultatele prezentate n tabelele 3.3 i respectiv 3.4. Dac n generaia imediat urmtoare nu se obine o cretere a valorii maxime a funciei Tabelul 3.3. Cromozom Printe 11101 11101 11011 10000 Suma Media Maxima Tabelul 3.4. Cromozom printe 11000 11101 11011 11101 Suma Media Maxima Numr de bii ncruciare 3 1 1 3 Cromozom copil 11000 11101 11011 10101 Valoarea x 24 29 27 21 Evaluarea f(x) 576 841 729 441 2587 646,7 841 Evaluarea f(x) 841 961 625 576 3003 750,7 961

Numr de bii ncruciare 3 2 2 3

Cromozom copil 11101 11111 11001 11000

Valoarea x 29 31 25 24

obiectiv f ( x ) , se poate observa o cretere a valorii medii de la 472,5 la 646,7. n ultima generaie se obine valoarea maxim 961, corespunztoare lui x = 31 , cromozom care reprezint

f ( x0 ) f ( x), x [ 1,2] (3.3) Reprezentarea grafic a funciei f ( x ) este dat n figura 3.1. Rezolvarea analitic a problemei

soluia problemei. Datorit instruciunilor aleatoare este posibil ca o nou rulare a programului s furnizeze soluia corect ceva mai devreme sau ceva mai trziu, dar datorit alegerii celor mai bune soluii ca baz pentru generarea unor noi soluii, convergena algoritmului spre soluia optim este asigurat. Un alt exemplu, care ne apropie mai mult de o problem real de optimizare a unei funcii de o singur variabil este dat n cele ce urmeaz. Ne propunem s gsim valoarea real a lui x din intervalul [-1,2] care maximizeaz valoarea funciei lui Michalewicz [1], definit prin urmtoarea (3.2) expresie: f ( x ) = x sin(10 x ) + 1 Trebuie deci s gsim o valoare x 0 din intervalul dat, astfel nct:

Fig. 3.1 presupune rezolvarea ecuaiei f ' ( x ) = 0 , care devine: f ' ( x ) = sin(10 x ) + 10 x cos(10 x ) = 0 , (3.4) (3.5) i care este echivalent cu ecuaia: tan(10 x ) = 10 x . Ecuaia 3.5 este o ecuaie transcendent, care are o infinitate de soluii de forma: 2i 1 + i , i = 1,2,... 20 i=0 xi = 0 (3.6) 2i + 1 i , i = 1,2,... 20 unde termenii i formeaz un ir descresctor de numere reale, convergent la zero. Maximul 37 + 1,85 i este ceva mai mare de funciei pe domeniul indicat se obine pentru x19 = 20 19 valoarea lui f (1,85) , adic f (1,85) = 1,85 sin 18 + + 1 = 2,85. 2 Pentru rezolvarea problemei cu algoritm genetic , pentru nceput stabilim modul de reprezentare a datelor. Soluia problemei sau cromozomul este un vector binar de lungime suficient pentru a asigura precizia dorit. Dac dorim ca soluia s aib 6 zecimale, atunci domeniul [ 1, 2 ] trebuie mprit n 3 10 6 valori distincte. Lungimea cromozomilor va fi de 22 bii, deoarece: 2 21 < 3 10 6 2 22 (3.7)

Corespondena dintre valoarea binar a cromozomului i numrul real pe care acesta l reprezint se face printr-o interpolare liniar simpl. Cromozomul care conine numai bii de 0 corespunde valorii reale -1, iar cromozomul care conine numai bii 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;

Populaia de cromozomi este iniializat prin generarea unei matrici cu numr de linii egal cu numrul cromozomilor din populaie i cu numr de coloane egal cu numrul biilor dintr-un cromozom, adic 22. Toate elementele matricei sunt cifre binare generate aleator. Funcia de evaluare a cromozomilor este echivalent funciei f ( x ) . Operatorii genetici folosii sunt i aici ncruciarea i mutaia. ncruciarea se face ntr-un singur punct, iar numrul biilor care se schimb ntre doi cromozomi prini este aleator. Mutaia este uniform i - de aceast dat - se produc mutaii, deoarece elementele care stabilesc probabilitatea de mutaie pe generaie, numrul de cromozomi din populaie i lungimea cromozomilor, sunt acum mult mai mari dect n exemplul precedent. Algoritmul genetic folosit pentru rezolvarea problemei are o populaie format din 50 de cromozomi, probabilitate de ncruciare de 0,25 i probabilitate de mutaie de 0,01. De multe ori se alege o probabilitate de ncruciare unitar. Acest lucru mrete de obicei convergena algoritmului, dar crete timpul de execuie. Rezultatele experimentale obinute pentru o evoluie pe parcursul a 150 de generaii sunt prezentate n figura 3.2. i n tabelul 3.5. Se poate observa c evaluarea maxim este apropiat

Fig. 3.2 de soluia corect nc de la prima generaie. Ea este dat de cel mai bun individ din populaia iniial de 50 de indivizi care a fost generat aleator, individ care este pstrat de la o generaie la alta. Din acest motiv, evaluarea maxim este o funcie monoton cresctoare. Nu acelai lucru se ntmpl cu evaluarea medie, care prezint i poriuni scztoare ncepnd cu generaia 20,

Tabelul 3.5. Numrul generaiei 1 5 10 20 30 40 50

Evaluarea medie 1,089383 1,498987 1,885667 2,513873 2,562338 2,632469 2,754230

Evaluarea maxim 2,639120 2,639120 2,649927 2,650306 2,801410 2,849743 2,850273

datorit ncrucirilor i mutaiilor produse. Dei valoarea medie a populaiei este n cretere , datorit eliminrii celor mai slabi indivizi la fiecare generaie, se mai ntmpl, ce-i drept cu o probabilitate destul de mic, ca prini reuii s nu genereze ntotdeauna copii la fel de reuii sau mai reuii, aa cum ar fi de dorit. Algoritmul propus converge dup mai puin de 50 de generaii la valoarea 2,850273, care corespunde unei erori relative de - 0,002 % . S-a folosit o selecie prin trunchiere folosind principiul ruletei i eliminnd 8 dintre cei mai slabi cromozomi la fiecare generaie. BIBLIOGRAFIE 1) Z . Michalewicz Genetic Algorithms + Data Structures = Evolution Programs, SpringerVerlag , 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 .

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 1 1 1 1 0.8 0.6 0.4 x (u) 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 1 daca x C C ( x ) = (4.1) 0 daca x C 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 ) .

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 l , apartenenta lui la multimea F se poate calcula cu formula: F = l / l . In figura 4.1 se da un exemplu de cinci multimi fuzzy intalnite la un aparat de aer conditionat ; Cfrig reprezinta - spre comparatie - multimea crisp a valorilor de temperatura corespunzatoare starii frig .
1 Cfrig 0.5_ frIg rece confortabil cald fierbinte

16

I 17

I 18

I 19

I 20

I 21

I 22

I 23

I 24

I 25

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 AB A B
B

A B

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: (4.5) C=u1+u2++un, 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(u1)/u1 ++F(un)/un = F(ui)/ui, (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:
C = 1 / ui .
i =1 n

(4.8)

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 , 1 daca ( x1 ,..., x n ) R R ( x1 ,..., x n ) = (4.9) 0 daca ( x1 ,... x n ) R 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 R = R ( u ,v ) / ( u ,v ) [0, 1], atunci (4.10)
UxV

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 :
1 daca x = y R ( x , y ) = 0 ,8 daca x y = 1 0 ,3 daca x y = 2 Aceasta functie se poate reprezenta in notatie matriciala, prin tabloul:
1 1 0.8 0.3 Y 2 0.8 1 0.8 3 0.3 0.8 1

(4.12)

1 2 3

(4.13)

Definim acum doua relatii binare R si S , pe care le vom utiliza in continuare. R = x este mult mai mare decat y :
x1 x2 x3 y1 .8 0 .9 y2 1. .8 1. y3 .1 0 .7 y4 .7 0 .8

(4.14)

S = y este foarte apropiat de x :


x1 x2 x3 y1 .4 .9 .3 y2 0 .4 0 y3 .9 .5 .8 y4 .6 .7 .5

(4.15)

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)

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:
RS= x1 x2 x3 y1 .8 .9 .9 y2 1 .8 1 y3 .9 .5 .8 y4 .7 .7 .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: (4.19) Proiectia lui R pe X = 1 / x 1 + .8 / x2 + 1 / x 3 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:
x1 x2 x3 y1 1 .8 1 y2 1 .8 1 y3 1 .8 1 y4 1 .8 1

ec(A)=

(4.21) Extensia cilindrica pe X x Y a multimii fuzzy din relatia (4.20), notata cu B, este:
x1 x2 x3 y1 .9 .9 .9 y2 1 1 1 y3 .7 .7 .7 y4 .8 .8 .8

ec(B)=

(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:
ec(A)= x1 x2 x3 y1 .3 1 .8 y2 .3 1 .8 y3 .3 1 .8

(4.23)

Intersectia lui R cu ec (A):

ec(A)=

x1 x2 x3

y1 .3 .8 .3

y2 .3 1 .8

y3 .3 .8 .8

(4.24)

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 ( y ) = max min
x

( ( x ) , ( x , y))
A R

(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):
y1 x1 x2 x3 .8 0 .9 y2 1. .8 1. y3 .1 0 .7 y4 .7 0 .8 y1 y2 y3 y4 z1 .4 0 .9 .6 z2 .9 .4 .5 .7 z3 .3 0 .8 .5

(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:
x1 x2 x3 z1 .6 0 .7 z2 .8 .4 .9 z3 .5 0 .7

(4.29)

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=Qop, (4.31) unde r reprezinta gradele fuzzy pentru indicii de monitorizare, p reprezinta gradele fuzzy pentru

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: r1 q11 q12 . . q1n p1 r q q22 . . q2 n p2 2 21 . = . . . . . o . , (4.32) . . . . . . . rm qm1 qm2 . . qmn pn 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 .

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

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 g ( x ) = e De exemplu:
( x c )2 2 2

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

Curba exterioara este y1, iar cea interioara y5.

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))) 1 adica s( x ) = a ( x c ) 1+ e 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]);

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); 1 adica f ( x) = 2b xc 1+ a 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. curba din stg. sus este y1, apoi sunt y2, y4 si y3.

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

Fig. 5.1.5 A = a este distanta pe orizontala de la punctul

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]')

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

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

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]));

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 ifthen 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.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). temp. este moderata, then Ex.: If 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

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

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. 3Aplicarea 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 ifthen. 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

functia de apartenenta. Considerand ca gradul de eficienta = 8, deducem ca ea este mare in proportie de 70%. De exemplu, in ce masura efficiency este big (fig. 5.2.1)? In fig. 5.2.2 se prezinta cum Etapa 2. Aplicarea operatorilor fuzzy efficiency (apreciata pe o scara de la 0 la 10) Acum stim gradul in care fiecare parte a este caracterizata (prin functia ei de antecedentului este satisfacuta, pentru fiecare apartenenta) ca variabila lingvistica big. JOB-ul
Rule 1: If labour is poor or efficiency is low, then the salary is small Input 1 labour (0-10)

Rule 2: If labour is good, then the salary is average

Output salary (10-100)

Input 2 efficiency (0-10)

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

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

Fig. 5.2.2

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. 0.7 La un operator fuzzy intrarea contine doua sau mai multe grade de apartenenta provenite Rezultatul din fuzificarea intrarilor, iar iesirea este un fuzif. 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. 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,

1. Fuzificarea intrarilor

2. Apl. oper. OR (max) 0.7 0.0 efficiency is big Efficiency = 8

excellent 0.0 labour is excellent Labour = 3 or

big

0.7

Fig. 5.2.3
1. Fuzificarea intrarilor 2. Apl. oper. OR (max) 3. Apl. met. implication (min)

excellent

big

labour is excellent or Labour = 3

efficiency is big Efficiency = 8

then

salary is generous

Fig. 5.2.4 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

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

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

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
Dublu clic pe un input variable icon to open MF-E FIS-E F_log_1 File Edit View Dublu clic pe icon for output variable to open MF-E F_log_1 (Mamdani) Dublu clic pe system diagram to open R-E

Numele sist. se poate schimba cu File Save as

Meniuri pop-up pt. ajustarea inferentei si defuzif. Help Close

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

Aceasta linie descrie ultima operatie

Fig. 5.3.1

3- If labour is excellent or the efficiency is >>fuzzy (la promptul MATLAB). Se deschide big, then the salary is generous. FIS-E, cu input 1 si output 1. Vom Admitem ca un salariu average este 50%, construi un sistem cu 2 intrari si o iesire: Edit unul generous- 100%, iar unul small Add input apare un careu galben input 10%. 2; schimbare numelor: clic in careul input Vrem sa construim un nou FIS; se econom. 1 (conturul devine rosu) In campul de timp luand unul deja construit, tastand: editare din dreapta jos se scrie labour- En; >>fuzzy tipper. analog pentru input 2 efficiency si Se va incarca un FIS asociat cu fisierul pentru careul din dreapta (bleu) output 1 tipper.fis (fig. 5.3.1). Sus stanga sunt cele salary- File Save to workspace as- In doua variabile de intrare, iar la dreaptacampul de editare al casetei ce se deschide se variabila de iesire; in centru este numele tasteaza: F_log_1 OK. sistemului si tipul de inferenta (implicit Trecem la definirea functiei de apartenenta Mamdani; mai este tipul Sugeno, explicat in asociate fiecarei variabile, cu MF-E, ce se alt capitol). In stanga jos sunt meniuri poate deschide in trei moduri: derulante ce permit modificarea diferitelor - View Edit MF; componente ale procesului de inferenta, iar in - Dublu clic pe careul salary; dreapta jos: numele variabilei de i/o si tipul - La prompt se scrie >>mfedit. Apare figura MF. 5.3.2. Pentru pornirea de la zero, se tasteaza 5.3.3.- MF-E
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

MF-E : F_log_1 File Edit View FIS Variables MF plots

Se poate schimba numele 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 Pop-up menu pt. schimb. tipului

Fig. 5.3.2

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

Inp. or out. selection menus 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) Rgulile se introd. automat cu GUIs

If labour is

or efficiency is

then the salary is

poor good excellent none

low big none

small average generous none

not

not Weight 1

not

Connection or and FIS Name

Delete rule Add rule Change rule < > Help Close

Fig. 5.3.3

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)
Intrari (galben) R-V : F_log_1 File Edit . . . Labour = 5 Fiec. rand = o regula. Clic pe o regula.pt. a o vedea in status bar Effic. =5

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.

Iesiri (bleu)

Salar. =

Ac. linie da val. defuzificata Casutele de mai sus = iesirea fiec. reguli. Aici se face agregarea si defuzif. Input [5 5] Oppened syst. Plot points 101 Move : left right Help Close Deplas. ploturi

Trage ac. linie pt. a schim. intrarile si a genera o noua iesire

Fig. 5.3.4 Dupa asta, PC-ul realizeaza un nou calcul si rezultat din antecedent; acesta este procesul se poate vedea procesul de inferenta in implication in actiune. actiune. R-V da o interpretare intregului FIS, aratand La regula 1 se poate observa cum consecinta cum forma diferitelor MF influenteaza salary is small este retezata cu gradul rezultatul final. Se poate lucra cu pana la 30 reguli si 7 variabile.

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.

S-V : F_log_1 File Edit . . .

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.

X (input) X grids :

labour 15

Y (intput) efficiency Y grids : 15

Z (output) salary Evaluate Help Close

Clic cand vreti sa plotati

Ref. Input :

Cea mai recenta operatie

Fig. 5.3.5

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

getfis(a, input,1) getfis(a, output,1) getfis(a, input,1,mf,1).

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]

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; >>fuzzy(a) va apare FIS-E; >>mfedit(a) MF-E; >>ruleedit(a) R-E; >>ruleview(a) R-V; >>surfview(a) S-V.

Apelarea GUI-Tools:

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

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.

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

Fig. 5.4.1 >>plotmf(a,output,1) fig. 5.4.2.

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:

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.

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]); 1. Fuzificarea intrarilor

a=addmf(a,output,1,generous,trimf,[20 25 30]); ruleList=[ 11112 20211 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

2. Apl. oper. OR (max)

3. Apl. met. implication (min)

excellent

big

labour is excellent or Labour = 3

efficiency is big Efficiency = 8

then

salary is generous

Fig. 5.5.1 Agregarea tuturor iesirilor se realizeaza Defuzificarea se face de regula cu metoda suprapunand careul din dreapta figurii 5.5.1 mediei ponderate, adica se ia suma produselor cu careurile omoloage din celelalte doua dintre cele trei abscise cu ordonatele reguli, rezultand fig. 5.5.2. corespunzatoare si se imparte la suma

ordonatelor.

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

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

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

selectarea unui set de date, in vederea 5.6.2- LIMITARI ALE ANFIS verificarii sau testarii, este usoara. Totusi, ANFIS este mai complex ca FIS, dar nu este daca se apreciaza ca zgomotul de masurare valabil pentru toate variantele FIS, el este prezent, este posibil ca setul de date de suportand numai sisteme tip Sugeno, care antrenare sa nu includa toate trasaturile trebuie sa fie: reprezentative. - de ordinul 1 sau 0; Ideea de baza a utilizarii unui set de date de - cu o iesire, obtinuta prin defuzificarea verificare pentru validarea modelului este mediei ponderate (MF a iesirii liniara sau aceea ca dupa un anumit moment al const.); antrenarii, modelul incepe sa se potriveasca - cu ponderea 1 pentru fiecare regula. Daca structura FIS nu indeplineste aceste cu setul de date de antrenare. In principiu, constrangeri, se da eroare. eroarea modelului pentru setul de date de verificare tinde sa descreasca pana cand Mai mult, ANFIS nu accepta customizari, adica nu iti poti crea propriile MF si functii de antrenarea depaseste momentul mentionat mai sus, pentru ca apoi sa creasca brusc. defuzificare, ci se vor utiliza cele din dotare. 5.6.3- ANFIS EDITOR GUI Se tast.: >>anfisedit; apare:
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

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

Incarca sau genereaza FIS din datele incarcate, utilizand propriile MFs si reguli

ANFIS Ed. File Edit View

Descarca datele selectate sub Type si sterge plot region Incarcarea sau antrenarea, testarea, verificarea datelor de pe disc sao workspace, sau load demodata. Datele apar in plot region

ANFIS info # of inp.: 1 # of out.: 1 # of inp. mfs: 0 Structure Clear Plot

Dupa generarea sau incarcarea unui FIS, cu ac. buton se poate deschide o reprez. grafica a structurii sale de i/o

Anterneaza FIS dupa apl. met. de optimiz., a tolerantei erorii si nr. de epoci. Ac. genereaza plotul erorii, in plot region

Load data Type From

Generate FIS

Train FIS

Test FIS Testarea datelor atasate modelului FIS. Plotul apare in plot region

Help

Close

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

Fig. 5.6.1 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

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

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.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),'linest yle','none','marker','o','color','g'); line(fcmdata(index2,1),fcmdata(index2,2),'linest yle','none','marker','x','color','r');

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: Fig. 5.7.2

rC1 = ( x + L sin )i + ( h + L cos ) j ; & cos )i + ( L & sin ) j ; & + L vC1 = ( x && cos L & 2 sin )i & + L aC1 = ( & x && sin + & 2 cos ) j . L(
(5.8.1) Dinamica o studiem cu metoda lui dAlembert (fig. 5.8.2):

4 L && & = g tg x & 3 cos 4 L && && cos + mL ( g tg 3 cos & 2 sin ) c = 0 (5.8.5) (5.8.6) in care: = M + m . Ecuatia diferentiala a lui : 4 && = g tg L ( m cos ) 3 cos & 2 sin c ; m L && = g sin L ( 1.33 m cos 2 ) & 2 sin cos c cos ; m L

&& = [ g sin cos ( c + m L & 2 sin ) / / ] / [ L ( 4 / 3 m cos 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: 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. 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).

Fig. 5.8.2 && cos & 2 sin ) & + mL ( H = m& x && sin + & 2 cos ) V = mg mL(

mL2 && + HL cos VL sin = 0 3 &= c H M& x (5.8.2) Rezolvam acest sistem de ecuatii: mL && && cos 2 & cos + mL x + m& 3 & 2 sin cos mg sin + mL && sin 2 + mL & 2 cos sin = 0 + mL
&& cos & 2 sin ) &= c m& & mL ( M& x x (5.8.3) Deducem: 4 && & cos g sin = 0 x L + & 3 ( M + m ) & && cos & 2 sin ) c = 0 & + mL ( x (5.8.4)

Fig. 5.8.3

Fig. 5.8.4 Dublu clic pe blocul Constant In caseta ce De exemplu in figura 5.8.4 un bloc Mux are se deschide se tasteaza: Constant value patru intrari: u(1)=c; u(2)=sin; &; 0.1538, pentru al doilea bloc, caruia i se u(3)=cos; u(4)= (5.8.8) schimba si eticheta in Target .Clic (in la blocul Mux de jos mai apare o a cincea stanga) pe Nonlinear Se trage Switch && . intrare: u(5)= (5.8.9) (comutator) {Iesirea este egala cu prima Rotirea blocurilor: selectare clic dreapta intrare cat timp semnalul de comanda (a doua Format , sau cu butonul FORMAT intrare) este decat o valoare de prag; in caz Se mai trag blocurile Inport {Defineste un contrar, iesirea este = cu a treia intrare}. port de intrare [utilizat in operatia group, sau Dublu clic pe bloc Treshold (valoarea de pentru a crea o S-function (explicate mai prag) 0. Clic (in stangga) pe Signals jos)]. Se numeroteaza cu numere naturale, Se trag succesiv cinci blocuri Mux {Are incepand cu 1 (care este cel mai de sus)} si mai multe intrari, dar o singura iesire; el Outport {Analog cu precedentul, dar pentru realizeaza combinarea a n semnale scalare iesire}. intr-un singur canal de iesire} - Dublu clic pe Dublu clic pe blocul in_1 din fig. 5.8.4 In bloc Nr. of inputs 4 (de ex.); Display campul Port number se tasteaza: 1; in Port option none.

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: 5 cos( u ) if u > 3 y = sin( u * r ) if 2 < u 3 u 2 if u 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 & x implementeaza prima fun. din (5.8.5): 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 Sfunction 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

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

MATLAB, daca in Dialog stringsse 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.

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 gistr. x1 x2 ... xN Indicii de monitorizare X1 X2 ..... x( 1,1 ) x( 1,2 ) ........ x( 2,1 ) ... x( N,1) x( 2,2 ) ... x( N,2) ......... ... ......... Xi x( 1,i ) x( 2,i ) ... x( N,i ) ...... ........ ......... ... ....... Xm x( 1,m ) x( 2,m ) ... x(N,m ) CLASE ( Conditiile procesului ) c ( x 1 ) [ c 1, c 2,....,c n ] c ( x 2 ) [ c 1, c 2,....,c n ] ..... 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:cx , (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

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

Tabelul 6.2.2 Clasa c1 c2 c3 c4 c5 c6 c7

Starea sculei Normala

Uzura usoara Uzura medie Uzura severa Deteriorarea sculei Trepidatii Strunjire in gol

Identificare pe scula V B < 0,1 mm, sau V B max < 0,2 mm 0,11<VB<0,2mm,sau 0,21<VBmax<0,4mm 0,21<VB<0,3mm,sau 0,41<VBmax<0,6mm 0,31<VB<0,4mm,sau 0,61<VBmax<0,7mm V B > 0,41 mm, sau VBmax > 0,71mm Cutit nou ---------

Identificare pe piesa ----------------------------------------Urme ---------

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 = ( Fx2 + Fy2 + Fz2 )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 ; Fy Fy X3 = raportul fortelor medii , din planul vertical ; = Fv Fy2 + Fz2

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

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 ) ] =
Formam expresiile
+

(i ) T

(t ) e j 2 t dt , ( i = 1 , 2 , . . . , n ) .

2 1 (i ) XT ( j ) , ( i = 1 , 2 , . . . , n ) , numite periodograme . 2T Densitatea spectrala de putere Px x este limita (cand T ) a mediei multimii periodogramelor: n 2 1 (i ) XT Px x ( j ) = lim ( j ) . T 2T i =1 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 :

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 -

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 .

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=E1 , 2=E2. (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) F y = a b ( 1 - 2 ) / 2 , F z = a2 b ( 21 - 2 ) / ( 6 h ) . (6.4.5) Rezulta: Pentru compensarea termica, se face un montaj tensometric identic cu cel din figura 6.4.1, pe alt cutit. Fy a / 2 F h Solicitarea de incovoiere a cutitului este produsa de Fz si Fy : z = z2 . ; z = ba / 6 b a2 / 6 Se stie ca: Fy 0,3 Fz , deci

y 0 ,3 Fz 11,5 = = 0.09 = 9 % ; ca urmare, incovoierea produsa de Fz 37 z

Fy se poate neglija. Relatiile (6.4.2) devin : F 37 0 ,3 Fz i = z3 = 0 ,018 Fz ; c = = 5 ,7 10 4 Fz ; c = 0 ,03 = 3 % 2 i 23 / 6 23 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) (6.4.7) in care vom lua: = (1 + 2 ) / 2 . 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

care pinul 8 este semnalul de masurat, pinii 5 si 6 tensiunea de excitatie a puntii, pinii 13 si 12senzorii 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) -3 Scara alungirilor relative: K = r e a l / I n r e g = 1,957 x 10 . (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 1 -0,02 -0,04


Fig. 6.4.3 - 1
Inr

17

25

33

41

49

57

65

73

81

89

97

este 2 I n r .

(t) si 2

Inr

(t)

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 :
Fz = =
inr real 1real a 2 b inr 1 a 2b 1 + 2 a 2b = E 2 = EK 2 = 6h 2 6h 2 6h 2

2 ,3 3 inr inr 2 ,1 10 6 1,975 10 3 ( 2 1 ) 12 3,7 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.
76 74 72 70 68 66 64 1 15 29 43 57 71 85 99 113 127 141 155 169 183

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.

Exista relatia: a reala

Fig. 6.4.5 a [ mV ] a 9 ,81 = = g = a [ m / s2 ] , s [ mV / g ] s s

(6.4.13)

in care a [mV] este semnalul intrat in Spider; deci valoarea inregistrata in PC este : 9 ,81 inr real inr ax = a x = 0 ,785 a x 12 ,5 9 ,81 inr real (6.4.14) ay = a y = 0 ,853 a inr y 11,5 9 ,81 inr inr a zreal = a z = 0 ,727 a z 13 ,5 De exemplu, la inregistrarea nr. 101 s-au obtinut oscilogramele din fig. 6.4.6.
0 .0 0 8 0 .0 0 6 0 .0 0 4 0 .0 0 2 0 - 0 .0 0 2 - 0 .0 0 4 - 0 .0 0 6 1 17 33 49 65 81 97 113 129 145 161 177

a)- Acc. axinr(t)


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

17

33

49

65

81

97

113 129 145 161 177

b)- Acc. ayinr(t)


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

17

33

49

65

81

97

113 129 145 161 177

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

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 Q = Q p + Q a + Q p + Q s + Q p + Q s + Q m , precizarea: (6.4.16)

Fig. 6.4.7. Surse de caldura la aschiere unde: Q p este cantitatea de caldura provenita din transformarea lucrului mecanic de deformare n planul de forfecare si preluata de piesa; Q a - cantitatea de caldura provenita din transformarea lucrului mecanic de deformare n planul de forfecare si preluata de aschie; Q p cantitatea de caldura provenita din transformarea lucrului mecanic de frecare pe fata de asezare si preluata de piesa; Q s - cantitatea de caldura provenita din transformarea lucrului mecanic de frecare pe fata de asezare si preluata de scula; Q s - cantitatea de caldura provenita din transformarea lucrului mecanic de frecare pe fata de degajare si preluata de scula; Q a cantitatea de caldura provenita din transformarea lucrului mecanic de frecare pe fata de degajare si preluata de aschie; Qm 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.

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 intrun 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 L 1 medie: Ra = y( x ) dx . L0 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.

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, variinduse 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 1inr si 2inr nu au aspectul din fig. 6.4.3 (in care 1inr < 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;

25 20 15 10 5 0 1 15 29 43 57 71 85
a) Fz

99

113 127 141 155 169 183

0 .0 1 0 .0 0 5 0 1 - 0 .0 0 5 - 0 .0 1
b)- Ax

17

33

49

65

81

97

113 129 145 161 177

0 .0 0 8 0 .0 0 6 0 .0 0 4 0 .0 0 2 0 - 0 .0 0 2 - 0 .0 0 4 - 0 .0 0 6
c)- Ay

17

33

49

65

81

97

113 129 145 161 177

0 .0 1 0 .0 0 5 0 1 - 0 .0 0 5 - 0 .0 1
d)- Az

17

33

49

65

81

97

113 129 145 161 177

Fig. 6.5.1

66 64 62 60 58 56 54 1 16 31 46 61 76 91
a)- Fz

106 121 136 151 166 181

0 .0 0 8 0 .0 0 6 0 .0 0 4 0 .0 0 2 0 - 0 .0 0 2 - 0 .0 0 4 - 0 .0 0 6
b)- Ax

17

33

49

65

81

97

113 129 145 161 177

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

17

33

49

65

81

97

113 129 145 161 177

c)- Ay

0 .0 1 0 .0 0 5 0 - 0 .0 0 5 - 0 .0 1 - 0 .0 1 5
d)- Az

17

33

49

65

81

97

113 129 145 161 177

Fig. 6.5.2

86 84 82 80 78 76 74 72 1 16 31 46 61 76 91
a)- Fz

106 121 136 151 166 181

0 .0 1 0 .0 0 5 0 1 - 0 .0 0 5 - 0 .0 1
b)- Ax

17

33

49

65

81

97

113 129 145 161 177

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

17

33

49

65

81

97

113 129 145 161 177

c)- Ay

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

17

33

49

65

81

97

113 129 145 161 177

d)- Az

Fig. 6.5.3

200 150 100 50 0 1 17 33 49 65 81


a)- Fz

97

113 129 145 161 177

0 .0 1 0 .0 0 5 0 - 0 .0 0 5 - 0 .0 1 - 0 .0 1 5
b)- Ax

15

29

43

57

71

85

99

113 127 141 155 169 183

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

17

33

49

65

81

97

113 129 145 161 177

c)- Ay

0 .0 1 0 .0 0 5 0 - 0 .0 0 5 - 0 .0 1 - 0 .0 1 5
d)- Az

17

33

49

65

81

97

113 129 145 161 177

Fig. 6.5.4

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

160 155 150 145 140 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 90 92 91 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 89, 93 1,0 1,2 116 118 117 - 0,416 1,4 1,5 2 174 176 Din tabelul 6.5.3 deducem tabelul 6.5.4.

120 100 80 60 40 20 0 1 15 29 43 57 71 85
a) - Fz
0 ,0 6 0 ,0 4 0 ,0 2 0 - 0 ,0 2 - 0 ,0 4 - 0 ,0 6 1 15 29 43 57 71 85 99 113 127 141 155 169 183

99 113 127 141 155 169 183

b) - Ax

0 ,0 3 0 ,0 2 0 ,0 1 0 - 0 ,0 1 - 0 ,0 2 - 0 ,0 3
c) - Ay

15

29

43

57

71

85

99

113 127 141 155 169 183

0 ,1 0 ,0 5 0 - 0 ,0 5 - 0 ,1 - 0 ,1 5
d) Az

15

29

43

57

71

85

99

113 127 141 155 169 183

Fig. 6.5.6

5 4 3 2 1 0 -1 1 15 29 43 57 71 85 99 113 127 141 155 169 183

Fig. 6.5.7 - Fz Tabelul 6.5.3 v 86 - 75 s 0,167 - 0,250 t 0,5 0,7 1 1,2 1,4 1,5 2 c1 c2 57-61;78-84 80,84 105 106 c3 c4

124, 152 171

Tabelul 6.5.4 Clasa c1 c2 c3 c4

Inregistrarea 057 084 105 124 171

v 86 85 83 79,3 75,4

s 0,25 0,212 0,25 0,25

t 0,5 1 1,4 2

Fz [daN] 23 31 26 32 51 61 64 71 94 106

Din tabelul 6.5.5 deducem tabelul 6.5.6. Tabelul 6.5.5 v s t c1 c2 0,5 0,7 53-56;85-87 54 86 - 75 0,264 1 1,2 99 102 - 0,334 1,4 1,5 2 Tabelul 6.5.6 Clasa c1 c2 c3 c4

c3

c4

100 125-128, 148-151 127,149 164-170 168

Inregistrarea 54 87 100 127 149 168

v 86 85 83 80 77 75,4

t 0,5 1 1,4 1,5 2

0.302

Fz 34 44 27 34 73 78 71 82 82 - 95 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.

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 = Fz = 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 Fz ; 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 azinr in banda de frecvente 1 - 2400 Hz ; X11 = media densitatii spectrale de putere a lui azinr in banda de frecvente 2401 - 4800 Hz ; X12 = media densitatii spectrale de putere a lui azinr 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

6.6682e+003 2.4241e+004 2.4126e+004 2.2393e+004 2.8037e+004 3.8184e+004 2.1723e+004 4.0237e+004 4.4759e+004 5.3456e+004 5.6160e+004 2.9887e+004 3.9564e+004 5.5562e+004 5.1683e+004 7.0257e+004 6.7549e+004 1.6128e+005

1.0552e+000 1.5393e+000 4.4930e-007 3.5887e-006 1.8399e-005 7.4094e-001 6.3477e-001 1.2092e-005 2.9389e-006 1.8129e-005 7.9150e-001 7.6272e-001 1.2318e-005 4.2582e-006 1.9059e-005 9.0462e-001 5.9583e-001 1.2425e-005 2.8956e-006 2.5164e-005 9.8662e-001 9.8148e-001 1.3472e-005 4.6359e-006 2.0672e-005 1.3660e+000 1.6390e+000 1.4274e-005 7.1711e-006 1.7458e-005 1.0602e+000 6.8397e-001 1.5730e-005 3.3052e-006 1.1485e-005 1.2860e+000 6.8552e-001 2.3626e-005 9.1872e-006 1.0742e-005 1.1099e+000 4.5915e-001 2.2549e-005 6.2768e-006 7.3750e-006 1.0607e+000 8.0039e-001 2.2212e-005 6.4283e-006 8.7312e-006 1.2366e+000 1.0382e+000 2.2164e-005 5.6076e-006 8.3173e-006 8.8511e-001 6.8384e-001 3.4395e-006 4.6723e-006 1.0022e-005 1.3431e+000 6.5909e-001 3.2688e-006 3.7426e-006 1.5528e-005 1.1869e+000 7.7111e+000 3.8126e-006 7.5537e-006 4.4260e-003 1.2146e+000 6.6422e-001 4.7469e-006 6.9971e-006 8.2586e-006 1.7075e+000 1.5874e+000 2.2816e-006 5.8361e-006 1.6512e-005 1.6576e+000 6.8277e-001 2.0409e-006 6.8975e-006 1.5319e-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.

A B = ( A B )T ( A B ) . Verificare: A = [ x1 y1 ] T ; B = [ x2 y2 ] T ; x x2 2 A B = [ x1 x 2 y 1 y 2 ] 1 = ( x1 x2 )2 + ( y1 y 2 )2 , y1 y 2 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.
Distanta dintre doi vectori A si B:

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.

Fig. 6.6.2

Fig. 6.6.3

Fig. 6.6.4

Fig. 6.6.5

Fig. 6.6.6

Fig. 6.6.7

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

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.

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

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

1 N ( xk ) 2 , unde N = 12; N 1 k =1 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.
- abaterea medie patratica (deviatia standard) =

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.

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. Inreg. Clasa v t s Epoci Eroarea Clasa Timpul crt. [m/min] [mm] [mm/rot] % din RNA [min]
0 1 2 3 4 5 6 7 8 9

1 2 3 4 5 6 7

046 183 168 174 099 190 095

1 5 4 4 2 7 6

69 71 75.4 120.6 83.2 0 83.2

0.5 3 2 2 1 0 1

0.25 0.302 0.302 0.416 0.334 0 0.353

43 40 76 67 43 47 47

4.93 4.4 2.5 3.47 4.93 3.6 23.87

1 5 4 4 2 7 6

10 8 6 8 7 7

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

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. Inreg. v t s L Epoci Eroarea Clasa crt. [m/min] [mm] [mm/rot] [mm] % din RNA
0 1 2 3 4 5 6 7 8

1 2 3 4 5 6 7 8 9 10 11 12 13 14

115 118 126 129 133 136 139 142 146 149 152 155 158 161

130.6 130.6 79.3 79.3 63.4 63.4 63.4 63.4 77.3 77.3 77.3 123.7 123.7 123.7

1.2 1.2 1.4 1.4 1.4 1.4 1.4 1.4 1.5 1.5 1.5 1.5 1.5 1.5

0.334 0.416 0.292 0.353 0.353 0.292 0.212 0.167 0.375 0.302 0.25 0.177 0.146 0.118

245 90 770 630 425 300 200 120 780 615 480 340 230 130

40 76 43 43 40 76 64 67 43 47 47 40 31 76

4.4 2.53 4.93 4.93 4.4 2.53 2.67 3.47 4.93 3.6 23.87 4.4 15.2 2.53

2 3 3 3 4 3 3 3 3 3 3 3 3 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)

11 ( x 1 ) . Matricea de partitie este definita astfel: ( n ) = . n 1 ( x1 )

1 N ( x N )
.

. nN

, (6.8.3) . ( x N )
(6.8.4)

unde valorile de apartenenta sunt supuse la urmatoarele conditii:


j =1

k j = 1 , ( k = 1 ,..., N ) ,

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 = ( k j )w || xk - vj || 2 ,
k =1 j =1

(6.8.5)

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


vj =
k =1 w ( k j ) xk w (k j ) N N

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

(6.8.6)

k =1

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

|| xk - vj || =

i =1

2 ( x ( k ,i ) v ( j , i )) .

(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): t t 11 ( x1 ) . . 1 N ( xN ) . . , ( n ) = (6.8.8) . . t t n 1 ( x 1 ) . . n N ( x N ) Sari la pasul 2, luand t = 0 . 2.- Calculeaza vectorul cu pseudo-centrele de greutate pentru fiecare cluster din matricea de partitie:
v jt =
k =1 t w ( k j ) xk N

k =1

, (j=1,...,n).
t k j

(6.8.9)

3.- Modifica fiecare valoare de apartenenta: 1 tk+j1 ( x k ) = , if xk vjt ; (6.8.10) 1 / ( w 1 ) t xk v j n t =1 x v k t t+1 pana cand xk = vj , apoi: k , j ( xk ) = 1 , daca j = ; t+1k , j ( xk ) = 0 , daca j . Matricea de partitie modificata este re-organizata: t +1 t +1 11 ( x1 ) . . 1 N ( xN ) . . t +1 , (n) = (6.8.11) . . t +1 t +1 n 1 ( x 1 ) . . n N ( x N ) 4.- Se verifica daca convergenta matricei de partitie este indeplinita:

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): 1 k j (x) = , if x vj ; (6.8.13) 1 / ( w 1 ) x vj n =1 x v 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 cmeans 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

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

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 = Fz = 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 Fz ; 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 azinr in banda de frecvente 1 - 2400 Hz ; X11 = media densitatii spectrale de putere a lui azinr in banda de frecvente 2401 - 4800 Hz ; X12 = media densitatii spectrale de putere a lui azinr 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

6.6682e+003 2.4241e+004 2.4126e+004 2.2393e+004 2.8037e+004 3.8184e+004 2.1723e+004 4.0237e+004 4.4759e+004 5.3456e+004 5.6160e+004 2.9887e+004 3.9564e+004 5.5562e+004 5.1683e+004 7.0257e+004 6.7549e+004 1.6128e+005

1.0552e+000 1.5393e+000 4.4930e-007 3.5887e-006 1.8399e-005 7.4094e-001 6.3477e-001 1.2092e-005 2.9389e-006 1.8129e-005 7.9150e-001 7.6272e-001 1.2318e-005 4.2582e-006 1.9059e-005 9.0462e-001 5.9583e-001 1.2425e-005 2.8956e-006 2.5164e-005 9.8662e-001 9.8148e-001 1.3472e-005 4.6359e-006 2.0672e-005 1.3660e+000 1.6390e+000 1.4274e-005 7.1711e-006 1.7458e-005 1.0602e+000 6.8397e-001 1.5730e-005 3.3052e-006 1.1485e-005 1.2860e+000 6.8552e-001 2.3626e-005 9.1872e-006 1.0742e-005 1.1099e+000 4.5915e-001 2.2549e-005 6.2768e-006 7.3750e-006 1.0607e+000 8.0039e-001 2.2212e-005 6.4283e-006 8.7312e-006 1.2366e+000 1.0382e+000 2.2164e-005 5.6076e-006 8.3173e-006 8.8511e-001 6.8384e-001 3.4395e-006 4.6723e-006 1.0022e-005 1.3431e+000 6.5909e-001 3.2688e-006 3.7426e-006 1.5528e-005 1.1869e+000 7.7111e+000 3.8126e-006 7.5537e-006 4.4260e-003 1.2146e+000 6.6422e-001 4.7469e-006 6.9971e-006 8.2586e-006 1.7075e+000 1.5874e+000 2.2816e-006 5.8361e-006 1.6512e-005 1.6576e+000 6.8277e-001 2.0409e-006 6.8975e-006 1.5319e-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.

A B = ( A B )T ( A B ) . Verificare: A = [ x1 y1 ] T ; B = [ x2 y2 ] T ; x x2 2 A B = [ x1 x 2 y 1 y 2 ] 1 = ( x1 x2 )2 + ( y1 y 2 )2 , y1 y 2 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.
Distanta dintre doi vectori A si B:

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.

Fig. 6.6.2

Fig. 6.6.3

Fig. 6.6.4

Fig. 6.6.5

Fig. 6.6.6

Fig. 6.6.7

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

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.

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

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

1 N ( xk ) 2 , unde N = 12; N 1 k =1 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.
- abaterea medie patratica (deviatia standard) =

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.

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. Inreg. Clasa v t s Epoci Eroarea Clasa Timpul crt. [m/min] [mm] [mm/rot] % din RNA [min]
0 1 2 3 4 5 6 7 8 9

1 2 3 4 5 6 7

046 183 168 174 099 190 095

1 5 4 4 2 7 6

69 71 75.4 120.6 83.2 0 83.2

0.5 3 2 2 1 0 1

0.25 0.302 0.302 0.416 0.334 0 0.353

43 40 76 67 43 47 47

4.93 4.4 2.5 3.47 4.93 3.6 23.87

1 5 4 4 2 7 6

10 8 6 8 7 7

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

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. Inreg. v t s L Epoci Eroarea Clasa crt. [m/min] [mm] [mm/rot] [mm] % din RNA
0 1 2 3 4 5 6 7 8

1 2 3 4 5 6 7 8 9 10 11 12 13 14

115 118 126 129 133 136 139 142 146 149 152 155 158 161

130.6 130.6 79.3 79.3 63.4 63.4 63.4 63.4 77.3 77.3 77.3 123.7 123.7 123.7

1.2 1.2 1.4 1.4 1.4 1.4 1.4 1.4 1.5 1.5 1.5 1.5 1.5 1.5

0.334 0.416 0.292 0.353 0.353 0.292 0.212 0.167 0.375 0.302 0.25 0.177 0.146 0.118

245 90 770 630 425 300 200 120 780 615 480 340 230 130

40 76 43 43 40 76 64 67 43 47 47 40 31 76

4.4 2.53 4.93 4.93 4.4 2.53 2.67 3.47 4.93 3.6 23.87 4.4 15.2 2.53

2 3 3 3 4 3 3 3 3 3 3 3 3 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)

11 ( x 1 ) . Matricea de partitie este definita astfel: ( n ) = . n 1 ( x1 )

1 N ( x N )
.

. nN

, (6.8.3) . ( x N )
(6.8.4)

unde valorile de apartenenta sunt supuse la urmatoarele conditii:


j =1

k j = 1 , ( k = 1 ,..., N ) ,

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 = ( k j )w || xk - vj || 2 ,
k =1 j =1

(6.8.5)

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


vj =
k =1 w ( k j ) xk w (k j ) N N

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

(6.8.6)

k =1

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

|| xk - vj || =

i =1

2 ( x ( k ,i ) v ( j , i )) .

(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): t t 11 ( x1 ) . . 1 N ( xN ) . . , ( n ) = (6.8.8) . . t t n 1 ( x 1 ) . . n N ( x N ) Sari la pasul 2, luand t = 0 . 2.- Calculeaza vectorul cu pseudo-centrele de greutate pentru fiecare cluster din matricea de partitie:
v jt =
k =1 t w ( k j ) xk N

k =1

, (j=1,...,n).
t k j

(6.8.9)

3.- Modifica fiecare valoare de apartenenta: 1 tk+j1 ( x k ) = , if xk vjt ; (6.8.10) 1 / ( w 1 ) t xk v j n t =1 x v k t t+1 pana cand xk = vj , apoi: k , j ( xk ) = 1 , daca j = ; t+1k , j ( xk ) = 0 , daca j . Matricea de partitie modificata este re-organizata: t +1 t +1 11 ( x1 ) . . 1 N ( xN ) . . t +1 , (n) = (6.8.11) . . t +1 t +1 n 1 ( x 1 ) . . n N ( x N ) 4.- Se verifica daca convergenta matricei de partitie este indeplinita:

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): 1 k j (x) = , if x vj ; (6.8.13) 1 / ( w 1 ) x vj n =1 x v 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 cmeans 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

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

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 max yS u(t) zona constrangerii u u max 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:

zona stabila u = slab

zona normala u = K . e +. . .

u ( t ) = KP e ( t ) + KI e ( t ) dt (7.1) & = KP e & + KI e . Daca derivam aceasta relatie, se obtine: (7.2) u 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: S daca x este A 1 si A 2 si ... si A L atunci y este B (7.8) ~ . ~ ~ ~
S A1 A2 AL Presupunnd o noua multime fuzzy A ~ = ~ ~ ? ~ , exprimata prin functia de

apartenenta:

A S ( x ) = min [ A 1 ( x ) , A 2 ( x ) ,. . ., A L ( x )] ,
~ ~ ~ ~

(7.9)

utiliznd definitia intersectiei fuzzy (Cap. 4), regula compusa initiala poate fi rescrisa: S daca x este A S atunci y este 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 .

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

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): ~~ L X = LX ( x) / x in cazul ca X este discret

~~ L X = LX ( x) / x in cazul ca X este continuu


X

(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 LX se poate utiliza L X , adica functia de apartenenta, fara un argument. De exemplu, consideram variabila lingvistica E desemnnd eroarea. Cadrul lui E este E, ~~ LE, E, ME , unde LE este data de relaia (7.11), E = [-6, 6] si ME :LE LE . Acest cadru

este artat n figura 7.3. Deci,


L 1

6 ~~ ~ ~ NB = LE 1 = L ( x ;6 ,4 ) / x , 6

(7.15)

unde funcia L : U [0,1] este o funcie cu doi parametrii, definita astfel (fig. 7.4):

Fig. 7.4. Funcia L u< 1 , L ( u ; , ) = ( u ) / ( ) , u 0 , u>


6 ~~ ~~ NM = LE 2 = ( x ; 6 , 4, 2 ) / x , 6

(7.16)

(7.17)

in care funcia triunghi : U [ 0 , 1] este o funcie cu trei parametrii, definita astfel (fig. 7.5):
1

Fig. 7.5. Funcia u< 0 , ( u ) / ( ) , u ( u; , , ) = ( u ) / ( ) , u u> 0 , 6 ~~ ~ ~ NS = LE 3 = ( x ; 4 , 2 , 0 ) / x ,


6

(7.18)


6 ~~ ~~ PB = LE7 = ( x ; 4 , 6 ) / x , 6

(7.19)

unde funcia : U [0, 1] este o funcie cu doi parametrii definita astfel (fig. 7.6): u< 0 , ( u ; , ) = ( u ) / ( ) , u (7.20) 0 , u> 7.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.

Fig. 7.6. Funcia

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.

- 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, definete regula: daca valoarea lui e ( k ) este NM si valoarea lui e ( k ) este NB, atunci valoarea lui u ( k ) este NB . Mulimea regulilor se poate impari n urmtoarele cinci grupe: - Grupa 0: n acest grup, ambele E si E sunt (pozitive sau negative) mici sau nule. Aceasta nseamn ca valoarea curenta a ieirii din proces y a deviat de la punctul de funcionare, dar este aproape de el. Variaia u ( k ), adugat precedentei ieiri din controler u ( k - 1 ) se indica sa fie mica sau zero, pentru a corecta micile deviaii de la punctul de funcionare. - Grupa 1 : n acest grup E este negativ mare sau mediu ceea ce arata ca y ( k ) este mult mai sus dect punctul de funcionare. Concomitent, cum E este pozitiv, deducem ca y se misc spre punctul de funcionare. Variaia u ( k ) impusa de acest grup pentru u ( k - 1 ) accelereaz sau ncetinete apropierea de punctul de funcionare. De exemplu, daca y ( k ) este mult mai sus de punctul de funcionare (e ( k ) este NB) si se mica spre acest punct cu un pas mic ( e ( k ) este Ps) atunci mrimea pasului trebuie sa fie sensibil crescut ( u ( k ) este NM). - Grupa 2: E este sau aproape de punctul de funcionare (PS, Z, NS) sau mult sub el (PM, PB) n acelai timp, E fiind pozitiv, y se deprteaz de punctul de funcionare. Ca urmare, o variaie pozitiva u ( k ), pentru u ( k - 1 ) are rolul de a schimba acest trend si a face ca y, n loc sa se deprteze, sa nceap sa se mite spre punctul de funcionare. - Grupa 3: E este PM sau PB, ceea ce nseamn ca y ( k ) este mult sub punctul de funcionare. Variaia u ( k ) impusa de acest grup pentru u ( k - 1 ) accelereaz sau ncetinete apropierea de punctul de funcionare. De exemplu, daca y ( k ) este mult sub punctul de funcionare (e ( k ) este PB) si se mic spre acest punct cu un pas relativ mare ( e ( k ) este NM) atunci mrimea pasului trebuie sa fie puin crescut ( u ( k ) este PS). - Grupa 4: E este sau aproape de punctul de funcionare (Ps, Z, NS) sau mult mai sus (NM, NB). n acelai timp, E fiind negativ, y se deprteaz de punctul de funcionare. Ca urmare, o

variaie negativa u ( k ), pentru u ( k - 1 ) are rolul de a schimba acest trend si a face ca y, n loc sa se deprteze, sa nceap sa se mite spre punctul de funcionare. Daca se dorete o rezoluie mai buna n jurul punctului de funcionare, atunci se poate largi domeniul valorilor lingvistice, de ex.: PZ, NZ, PVS, NVS, unde V corespunde lui foarte (very). Trebuie subliniat ca mrirea dimensiunii mulimii termenilor duce la creterea numrului de reguli. Datele de intrare, regulile, comanda (sau aciunea) sunt - n general - mulimi fuzzy exprimate sub forma unor funcii de apartenena definite pe universul corespunztor fiecrei mrimi. Metoda utilizata pentru evaluarea regulilor este cunoscuta sub numele de raionament aproximativ, fiind n mod uzual realizata prin compunerea de relaii fuzzy aplicate unei ecuaii relaionale 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 achiere provine de la controler, iar procesul rspunde cu o ieire care este o mrime msurata. Mrimea de ieire fiind o cantitate precisa, ea trebuie fuzificat intr-o mulime fuzzy care reprezint intrarea pentru controler (ce nglobeaz n structura lui reguli lingvistice) Ieirea controlerului fuzzy este o serie de alte mulimi fuzzy. Intruct majoritatea sistemelor fizice nu pot interpreta comenzi (mulimi) fuzzy, ieirea controlerului fuzzy trebuie sa fie transformata intr-o cantitate crisp utiliznd metode de defuzificare. Aceste valori de ieire 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):
~ ~

Daca valoarea msurat este t1 = 25o C , atunci prin fuzzificare se obine :

m ( t ) = ( t ; 10 , 20 , 30 ) ; M e ( t ) = ( t ; 20 , 30 , 40 ) ; M ( t ) = ( t ; 30 , 40 , 50 ) .

Fig. 7.9

m ( 25 ) = 0.5 ; Me ( 25 ) = 0.5 ; M ( 25 ) = 0 .
~ ~ ~

Deci, n mulimea 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 msurat este t2 = 32 o C , atunci : m (32) = 0; Me (32) = 0.8; M (32) = 0.2 si
~ ~ ~

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 partiioneaz spaiul fizic al erorii [-Em , Em] iar variaia erorii E este definita prin apte variabile lingvistice B1 , . . . , B7 care constituie o partiie a spaiului variaiei erorii [- Em , Em].Vom normaliza aceste domenii n acelai interval [- a, a] unde, de regula a = 6, utiliznd
B

relaiile:

a E ; E = a E . En= n Em

Em

(7.21)

Cele opt valori fuzzy A ( i = 1 , . . . , 8 ) pentru eroare corespund valorilor lingvistice din ~ i relaia (7.11). Pentru variaia erorii E corespund apte valori lingvistice B j (j = 1, . . . , 7)
~

respectiv PB, PM, PS, Z, NS, NM, NB. Funcia de apartenen pentru E este artat n tabelul 7.2; analog se procedeaz cu E. Tabelul 7.2
E Ai A1 ( PB) A2 (PM) A3 (Ps) A4 (PZ) A5 (NZ) A6 (Ns) A7 (NM) A8 (NB) -6 0 0 0 0 0 0 0.2 1 -5 0 0 0 0 0 0 0.7 0.8 -4 0 0 0 0 0 0.1 1 0.4 -3 0 0 0 0 0 0.5 0.7 0.1 -2 0 0 0 0 0.1 1 0.2 0 -1 0 0 0 0 0.6 0.8 0 0 -0 0 0 0 0 1 0.3 0 0 +0 0 0 0.3 1 0 0 0 0 1 0 0 0.8 0.6 0 0 0 0 2 0 0.2 1 0.1 0 0 0 0 3 0.1 0.7 0.5 0 0 0 0 0 4 0.4 1 0.1 0 0 0 0 0 5 0.8 0.7 0 0 0 0 0 0 6 1 0.2 0 0 0 0 0 0

Variabila de ieire 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 cantitile de control C k ( k
~

= 1 , . . . , 7) care partiioneaz 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
funcii analoage celor din fig. 7.3. Deci normalizarea nseamn realizarea situaiei din fig. 7.3.

7.6. FACTORI DE SCARA Factorii de scara joaca un rol similar coeficienilor din relaiile (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 funcie neliniar. 7.7. MOTORUL DE INFERENTA (rationament) ~~ Interpretarea aa-numitei propoziie fuzzy atomica E este NB se face prin mulimea fuzzy NB sau prin funcia de apartenen N B , definita pe domeniul fizic normalizat E =[-6, 6] a variabilei fizice eroare (fig. 7.3). Semnificaia expresiei simbolice E este NB ne indica gradul n care aceasta propoziie este satisfcut pentru o valoare precizata a erorii: a)- O valoare exacta este atribuita simbolului E. Aceasta se numete 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 propoziia atomica E este NB este satisfcut n aceste circumstane particulare. Pe baza propoziiilor fuzzy atomice si a conectivelor lingvistice si,sau,nu se pot forma propoziii 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: 1 s A2 AL daca x este A (7.23) ~ . ~ si ~ si . . . si ~ atunci y este B Presupunnd o noua mulime fuzzy A s = A 1 A 2 ... A L, exprimata prin funcia de ~ ~ ~ ~ apartenen A s ( x ) = min [ A 1 ( x ) , A 2 ( x ) ,.., A L ( x )] ,
~ ~ ~ ~

(7.24)

obinut utiliznd definiia interseciei fuzzy (4.2), regula compus iniial poate fi rescris s daca x este A s atunci y este B (7.25) ~ ~ Semnificaia regulii fuzzy if-then daca X este A, atunci Y este B este reprezentata ca o relaie fuzzy definita pe X x Y, unde X si Y sunt domeniile variabilelor lingvistice X si Y. Construcia acestor relaii fuzzy se face astfel: ~ a)- semnificaia regulii antecedent X este A este data de mulimea fuzzy A = X A ( x ) / x ; ~ b)- semnificaia regulii consecina Y este B este data de mulimea fuzzy B = Y B ( y ) / y ; c)- semnificaia regulii fuzzy if - then este o relaie fuzzy R astfel ca (7.26) x X , y Y : R ( x , y ) = A ( x ) B ( y ) unde * este un operator fuzzy . Cnd regulile antecedent sau consecina sunt propoziii fuzzy compuse, atunci mai nti se determina funciile de apartenen corespunztoare fiecrei propoziii compuse. In final, operatorul * se aplica funciilor de apartenen astfel determinate. Sa consideram doua propoziii fuzzy p: E este NB ; q: E este PS , semnificaia lor fiind: ~~ ~~ NB = NB ( e ) / e ; PS = PS ( e ) / e
e

Semnificaia lui si n propoziia r: E este NB si E este Ps este reprezentata de o relaie fuzzy r ( e,e ) = min( N B ( e ), P S ( e ) / ( e,e ) definita pe x :
e x e

In raionamentul aproximativ regula de inferena compozitional este de importanta majora. Aceasta utilizeaz o relaie fuzzy pentru a reprezenta legtura dintre doua propoziii fuzzy. ~ daca S1 este P si S1 R s2 , atunci S2 este Q , (7.27) Forma sa simbolica generala este: unde S1 si S2 sunt nume simbolice pentru variabile, P si Q sunt proprieti ale variabilelor

~ ~ ~ definite de mulimile fuzzy P si Q (reprezentnd semnificaia lui P si Q), S1 R S2 se citete ~ ~ S1 este n relaia R cu S2 si semnificaia ei este reprezentata de relaia fuzzy R ; P este ~ definita pe X si R pe X x Y. In [9] se propune ca interpretarea regulii (7.27) sa fie: ~ ~ ~ Q = proj( P o R ) pe Y , adica Q ( y ) = max min( P ( x), R ( x, y )) . (7.28)
x

Exemplu Pe 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 relaie binara cu R = 1 / ((1, 1) + (2, 2) + (3, 3) + (4, 4)) + + 0.5 / (( 1, 2 ) + ( 2 , 3 ) + ( 3 , 4 )) . 0 1 0.5 0 ~ ~ ~ 0.5 1 0.5 0 Q = P o R = (1 0.6 0.2 0) o = (1 0.6 0.5 0.2) , 0 0.5 1 0.5 0 0 0.5 1 unde s-a utilizat regula practica din relaia (4.30). Rezultatul este mulimea fuzzy Q = 1 / 1 + 0.6 / 2 + 0.5 / 3 + 0.2 / 4 , care desemneaz expresia lingvistica aproximativ mic . Exista un numr de relaii care se pot utiliza pentru a reprezenta semnificaia lui daca X este A ~ ~ ~ (7.29) , atunci Y este B, si anume B = A o R . Pentru controlul fuzzy, cea mai utilizata este aa numita implicaia Mamdani ~ ~ ~ R = ce ( A ) ce ( B ) , adic R ( x , y ) = min ( A ( x ) , B ( y ) ). (7.30) De exemplu, daca
B

si

~ A = 0 .1 / x1 + 0 .4 / x2 + 0 .7 / x3 + 1 / x4 ~ B = 0 .2 / y1 + 0 .5 / y2 + 0 .9 / y3

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 implicaiei Mamdani pentru interpretarea semnificaiei 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. Implicaia Mamdani


u : CNS ( u ) = E ( e ) / e o ExU R ( e ,u ) / ( e ,u ) = U min( LE ( e* ), LU ( u )) / u = U CLU ( u ) / u ,

(7.32)

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 mulimea 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 funcia de apartenen obinut dup fuzzificarea intrrii crisp e* :
1 , daca e = e* e : * ( e ) = 0 ,in caz contrar

(7.33)

si se numete SINGLETON FUZZY. Procesul descris de (7.32) se numete firing (prelucrare). Acum vom considera cazul regulilor multiple , cu intrare crisp , fiecare regula fiind reprezentata (7.34) astfel : daca e este LE ( k ) atunci u este LU ( k ) , k = 1 , 2 , . . . , n , ~~ (k) ( k) = E ( k ) ( e ) / e , este interpretata aa: LE unde e este LE LE ~ ~ (k) ( k) LU = U ( k ) ( u ) / u . si u este LU este interpretata aa: LU Interpretarea Mamdani a regulii (7.34) este: k : R ( k ) = E xU min( L E ( k ) ( e ) , LU ( k ) ( u ) / ( e , u ) (7.35)
n ~ ~ si semnificaia ntregii mulimi de reguli se definete astfel : R = U R ( k ) , k =1

(7.36) (7.37) (7.38)

care nseamn ca:

e,u : R (e,u ) = max R ( k ) (e,u ) = max min ( L E ( k ) (e), LU ( k ) (u )) .


k k

in acord cu (7.32), firing-ul setului de reguli se exprima astfel:


k

~ ~ U = * o R , i.e., u :U (u ) = max min ( LE ( k ) (e * ), LU ( k ) (u )) ;

aceasta relaie se numete inferena compoziional de baza. Daca raionamentul se face separat pentru fiecare regula, rezultatul va fi n mulimi fuzzy retezate CLU(1 ) , . . ., CLU( n ) , una pentru fiecare regula, unde: (7.39) u , k : CLU ( k ) ( u ) = min( LE ( k ) ( e* ) , LU ( k ) ( u ) ) aceasta relaie este numita inferena de baza a regulii individuale. Daca se aplica reuniunea n ~~ ~ ~ tuturor ieirilor (cu regula maximului): U = U CLU ( k ) , (7.40)
k =1

atunci se obine acelai rezultat ca n (7.38). ~ Deci, n inferena compoziional de baza mai nti se combina toate regulile n R si apoi se prelucreaz cu intrarea fuzzy * (prin operaia de compoziie), iar n inferena de baza a regulii individuale mai nti se prelucreaz fiecare regula individuala cu intrarea crisp e* , obinndu-se n mulimi fuzzy retezate, care apoi se combina intr-o mulime fuzzy generala. Aceste doua metode sunt echivalente pentru inferena de tip Mamdani. Uzual, se prefera al doilea tip de inferena, fiind foarte eficienta computaional. Deci, principala abordare n inferena este inferena de baza a regulii individua . sarcina acestui tip de inferena este de a calcula valoarea generala a ieirii de control, pe baza contribuiilor individuale ale fiecrei reguli n baza de reguli. Fiecare asemenea contribuie individuala reprezint valoare ieirii de control calculata ca o singura regula . Ieirea din modulul de fuzzificare , reprezentnd valori curente (exacte) ale variabilelor de stare ale procesului, se compara cu fiecare regula antecedent, stabilindu-se gradul de potrivire a fiecrei reguli. Acest grad de potrivire reprezint gradul de satisfacere a propoziiei 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 LE(k)n - m , then U is LU(k)n - m , (k = 1, 2, . . ., n). (7.41) unde LE(k) , L E(k) , si LU(k) sunt valori lingvistice din multimile E, LE, and LU, 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 (7.44) antecedent: e, : a n t (e, e) = min (*E (e), *E (e)). - 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)

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 C parte de forma trapezoidala C ~ 1 si a doua - de forma triunghiulara ~ 2 . Reuniunea acestor doua functii de apartenenta este multimea fuzzy C = C C . In general, iesirea fuzzy C a unui
~ ~ 1 ~ 2 ~

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

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


i=1

metodei in aplicatii bazndu-se pe criterii care tin de aprecierea rezultatelor obtinute in fiecare aplicatie data . a) Metoda maximului functiei de apartenenta. Aceasta metoda furnizeaza ca rezultat al defuzzificarii, valoarea crisp u*, pentru care C ( u * ) C ( u ) , uU (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 ) u du u* = . ( u ) du
C
~

(7.47)

C
~

Fig. 7.13

Fig. 7.14

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: a ( .5 ) + b ( .9 ) u* = . (7.48) .5 + .9 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. d) Metoda mediei maximelor presupune calculul lui u* (fig. 7.14) unde: u*=(a+b)/2. (7.49)

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) Fig. 7.15 - Functiile de apartenenta pentru B 1, B 2, B 3


~ ~ ~

c)

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 ) udu B ~ u*= = ( u ) du B
~

Fig. 7.16
:

0 ( .3 u ) u du +

3 .6

.3 u du +

u3 u du + 3 .6 2
4
7 8 6 7

( .5 ) u du
5 .5 4

+ ( u 5 ) u du + u du + ( 8 u ) u du :
6 5 .5

( .3 u ) du + ( .3 ) du +
0 3 .6 1 1

3 .6

u 3 du + 2

( .5 ) du +
5 .5 4

5 .5

( u 5 ) du +

du +

( 8 u ) du
8 7

= 4.9 m

In conformitate cu metoda mediei ponderate rezulta (fig. 7.17. a): u* = ( .3 x 2 . 5 ) + ( .5 x 5 ) + ( 1 x 6 .5 ) = 5.41 m ,


.3+.5 + 1

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

a) metoda mediei ponderate Fig. 7.17

b) metoda mediei maximelor

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 , B j ) vezi cap.7.5. Sistemul ~ i
~

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

iesirea sa valoarea fuzzy C (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. Realizarea tabelei de control. Cnd 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 04 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: J . d 2 / d t 2 = ( m l g ) sin - ; - m l 2 . d 2 / d t 2 + ( m l g ) sin = = u ( t ) , in care m = masa pendulului , l = 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 Fig. 7.18 control. Sinteza controlerului. Presupunnd 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 / l ) sin x 1 - ( 1 / m l 2 ) u ( t ) . Se cunoaste ca pentru unghiuri mici sin , cu unghiul masurat in radiani. Aceasta relatie este folosita pentru liniarizarea ecuatiilor neliniare de stare: dx1 /dt=x2 ; d x 2 / d t = ( g / l) x 1 - ( 1 / m l2) u ( t ) . Daca x1 este masurat in grade si x2 este masurat in "grade pe secunda prin alegerea lui l = g si m = 180 / ( l 2 ) , (egalitati numerice) se obtin ecuatiile discrete si liniarizate, care pot fi reprezentate prin ecuatiile cu diferente : dx1 /dt=x2 ; dx2 /dt= x1 - 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:

- 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.- Utiliznd regulile reprezentate in tabela, se vor realiza inferentele fuzzy, bazndu-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*.

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: x 1 ( 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 Utiliznd 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

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, obtinndu-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 pna cnd 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.

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 ) NVL Z Z Z Z Z Z Z Z Z Z Z Z Z Z NL Z Z Z Z Z Z Z Z Z Z Z Z Z Z Towards set - point NJL NM NJM Z Z Z Z JM JM Z JM JL Z JM JM Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z NJM NJM Z NJM NJL Z NJM NJM Z Z Z NS Z M L M Z Z Z Z Z Z NM NL NM Z Z VL VL VL JL JM S Z Z NS NJM NJL NVL NVL NVL S VL VL VL JL JM S Z Z NS NJM NJL NVL NVL NVL Away from set - point JM M JL VL VL VL VL VL VL VL VL VL JL JL L JM M JL S JM M Z S JM Z NS NJM NS NJM NM NJM NM NJL NJL NJL NL NVL NVL NVL NVL NVL NVL NVL NVL NVL L VL VL VL L L JL M NM NJL NL NL NVL NVL NVL VL VL VL VL VL VL L J; NJL NL NVL NVL NVL NVL NVL

Below set point

Error E

Above set point

NVL NL NJL NM NJM NS NZ PZ S JM M JL L VL

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 adaptare Se 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)): 1,if h = h (nT mT ) ~~ (7.50) L H n m ( h) = 0 , otherwise ,

~ ~ ~ ~~ unde H este E , sau 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: 1, if u = u (nT mT ) + r (nT ) ~~ (7.53) LVn m (u ) = 0 , otherwise, 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 LEn - m x LUn - m ; Rgood = LEn - m x LEn - 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 Rbad ) Rgood (7.56) unde R este complementul lui R; altfel spus, in Rn + 1 toate elementele coresponzand lui Rbad 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;

- 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 = (7.58) = [e (j) - e (j - 1)] . K = [Fc (j - 1) - Fc (j)] K e K , 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 date In 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
U
NB NM NS NZ PZ PS PM PB NB NB NB NM NM NS NS NZ NZ NM NM NM NM NS NS NZ NZ PZ NS NM NM NS NS NZ NZ PZ PS E NZ NM NS NS NZ NZ PZ PS PS PZ NS NS NZ PZ PZ PS PS PM PS NS NZ PZ PZ PS PS PM PM PM NZ PZ PZ PS PS PM PM PB PB PZ 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)

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 inferenta Regulile lingvistice de control au forma: Regula i, j: Daca E este Ai si E este B j atunci U este Ci j , (i, j = 1, 2, . . . , 8), (7.63) unde Ai , Bj si Ci j sunt valori lingvistice. In controlerul nostru sunt 8 * 8 = 6 4 reguli de control. Example Consideram 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 .
B B

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

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: A u + A2 uC 2 (3 0.75 / 2) 2 / 3 3 + 3 0.75 4.5 = u * = 1 C1 = A1 + A2 3 0.75 / 2 + 3 0.75

= 3.67 ; and u = u * K u
(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: 0 ,2 daca Fr FC 2 Ke = (7.65) daca F F > 1 2 , r C 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: [0 .0003 e ( nT ) + 0 .0084 ] U com ( nT T ) , daca e ( nT ) 0 subincarcare ( FC Fr ) ; Ku = (7.66) [ 0 . 0005 ( ) 0 . 0157 ] ( ) , e nT + U nT T com daca e ( nT ) < 0 sup raincarcare ( FC > Fr ) , 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 performantelor Intrucat 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:

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 adaptiva Toate 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: w ( pi j 4 ) , daca pi j 4 ; Ki j = (7.70) w ( p 5 ) , daca p > 4 . i j i j unde w este o pondere a carei marime se determina Figura 7.33 prin simulare si experiment. b2)- Modificarea regulilor Noul indice Ki j va fi: Ki j = cel mai apropiat intreg de (Ki j + K i j ), (7.71)
unde K i j 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) o Forta de aschiere - la strunjire - are =90 componentele: Fx - forta radiala (de respingere), Fy - forta tangentiala (principala), Fz - forta axiala (de avans). Aceste componente au expresiile [7]: Fig. 7.34
1 cos Fx = C x ( HB ) 1 + cos45 0 2
e

t 0 ,9 s 0 ,75 [daN ]

sin 45 0 Fy = C x ( HB) sin


e

0 , 25

t s 0 ,75 [daN ]

(7.73)

sin 0 ,4 Fz = C z ( HB) sin45 0 t s [daN ] 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 Cx Cy Oteluri si 18.13 27.9 170 aliaje de Al > 170 2.32 3.57
e

0,5

Cz 11.16 1.43

E 0.35 0.75

Forta de aschiere rezultanta, care se doreste a fi constanta, este: F = Fx2 + Fy2 + Fz2 . (7.74) (7.75) Calculam Fext = F (text ), (ext = min, max) ; tmed = (tmin + tmax ) / 2 . Forta de referinta o luam: Fr = F (tmed ), (7.76) 0 ,2 daca Fr FC 0 ,1 Fr (7.77) iar relatia (7.65) o substituim cu: K e = 1 0 , , 1 daca F F > F r C r 0,1 reprezentand banda de toleranta de 10 %. Calculam: Eext = (Fr - Fext )Ke , (ext = min, max) ; Em = MAX (Emin , Emax ).
6 E. Aplicam relatia (7.21): En = Em 6 Vom alege Em , iar En = E m

(7.78) (7.79)

E .

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 unelte, Editura tehnica, 1976

Fig. 7.35

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

Potrebbero piacerti anche