Proiectarea Genetica a Structurilor Neuro-Fuzzy Cu Recurenta Locala

download Proiectarea Genetica a Structurilor Neuro-Fuzzy Cu Recurenta Locala

of 77

Transcript of Proiectarea Genetica a Structurilor Neuro-Fuzzy Cu Recurenta Locala

UNIVERSITATEA TEHNIC "GH. ASACHI" IAI

FACULTATEA DE AUTOMATIC I CALCULATOARE

LUCRARE DE DIPLOM

Proiectarea genetic a structurilor neuro-fuzzy cu recuren local

Student: Cristian FLOREA Coordonator: ef lucrri Dr. ing. Lavinia FERARIU

- 2005 -

CuprinsCapitolul 1 Sisteme neuro-fuzzy ................................................. 21.1 Aspecte ale modelrii comportamentului inteligent ........................................... 2 1.2 Combinarea reelelor neuronale cu sisteme fuzzy .............................................. 2 1.2.1 Reele neuronale.......................................................................................... 2 1.2.2 Sisteme fuzzy .............................................................................................. 3 1.2.3 Sisteme neuro-fuzzy.................................................................................... 4 1.3 Proprietile sistemelor neuro-fuzzy ................................................................... 7 1.4 Tipuri de sisteme neuro-fuzzy ............................................................................ 8 1.4.1 Sisteme neuro-fuzzy cooperante ................................................................. 8 1.4.2 Sisteme neuro-fuzzy hibride ..................................................................... 10 1.4.3 Modelul ANFIS ........................................................................................ 10 1.4.4 Sisteme neuro-fuzzy recurente.................................................................. 12

Capitolul 2 Model de predictor neuro-fuzzy.............................. 121.5 Aspecte teoretice n predicia seriilor de timp .................................................. 12 1.5.1 Clasificarea seriilor de timp ...................................................................... 12 1.5.2 Strategii de predicie ................................................................................. 14 1.6 Sisteme neuro-fuzzy pentru predicia seriilor de timp ...................................... 16 1.6.1 Neuroni fuzzy elementari.......................................................................... 16 1.6.2 Neuroni cu ponderi fuzzy.......................................................................... 16 1.6.3 Modelul neuronal Yamakawa ................................................................... 18 1.7 Predictor neuro-fuzzy cu filtre ARMA ............................................................. 19 1.8 Concluzii asupra structurii i topologiei ........................................................... 24

Capitolul 3 Implementarea predictorului neurofuzzy cu filtre ARMA .......................................................................................... 261.9 Arhitectura logic a sistemului implementat .................................................... 26 1.9.1 Funcii de creare........................................................................................ 26 1.9.2 Funcii de antrenare i evaluare ................................................................ 27 1.9.3 Funcii de modificare ................................................................................ 27 1.10 Glosarul funciilor i procedurilor implementate.............................................. 28 1.10.1 ag (structura, index, nPop) ........................................................................ 28 1.10.2 backprop(structura, intrare, LRate)........................................................... 28 1.10.3 evalARMA(structure,index,datain)........................................................... 28

1.10.4 1.10.5 1.10.6 1.10.7 1.10.8 1.10.9 1.10.10 1.10.11 1.10.12 1.10.13

evalSFS(structure, index, datain).............................................................. 29 evaluate(structure,input) ........................................................................... 29 getparams(type, structure)......................................................................... 29 newAGParams(Nind, NGen, Pc, Pm, LInf, LSup) ................................... 30 newarma(m) .............................................................................................. 30 newARMAHistory(n) ............................................................................... 31 newGDParams(LRate,NEpochs) .......................................................... 31 newSFSHistory(n)................................................................................. 32 newstructure(type,train,trainParams,dim)............................................. 32 train(structure)....................................................................................... 33

Capitolul 4 Rezultate ................................................................. 361.11 1.12 Seria de timp ..................................................................................................... 36 Staia de evaporare (Fabrica de zahr, Lublin, Polonia) prima seciune ....... 39

ANEXA ........................................................................................ 42

Proiectarea genetic a structurilor neuro-fuzzy cu recuren local

Capitolul 1 Sisteme neuro-fuzzy

1.1

Aspecte ale modelrii comportamentului inteligent

Sistemele fuzzy i reelele neuronale ca metode alternative de procesare a informatiei se preteaz la modelarea comportamentului inteligent i reproducerea aciunilor unui expert uman capabil s rezolve probleme complexe. Acest scop se urmrete a fi atins printr-un proces de observare i nvare n locul clasicului model matematic obinut pe baza legilor din fizic i nu numai. Prin urmare, ntr-o asemenea abordare un rol fundamental va fi deinut de procesul de asimilare a cunotinelor care presupune: obinerea cunotinelor prin observare obinerea cunotinelor prin instruire obinerea cunotinelor prin nvare

Un prim element necesar n asimilarea si analiza cunotinelor se refer la un proces de achiziie a informaiilor folosind tehnici precum interviul i observarea. Interviul este foarte util pentru obinerea acelui tip de cunotine care pot fi exprimate sub forma unor de reguli. Cunotinele de tip intuitiv ns nu vor putea fi achiziionate dect printr-o atent observare a modului de rezolvare a problemei abordat de ctre expertul uman.

1.2

Combinarea reelelor neuronale cu sisteme fuzzy

Ideea de baz a combinrii sistemelor fuzzy i reelelor neuronale este de a proiecta o arhitectur care folosete, pe de o parte, sistemele fuzzy pentru a reprezenta cunotine ntr-o manier interpretabil, iar pe de alt parte, folosete abilitatea de nvare a reelelor neuronale pentru a-i adapta parametrii. Inconvenientele individuale ale ambelor tipuri de sisteme comportamentul de cutie neagr pentru reelele neuronale i problema gsirii valorilor de apartenen potrivite pentru sistemele fuzzy - pot fi astfel evitate. O combinaie a celor dou tipuri de sisteme poate constitui un model interpretabil care este capabil de nvare i care poate folosi cunotine apriori specifice problemei. De aceea metodele neuro-fuzzy sunt potrivite, n special, atunci cnd este necesar interaciunea utilizatorului la proiectarea sau interpretarea modelului. 1

Proiectarea genetic a structurilor neuro-fuzzy cu recuren local

1.2.1 Reele neuronaleFolosirea reelelor neuronale pentru rezolvarea unor probleme presupune n primul rnd descrierea problemei printr-un set de date reprezentativ. n cazul existenei unor perechi de date intrare-ieire se poate aplica nvarea supervizat, iar dac avem doar informaii indirecte cu privire la iesirea reelei (o masur a erorii sau o masur a efectelor ieirii reelei) se poate aplica un algoritm de nvare mbuntit, fr supervizor, n care un critic face o apreciere global cu privire la performanelor reelei. Unul din avantajele proiectrii cu ajutorul problemei este acela c nu este nevoie de un model prealabil al problemei (matematic sau de alt natur). Pe de alt parte, structura de tip black box a reelei neuronale nu permite extragerea unor informaii sub forma de reguli cu privire la modul de funcionare i implicit a modului de rezolvare a problemelor, deci includerea unor cunotine prealabile despre problem este exclus, aceasta inlanuire de dezavantaje ducnd spre un proces de antrenare (nvare) care poate fi foarte costisitor din punct de vedere al timpului i care nu ofer garania obinerii unei soluii corecte. Un alt mare avantaj al folosirii reelelor neuronale l constituie tolerana acestora la modificarile intrrilor sau chiar la modificrile de structur. Bineneles, aceasta toleran trebuie privit n contextul unor modificri structurale i/sau informaionale de mic amploare, n caz contrar fiind necesar o reantrenare a reelei pornind de la structura si starea curent. Nici n acest caz nu exist garania unei adaptri corecte i rapide a reelei la problema modificat, caz n care se impune o antrenare complet fr a lua n considerare datele obinute anterior.

1.2.2 Sisteme fuzzySpre deosebire de reelele neuronale, sistemele fuzzy se preteaz la rezolvarea problemelor despre care avem cunotine apriori, exprimabile sub form de reguli de tip daca atunci (n englez if-then). De asemenea este necesar definirea unor mulimi fuzzy care s exprime ntr-o form specific a informaiilor calitative i cantitative din problema de rezolvat. Avnd aceste elemente la dispoziie se poate implementa un sistem fuzzy care s ofere o soluie la problema n discuie. Nici n cazul sistemelor fuzzy nu este necesar un model prealabil al problemei, iar spre deosebire de reelele neuronale nu sunt necesare nici date de antrenare care, uneori pot fi greu de obinut. Sistemele fuzzy sunt de asemenea considerate ca insensibile la micile variaii ale intrrilor i ale parametrilor. Totui aceast toleran trebuie verificat pe cazurile specifice problemei deoarece se poate ntmpla ca variaiile foarte mici ale unor parametri sa duc la o nrutire semnificativ a performanelor. n plus, optimizarea sistemului se poate face pe baza mai multor criterii (de exemplu, pentru un sistem supus optimizrii se pot impune performane de vitez n funcionare combinate cu un consum redus de energie). Prin urmare, este de dorit un process de adaptare automat similar cu cel de antrenare a reelelor neuronale si care suport optimizarea unui sistem fuzzy.

2

Proiectarea genetic a structurilor neuro-fuzzy cu recuren local

1.2.3 Sisteme neuro-fuzzyPe baza celor discutate anterior, se poate ntocmi urmtorul tabel cu principalele avantaje i dezavantaje ale reelelor neuronale si ale sistemelor fuzzy: Reele neuronale AVANTAJE o Nu este necesar un model matematic al procesului; o Nu sunt necesare cunotine apriori sub form de reguli; o Exist numeoi algoritmi de antrenare / nvaare; o Nu este necesar un model matematic al procesului; o Pot beneficia de cunotine apriori sub form de reguli; o Permit o implementare uoar; o Interpretarea rezultatelor este facilitat de modelul bazat pe reguli; Sisteme fuzzy

DEZAVANTAJE o Reelele neuronale au caracter de black box; o De obicei nu se pot deduce reguli de funcionare pentru obinerea rezultatelor; o Adaptarea la schimbrile mediului nconjurtor poate fi dificil, impunndu-se astfel o reantrenare a reelei; o Nu se pot folosi cunotine apriori; o Nu exist garania convergenei procesului de antrnare; o Se impune existena unor reguli de funcionare de tipul if then; o Nu are capacitate de nvare; o Nu exist metode standardizate de ajustare a parametrilor; o Pot aprea dificulti de ordin semantic n interpretarea rezultatelor; o Adaptarea la schimbrile de mediu poate fi dificil; o Ajustarea parametrilor poate s nu conduc la o mbuntire a performanelor Tabelul 1.1 Motivul de cel mai impotant care a adus notorietatea actual a sitemelor neurofuzzy l constituie capacitatea de nvare. O astfel de combinaie ar trebuie s fie capabil s nvee reguli i/sau funcii de apartenen, sau s le optimizeze pe cele existente. nvarea n acest caz presupune crearea unei baze de reguli sau funcii de apartenen pe baza setului de date de antrenare. Pentru crearea bazei de reguli este necesar un set iniial de funcii de apartenen. 3

Proiectarea genetic a structurilor neuro-fuzzy cu recuren local

Cu privire la strategiile de obinere a bazei de reguli, se pot considera urmtoarele trei cazuri: a. Sistemul pornete n procesul de antrenare de la o baz de reguli vid i creeaz noi reguli pn la rezolvarea problemei. Crearea unei noi reguli este declanat de un ablon de antrenare pentru care baza curent de reguli nu ofer o reprezentare acoperitoare. Aceast abordare poate conduce la o baz de reguli final voluminoas dac funciile de apartenen date iniial nu sunt alese n mod corespunztor, adic suporturile funciilor de apartene sunt mulimi disjuncte. Situaia prezentat este similar cu o generalizare defectuoas a unei reele neuronale. n funcie de problem, este de asemenea posibil obinerea unei baze de reguli inconsistent, caz n care sistemul va trebuie probabil s tearg o serie de reguli. b. O a doua abordare presupune pornirea de la o baz de reguli complet, care conine toate regulile ce pot fi create prin partiionarea variabilelor, iar prin antrenare se vor terge regulile necorespunztoare. Pentru acest lucru este necesar evaluarea performanelor individuale a fiecrei reguli; procedura de evaluare conine i un test de consisten a bazei de reguli, fiind astfel evitate cele inconsistente. Pot aprea probleme de complexitate a algoritmilor folosii n cazul sistemelor cu numr mare de parametri. Este posibil de asemenea obinerea unei baze de reguli insuficient acoperitoare (numrul de reguli este mai mic dect cel necesar). c. A treia situaie presupune pornirea de la o baz de reguli iniial (eventual aleas la ntmplare) cu un numr fix de reguli. Procesul de nvare implic n acest caz nlocuirea unor reguli din baza curent cu pastrarea dimensiunii iniiale. i n acest caz este necesar o procedur de verificare a consistenei bazei de reguli. Adiional, mai sunt necesare o schema de evaluare a regulilor ce vor fi terse precum i o procedur de analiz a datelor pentru extragerea de noi reguli, caz n care nvarea este echivalent cu o procedur de cutare stohastic. Dac pe parcursul antrenrii apare o degradare a performanelor, procedura de nlocuire a regulilor poate fi anulat. Principalul dezavantaj al acestui procedeu l reprezint numarul fix de reguli. Optimizarea bazei de reguli corespunde nvrii sale pariale de ctre sistem. Unele situaii presupun pornirea de la un set de reguli, iar pe parcusul nvrii se descoper unele noi care vor fi adugate sau se terg regulile ce nu satisfac un anumit criteriu de evaluare. n acest sens, cea de-a treia abordare prezentat pentru stabilirea bazei de reguli poate fi considerat un astfel de proces de optimizare. nvarea sau optimizarea funciilor de apartenen prezint un grad de complexitate mai sczut dect n cazul adaptrii bazei de reguli. Funciile de apartenen sunt descrise uor prin intermediul parametrilor care pot fi supui unui proces de optimizare cu referire la o msur a erorii globale. Optimizarea poate fi nsoit de restricii izvorte din impunerea unor condiii cum ar fi gradul de suprapunere a suporturilor funciilor de apartenen.

4

Proiectarea genetic a structurilor neuro-fuzzy cu recuren local

Practica de-a lungul timpului a condus la cristalizarea urmtoarelor dou abordri n optimizarea funciilor de apartenen: a. Parametrii ce descriu funciile de apartenen sunt optimizai printr-un proces de nvare; b. Valorile funciilor de apartenen sunt generate de o reea neuronal special antrenat n acest scop, printr-un proce de clasificare. Principalul dezavantaj al acestei metode este faptul c nu se cunoate expresia analitic a funciei de apartenen, din acest motiv, de cele mai multe ori se prefer prima metod. Cu privire la sinteza din tabelul 1.1, un sistem neuro-fuzzy beneficiaz att de avantajele reelelor neuronale ct i de cele ale sistemelor fuzzy. Din perspectiva sistemelor fuzzy, marele ctig este adus de capacitatea de nvare. n ceea ce privete reelele neuronale, integrarea cunotinelor apriori prin stabilirea unor reguli i funcii de apartenen care s iniializeze sistemul poate conduce la o scurtare semnificativ a procesului de nvare. Deoarece un sistem neuro-fuzzy este bazat pe un set de reguli lingvistice, caracterul de black box al reelelor neuronale dispare, iar rezultatul nvrii poate fi uor interpretat n sensul sistemelor fuzzy convenionale. Arhitectura unui model neuro-fuzzy este determinat de obicei de setul de reguli i de mulimile fuzzy corespunzatoare problemei, caz n care nu mai trebuie specificai parametrii reelei (de exemplu, numrul de straturi ascunse). Combinarea acestor dou tipuri de sistem nu aduce ns i garania unui succes n urma procesului de nvare (antrenarea reelelor neuronale sau ajustarea parametrilor siustemului fuzzy), acesta fiind principalul dezavantaj motenit de la structurile individuale. n concluzie, scopul combinrii sistemelor fuzzy cu reelele neuronale este gsirea parametrilor pentru un sistem fuzzy prin metodele de nvare specifice reelelor neuronale.

1.3

Proprietile sistemelor neuro-fuzzy

O metod des utilizat n aplicarea algoritmilor de nvare sistemelor fuzzy este reprezentarea acestora sub forma unei reele neuronale, dup care se aplic unul din algoritmii de nvare specifici (de exemplu backpropagation). Problema care apare la aceast metod o reprezint funciile folosite pentru realizarea infereei fuzzy care, n general, nu sunt difereniabile, fapt important innd cont c majoritatea algoritmilor de antrenare pentru reelele neuronale sunt de tip gradient. Pentru soluionarea acestui aspect exist dou posibiliti: Se nlocuiesc funciile utilizate n sistemele fuzzy (cum ar fi min i max) cu funcii difereniabile; Se evit folosirea metodelor de antrenare de tip gradient; Prima soluie conduce uneori la sisteme a cror interpretare este mai dificil de realizat.

5

Proiectarea genetic a structurilor neuro-fuzzy cu recuren local

Sistemele neuro-fuzzy moderne sunt deseori modelate cu ajutorul reelelor neuronale multistart feedforward. Din aceast categorie de modele putem meniona: ANFIS (Adaptive-Network-based Fuzzy Inference System) modeleaz un sistem fuzzy de tip Sugeno cu o reea neuronal feedforward avnd 5 straturi; GARIC (Generalized Approximate Reasoning-based Intelligent Control) implementeaz un controller fuzzy utiliznd o serie de reele neuronale feedforward specializate;

Exist i alte tipuri de modele care se folosesc de alte principii, printre care memoriile fuzzy asociative, hri cu auto-organizarea elementelor ce o compun ( transform o intrare de dimensiune arbitrar ntr-o hart uni sau bidimensional n conformitate cu unele constrngeri topologice), modele care presupun aplicarea procedurilor de nvare parametrilor unui sistem fuzzy sau utlizarea unei reele neuronale pentru determinarea acestora. Pentru o caracterizare global a sistemelor neuro-fuzzy se definesc urmtoarele proprieti: a. Un sistem neuro-fuzzy este un sistem fuzzy antrenat de obicei cu un algoritm derivat din teoria reelelor neuronale, procedura de nvare acionnd local i fiind pilotat de datele de antrenare; b. Un sistem neuro-fuzzy este ntotdeauna interpretabil asemeni unui sistem de reguli fuzzy. Crearea sistemului neuro-fuzzy se poate face att printr-un poces de nvare bazat pe datele de antrenare ct i pornind de la o iniializare sub form de reguli fuzzy; c. Procedura de nvare aplicat unui sistem neuro-fuzzy ia n considerare proprietile semantice ale componentei fuzzy cee ce poate conduce la o serie de constrngeri in modificarea parametrilor; d. Un sistem neuro-fuzzy aproximeaz o funcie necunoscut, n-dimensional caracterizat parial de setul de antrenare. Regulile fuzzy pot fi vazute ca abloane pentru datele de antrenare; e. Un sistem neuro-fuzzy nu trebuie considerat drept un sistem expert; f. Un sistem neuro-fuzzy poate fi privit, dar nu n mod exclusiv, ca o reea neuronal feedforwrd cu trei straturi la care funciile de activare sunt nlocuite de t-norme i tconorme. Primul strat este reprezentat de variabilele de intrare, stratul de mijloc reprezint regulile fuzzy, iar stratul de ieire este constituit din variabilele de ieire. Ponderile conexiunilor interne reprezint cantiti fuzzy constituind astfel setul de mulimi fuzzy caracteristice sistemului. O astfel de reprezentare a unui sistem neuro-fuzzy ilustreaz natura paralel a fluxului informaional;

6

Proiectarea genetic a structurilor neuro-fuzzy cu recuren local

1.4

Tipuri de sisteme neuro-fuzzy

n general, se disting dou categorii de combinaii ntre reele neuronale i sisteme fuzzy cu scopul optimizrii acestora din urm. Prima categorie presupune funcionarea independent a celor dou sisteme, legtura dintre ele constnd n determinarea anumitor paramaetri ai sistemului fuzzy prin intermediul reelei neuronale. Aceast cooperare poate avea loc att n timpul funcionrii sistemului fuzzy (online) ct i offline, prin scoaterea acestuia din ciclul de funcionare normal si trecerea pe un regim de funcionare dedicat optimizrii. Datorit acestor proprieti, aceste sisteme mai sunt denumite i sisteme neuro-fuzzy cooperante (eng. Cooperative neuro-fuzzy systems). O a doua categorie de combinaii se caracterizeaz printr-o arhitectur omogen, similar cu cea a unei reele neuronale. Aceast structur rezult fie din interpretarea sistemului fuzzy ca o reea neuronal special, fie din implementarea direct sub form de reea neuronal, rezultnd astfel sistemele neuro-fuzzy hibride.

1.4.1 Sisteme neuro-fuzzy cooperanten continuare vor fi prezentate cteva exemple de sisteme neuro-fuzzy cooperante.Reguli fuzzy Date de antrenare Mulimi fuzzy Sistem fuzzy Date de antrenare Reguli fuzzy Sistem fuzzy Mulimi fuzzy

(a)

(b)

Pondere regul Sistem fuzzy Sistem fuzzy

Determinarea erorii

Determinarea erorii

(c) Figura 1.1 7

(d)

Proiectarea genetic a structurilor neuro-fuzzy cu recuren local

a) Reeaua neuronal determin funciile de apartenen pe baza datelor de antrenare fie prin determinarea parametrilor corespunztori fie prin aproximarea funciilor cu ajutorul unei reele neuronale. Mulimile fuzzy rezultate mpreun cu regulile fuzzy specificate conduc la implementarea sistemului fuzzy. Datele de antrenare trebuie sa precizeze grade de apartenen n funcie de intrri. b) n acest caz, reeaua neuronal determin reguli fuzzy pe baza datelor de antrenare folosind unui algoritm de clusterare. Determinarea regulilor se face offline, nainte de implementarea sistemului fuzzy, urmnd ca mpreun cu funciile de apartenen stabilite s se treac la implementarea acestuia. Se poate preciza c n locul reelei neuronale se poate folosi un algoritm de clusterare fuzzy. c) Aceast structur permite nvarea online a parametrilor n condiiile unui set de reguli i funcii de apartenen iniiale precizate. De asemenea se folosete o masur a erorii care ghideaz procesul de nvare. De obicei, n implementrile curente, nu exist o reea neuronal propriu-zis ci doar un algoritm de nvare specific (de exemplu backpropagation) d) Structura este asemantoare cu cea de la cazul (c) doar c reeau neuronal (sau doar un algoritm de antrenare specific) este folosit pentru determinarea valorilor de ponderare a regulilor, parametru ce poate fi interpretat drept gradul de influen a regulii. Trebuie precizat c astfel de parametri pot ngreuna interpretarea funcionrii sistemului fuzzy. Valorile de ponderare pot fi eliminate prin modificarea corespunztoare a funciilor de apartenen, caz n care se pierde interpretarea iniial a mulimilor fuzzy. De asemenea, existena acestor parametri suplimentari pot conduce la reprezentri redundante ale valorilor lingvistice

1.4.2 Sisteme neuro-fuzzy hibrideUn exemplu de sistem hibrid este reprezentat n figura urmtoare:Mrime de comandImbuntiri externe

eroare

STHEN

IF Controller neuro-fuzzy hibrid Starea sistemului

Figura 1.2 8

Proiectarea genetic a structurilor neuro-fuzzy cu recuren local

Un sistem neuro-fuzzy hibrid ca cel prezentat sub forma unui controler (regulator neuro-fuzzy) n figura 1.2, poate fi antrenat online sau offline. O astfel de abordare, presupune interpretarea bazei de reguli a unui sistem fuzzy n termenii unei reele neuronale. Astfel, mulimile fuzzy reprezint ponderile reelei, variabilele de intrare i cele de ieire, iar regulile reprezint neuronii. n acest fel, sistemul fuzzy poate fi vzut ca un caz special de reea neuronal. Algoritmul de antrenare modific att structura i / sau parametrii prin adugarea sau tergera de neuroni ct i ponderile reelei.

1.4.3 Modelul ANFISUnul din modelele de sisteme neuro-fuzzy hibride des utilizate a fost propus Jang. Modelul ANFIS (Adaptive-Network-based Fuzzy Inference System) a fost aplicat cu succes la modelarea funciilor neliniare, la identificarea on-line a componentelor neliniare ntrun sistem de control i la predicia seriilor de timp haotice. Pentru antrenarea ANFIS s-a folosit un algoritm hibrid care a mixat algoritmul BP (Back-Propagation) cu algoritmul recursiv al celor mai mici patrate (RLS). Ulterior, ANFIS a fost extins la ANFIS-generalizat [Azeem, 2000]. Structura unui astfel de model este prezentat n cele ce urmeaz:

X1

N

N

X2

N

y N

N

Figura 1.3

9

Proiectarea genetic a structurilor neuro-fuzzy cu recuren local

Dup cum s-a precizat ntr-un pararagraf anterior, ANFIS modeleaz un sistem fuzzy de tip Sugeno bazat pe o arhitectur de reea neuronal feedforward cu cinci straturi, regulile implementate fiind de forma: Dac x1 este A(1)j1 i ........i xn este A(n)jn atunci y = (r)0+ (r)1 x1+...+ (r)n xn

Fiecare element din primul start conine trei parametri pentru definirea unei funcii de apartenen de tip clopot. Ieirea unui astfel de bloc reprezint gradul de apartenen al intrrii. Fiecare regul a sistemului fuzzy modelat este coninut ntr-un bloc din cel deal doilea strat. Intrrile unui astfel de bloc reprezint gradele de apartenen calculate anterior. Aceste valori sunt inmulite obinndu-se astfel gradul de ndeplinire al regulii. Cel de-al treilea strat calculeaza gradul relativ de ndeplinire a regulii din stratul precedent pe baza informaiilor primite de la toate celelalte noduri anterioare Cel de-al patrulea start calculeaz ieirea regulii de pe nivelul curent sub forma unei sume ponderate conform definiiei anterioare. n sfrit, ultimul strat este responsabil de calcularea ieirii sistemului prin sumarea tuturor ieirilor din stratul precedent. Deoarece modelul ANFIS utilizeaz doar funcii difereniabile, implementarea algoritmilor standard din teoria reelelor neuronale este imediat. n acest caz este utlizat un algoritm ce combin o metod de gradient (backpropagation) cu metoda celor mai mici ptrate: backpropagation este utilizat pentru antrenarea funciilor de apartenen, iar metoda celor mai mici ptrate se utilizeaz pentru calcularea coeficinilor de ponderare. Antrenarea unei asemenea structuri se desfoar n dou etape: a) Se aplic la intrare un set de valori x, parametrii funciilor de apartenen se consider fixai, modificndu-se doar ponderile prin metoda celor mai mici ptrate; b) Cea de-a doua etap presupune prezentarea aceluiai set de valori x modificndu-se parametrii funciilor de apartenen n condiiile meninerii la valori constante ale ponderilor calculate la pasul anterior;

1.4.4 Sisteme neuro-fuzzy recurenteDei n domeniul sistemelor neuro-fuzzy s-au realizat numeroase cercetri, variantele recurente de arhitecturi sunt studiate rar, cu toate c - foarte probabil - prima lucrare despre sisteme fuzzy recurente a fost publicat n 1994 [Gorrini]. O contribuie important are i lucrarea [Teodorescu 1994]. n contrast cu arhitecturile simple feed-forward, care au comportament intrareieire static, modelele recurente sunt capabile de stocare a informaiei din trecut (e. g. stri

10

Proiectarea genetic a structurilor neuro-fuzzy cu recuren local

anterioare ale sistemului) i sunt astfel mult mai potrivite pentru studierea sistemelor dinamice. Pentru reelele neuronale au fost propuse numeroase variante n care se folosesc arhitecturi ce implic structuri recurente. Pentru reele feed-forward, reelele neuro-fuzzy au urmtoarele avantaje fa de o reea neuronal: vitez de nvare crescut, acuratee ridicat a nvrii, fiecare nod i pondere are semnificaie corespunztoare. O structur de reea recurent bazat pe o reea neuro-fuzzy poate fi o bun alegere [C. F Juang], prin mbinarea avantajelor reelelor recurente i a sistemelor neurofuzzy. Recent, civa autori au propus concepte legate de ncorporare a recurenei n reele neuro-fuzzy. O categorie de autori se concentreaz pe includerea de recurene externe. Conceptul de reea fuzzy recurent este considerat a fi introdus n [Gorrini]. Aceast reea cuprinde cteva modele Sugeno, cu ieiri crisp, conectate prin variabile i bucle feed-back interne.

11

Proiectarea genetic a structurilor neuro-fuzzy cu recuren local

Capitolul 2 Model de predictor neuro-fuzzy

2.1

Aspecte teoretice n predicia seriilor de timp

Ineria este o caracteristica intrinseca a proceselor din natura. n consecina, observarea modului n care un proces s-a manifestat n ultimul timp ar putea permite stabilirea unei legiti de evoluie a acestuia. n acest sens, prin prelucrarea adecvata a semnalelor de ieire recepionate se pot regsi unele regulariti ale mecanismului generator de date [Ganciu]. Semnalele dintr-un proces sunt prin nsi natura lor continue n timp, deci admit o reprezentare sub forma unei serii de timp O serie de timp const dintr-un set de observaii obinute secvenial n timp [Liao, 2002]. O alt definiie [Ganciu]: O secven de date de observaii, n mod obinuit ordonat n timp, este denumit serie de timp, serie dinamic, serie cronologic sau cronic, dei variabila timp poate fi nlocuita prin alte variabile, ca de exemplu spaiul. Observaiile dintr-o serie de timp pot fi ordonate pe o scar a timpului fizic, (e.g., ore, zile), o scar de timp de afaceri (e.g., tranzacii), sau alte scri definite de utilizator. Dac o serie de timp poate fi prezis exact, atunci este denumit ca fiind determinist. n mod obinuit, seriile de timp din practic sunt procese stochastice, datorit existenei observaiilor afectate de zgomote, ale cror caracteristici se pot schimba n timp. n consecin, observaia viitoare a unei serii de timp este determinat numai parial de valorile observaiilor trecute i are o probabilitate de distribuie condiionat de observaiile trecute i de alte cunotine apriorice. Scopul prediciei seriilor de timp este de a modela mecanismul care st la baza generrii seriei de timp, astfel nct valorile viitoare pe termen scurt sau mediu s fie prezise [Liao, 2002]. Metodologia statistic care se ocupa cu analiza i prelucrarea numerica a unor astfel de secvene de date se numete analiza seriilor de timp sau analiza seriilor dinamice. Caracteristica esenial a acestei abordri, care o difereniaz de alte analize statistice, const n recunoaterea explicit a importanei ordinii de apariie a observaiilor [Ganciu].

12

Proiectarea genetic a structurilor neuro-fuzzy cu recuren local

2.1.1 Clasificarea seriilor de timpAspectele eseniale ce caracterizeaz o serie de timp conduc la alegerea unui criteriu sau set de criterii de clasificare a acestora. n continuare se vor delimita cteva clase de serii de timp determinate de criterii consacrate. 1. Dup continuitatea n timp a operaiei de msurare [Ganciu] Dac n cazul unei serii de timp este posibila msurarea valorilor acestora la orice moment de timp, o astfel de serie este denumita serie de timp continua (de exemplu, temperatura sau presiunea, msurate continuu ntr-un proces tehnologic). Totui, majoritatea seriilor de timp din practica conin observaii efectuate asupra unor variabile msurate la momente de timp predeterminate, separate prin intervale de timp egale, care pot fi, de exemplu, secunde, minute, ore, zile, luni, ani. Astfel de secvene sunt referite drept serii de timp discrete i pot fi obinute n diferite moduri. Chiar daca seria de timp originala, care se analizeaz, este continua, aceasta poate fi transformata ntr-una discreta, prin msurarea valorilor seriei la intervale egale de timp. O serie de timp discreta, obinuta n acest mod, este denumita serie de timp eantionat. Un alt tip de serie de timp care apare frecvent n practica este acela n care variabila de interes nu poate fi msurata continuu, fiind posibila numai msurarea valorilor cumulate (integrate) ale acesteia, dup anumite intervale de timp egale. Astfel de serii de timp sunt referite drept serii de timp cumulate sau serii de timp integrate (de exemplu, cantitatea de precipitaii msurata zilnic ntr-o staie). 2. Dup numrul variabilelor [Ganciu] O serie de timp constnd numai dintr-o singura variabila este denumita monovariabil, n timp ce o serie de timp care include evoluia mai multor variabile, n conexiunea lor, reprezint o serie de timp multivariabil. 3. Din punct de vedere al liniaritii O serie de timp poate fi liniar sau neliniar [Liao, 2002]. La testarea neliniaritii se pot utiliza coeficientul Hurst, exponentul Lyapunov sau dimensiunea de corelaie [Peter, 2002]. 4. Din punct de vedere al staionaritii o serie de timp. Dac distribuia de probabilitate cumulat a {s ( t1 ) , s ( t2 ) , , s ( tn )} este O serie de timp poate fi staionar sau nestaionar [Liao, 2002]. Fie s ( t )

aceeai cu distribuia de probabilitate cumulat a {s ( t1 + ) , s ( t2 + ) , , s ( tn + )} pentru

13

Proiectarea genetic a structurilor neuro-fuzzy cu recuren local

toi t1 , , tn , i , atunci seria de timp s ( t ) este strict staionar. n practic este dificil s

se obin toate momentele distribuia de probabilitate cumulate. n mod obinuit, o serie de timp este denumit staionar, dac media este independent de timp i dac autocovariana depinde numai de ntrzieri. Seriile de timp sunt frecvent nestaionare. Exist patru situaii majore care dau motive de nestaionaritate pentru serii de timp: tranzienii (transients), tendinele (trends), discontinuiti i echilibre multiple (multiple equilibria). Unele serii nestaionare pot fi aduse la serii staionare prin transformri potrivite, cum ar fi prin difereniere. La alte serii de timp, pentru modelare sunt necesare modele adaptive variante n timp. O metod practic de modelare a seriilor de timp nestaionare const n folosirea unei combinaii de ferestre alunectoare de antrenare i modele ne-adaptive, unde modelele sunt re-antrenate folosind date noi, din moment ce se nregistreaz modificri n dinamica mecanismului de generare de date. Ct de frecvent sunt necesare re-antrenrilor depinde de viteza schimbrilor n dinamica mecanismului de generare a datelor. Analiza seriilor de timp se poate realiza fie n domeniul timp (e.g., autocorelaie), fie n domeniul frecven (e.g., analiz spectral). Exist dou metode de baz pentru predicia seriilor de timp: metoda monovariabil, unde predicia unei serii de timp se bazeaz pe un model ajustat numai pe baza observaiilor trecute ale seriei, i metoda multi-variabil sau cauz-efect, unde predicia depinde, cel puin parial, i de alte serii de timp despre care se tie c este cauza comportamentului seriei prezise.

2.1.2 Strategii de predicie1. Seturile de date de antrenare i de test

n general, la problemele de predicie, datele disponibile sunt mprite n trei seturi: Setul de date de antrenare - este folosit la antrenarea sistemului de predicie; dimensiunea setului de antrenare se variaz n experimente diferite, astfel nct s se obin mrimea optim. Setul de date de validare - folosit la monitorizarea antrenrii, e.g, pentru a decide dac sistemul de predicie a supranvat setul de antrenare. Setul de test - folosit numai la final pentru a testa adevrata performan a sistemului antrenat.2. Msuri pentru eroarea de predicie

Dat fiind o serie de timp x1 , x2 , xn , deviaia standardxsd = 1 n 2 (xi xmean ) n 1 i =1 (2.1)

14

Proiectarea genetic a structurilor neuro-fuzzy cu recuren local

este n mod esenial "eroare de predicie" dac media seriei de timp xmean este folosit ntotdeauna ca predicie. Dac seria este aleatoare, media este cea mai bun estimare a valorii prezise.

n [Zhang], pentru o serie de predicii 1 , 2 , n , se folosete eroarea de x x x predicie definit astfel:

Error =

error x , unde error = x xsd

1 n 2 x (xi i ) n 1 i =1

(2.2)

Raportul folosit pentru a msura calitatea prediciei arat mbuntirea adus fa de simpla predicie a mediei seriei.3. Mrimea ferestrei i a ntrzierilor de eantionare

Dat fiind o serie de timp xt , xt 1 , xt i , , astfel nct s se prezic xt+n, trebuie decis cte eantioane din datele anterioare sunt necesare, ceea ce se numete n [Zhang], mrimea ferestrei. De asemenea, trebuie decis cum se eantioneaz valorile trecute. O eantionare cu ntrziere constant este: xt , xt k , xt 2 k , xt ik , , unde k este denumit ntrziere de eantionare [Zhang]. Ambii parametri se determin experimental.4. Abordri pentru predicia multipas

Exist mai multe ci de urmat, atunci cnd se face predicie cu mai muli pai. Una din ci este s se prezic direct xt+n, din datele eantionate, prin construirea unei funcii Fn astfel nct predicia lui xt + n s fie: t + n = Fn ( xt , xt k , xt 2 k , xt ik ,) x t +1 = F1 ( xt , xt K , xt 2 K , xt NK ) x (2.3)

Alternativ, se poate construi o funcie F1 care s fac mai nti predicie cu un pas, xt +1 : (2.4)

apoi se folosete xt +1 ca i cum ar fi cunoscut, i se aplic funcia F1 iterativ, de n ori, pentru a prezice xt + n .O alt cale este s se porneasc cu F1, dar atunci cnd se avanseaz cu un pas, s se re-antreneze F1, obinndu-se o nou funcie F2:

t +1 = F1 ( xt , xt k , xt 2 k , xt ik ) x

(2.5)

t + 2 = F1 ( t +1 , xt k +1 , xt 2 k +1 , xt ik +1 ) (2.6) x x

15

Proiectarea genetic a structurilor neuro-fuzzy cu recuren local

2.2

Sisteme neuro-fuzzy pentru predicia seriilor de timp

2.2.1 Neuroni fuzzy elementariCel mai simplu sistem neuro-fuzzy este aa-numitul neuron-fuzzy. Este un neuron care realizeaz o operaie asociat cu o funcie a logicii fuzzy, de exemplu una dintre operaiile logice sau negaia. Orice alt tip de funcie poate fi folosit pentru f ( ) . De exemplu, criteriul "nvingtorul ia totul" este modelat de neuron ca MAX.

y = f ( x1 , x2 , , xn ) = MAX ( x1 , x2 , , xn )

(2.7)

Se poate folosi funcia complementar MIN (interpretat ca "rataii" n probleme de modelare). Astfel de neuroni sunt numii neuroni fuzzy deoarece implementeaz operaiile logicii fuzzy - funciile MIN, MAX. In figura urmtoare sunt date reprezentrile obinuite pentru neuronii fuzzy. x1 x2 xn w2 wny = MAX ( x1 , x2 , , xn )

w1 y

x1 x2 xn w2

w1 wny = MIN ( x1 , x2 , , xn )

y

Fig 2.1. Neuroni fuzzy pentru operaii logice Exist i alte interpretri pentru operaiile logicii fuzzy. Neuronul MAX este echivalent cu neuronul liniar n sensul c realizeaz "suma logic" (reprezentat de operaia MAX) asupra componentelor de intrare. Neuronul MIN are aceeai complexitate dar realizeaz operaia complementar. Un neuron fuzzy mai complex se obine de adevratul corespondent fuzzy al neuronului neliniar, de exemplu prin adugarea unui bloc cu o funcie neliniar dup blocul de sumare logic. Acest bloc poate fi realizat i cu un sistem fuzzy cu o singur intrare i o singur ieire.

16

Proiectarea genetic a structurilor neuro-fuzzy cu recuren local

2.2.2 Neuroni cu ponderi fuzzyO alt cale de fuzzificare a modelului neuronal este utilizarea ponderilor fuzzy n locul celor numerice (crisp). Ponderile fuzzy sunt interpretate ca funcii de apartenen. n acest model de neuron-fuzzy, conexiunile sinaptice liniare sunt nlocuite cu neliniariti caracterizate de funcii de apartenen etichetate ca "strns conectat" sau "slab conectat". Conexiunile excitatorii sau inhibitorii sunt reprezentate de intersecia logic fuzzy i, respectiv, de complementarea logic fuzzy urmat de intersecia logic fuzzy.

a. Includerea ponderilor fuzzy ntr-un model convenional de neuronFie modelul neuronal din Figura 1, unde x1 , x2 , , xn - reprezint intrrile, w1 , w2 , , wn - ponderile, - pragul, y -ieirea. Factorii de ponderare pozitivi au rol excitator, iar cei negativi au rol inhibitor. Modelul are un singur parametru (ponderea corespunztoare wi ) pentru fiecare jonciune sinaptic i o singur funcie neliniar f . Datorit simplitii structurii, la ndeplinirea sarcinilor sofisticate, devin necesare arhitecturi complicate. Pentru obinerea unui model neuronal mai puternic, neuronul clasic este modificat prin asignarea unei funcii de apartenen la fiecare sinaps, dar mai ales permind intrrilor i ieirilor s fie funcii de apartenen. Un exemplu de astfel de neuron este neuronul Yamakawa, care va fi prezentat n paragraful urmtor. O trecere n revist a principalelor tipuri de neuroni fuzzy se gsete n cartea lui Fuller, [Fuller, 1995], din care se prezint un extras n Anexa 2. b. Fuzzificarea direct a RN convenionale Metoda const n extinderea (generalizarea) la numere fuzzy a ponderilor de interconectare si/sau a intrrilor si/sau a ieirilor dorite.

Retea neuronala fuzzy Tip1 Tip 2 Tip 3 Tip 4 Tip 5 Tip 6 Tip 7

Ponderi Crisp Crisp Fuzzy Fuzzy Crisp Fuzzy Fuzzy

Intrari Fuzzy Fuzzy Fuzzy Crisp Crisp Crisp Fuzzy

Iesiri Crisp Fuzzy Fuzzy Fuzzy Fuzzy Crisp Crisp

Tabelul 2.1 - Fuzzificarea direct a reelelor neuronale

17

Proiectarea genetic a structurilor neuro-fuzzy cu recuren local

Reelele neuronale fuzzy de tip 1 s-au folosit n probleme de clasificare a vectorilor de intrare fuzzy n clase crisp. Reelele de tip 2, 3 i 4 s-au folosit la implementarea regulilor fuzzy IF-THEN. Dupa [Fuller, 1995], ultimele trei tipuri din Tabelul 1 sunt nerealizabile (nerealistice). La tipul 5 ieirea este ntotdeauna o valoare crisp deoarece att intrrile ct i ponderile sunt valori crisp. La tipurile 6,7 nu mai este necesar fuzzificarea ponderilor deoarece ieirile dorite sunt de tip crisp.

2.2.3 Modelul neuronal YamakawaLa modelul Yamakawa operaia sinaptic este modelat o funcie neliniar iar operaia somatic este una de sumare algebric. Neuronul Yamakawa se obine dintr-un combinator liniar la care ponderile ai sunt nlocuite cu funciile neliniare fi implementate prin sisteme fuzzy Sugeno cu o singur intrare i o singur ieire. S-a renunat la termenul deplasament a0 . Ieirea neuronului este dat de relaia:N

y = f1 ( x1 ) + f 2 ( x2 ) + + f N ( xN ) = fi ( xi ).i =1

(2.8)

unde xi - componentele vectorului de intrare x m .

x1 x2 x3 xN-1 xN

a1 a1 2 a3 aN-1 aN

a0

+

y

Figura 2.2 Topologia unui combinator liniar

18

Proiectarea genetic a structurilor neuro-fuzzy cu recuren local

x1 x2 x3 xN-1 xN

f1 f2 f3 fN-1 fN

+

y

Figura 2.3 Modelul neuro-fuzzy Yamakawa Structura sinapsei neliniare a neuronului Yamakawa este descris n figura urmtoare:f1 f2 xi f3 fM-1 fM w1 w2 w3 wM-1 wM

+

fi(xi)

Figura 2.4 Sinapsa neliniar a neuronului Yamakawa Funcia sinaptic f i ( xi ) este dat de relaia:

fi ( xi ) =

(x )wj =1 ij i

M

ij

ij ( xi )j =1

M

.

(2.9)

unde ij este funcia de apartenen # j a sistemului Sugeno #i .

wij reprezint ponderea variabil # j a sistemului Sugeno # i .

M - numrul funciilor de apartenen.

19

Proiectarea genetic a structurilor neuro-fuzzy cu recuren local

2.3

Predictor neuro-fuzzy cu filtre ARMA

Structura considerat n continuare are la baz topologia modelului neuronal Yamakawa prezentat anterior si este ilustrata in figura urmtoare:

Xn ARMA SFS ARMA

11Xn-1

Xn-m

ARMA

SFS

ARMA

ARMA

ARMA

SFS

ARMA

Figura 2.5.a Predictor neuro-fuzzy cu filtre ARMA i elemente de ntrziere

Xn ARMA SFS ARMA ARMA

Figura 2.5.b Predictor neuro-fuzzy cu filtre ARMA structura general

Elementul reprezint un operator de ntarziere, intrrile predictorului fiind reprezentate de eantioane ntrziate (succesive) ale semnalui Xn. Acest element apare doar n cazul n care se dorete introducerea unor ntrzieri suplimentare celor oferite de filtrele ARMA. Prin urmare, structura general a sistemlui este prezentat n figura 2.5.b Blocurile ARMA reprezint filtre de ordin 2 avnd urmtoare reprezentare:

20

b2 Proiectarea genetic a structurilor neuro-fuzzy cu recuren local

Tb1

T x(k)b0

y(k) Ta1

Ta2

Figura 2.6 Structura filtrului ARMA de ordin 2 Relaia intrare ieire a unui filtru ARMA este dat de urmtoarea relaie: y ( n ) = b j x ( n j ) + ai y ( n i ) ,j =0 i =1 N M

(2.10)

sau b0 + b1q 1 + + bN q N x ( n ) y (n) = a0 + a1q 1 + + aM q M (2.11)

Pentru filtrul de ordin 2 considerat n=2 i a0=1. Prin urmare, filtrul ava fi caracterizat de coeficienii b0, b1, b2, a1, a2, intrarea x i ieirea y. Blocurile SFS reprezint sisteme fuzzy de ordin 0 cu inferen tip Sugeno, avnd o intrare i o ieire fiind caracterizate de parametrii funciilor de apartenen ale intrrii i de valorile singletonilor de ieire. Funciile de apartene considerate sunt de tip gaussian cu centrii uniform distribuii n intervalul [-1;1], iar dispersiile sunt fixate la valorea iniial 0.23. Ecuaia pentru un sistem fuzzy Sugeno:

y ( x) =

h ( x) i =1 i

M

i

hi ( x )i =1

M

, unde

h ( x) = e

( x c )22

(2.12)

21

Proiectarea genetic a structurilor neuro-fuzzy cu recuren local

Deci

y ( x) =

ei =1 M i =1

M

( x ci )2 i2

i(2.13) i2

e

( x ci )2

Cu s-a notat dispersia, ci reprezint centrul funciei de apartenen i iar singletonul de ieire i. Pentru scrierea relaiilor intrare-ieire ce caracterizeaz funcionarea predictorului vom considera figura 2.7 n care s-au notat i semnalele intermediare.

u1(k) u2(k)

ARMA11 ARMA12

x1(k) y1(k) z1(k) SFS 1 ARMA21 z2(k) x2(k) y2(k) SFS 2 ARMA22 v(k) + ARMA s(k)

uP(k)

zP(k) yP(k) xP(k) ARMA1P SFS P ARMA2P 1 1 1 1 b j 0 + bj1 q + b j 2 q 2 u j ( k ) , j = 1, P xj (k ) = 1 + a1j1 q 1 + a1j 2 q 2

(2.14)

y j (k ) =

h ( x ( k )) i =1 ji j

R

ji

h ( x ( k ))i =1 ji j

R

, unde h ji ( x j ( k ) ) = e

( x j ( k ) c ji )2 ji

2

(2.15)

z j (k ) =

b 20 + b21 q 1 + b 22 q 2 j j j

y j ( k ) , 1 + a 21 q 1 + a 22 q 2 j j

j = 1, P

(2.16)

v (k ) = z j (k )j =1

P

(2.17)

b0 + b1q 1 + b2 q 2 v ( k ) s (k ) = 1 + a1q 1 + a2 q 2 n final se obine:

(2.18)

22

Proiectarea genetic a structurilor neuro-fuzzy cu recuren local

s (k ) =

b0 + b1q 1 + b2 q 2 1 + a1q 1 + a2 q 2

2 b1 0 + b11 q 1+ b1 2 q 2 j j j u k c ji 1 1 1 2 j ( ) 1+ a j 1 q + a j 2 q R 2 ji ji P b 2 + b2 q 1 + b 2 q 2 e j 0 2 j1 1 2 j 2 2 i =1 2 b1 0 + b11 q 1+ b1 2 q 2 j =1 1 + a j1 q + a j 2 q j j j u j ( k ) c ji R 1+ a1j1 q 1+ a1j 2 q2 2i j e i =1 (2.19)

Evaluarea performanelor sistemului pe parcursul procesului de antrenare se face n baza erorii medii ptratice dat de:

J ( k , ) =

2 1 d s ( k ) s ( k , ) 2

(2.20)

Iar e ( k , ) = s d ( k ) s ( k , ) (2.22) - reprezint eroarea instantanee.

Unde este vectorul ce conine parametrii sistemului: = a1j1a1j 2b1j 0b1j1b1j 2 ...b1jP cij ij ij ... iP a 21a 22b 20b 21b 22 ...b 2 a1 a2 b0 b1 b2 j j j j j jP

(2.21)

Aplicarea algoritmului backpropagation presupune stabilirea relaiilor de variaie a funciei de cost n raport cu parametrii sistemului. Dup o serie de calcule elementare se ajunge la o dependen de forma:

( k + 1) = ( k )

J ( k , )

= ( k ) + e ( k )

s ( k , )

(2.23)

Relaia rezultat arat ca variaia parametrilor nu mai prezint o variaie explicit de valorile funciei de cost ci de ieirea predictorului. I. Derivatele pentru parametrii filtrului ARMA

s ( k , ) br s ( k , ) ar II.

= =

qr v ( k ) , r = 0, 2 1 + a1q 1 + a2 q 2 q r s ( k ) , r = 1, 2 1 + a1q 1 + a2 q 2

(2.24) (2.25)

Derivatele pentru parametrii filtrelor ARMA 2 b0 + b1 + b2 s (k , ) = 2 1 + a1 q 1 + a 2 q 2 b jr

z j (k ) , r = 0,2; j = 1, P 2 b jr

(2.26)

23

Proiectarea genetic a structurilor neuro-fuzzy cu recuren local

z j (k ) b 2 jr

=

q r y j (k ) 2 1 + a12 q 1 + a 2 q 2

[

]

(2.27)

b0 + b1 + b2 z j (k ) s (k , ) = , r = 1,2; j = 1, P 2 1 + a1 q 1 + a 2 q 2 a 2 a jr jr

(2.28)

z j (k ) a 2 jr

=

q r z j (k ) 2 1 + a12 q 1 + a 2 q 2

[

]

(2.29)

Derivatele pentru parametrii sistemelor fuzzy Sugeno III. Derivatele n raport cu singletonii de ieire, : b0 + b1 + b2 b 2 0 + b 21 + b 2 2 y j (k ) s (k , ) = jr 1 + a1 q 1 + a 2 q 2 1 + a 21 q 1 + a 2 2 q 2 jr

(2.30)

y j (k ) jr

=

e

( x cr )2r2

pR

, r = 1, R; j = 1, P

(2.31)

p = er =1

( x cr )2r2

(2.32)

Derivatele n raport cu centrii funciilor de apartenen de intrare, c: b0 + b1 + b2 b 2 0 + b 21 + b 2 2 y j (k ) s (k , ) = c jr 1 + a1 q 1 + a 2 q 2 1 + a 21 q 1 + a 2 2 q 2 c jr

(2.33)

y j (k ) c jr

=

jr p qp2

e

( x cr )2r2

2(x c j )

2 j r2

, r = 1, R; j = 1, P

(2.34)

q = er =1

R

( x cr )2

r

(2.35)

Derivatele n raport cu dispersiile funciilor de apartenen de intrare, :

b0 + b1 + b2 s (k , ) = jr 1 + a1 q 1 + a 2 q 2

b 2 0 + b 21 + b 2 2 2 1 2 2 1 + a 1 q + a 2 q

y j (k ) jr

(2.36)

24

Proiectarea genetic a structurilor neuro-fuzzy cu recuren local( x cr )2r2

y j (k ) jr

=

jr p qp2

e

2(x c j )

3 j

, r = 1, R; j = 1, P

(2.37)

IV.

Derivatele pentru parametrii filtrelor ARMA 1

b0 + b1 + b2 b 2 0 + b 21 + b 2 2 s (k , ) = jr 1 + a1 q 1 + a 2 q 2 1 + a 21 q 1 + a 2 2 q 2 2(x j c jr ) e 2R

y j (k ) x j (k ) 1 x j a jr (x j c jr )22 jr

(2.38)

(x j c jr )22 jr

y j (k ) x j

=

r =1

jr

2(x j c jr ) jr q eR r =1

jr

p2 = = q r u j (k ) , r = 0,2; j = 1, P 1 1 + a1 q 1 + a 1 q 2 2

(2.39)

x j (k ) b1 jr x j (k ) a 1jr

[ [

] ]

(2.40) (2.41)

q r u j (k ) , r = 1,2; j = 1, P 1 1 + a1 q 1 + a 1 q 2 2

2.4

Concluzii asupra structurii i topologiei

Structura propus pentru rezolvarea problemei prediciei seriilor de timp face parte din categoria sistemelor neuro-fuzzy recurente care se preteaz mai bine la modelarea i / sau studiul sistemelor dinamice. Predictorul cu filtre ARMA beneficiaz de un mecanism de recuren local asigurat chiar de filtrele ARMA care ofer prin nsi natura lor o relaie intrareieire recursiv.

25

Proiectarea genetic a structurilor neuro-fuzzy cu recuren local

Capitolul 3 Implementarea predictorului neurofuzzy cu filtre ARMACa mediu de programare pentru implementarea structurii descrise n Capitolul 2 s-a preferat cel oferit de MATLAB datorit setului de funcii i instruciuni organizate in toolbox-uri dedicate lucrului cu sisteme fuzzy i diverse tipuri de filtre (inclusiv cele ARMA), precum i a tipurilor de date structurate (tablouri cu elemente omogene si neomogene, structuri) care au facilitat proiectarea modular a elementelor componenete, oferind n acelai timp si o flexibilitate ridicat (parametri precum numrul de eantioane ntrziate ale intrrii si implicit numarul de filtre si sisteme fuzzy de pe un nivel poate fi definit de utilizator, n acelai timp se pot implementa structuri mai simple - de exemplu eliminarea unor blocuri cu filtre ARMA sau mai complexe prin adugarea de noi blocuri de sisteme fuzzy sau filtre).

3.1

Arhitectura logic a sistemului implementat

Sistemul implementat are un caracter compact dat de organizarea sub forma unei structuri, tip de date structurat oferit de mediul MATLAB. Funciile aferente pot fi mprite n 3 categorii: a. Funcii de creare b. Funcii de antrenare i evaluare c. Funcii de modificare

3.1.1 Funcii de creareDin aceast categorie fac parte funciile destinate crerii unei structuri de tip system neuro-fuzzy. Pentru aceasta este implementat o metod de nivel nalt care definite arhitectura general prin intermediul paramerilor. Se pot stabili astfel numarul i tipul blocurilor ce o compun, metoda i pametrii algoritmului de antrenare ce va fi aplicat fiecrui bloc precum si date informative cum ar fi numele atribuit n mod unic fiecrui bloc. Pentru o mai bun ilustrare, n figura 3.1 este prezentat o schem a unui system neuro-fuzzy:

26

Proiectarea genetic a structurilor neuro-fuzzy cu recuren local ARMA ARMA ARMA ARMA ARMA ARMA ARMA

SFS 1 SFS 2 SFS 3 SFS 4 SFS 5 SFS 6 SFS P

ARMA ARMA ARMA ARMA ARMA ARMA ARMA

ARMA

Bloc ARMA

Bloc SFS

Bloc ARMA Figura 3.1

Bloc SUM

Bloc ARMA

Dup definirea arhitecturii generale, se apeleaz funcii de creare specifice pentru fiecare bloc n parte care vor conine parametrii de funcionare. Astfel blocurile de tip ARMA vor conine coeficienii unui filtru ARMA de ordin 2, iar pentru sistemele fuzzy se rein valorile centrilor si variaiilor funciilor de apartene, alturi de valorile singletonilor de ieire. La acestea se adaug date cu privire la evolutia n timp a funcionrii Sunt implementate de asemenea i metode de creare a strucrilor destinate memorrii unor informaii legate de evoluia sistemului care se folosesc la metoda de antrenare bazat pe propagarea napoi a erorii, n aceast categorie preponderente fiind derivatele ieirii sistemului neuro-fuzzy n raport cu parametrii fiecrui bloc n parte conform celor prezentate n capitolul 2.

3.1.2 Funcii de antrenare i evaluareAceast categorie cuprinde o funcier de nivel nalt ce primete ca argumente structura ce se dorete a fi antrenat i setul de date de antrenare organizat sub forma unei matrici, n cazul general, fiecare linie reprezentnd un exemplu din setul de antrenare. La rndul ei, aceast funcie apeleaz metodele specifice de antrenare n conformitate cu datele stocate n structura primit ca parametru. Exist dou astfel de funcii, una destinat antrenrii cu algortimi genetici iar cealalt implementeaz algoritmul backpropagation.

27

Proiectarea genetic a structurilor neuro-fuzzy cu recuren local

3.1.3 Funcii de modificareFunciile din aceast categorie sunt destinate implementrii unui acces facil la parametrii sistemului, evitandu-se astfel accesul direct care poate fi uneori extreme de dificil, dei structura o permite nefiind definite cmpuri read-only. Se pot astfel citi i modifica parametrii filtrelor ARMA ale sistemelor fuzzy i cei ai algoritmilor de antrenare.

3.2

Glosarul funciilor i procedurilor implementate

3.2.1 ag (structura, index, nPop)Implementeaza un algoritm genetic pentru optimizarea parametrilor structurii data ca argument. Functia returneaza o structura de tip predictor neurofuzzy cu parametrii blocului indicat modificati Apel struct_out = ag(struct_in, rang, NPop) struct_in o structura de tip predictor neurofuzzy rang indica blocul din structura predictorului pentru care se calculeaza noile valori ale parametrilor Npop precizeaza numarul de subpopulatiii pentru un algoritm genetic; pentru un algoritm gentic clasic, valoare acestui parametru trebuie sa fie 1

3.2.2 backprop(structura, intrare, LRate)Implementeaz o iteraie (epoc) a algoritmului backpropagation, returnnd structura cu parametrii actualizai conform relaiilor prezentate n Capitolul 2. Apel struct_out = backprop (struct_in, intrare, LRate) struct_in o structur de tip predictor neuro-fuzzy intrare matrice a carei linii reprezint vectori de intrare (setul de antrenare) Lrate Rata de nvare

28

Proiectarea genetic a structurilor neuro-fuzzy cu recuren local

3.2.3 evalARMA(structure,index,datain)Funcie de evaluare a ieirilor unui bloc de filtre ARMA; returneaz att datele de ieire calculate ct i structura propriu-zis. Apel [structure,dataout] = evalARMA(structura, index, datain) structura structura de tip predictor index poziia ocupat de blocul de filtre ARMA datain vector de intrare

3.2.4 evalSFS(structure, index, datain)Funcie de evaluare a ieirilor unui bloc de sisteme fuzzy; returneaz att datele de ieire calculate ct i structura propriu-zis. Apel [structure,dataout] = evalSFS(structura,index,datain) structura structura de tip predictor index poziia ocupat de blocul de sisteme fuzzy datain vector de intrare

3.2.5 evaluate(structure,input)Funcie de evaluare a ieirii predictorului; pentru aceasta se apeleaz i la funciile descrise anterior. Evaluarea se poate face pentru o singur intrare sau pentru un set de date de intrare, aceasta fiind controlat prin dimensiunea argumentului. Apel output = evaluate(structura,input) structura structura de tip predictor input matrice a carei linii reprezint vectori de intrare

29

Proiectarea genetic a structurilor neuro-fuzzy cu recuren local

3.2.6 getparams(type, structure)Funcia primete de aceast dat ca argument un bloc de sisteme fuzzy sau filtre ARMA si returneaz un vector coninnd valorile parametrilor specifici. Apel params = getparams(type, structure) type argument ce poate avea valorile constante arma i sfs indicnd astfel funciei ce tip de bloc este data ca argument structure reprezint un bloc de sisteme fuzzy sau filtre

3.2.7 newAGParams(Nind, NGen, Pc, Pm, LInf, LSup)Returneaza o structura ce contine parametrii unui algoritm genetic dati ca argumente. Apel structuraParametriAG = newAGParams(NInd,NGen,Pc,Pm,LInf,LSup) Structura returnata are urmatoarele campuri: Numar de Indivizi = NInd Numar de Generatii = NGen Probabilitatea de incrucisare = Pc Probabilitatea de mutatie = Pm Limita inferioara a universului de discurs = LInf; Limita superioara a universului de discurs = LSup;

3.2.8 newarma(m)Creeaza un bloc de filtre ARMA de tip IIR de orin 2. Numarul de filtre este precizat de argumentul functiei. Apel bloc_arma = newarma(m); 30

Proiectarea genetic a structurilor neuro-fuzzy cu recuren local

m - numarul de filtre ARMA Functia returneaza un obiect de tip cu urmatoarele campuri: ARMAFilter filtrul propriu-zis Numerator vectorul coeficientilor de la numratorul functiei de transfer Denumerator vectorul coeficientilor de la numitorul functiei de transfer InitialState vectorul conditiilor initiale FinalState vectorul starii finale Input vectorul de intrare Output vectorul de iesire History structura ce contine valorile derivatei iesirii in raport cu intrarea valorile derivatei iesirii in raport cu parametrii

3.2.9 newARMAHistory(n)Returneaza o structura destinata retinerii istoriei evolutiei unui filtru ARMA pe ultimele n tacte Apel: structIstorieARMA = newARMAHistory( NumarTacte ) Structura returnata are urmatoarele campuri: db0 db1 db2 da1 - derivata iesirii in raport cu b0 - derivata iesirii in raport cu b1 - derivata iesirii in raport cu b2 - derivata iesirii in raport cu a1

31

Proiectarea genetic a structurilor neuro-fuzzy cu recuren local

da2

- derivata iesirii in raport cu a2

doutdin - derivata iesirii in raport cu intrarea

3.2.10

newGDParams(LRate,NEpochs)o structura ce contine parametrii algoritmului

Returneaza BackPropagation Apel:

structuraParametriBP = newGDParams(RataInvatare,NumarEpoci) Structura returnata are urmatoarele campuri: Rata de invatare = LRate; Numarul de epoci = NEpochs;

function out = newsfs(m) Creeaza un bloc de sisteme fuzzy Sugeno. Numarul de sisteme este precizat de argumentul functiei Apel: bloc_arma = newsfs(m); m - numarul de sisteme fuzzy Functia returneaza un obiect de tip cu urmatoarele campuri: SugenoFuzzySystem - sistemul fuzzy propriu-zis InputMFNumber - numarul functiilor de apartenenta la intrare OutputMFNumber - numarul functiilor de apartenenta la iesire GaussMFCenter - vectorul centrilor functiilor de apartenenta la intrare GaussMFSigma - vectorul dispersiilor functiilor de apartenenta la intrare OutputSingletons - vectorul singletonilor la iesire Input - vectorul de intrare Output - vectorul de iesire History - structura ce contine valorile derivatei iesirii in raport cu centrii functiilor de apartenenta la intrare valorile derivatei iesirii in raport cu dispersiile functiilor de apartenenta la intrare valorile derivatei iesirii in raport cu singletonii de iesire valorile derivatei iesirii in raport cu parametrii

32

Proiectarea genetic a structurilor neuro-fuzzy cu recuren local

3.2.11

newSFSHistory(n)

Returneaza o structura destinata retinerii istoriei evolutiei unui sistem fuzzy Sugeno pe ultimele n tacte: Apel: structIstorieSFS = newSFSHistory( NumarTacte ) Structura returnata are urmatoarele campuri: dcenter - derivata iesirii in raport cu centrii functiilor de apartenenta de la intrare db1 - derivata iesirii in raport cu dispersiile functiilor de apartenenta de la intrare db2 - derivata iesirii in raport cu singletonii de iesire doutin - derivata iesirii in raport cu intrarea

3.2.12

newstructure(type,train,trainParams,dim)

Creeaza o structura de tip predictor neuro-fuzzy Apel: nfp = newstructure(type,train,dim); type - cell array cu tipurile fiecarui bloc din structura predictorului train - cell array cu metodele de antrenare pentru fiecare bloc dim - vector cu dimensiunile blocurilor Variabila returnata, de tip are urmatoarele campuri: Object - blocul propriu-zis Name - numele blocului Type - tipul blocului o ARMA (filtru IIR de ordin 2) o SFS (sistem fuzzy Sugeno) o SUM (sumator) TrainingMethod - metoda de antrenare aplicata blocului Input - vectorul de intrare Output - vectorul de iesire

33

Proiectarea genetic a structurilor neuro-fuzzy cu recuren local

3.2.13

train(structure)

Realizez antrenarea structurii dat ca parametru conform metododelor precizate prin cmpurile structurii. Apel structura_antrenata = train(structura)

34

Proiectarea genetic a structurilor neuro-fuzzy cu recuren local

Capitolul 4 RezultatePentru testarea structurii realizate s-au efectuat dou studii de caz, unul bazat pe estimarea unei serii de timp, iar cel de-al doilea exemplu fiind un exerciiu de identificare de sistem folosind date reale culese de la un sistem de vaporizare din cadrul unei instlalaii de producere a zahrului.

4.1

Seria de timp

Seria de timp folosit n aceast lucrare este aceeai cu seria testat de Yamakawa n articolul unde este prezentat i neuronul fuzzy, pe al crui model se bazeaz predictorul din lucrare (vezi cap. 3). Seria de timp este generat de un sistem dinamic de ordin 3, avnd urmtoarea ecuaie cu diferene:

xn +1 =

5 xn 0.5 xn 0.5 xn 1 + 0.5 xn 2 . 2 1 + xn

Condiiile iniiale folosite: x0=0.773, x1=0.234, x2=0.973.Semnal originar 1 0.8 0.6 0.4 0.2 0 -0.2 -0.4 -0.6 -0.8 -1

0

50

100

150

200

250

300

350

400

450

500

Figura 4.1- Seria de timp obinut pentru 500 de iteraii, dup normalizare Structura considerat primese ca intrare un vector de dimensiune 5, reprezentnd iteraii succesive ale seriei considerate. Pentru antrenare s-au folosit algoritmi genetici pentru fiecare bloc n parte cu urmtorii paramteri:

36

Proiectarea genetic a structurilor neuro-fuzzy cu recuren local

Blocul ARMA 1

Numr Indivizi: 5 Numr Generaii: 6 Probabilitatea de ncruciare: 0.71 Probabilitatea de mutaie: 0.13 Limita inferioar de iniializare: -2 Limita superioar de iniializare: 2 Numr Indivizi: 5 Numr Generaii: 6 Probabilitatea de ncruciare: 0.68 Probabilitatea de mutaie: 0.1 Limita inferioar de iniializare: -2 Limita superioar de iniializare: 2 Numr Indivizi: 5 Numr Generaii: 6 Probabilitatea de ncruciare: 0.68 Probabilitatea de mutaie: 0.1 Limita inferioar de iniializare: -2 Limita superioar de iniializare: 2 Numr Indivizi: 5 Numr Generaii: 6 Probabilitatea de ncruciare: 0.68 Probabilitatea de mutaie: 0.1 Limita inferioar de iniializare: -2 Limita superioar de iniializare: 2

Blocul SFS

Blocul ARMA 2

Blocul ARMA

37

Proiectarea genetic a structurilor neuro-fuzzy cu recuren local

Rezultatele obinute sunt ilustrate n figura urmtoare:

Cu albastru s-a reprezentat semnlul dorit iar cu rosu cel obtinut in urma antrenarii. Pentru setul de date de test s-a obtinut urmatorul rezultat (ca si in cazul anterior, cu albastru s-a reprezentat semnalul dorit iar cel obtinut cu rosu). Eroarea obtinuta pe setul de date de test este de aproximativ 0.0088:

38

Proiectarea genetic a structurilor neuro-fuzzy cu recuren local

4.2

Staia de evaporare (Fabrica de zahr, Lublin, Polonia) prima seciune

Instalaia proceseaz sucul rezultat din fermentarea sfeclei de zahr, cu scopul de a reduce coninutul de ap al acestuia. Soluia de zahr strbate cinci seciuni, fiecare seciune asigurnd creterea concentraiei de glucoz, prin evaporarea treptat a apei din soluia de zahr. Aburul rezultat ntr-o seciune este folosit ca surs de nclzire pentru urmtoarea seciune. Astfel, fenomenul de evaporare a apei este controlat n sensul de a obine zahr n concordan cu standardele de calitate impuse i de a utiliza optim energia termic rezultat. Este analizat n cele ce urmeaz prima seciune a staiei de evaporare (SE). Sunt evideniate cinci subsisteme componente ale acestui proces : subsistemul valv pentru controlul nivelului sucului de zahr (I):

intrri (2): nivelul sucului de zahr n prima seciune a staiei de evaporare (LC51_03); presiunea sucului la intrarea n SE (P51_04); ieiri (1): debitul volumetric de alimentare a SE cu suc diluat (F51_01); 7 clase de comportare: comportare normal, variaii pozitive sau negative ale mrimii de ieire, respectiv ale uneia din cele dou intrri considerate.

39

Proiectarea genetic a structurilor neuro-fuzzy cu recuren local

subsistemul vapori (II):

intrri (1): temperatura vaporilor n prima seciune a SE (T51_07); ieiri (1): presiunea vaporilor n prima seciune a SE (P51_03); 7 clase de comportare: comportarea normal, anomalii considerate pe ieire, pe intrare, pe variabila suplimentar. subsistemul abur (III):

intrri (1): temperatura aburului la intrarea n SE (T51_06); ieiri(1): presiunea aburului la intrarea n SE (P51_01); 7 clase de comportare: comportare normal, anomalii considerate pe ieire, pe intrare, pe variabila suplimentar. subsistemul instalaie de nclzire (IV):

intrri (5): presiunea (P51_01) i respectiv temperatura aburului la intrarea n SE (T51_06), debitul volumetric de alimentare a SE cu suc de zahr (F51_01), temperatura sucului la intrarea n ultima instalaie de nclzire (T51_04) i respectiv temperatura sucului diluat rezultat dup nclzire (T51_05); ieiri (1): temperatura sucului diluat considerat dup nclzire (T51_05); 7 clase de comportare: comportare normal, anomalii considerate pe ieire i pe primele dou intrri. subsistemul instalaie de evaporare (V):

intrri (3): debitul volumetric de alimentare cu abur a SE (F51_02), temperatura aburului msurat la intrarea n SE (T51_06), temperatura sucului obinut dup nclzire (T51_05); ieiri (1): temperatura sucului dup prima seciune a SE (T51_08); 9 clase de comportare: comportare normal, anomalii considerate pe ieire i pe fiecare intrare. Baza de date disponibil include msurtorile efectuate n timp real pentru 100 de variabile de proces, pe durata unei luni calendaristice de exploatare. Achiziia este realizat cu o perioad de eantionare de 10 s, astfel nct pentru fiecare variabil de proces sunt reinute 200.000 nregistrri. Datele achiziionate cu echipamentul SCADA caracterizeaz numai comportarea normal a procesului, avnd n vedere faptul c instalaia funcioneaz doar trei luni pe an, dup verificri i reparaii atente. De aceea, anomaliile sunt doar simulate, prin adunarea sau scderea la msurtorile disponibile a unei valori egale cu 5%, 10% sau 15% din gama de variaie permis pentru variabila de proces respectiv. Suplimentar, este disponibil un set de date de test (notat SD1), coninnd alte 3000 nregistrri pentru fiecare variabil, colectate n alt luna de exploatare. Setul SD1 descrie comportarea normal a procesului n condiii diferite de funcionare (alt lot de sfecl de zahr folosit pentru procesare).

40

Proiectarea genetic a structurilor neuro-fuzzy cu recuren local

Una din cele mai dificile probleme de rezolvat se refer la selectarea unui set convenabil de date de antrenare din baza de date disponibil. Acest set trebuie s includ ct mai puine date nesigure sau achiziii euate i n plus s evidenieze variaii semnificative ale mrimilor de intrare. Sunt selectate secvene de date, coninnd 3000 nregistrri pentru fiecare variabil, corespunztoare unui interval de 8 ore de funcionare continu a procesului. Datele nesigure sau absente din setul de date de antrenare i testare sunt recalculate prin interpolare polinomial. Secvena de date rezultat este filtrat cu filtre Butterwoth (pentru rejecia zgomotelor) i eantionat, n cazul setului de antrenare redus, cu o frecven de 10 ori mai mic dect cea de achiziie.T51_02 ?C T51_03 ?C T51_04 ?C Abur PC51_01 kPa T51_06 ?C F51_02 t/h R TC51_05 ?C Instalaie de evaporare R F51_01 m3/h T51_08 ?C T51_07 ?C P51_03 kPa Vapori

T51_01 ?C R Valv P51_04 kPa R F51_03 t/h LC51_03

Instalaie nclzire

LC51_01

Fig. Instalaia de nclzire i prima seciune a staiei de evaporare.

Antrenarea s-a facut pentru datele extrase corespunzatoare sectiunii II (subsistemul de vapori). Si in acest caz s-a incercat aplicarea algoritmilor genetici in vederea antrenarii, rezultatele obtinute fiind destul de modeste sugerand o abordare diferita de antrenare (de exemplu se poate incerca aplicarea algoritmului genetic pentru intreg setul de parametri ai sistemului, in loc de antrenarea fiecarui bloc in parte sau utilizarea unei antrenari combinate algoritmi gentici-backpropagation).

41

ANEXA

42

% afis.m function afis(structure)

nblocks=length(structure); for i=1:nblocks switch (structure(i).Type) case 'arma' disp(structure(i).Name); for j=1:length(structure(i).Object) fprintf('\nCoeficientii filtrului %g',j) disp('Numarator') structure(i).Object(j).Numerator disp('Numitor'); structure(i).Object(j).Denumerator fprintf('\n'); end case 'sfs' disp(structure(i).Name); for j=1:length(structure(i).Object) fprintf('\nCoeficientii sistemului fuzzy %g',j) disp('Centri') structure(i).Object(j).GaussMFCenter disp('Sigma'); structure(i).Object(j).GaussMFSigma disp('Singletoni') structure(i).Object(j).OutputSingletons fprintf('\n'); end end end

% ag.m function out = ag(structure,i,nPop) 43

% Implementeaza un algoritm genetic pentru optimizarea parametrilor structurii data ca argument % % Functia returneaza o structura de tip predictor neurofuzzy cu parametrii blocului indicat modificati % % Apel struct_out = ag(struct_in,rang,NPop) % % struct_in - o structura de tip predictor neurofuzzy rang - indica blocul din structura predictorului pentru care se calculeaza noile valori

ale parametrilor % % Npop - precizeaza numarul de subpopulatiii pentru un algoritm genetic - pentru un algoritm gentic clasic, valoare acestui parametru trebuie sa fie 1

global scaledSignal trainingSet

n = length(scaledSignal);

% parametrii blocului teta = getparams(structure(i).Type,structure(i));

% parametrii algoritmului genetic % NInd = 20; % LInd = length(teta); % NGen = 30; % Pc = 0.7; % Pm = 0.12; % dimensiunea populatiei % lungimea unui individ (cromozom) % numarul de generatii % probabilitatea de incrucisare (crossover) % probabilitatea de mutatie

NInd = structure(i).TrainingParams.NInd; LInd = length(teta);

% dimensiunea populatiei % lungimea unui individ (cromozom) % numarul de generatii % probabilitatea de incrucisare (crossover) % probabilitatea de mutatie

NGen = structure(i).TrainingParams.NGen; Pc = structure(i).TrainingParams.Pc; Pm = structure(i).TrainingParams.Pm;

44

LInf = structure(i).TrainingParams.LInf; generare a populatiei initiale LSup = structure(i).TrainingParams.LSup; generare a populatiei initiale

% limita inferioara a domeniului de

% limita superioara a domeniului de

% creearea populatiei initiale FieldDR = [ones(1,LInd*LInf); ones(1,LInd*LSup)]; Chrom = crtrp(NInd,FieldDR);

% evaluarea polulatiei initiale mean_square_error = popEval(structure,i,Chrom,Nind);

% evolutia indivizilor for j = 1:NGen fitness = ranking(mean_square_error2,nPop); selChrom = select('sus',Chrom,fitness,1,nPop); recChrom = recombin('xovsp',selChrom,Pc,nPop); MutChrom = mutate('mutbga',recChrom,FieldDR, Pm,nPop); Chrom = reins(Chrom,MutChrom); if nPop>1 Chrom = migrate(Chrom,Npop,[0.3 0 0]); end mean_square_error = popEval(structure,i,Chrom,Nind); end

% cel mai bun individ din ultima generatie este folosit in structura % predictorului [min_error,index] = min(mean_square_error); structure(i).Object = setparams(structure(i).Type,structure(i).Object,Chrom(index,:); end

%************************************************************************* * 45

% % functie de evaluare a indivizilor dintr-o populatie % returneaza vectorul erorilor medii patratice %

function out = popEval(structure,i,Chrom,Nind)

global scaledSignal

for j = 1:Nind structure(i).Object = setparams(structure(i).Type,structure(i).Object,Chrom(j,:)); outputSet = evaluate(structure,inputSet,1,0); error = scaledSignal - outputSet; mean_square_error(1,j) = (error*error)/(2*n); end out = mean_square_error; end

% backprop.m function out = backprop(structure,pinput,LRate)

global scaledSignal

[lines, columns] = size(pinput); nblocks = length(structure); pen = 1/lines; zoutput=zeros(lines,1); for i = 1:lines i % evaluarea iesirii predictorului pentru intrarea i datain = pinput(i,:); for index = 1:nblocks switch structure(index).Type 46

case 'arma' arma = structure(index).Object; for k = 1:structure(index).Size arma(k).Input(i) = datain(k); [arma(k).Output(i) arma(k).FinalState] =

filter(arma(k).ARMAFilter,arma(k).Input(i),arma(k).InitialState); dataout(k) = arma(k).Output(i); end structure(index).Object = arma; datain = dataout; case 'sfs' sfs = structure(index).Object; for k = 1:structure(index).Size sfs(k).Input(i) = datain(k); sfs(k).Output(i) = evalfis(sfs(k).Input(i),sfs(k).SugenoFuzzySystem); dataout(k) = sfs(k).Output(i); end structure(index).Object = sfs; datain = dataout; case 'sum' disp('sum'); dataout = sum(datain); datain = dataout end end disp('final') datain dataout

zoutput(i) output(i) = datain

47

% actualizarea derivatelor for index = nblocks:-1:1 switch structure(index).Type case 'arma' for k = 1:structure(index).Size

% initializarea variabilelor si parametrilor folositi % la calculul derivatelor iesirii predictorului in % raport cu parametrii fltrului ARMA sumb = sum(structure(index).Object(k).Numerator); input = structure(index).Object(k).Input(i);

t1 = 0; a1 = 0; db0m1 = 0; db1m1 = 0; db2m1 = 0; da1m1 = 0; da2m1 = 0; inputm1 = 0; outputm1 = 0; if (i-1>0) t1 = structure(index).Object(k).History(1).doutdin(i-1); a1 = structure(index).Object(k).Denumerator(2); db0m1 = structure(index).Object(k).History(1).db0(i-1); db1m1 = structure(index).Object(k).History(1).db1(i-1); db2m1 = structure(index).Object(k).History(1).db2(i-1); da1m1 = structure(index).Object(k).History(1).da1(i-1); da2m1 = structure(index).Object(k).History(1).da2(i-1); inputm1 = structure(index).Object(k).Input(i-1); outputm1 = structure(index).Object(k).Output(i-1); end

t2 = 0; 48

a2 = 0; db0m2 = 0; db1m2 = 0; db2m2 = 0; da1m2 = 0; da2m2 = 0; inputm2 = 0; outputm2 = 0; if (i-2>0) t2 = structure(index).Object(k).History(1).doutdin(i-2); a2 = structure(index).Object(k).Denumerator(3); db0m2 = structure(index).Object(k).History(1).db0(i-2); db1m2 = structure(index).Object(k).History(1).db1(i-2); db2m2 = structure(index).Object(k).History(1).db2(i-2); da1m2 = structure(index).Object(k).History(1).da1(i-2); da2m2 = structure(index).Object(k).History(1).da2(i-2); inputm2 = structure(index).Object(k).Input(i-2); outputm2 = structure(index).Object(k).Output(i-2); end

% actualizarea derivatei iesirii filtrului in raport cu % intrarea acestuia structure(index).Object(k).History(1).doutdin(i) = sumb-t1*a1-t2*a2;

% actualizarea derivatei iesirii predictorului in raport cu % iesirea filtrului ARMA dsdout = 1; if ((index+1) < nblocks) for j = nblocks:-1:index+1 if structure(j).Size == structure(index).Size dsdout = dsdout*structure(j).Object(k).History(1).doutdin(i); elseif (strcmp(structure(j).Type,'sum')==0) dsdout = dsdout*structure(j).Object(1).History(1).doutdin(i); end 49

end end

% actualizarea derivatei iesirii predictorului in raport % cu parametrul b0 structure(index).Object(k).History(1).db0(i) db0m2*a2)*dsdout; = (input-db0m1*a1-

% actualizarea derivatei iesirii predictorului in raport % cu parametrul b1 structure(index).Object(k).History(1).db1(i) db1m2*a2)*dsdout; = (inputm1-db1m1*a1-

% actualizarea derivatei iesirii predictorului in raport % cu parametrul b2 structure(index).Object(k).History(1).db2(i) db2m2*a2)*dsdout; = (inputm2-db2m1*a1-

% actualizarea derivatei iesirii predictorului in raport % cu parametrul a1 structure(index).Object(k).History(1).da1(i) da1m2*a2)*dsdout; = ((-1)*outputm1-da1m1*a1-

% actualizarea derivatei iesirii predictorului in raport % cu parametrul a2 structure(index).Object(k).History(1).da2(i) da2m2*a2)*dsdout; end case 'sfs' for k = 1:structure(index).Size p = 0; q = 0; dqdinput = 0; dpdinput = 0; 50 = ((-1)*outputm2-da2m1*a1-

for j = 1:structure(index).Object(k).InputMFNumber input = structure(index).Object(k).Input(i); beta = structure(index).Object(k).OutputSingletons(j); center = structure(index).Object(k).GaussMFCenter(j); sigma = structure(index).Object(k).GaussMFSigma(j); p = p + exp((-1)*(input-center)^2/sigma^2)*beta; q = q + exp((-1)*(input-center)^2/sigma^2); dqdinput center)^2/sigma^2)*beta; dpdinput center)^2/sigma^2); end = dpdinput + 2*(input-center)/sigma^2*exp((-1)*(input= dqdinput + 2*(input-center)/sigma^2*exp((-1)*(input-

% actualizarea derivatei iesirii predictorului in raport cu % iesirea sistemului fuzzy Sugeno dsdout = 1; if (index+1 < nblocks) for j = nblocks:-1:index+1 if structure(j).Size == structure(index).Size dsdout = dsdout*structure(j).Object(k).History(1).doutdin(i); elseif (strcmp(structure(j).Type,'sum')==0) dsdout = dsdout*structure(j).Object(1).History(1).doutdin(i); end end end

% actualizarea derivatei iesirii filtrului in raport cu % intrarea acestuia structure(index).Object(k).History(1).doutdin(i) = (dqdinput*p-dpdinput*q)/p^2;

% actualizarea derivatei iesirii predictorului in % raport cu centrii functiilor de apartenenta la % intrare for j = 1:structure(index).Object(k).InputMFNumber 51

input = structure(index).Object(k).Input(i); beta = structure(index).Object(k).OutputSingletons(j); center = structure(index).Object(k).GaussMFCenter(j); sigma = structure(index).Object(k).GaussMFSigma(j);

structure(index).Object(k).History(1).dcenter(j,i) = ((beta*p-q)/p^2)*2*(inputcenter)/sigma^2*exp((-1)*(input-center)^2/sigma^2); structure(index).Object(k).History(1).dsigma(j,i) = ((beta*p-q)/p^2)*2*(inputcenter)/sigma^3*exp((-1)*(input-center)^2/sigma^2); structure(index).Object(k).History(1).dsingleton(j,i) center)^2)/sigma^2)/p; end end end end end = exp((-1)*((input-

zoutput = scale(zoutput) error = scaledSignal-output

disp(strcat('Modificarea parametrilor cu backpropagation --- ',datestr(clock,13))); for i = 1:nblocks if (strcmp(structure(i).TrainingMethod,'GD')==1) switch structure(i).Type case 'arma' error for j = 1:structure(i).Size structure(i).Object(j).History(1).db0; structure(i).Object(j).Numerator(1) = structure(i).Object(j).Numerator(1)+ LRate * pen *(error * (structure(i).Object(j).History(1).db0)'); structure(i).Object(j).Numerator(2) = structure(i).Object(j).Numerator(2)+ LRate * pen *(error * (structure(i).Object(j).History(1).db1)'); structure(i).Object(j).Numerator(3) = structure(i).Object(j).Numerator(3)+ LRate * pen *(error * (structure(i).Object(j).History(1).db2)'); 52

structure(i).Object(j).Denumerator(2) = structure(i).Object(j).Denumerator(2)+ LRate * pen *(error * (structure(i).Object(j).History(1).da1)'); structure(i).Object(j).Denumerator(3) = structure(i).Object(j).Denumerator(3)+ LRate * pen *(error * (structure(i).Object(j).History(1).da2)'); structure(i).Object(j).ARMAFilter.ref structure(i).Object(j).Denumerator}; structure(i).Object(j).ARMAFilter normalize(structure(i).Object(j).ARMAFilter); end case 'sfs' for j = 1:structure(i).Size % % structure(i).Object(j).GaussMFCenter(k) for k = 1:structure(i).Object(j).InputMFNumber structure(i).Object(j).GaussMFCenter(k) = + LRate * pen = = {structure(i).Object(j).Numerator

*(error*(structure(i).Object(j).History(1).dcenter(k,:))'); % structure(i).Object(j).GaussMFSigma(k) LRate*error*(structure(i).Object(j).History.dsigma(k,:))'; % % % % % % structure(i).Object(j).SugenoFuzzySystem.input.mf(k).params(1) = % actualizarea parametrilor de intrare in structura de tip % sistem fuzzy Sugeno % structure(i).Object(j).GaussMFSigma(k) = +

structure(i).Object(j).GaussMFSigma(k); % structure(i).Object(j).SugenoFuzzySystem.input.mf(k).params(2) =

structure(i).Object(j).GaussMFCenter(k); % end for k = 1:structure(i).Object(j).OutputMFNumber structure(i).Object(j).History(1).dsingleton(k,:) structure(i).Object(j).OutputSingletons(k) structure(i).Object(j).OutputSingletons(k) + LRate* = pen

*(error*(structure(i).Object(j).History(1).dsingleton(k,:))'); structure(i).Object(j).SugenoFuzzySystem.output.mf(k).params structure(i).Object(j).OutputSingletons(k); 53 =

end end end end end out = structure;

% eval.m function out = eval(structure,input)

[lines, columns] = size(input); nblocks = length(structure);

for i = 1:lines

% evaluarea iesirii predictorului pentru intrarea i datain = input(i,:); for index = 1:nblocks switch structure(index).Type case 'arma' arma = structure(index).Object; for k = 1:structure(index).Size arma(k).Input(i) = datain(k); [arma(k).Output(i) arma(k).FinalState] =

filter(arma(k).ARMAFilter,arma(k).Input(i),arma(k).InitialState); dataout(k) = arma(k).Output(i); end structure(index).Object = arma; datain = dataout; case 'sfs' sfs = structure(index).Object; for k = 1:structure(index).Size sfs(k).Input(i) = datain(k); 54

sfs(k).Output(i) = evalfis(sfs(k).Input(i),sfs(k).SugenoFuzzySystem); dataout(k) = sfs(k).Output(i); end structure(index).Object = sfs; datain = dataout; case 'sum' dataout = sum(datain); datain = dataout; end end out(i) = dataout; end

% evalARMA.m function [structure,dataout] = evalARMA(structure,index,datain)

arma = structure(index).Object; m= length(arma);

for i=1:m arma(i).Input = datain(i); [arma(i).Output arma(i).FinalState] = filter( arma(i).ARMAFilter, arma(i).Input,

arma(i).InitialState); dataout(i) = arma(i).Output; end

structure(index).Object = arma;

% evalSFS.m function [structure,dataout] = evalSFS(structure,index,datain)

55

sfs = structure(index).Object; m= length(sfs);

for i=1:m sfs(i).Input = datain(i); sfs(i).Output = evalfis(sfs(i).Input,sfs(i).SugenoFuzzySystem); dataout(i) = sfs(i).Output; end

structure(index).Object = sfs;

% evaluate.m function out = evaluate(structure,input)

[lines, columns] = size(input); nblocks = length(structure);

for i = 1:lines datain = input(i,:); for j = 1:nblocks switch structure(j).Type case 'arma' [structure,dataout] = evalARMA(structure,j,datain); datain = dataout; case 'sfs' [structure,dataout] = evalSFS(structure,j,datain); datain = dataout; case 'sum' dataout = sum(datain); datain = dataout; end end out(i) = dataout; 56

end

% generateInputSet.m function out = generateInputSet(u,m)

% Genereaza o matrice avand acelasi numar de linii cu dimensiunea % vectorului de intrare dat ca argumet, iar numarul de coloane este % precizat de cel de-al doilea parametru. % % Vectorul dat ca paramentru este extins prin inserarea a nr_col-1 zerouri % pe primele pozitii % % Apel: matrice = generateInputSet(vector,nr_col) % vector - vectorul sursa % nr_col - numarul de coloane ale matricii de iesire % % Exemplu: % % % % % % % % % % % % % % % % _ | _ | vector = [1 2 3 4 5 6 7 8 9]; nr_col = 4; matrice = generateInputSet(vector,nr_col);

|1 0 0 0| |2 1 0 0| |3 2 1 0| |4 3 2 1| => matrice = | 5 4 3 2 | |6 5 4 3| |7 6 5 4| |8 7 6 5| |9 8 7 6| |_ _| 57

% n = length(u); out = zeros(n,m); aux = zeros(1,m-1); extended_u = [aux u]; for i = 1:n a = extended_u(i:i+m-1); out(i,:) = a(length(a):-1:1); end

% getparams.m function out = getparams(type,structure)

[lin col] = size(structure);

if (strcmp(type,'arma')) out = [structure(1).Numerator structure(1).Denumerator]; for i = 2:lin out = [out structure(i).Numerator structure(i).Denumerator]; end elseif (strcmp(type,'sfs')) out = [structure(1).GaussMFSigma structure(1).GaussMFCenter

structure(1).OutputSingletons]; for i = 2:lin out = [out structure(i).GaussMFSigma structure(i).GaussMFCenter

structure(i).OutputSingletons]; end else fprintf('%s - nu este un tip de structura valid (getparams.m)',type); end

58

% newAGParams.m function out=newAGParams(Nind,NGen,Pc,Pm,LInf,LSup)

% Returneaza o structura ce contine parametrii unui algoritm genetic % dati ca argumente. % Apel: % % % Structura returnata are urmatoarele campuri: % % % % % % Numar de Indivizi = NInd Numar de Generatii = NGen Probabilitatea de incrucisare = Pc Probabilitatea de mutatie = Pm Limita inferioara a universului de discurs = LInf; Limita superioara a universului de discurs = LSup; structuraParametriAG = newAGParams(NInd,NGen,Pc,Pm,LInf,LSup)

out=struct('Algorithm',{},'NInd',{},'NGen',{},'Pc',{},'Pm',{},'LInf',{},'LSup',{});

out(1).Algorithm='AG'; out(1).NInd=Nind; out(1).NGen=NGen; out(1).Pc=Pc; out(1).Pm=Pm; out(1).LInf=LInf; out(1).LSup=LSup;

% newarma.m function out = newarma(m)

% Creeaza un bloc de filtre ARMA de tip IIR de orin 2. % Numarul de filtre este precizat de argumentul functiei % % Apel: bloc_arma = newarma(m); 59

% %

m - numarul de filtre ARMA

% Functia returneaza un obiect de tip cu urmatoarele campuri: % % % % % % % % % % % ARMAFilter - filtrul propriu-zis Numerator - vectorul coeficientilor de la numratorul functiei de transfer Denumerator - vectorul coeficientilor de la numitorul functiei de transfer InitialState - vectorul conditiilor initiale FinalState - vectorul starii finale Input Output History - vectorul de intrare - vectorul de iesire - structura ce contine -- valorile derivatei iesirii in raport cu intrarea -- valorile derivatei iesirii in raport cu parametrii

out = struct('ARMAFilter', {}, 'Numerator', {}, 'Denumerator', {}, 'InitialState', {}, 'FinalState', {}, 'Input', {}, 'Output', {}, 'History', {}); rand_coef_num = rand(m,3);

a0 = 1.0*ones(m,1); rand_coef_den = [a0 rand(m,2)];

for i=1:m % % out(i).Numerator = rand_coef_num(i,:); out(i).Denumerator = rand_coef_den(i,:); out(i).InitialState = zeros(4,1); out(i).FinalState = zeros(4,1); r = 0; while (r == 0) out(i).Numerator = rand(1,3); out(i).Denumerator = [1 rand(1,2)]; out(i).ARMAFilter = qfilt('df1',{out(i).Numerator,out(i).Denumerator}); r=isstable(out(i).ARMAFilter); end 60

out(i).History=newARMAHistory(3); end

% newARMAHistory.m function out=newARMAHistory(n)

% Returneaza o structura destinata retinerii istoriei evolutiei unui filtru % ARMA pe ultimele n tacte % % Apel: % % % Structura returnata are urmatoarele campuri: % % % % % % db0 db1 db2 da1 da2 - derivata iesirii in raport cu b0 - derivata iesirii in raport cu b1 - derivata iesirii in raport cu b2 - derivata iesirii in raport cu a1 - derivata iesirii in raport cu a2 structIstorieARMA = newARMAHistory( NumarTacte )

doutdin - derivata iesirii in raport cu intrarea

out=struct('db0',{},'db1',{},'db2',{},'da1',{},'da2',{},'doutdin',{});

out(1).db0 = zeros(1,n); out(1).db1 = zeros(1,n); out(1).db2 = zeros(1,n); out(1).da1 = zeros(1,n); out(1).da2 = zeros(1,n); out(1).doutdin = zeros(1,n);

% newGDParams.m function out=newGDParams(LRate,NEpochs)

61

% Returneaza o structura ce contine parametrii algoritmului BackPropagation % % Apel: % % % Structura returnata are urmatoarele campuri: % % Rata de invatare = LRate; Numarul de epoci = NEpochs; structuraParametriBP = newGDParams(RataInvatare,NumarEpoci)

out=struct('Algorithm',{},'LearningRate',{},'NEpochs',{});

out(1).Algorithm='GD'; out(1).LearningRate=LRate; out(1).NEpochs=NEpochs;

% newsfs.m function out = newsfs(m)

% Creeaza un bloc de sisteme fuzzy Sugeno % Numarul de sisteme este precizat de argumentul functiei % % Apel: bloc_arma = newsfs(m); % % % Functia returneaza un obiect de tip cu urmatoarele campuri: % % % % % % % SugenoFuzzySystem - sistemul fuzzy propriu-zis InputMFNumber - numarul functiilor de apartenenta la intrare m - numarul de sisteme fuzzy

OutputMFNumber - numarul functiilor de apartenenta