Contributii Privind Retelele Neuronale Artificiale In Identificarea Si Conducerea Proceselor

CONTRIBUȚII PRIVIND REȚELELE NEURONALE ARTIFICIALE ÎN IDENTIFICAREA ȘI CONDUCEREA PROCESELOR

-Teză de doctorat-

Contribuții privind rețelele neuronale artificiale în identificarea și conducerea proceselor

CUPRINS

CAP.1 STADIUL CUNOAȘTERII ÎN DOMENIU

1.1 Rețele neuronale artificiale. Noțiuni generale

1.1.1 Definiția rețelelor neuronale artificiale

1.1.2 Specificul calculului neuronal

1.1.3 Structura unei rețele neuronale artificiale

1.1.4 Ce pot și ce nu pot face rețelele neuronale

1.1.5 Calculul neuronal în comparație cu calculul clasic și

sistemele expert

1.1.6 Scurt istoric

1.2 Topologii de rețele neuronale artificiale cu și fără dinamică

1.2.1 Rețele neuronale artificiale multistrat

1.2.2 Rețele neuronale artificiale cu dinamică externă

1.2.3 Rețele neuronale artificiale cu dinamică internă

1.2.3.1 Rețele cu neuroni memorie

1.2.3.2 Rețele neuronale Elman

1.2.3.3 Rețele neuronale Jordan

1.2.3.4 Rețele neuronale artificiale multistrat cu dinamică

mixtă

Rețele neuronale artificiale cu legături

funcționale custructură dinamică

1.2.4 Rețele neuronale artificiale de tip RBF cu dinamică

1.3 Algoritmi de antrenare pentru rețele neuronale artificiale

1.3.1 Metode euristice de îmbunătățire a algoritmului backpropagation

1.3.1.1 Metoda momentum

1.3.1.2 Rată de învățare adaptivă

1.3.1.3 Algoritmul resilient backpropagation

1.3.2 Algoritmul gradientului conjugat

1.3.3 Algoritmul quasi-Newton

1.3.4 Algoritmul Levenberg-Marquardt

1.3.5 Algoritm de antrenare bazat pe filtrul Kalman extins

1.3.6 Algoritmi de antrenare pentru rețelele neuronale cu dinamică

1.3.6.1 Considerații generale

1.3.6.2 Back-Propagation-Through-Time (BPTT)

1.3.6.3 Back-Propagation-Through-Time trunchiat

1.3.6.4 Algoritmul de învățare în timp real recurent

1.4 Identificarea sistemelor folosind rețele neuronale artificiale

1.5 Conducerea sistemelor folosind rețele neuronale artificiale

1.6 Concluzii

CAP.2 METODOLOGII DE IDENTIFICARE CU REȚELE

NEURONALE MULTISTRAT ȘI INTERN RECURENTE

2.1 Introducere

2.2 Identificarea sistemelor cu ajutorul rețelelor neuronale

2.2.1 Problematica identificării

2.2.2 „Black Boxes”

2.2.3 Cele mai uzuale modele liniare de tip „Black Boxes

2.2.4 Alegerea regresorilor pentru modelarea cu ajutorul

rețelelor neuronale

2.2.5 Modele dinamice cu ajutorul rețelelor neuronale

2.2.6 Procedura de identificare cu ajutorul rețelelor neuronale

2.3 Identificarea unui proces folosind rețele neuronale

intern recurente (IRNN)

2.3.1 Considerații generale

2.3.2 Identificarea sistemelor neliniare folosind IRNN

2.3.3 Algoritm de antrenare IRNN

2.3.4 Considerații asupra algoritmului de antrenare IRNN

2.3.5 Studiu de caz. Identificarea unui sistem neliniar în situația

când modelul matematic al unuia dintre subsisteme este cunoscut

2.3.6 Studiu de caz. Identificarea modelului unui automobil.

2.3.6.1 Scurtă prezentare a unui simulator auto

2.3.6.2 Identificarea sistemului automobil folosind IRNN

2.4 Concluzii

CAP.3 IDENTIFICAREA SISTEMELOR NELINIARE FOLOSIND

REȚELE NEURONALE MODULARE

3.1 Introducere

3.2 Conceptul de modularitate

3.3 Sinteză din literatura de specialitate

3.4 Structură modulară de identificare

3.4.1 Algoritm de partiționare a caracteristicii statice în cazul

sistemelor dinamice neliniare

Studiu de caz 1. Identificarea unui sistem de reglare a nivelului unui

lichid folosind rețele neuronale modulare

Partiționarea caracteristicii statice

Instruirea modulelor neuronale ce realizează identificarea

Instruirea comutatorului dinamic corespunzător

structurii modulare

Studiu de caz 2. Identificarea unui sistem pneumatic folosind rețele

neuronale modulare

Schema generală a sistemului pneumatic

Caracteristica statică a sistemului. Neliniaritățile sistemului

Instruirea modulelor neuronale ce realizează identificarea

Modele ale frecării. Identificarea modelului de frecare Lugre

folosind rețele neuronale modulare

Forța de frecare. Considerații generale

Taxonomia modelelor clasice ale frecării

3.7.2.1 Modele statice ale frecării

3.7.2.2 Modele dinamice ale frecării

Concluzii privind modelele forței de frecare

Studiu de caz 3. Identificarea modulară a modelului dinamic

al forței de frecare

Concluzii

CAP.4 METODOLOGII DE CONDUCERE CU REȚELE NEURONALE

Introducere

Conducerea sistemelor neliniare cu ajutorul rețelelor neuronale

Controlul neuronal în circuit deschis, bazat pe model invers

Controlul neuronal în circuit închis, bazat pe model

Control neuronal prin corecția comenzii

Control neuronal cu model intern

Control neuronal predictiv

Control neuronal prin supervizare

Conducerea sistemelor neliniare utilizând un regulator neuronal PID

Studiu de caz 1

Studiu de caz 2. Reglarea temperaturii într-o incintă

folosind un neuroregulator PID

Conducerea sistemelor neliniare cu ajutorul

rețelelor neuronale modulare

Prezentarea structurii de conducere modulară

Studiu de caz. Reglarea nivelului unui lichid folosind

rețele neuronale modulare

Concluzii

CAP.5 CONCLUZII

Concluzii generale

Contribuții

Diseminarea rezultatelor

BIBLIOGRAFIE

ANEXA A

ANEXA B

ANEXA C

ANEXA D

ANEXA E

Prefață

„Important este sa nu te oprești din a-ți pune întrebări”

„Dacă cineva nu a greșit niciodată,

înseamnă că nu a încercat să facă nimic nou.”

Albert Einstein

Inteligența artificială (rețelele neuronale artificiale, sistemele fuzzy, sistemele expert, sistemele evolutive), în conjuncție cu domeniul automaticii, poate oferi soluții alternative pentru rezolvarea unor probleme dificile din domeniul conducerii automate. Această lucrare ia în discuție doar utilizarea rețele neuronale artificiale (RNA).

În general, de-a lungul timpului, s-au evidențiat două tipologii de RNA: RNA fără dinamică și RNA cu dinamică (legături recurente, transformări funcționale, filtre). Fiecare din aceste două categorii prezintă avantaje și dezavantaje. RNA din prima categorie prezintă avantajul că au o convergență destul de bună a algoritmilor de instruire, dar utilizarea lor în rezolvarea unor probleme complexe (de exemplu, identificarea unui sistem cu neliniarități esențiale sau cu o dependență complexă de intrările și ieșirile anterioare) poate fi anevoioasă. Cea de-a doua categorie poate rezolva problemele amintite anterior cu o mai mare ușurință, dar în detrimentul unei convergențe mai slabe algoritmilor de antrenare sau al cerințelor computaționale și de memorie mai mari. De aceea, în această lucrare s-a încercat utilizarea avantajelor fiecărei categorii în elaborarea unor structuri neuronale noi.

În condițiile în care sistemul de studiat (de identificat) poate fi descompus în subsisteme, descompunere ce poate fi sugerată și de proprietățile fizice, chimice, constructive ale sistemului, atunci este recomandabil să se utilizeze această abordare. Este mai simplu de lucrat cu un grup de subsisteme decât cu un întreg sistem, mai ales dacă acesta și un sistem neliniar complex. Similar cu această abordare este și abordarea modulară. Totuși, în această abordare, modulele trebuie să aibă o structură internă bine definită și independentă de celelalte module. De asemenea, legăturile dintre module trebuie să fie puține și bine definite. Aceste considerente permit ca fiecare modul să fie proiectat, analizat și înțeles separat.

În cadrul tezei se exploatează aceste concepte de descompunere în subsisteme și de modularitate, propunând o serie de structuri noi de identificare și conducere. Lucrarea își propune să ofere o alternativă la metodele clasice de identificare și control al sistemelor.

Din punct de vedere al relevanței și caracterului de noutate, multe din aspectele abordate în teză (de la dezvoltarea și implementarea unei structuri de identificare bazată pe descompunerea unui sistem în subsisteme, până la elaborarea unei structuri neuronale modulare de conducere și identificare) se încadrează în aceste repere.

Lucrarea este structurată în cinci capitole după cum urmează:

Capitolul 1 prezintă cele mai importante structuri de rețele neuronale artificiale (RNA) ce pot fi utilizate în structuri de identificare și conducere, dintre care putem enumera: RNA multistrat, RNA cu recurență totală (Hopfield) sau recurență parțială (Elman, Jordan, neuroni memorie), RNA cu filtre de tip ARMA sau cu transformări funcționale, RNA de tip radial basis function cu dinamică. De asemenea, sunt prezentați cei mai importanți algoritmi de antrenare pentru RNA cu și fără dinamică. În ultima parte a capitolului sunt enumerate principiile de bază care trebuie avute în vedere în cazul identificării și conducerii unui proces cu RNA.

Capitolul 2 propune o structură neuronală nouă de identificare, denumită Internal Recurrent Neural Network (IRNN). Pentru început este prezentată o metodologie generală de identificare cu RNA multistrat, ce include și o clasificare a modelelor neuronale. Pornind de la exemplele oferite de [Brun 94], [Sjöv 08], este propus un caz particular de descompunere a unui sistem neliniar în subsisteme. Structura IRNN este utilizată pentru identificarea unui sistem ce utilizează acest tip de descompunere. Ultima parte a capitolului prezintă în detaliu algoritmul de antrenare al IRNN. Validarea structurii IRNN este realizată pe un sistem real: identificarea sistemului automobil. În acest sens, în prealabil sunt oferite câteva detalii despre simulatorul auto ce înglobează și un model matematic al automobilului.

Capitolul 3 prezintă o structură de identificare modulară, care folosește RNA multistrat, atât pentru module, cât și pentru comutatorul instruibil care le selectează. Noutatea constă și în modalitatea de stabilire al numărului de module: pe baza caracteristicii statice a procesului. În acest sens, este prezentat un algoritm de partiționare a caracteristicii statice. Validarea structurii de identificare modulară este realizată, într-o primă etapă, pe un studiu de caz din literatură [Sale 90]: sistem de reglare a nivelului unui lichid. Structura de identificare este testată, de asemenea, pe un sistem real întâlnit în mediul industrial: un sistem pneumatic. Structura de identificare modulară este testată și pe un model de frecare. În acest sens sunt prezentate noțiuni despre fenomenologia frecării și cele mai importante modele statice și dinamice ale acesteia.

Capitolul 4 este dedicat unor contribuții privind utilizarea RNA multistrat în conducerea proceselor. Într-o primă etapă sunt prezentate cele mai importante structuri de conducere din literatura de specialitate. Apoi, este o propusă o structură neuronală de conducere de tip PID. În acest sens, este prezentat algoritmul de antrenare aferent. De asemenea, este realizată o implementare a acestei structuri de conducere neuronală în limbajul C++. Validarea este realizată pe un sistem de reglare a temperaturii. Ultima parte a capitolului este dedicată conducerii sistemelor neliniare folosind rețele neuronale modulare. Pentru această problemă se prezintă structura neuronală modulară de conducere și algoritmul de antrenare, implementarea în Matlab și aplicarea structurii de conducere și a algoritmului de antrenare la controlul nivelului unui lichid dintr-un stand de laborator.

Concluziile finale și contribuțiile tezei sunt prezentate în Capitolul 5.

CAPITOLUL 1

STADIUL CUNOAȘTERII ÎN DOMENIU

1.1 Rețele neuronale artificiale. Noțiuni generale.

1.1.1 Definiția rețelelor neuronale artificiale

Deoarece nu există o definiție general acceptată a noțiunii de rețea neuronală artificială (RNA), se vor fi prezenta opiniile unora dintre cei mai cunoscuți specialiști în domeniu [Hayk 1997], [Koho 1989]. Ideile desprinse din aceste “definiții” ilustrează cu claritate câteva caracteristici de bazăat utilizarea avantajelor fiecărei categorii în elaborarea unor structuri neuronale noi.

În condițiile în care sistemul de studiat (de identificat) poate fi descompus în subsisteme, descompunere ce poate fi sugerată și de proprietățile fizice, chimice, constructive ale sistemului, atunci este recomandabil să se utilizeze această abordare. Este mai simplu de lucrat cu un grup de subsisteme decât cu un întreg sistem, mai ales dacă acesta și un sistem neliniar complex. Similar cu această abordare este și abordarea modulară. Totuși, în această abordare, modulele trebuie să aibă o structură internă bine definită și independentă de celelalte module. De asemenea, legăturile dintre module trebuie să fie puține și bine definite. Aceste considerente permit ca fiecare modul să fie proiectat, analizat și înțeles separat.

În cadrul tezei se exploatează aceste concepte de descompunere în subsisteme și de modularitate, propunând o serie de structuri noi de identificare și conducere. Lucrarea își propune să ofere o alternativă la metodele clasice de identificare și control al sistemelor.

Din punct de vedere al relevanței și caracterului de noutate, multe din aspectele abordate în teză (de la dezvoltarea și implementarea unei structuri de identificare bazată pe descompunerea unui sistem în subsisteme, până la elaborarea unei structuri neuronale modulare de conducere și identificare) se încadrează în aceste repere.

Lucrarea este structurată în cinci capitole după cum urmează:

Capitolul 1 prezintă cele mai importante structuri de rețele neuronale artificiale (RNA) ce pot fi utilizate în structuri de identificare și conducere, dintre care putem enumera: RNA multistrat, RNA cu recurență totală (Hopfield) sau recurență parțială (Elman, Jordan, neuroni memorie), RNA cu filtre de tip ARMA sau cu transformări funcționale, RNA de tip radial basis function cu dinamică. De asemenea, sunt prezentați cei mai importanți algoritmi de antrenare pentru RNA cu și fără dinamică. În ultima parte a capitolului sunt enumerate principiile de bază care trebuie avute în vedere în cazul identificării și conducerii unui proces cu RNA.

Capitolul 2 propune o structură neuronală nouă de identificare, denumită Internal Recurrent Neural Network (IRNN). Pentru început este prezentată o metodologie generală de identificare cu RNA multistrat, ce include și o clasificare a modelelor neuronale. Pornind de la exemplele oferite de [Brun 94], [Sjöv 08], este propus un caz particular de descompunere a unui sistem neliniar în subsisteme. Structura IRNN este utilizată pentru identificarea unui sistem ce utilizează acest tip de descompunere. Ultima parte a capitolului prezintă în detaliu algoritmul de antrenare al IRNN. Validarea structurii IRNN este realizată pe un sistem real: identificarea sistemului automobil. În acest sens, în prealabil sunt oferite câteva detalii despre simulatorul auto ce înglobează și un model matematic al automobilului.

Capitolul 3 prezintă o structură de identificare modulară, care folosește RNA multistrat, atât pentru module, cât și pentru comutatorul instruibil care le selectează. Noutatea constă și în modalitatea de stabilire al numărului de module: pe baza caracteristicii statice a procesului. În acest sens, este prezentat un algoritm de partiționare a caracteristicii statice. Validarea structurii de identificare modulară este realizată, într-o primă etapă, pe un studiu de caz din literatură [Sale 90]: sistem de reglare a nivelului unui lichid. Structura de identificare este testată, de asemenea, pe un sistem real întâlnit în mediul industrial: un sistem pneumatic. Structura de identificare modulară este testată și pe un model de frecare. În acest sens sunt prezentate noțiuni despre fenomenologia frecării și cele mai importante modele statice și dinamice ale acesteia.

Capitolul 4 este dedicat unor contribuții privind utilizarea RNA multistrat în conducerea proceselor. Într-o primă etapă sunt prezentate cele mai importante structuri de conducere din literatura de specialitate. Apoi, este o propusă o structură neuronală de conducere de tip PID. În acest sens, este prezentat algoritmul de antrenare aferent. De asemenea, este realizată o implementare a acestei structuri de conducere neuronală în limbajul C++. Validarea este realizată pe un sistem de reglare a temperaturii. Ultima parte a capitolului este dedicată conducerii sistemelor neliniare folosind rețele neuronale modulare. Pentru această problemă se prezintă structura neuronală modulară de conducere și algoritmul de antrenare, implementarea în Matlab și aplicarea structurii de conducere și a algoritmului de antrenare la controlul nivelului unui lichid dintr-un stand de laborator.

Concluziile finale și contribuțiile tezei sunt prezentate în Capitolul 5.

CAPITOLUL 1

STADIUL CUNOAȘTERII ÎN DOMENIU

1.1 Rețele neuronale artificiale. Noțiuni generale.

1.1.1 Definiția rețelelor neuronale artificiale

Deoarece nu există o definiție general acceptată a noțiunii de rețea neuronală artificială (RNA), se vor fi prezenta opiniile unora dintre cei mai cunoscuți specialiști în domeniu [Hayk 1997], [Koho 1989]. Ideile desprinse din aceste “definiții” ilustrează cu claritate câteva caracteristici de bază ale RNA, și anume structura paralelă de procesare, capacitatea de a învăța și capacitatea de generalizare. În mod concret, cele expuse în continuare răspund la o serie de întrebări: ce este o rețea neurală artificială ?; care este legătura cu creierul biologic ?; unde se aplică această tehnologie ? [Zaha 2006].

Simon Haykin (Universitatea Mc Master, Canada):

„O RNA reprezintă un sistem de procesare paralelă care prezintă o capacitate naturală de a acumula experiență și de a o folosi. Se aseamănă cu creierul uman sub două aspecte:

1. cunoștințele sunt dobândite în urma unui proces de învățare;

2. cunoștințele sunt stocate în valorile interconexiunilor dintre neuroni (denumite ponderi sau sinapse).

Interesul pentru sinteza unor RNA este motivat de performanțele creierului natural, care oferă dovada concretă că modul de procesare paralel, dublat de toleranța la erori, este nu numai posibil, dar și rapid și eficient. Astfel, din punct de vedere ingineresc, neurobiologia poate fi privită ca o “pepinieră” de idei noi, posibil de utilizat pentru rezolvarea unor probleme prea complicate pentru metodele tradiționale. Un exemplu concret de întrepătrundere a abordării strict tehnice cu cea biologică îl constituie implementarea așa-numitelor circuite integrate “neuromorfice”, bazate pe modele ale retinei sau ale urechii interne”.

Teuvo Kohonen (Universitatea Tehnologică din Helsinki, Finlanda):

„RNA reprezintă ansambluri de elemente de procesare simple (de regulă, adaptive), puternic interconectate și operând în paralel, care urmăresc să interacționeze cu mediul înconjurător într-un mod asemănător creierelor biologice.

Următoarele aspecte sunt comune atât RNA cât și celor biologice:

– reprezentarea și procesarea informației în formă analogică (care permite desfășurarea în paralel a mai multor procese în mod asincron),

– abilitatea de a efectua operațiuni de natură statistică asupra datelor de lucru (operațiuni de mediere, de regulă condiționată),

– corecția de erori și degradarea graduală a performanțelor la apariția acestora,

– capacitate de adaptare la un mediu în continuă schimbare.

RNA s-au impus ca instrumente puternice de analiză a unor volume mari de date experimentale, generate de procese fizice ghidate de legi necunoscute, pentru care aceste sisteme pot oferi modele adecvate. Această tehnologie nu își propune ca obiectiv principal obținerea unor circuite motivate anatomic, ci funcțional, astfel încât să beneficiem de metode de procesare eficiente complementare celor tradiționale, disponibile sub forma de algoritmi de calcul și componente hard si soft”.

Robert Hecht-Nielsen (Universitatea California din San Diego, S.U.A.)

„O RNA este o structură de procesare distribuită, operând în paralel, formată din procesoare simple (care posedă memorie locală și efectuează operații dependente de informații localizate spațial) interconectate prin legături unidirecționale. Fiecare procesor elementar are o singura ieșire, care este distribuită către un număr nelimitat de alte asemenea procesoare.

Caracterul local al operațiunilor efectuate se referă la condiția ca valoarea instantanee a răspunsului fiecărui neuron elementar să depindă exclusiv de valorile instantanee ale semnalelor de intrare și de valorile interconexiunilor aferente acestora.

RNA oferă o bază solidă pentru proiectarea unor sisteme complexe de prelucrare a semnalelor. Au fost propuse deja o serie întreagă de module funcționale care realizează sarcini precise și care pot fi interconectate sub forma unor arhitecturi flexibile, pot fi supuse unui proces automat de ajustare a parametrilor specifici și testate cu baze de date corespunzătoare unor aplicații practice concrete. Când o astfel de abordare automatizată la nivel de design de detaliu se va impune, rolul proiectantului uman se va concentra pe aspectele globale, la nivel de schemă-bloc a sistemului”.

1.1.2 Specificul calculului neuronal

Din punct de vedere funcțional o RNA este un sistem ce primește date de intrare (corespunzătoare datelor inițiale ale unei probleme) și produce date de ieșire (ce pot fi interpretate ca răspunsuri ale problemei analizate) [Zaha 2006]. O caracteristică esențială a RNA este capacitatea de a se adapta la mediul informațional corespunzător unei probleme concrete, printr-un proces de învățare. În felul acesta, rețeaua extrage modelul problemei pornind de la exemple.

Din punct de vedere structural, o RNA este un ansamblu de unități interconectate (neuroni), fiecare fiind caracterizată de o funcționare simplă. Funcționarea unităților este influențată de o serie de parametri adaptabili. Astfel, o rețea neuronală este un sistem extrem de flexibil.

Structura unităților funcționale, prezența conexiunilor și a parametrilor adaptivi precum și modul de funcționare sunt inspirate de creierul uman. Fiecare unitate funcțională primește câteva semnale de intrare pe care le prelucrează și produce un semnal de ieșire. Interacțiunea multor unități cu funcționare simplă conduce la un sistem care poate să rezolve probleme complexe. Funcționarea sistemului este controlată de un set numeros de parametri ajustabili, care permit acestuia să se adapteze cât mai fidel mediului informațional în care este amplasat (specific problemei de rezolvat). Una dintre cele mai importante caracteristici ale unui sistem neuronal este caracterul său adaptiv, faptul că poate să-și stabilească parametrii de funcționare printr-un proces de învățare bazat pe informațiile primite. Astfel de sisteme sunt adecvate problemelor care sunt dificil sau chiar imposibil de formalizat, pentru ele existând doar exemple de rezolvare.

1.1.3 Structura unei rețele neuronale artificiale

O RNA este un ansamblu de unități funcționale amplasate în nodurile unui graf orientat [Zaha 2006]. De-a lungul arcelor grafului circulă semnale care permit unităților funcționale să comunice între ele. Elementele definitorii ale unei RNA sunt menționate în cele ce urmează.

• Arhitectura: specifică modul în care sunt amplasate și interconectate unitățile funcționale. Arhitectura determină și fluxul informațional în cadrul rețelei.

• Funcționarea: specifică modul în care fiecare unitate în parte și rețeaua în ansamblul ei transformă semnalele de intrare în semnale de ieșire. Funcționarea este influențată de arhitectură, în special de modul de interconectare a unităților.

Adaptarea (învățarea): specifică modul de stabilire a parametrilor ajustabili, astfel încât rețeaua să poate rezolva anumite probleme. In funcție de natura informației de care se dispune, învățarea poate fi supervizată sau nesupervizată.

Învățarea constă în modificarea funcționalității rețelei prin modificarea parametrilor și/sau a structurii acesteia. Procesul de învățare bazat pe adaptarea parametrilor constă în existența unor reguli de modificare a parametrilor și a unui algoritm (de regulă iterativ) de aplicare a acestor reguli.

1.1.4 Ce pot și ce nu pot face rețelele neuronale

Ce pot face rețelele neuronale? În principiu, pot reprezenta orice funcție calculabilă. Mai important este însă, că pot învăța orice astfel de funcție pornind de la exemple. Nu sunt însă eficiente pentru orice problemă, ele fiind utile în rezolvarea problemelor pentru care se dispune de un număr mare de exemple și pentru care nu pot fi găsite ușor și rapid reguli de formalizare. Abilitatea unei RNA de a rezolva o anumită problemă este influențată și de modul în care sunt pregătite datele de intrare. Fără o preprocesare atentă a datelor de intrare, demersul rezolvării problemei cu rețele neuronale poate fi sortit eșecului.

A fost demonstrat că o RNA multistrat cu un singur strat ascuns este un aproximator universal [Cybe 1989], [Horn 1989]. O astfel de rețea poate aproxima orice funcție continuă cu o precizie arbitrară dacă există date de antrenare suficiente și adecvate, iar rețeaua are un număr suficient de neuroni în stratul ascuns. Demonstrațiile din lucrările citate mai sus au la bază niște teoreme cunoscute din matematică:

1. Teorema de aproximare a lui Weierstrass (1885): orice funcție continuă definită pe intervalul [a, b] poate fi uniform aproximată cu o precizie dorită de o funcție polinomială.

2. Teorema de aproximare a lui Kolmogorov (1957): există o serie de funcții hpq(x), definite în intervalul I =[0 1], astfel încât funcțiile f definite pe In să poate fi scrise sub forma:

(1.1)

unde gq sunt funcții de o singură variabilă alese adecvat.

Categoriile de probleme pentru care RNA au fost aplicate cu succes sunt: clasificare și recunoaștere, gruparea și categorisirea datelor, aproximare și estimare, predicție, optimizare, stocarea și regăsirea informației după conținut, modelare și control adaptiv, prelucrarea și analiza semnalelor.

1.1.5 Calculul neuronal în comparație cu calculul clasic și sistemele expert

Între abordarea problemelor cu ajutorul RNA și cea clasică, bazată pe implementarea unui algoritm pornind de la un model formal, există o serie de diferențe [Zaha 2006], [Cioc 2001]. Câteva dintre acestea sunt prezentate în tabelul 1.1.

Tabel 1.1 – Diferențe între prelucrarea neuronală și prelucrarea algoritmică [Zaha 2006]

Pe de altă parte, pot fi puse în evidență, în aceeași manieră, diferențele care există între RNA și sistemele expert:

Tabel 1.2 – Diferențe între RNA și sisteme expert [Zaha 2006]

1.1.6 Scurt istoric

Secolul XX a fost marcat de numeroase realizări legate de RNA. Cele mai semnificative sunt:

• 1943: apare lucrarea "A logical calculus of the ideas immanent in nervous activity" a cercetatorilor americani McCulloch si Pitts [McCu 1943], în care este introdus un model matematic pentru neuronul elementar. Deși caracterizat prin limitări majore, acest model permitea explicarea funcționarii unor ansambluri de neuroni elementari.

• 1949: cartea The Organization of Behavior: A Neuropsychological Theory a americanului D.O. Hebb [Hebb, 1949] prezintă modalitatea explicită de modificare a legăturilor dintre neuronii elementari, deschizând calea elaborării unei game largi de algoritmi de învățare.

• 1958: Rosenblatt [Rose 1957] introduce perceptronul ca model util în rezolvarea problemelor de clasificare și demonstrează o binecunoscută teoremă de convergență a algoritmului de adaptare corespunzător.

• 1959-60: Bernard Widrow și Marcian Hoff [Widr 1960] de la Universitatea din Stanford au dezvoltat modelele denumite "ADALINE" și "MADALINE" (denumirile provin de la Multiple ADAptive LINear Elements). ADALINE a fost dezvoltat pentru a recunoaște formele binare, fiind folosit cu succes în predicția biților proveniți de la o linie telefonică. MADALINE a fost prima rețea neuronală folosită în rezolvarea unei aplicații reale: a fost utilizată în eliminarea ecourilor de pe liniile telefonice.

• 1969: Minski si Papert [Mins 1969] demonstrează riguros în lucrarea Perceptrons că arhitecturile cu un singur strat formate din neuroni elementari de tip perceptron au limitări majore. Lansarea ideii (dovedite mai târziu a fi false) că aceste limitări se "transferă" și la arhitecturile de tip multistrat avea sa "înghețe" interesul cercetătorilor din acest domeniu pentru mai mult de un deceniu.

• În anii 60 s-a dezvoltat foarte mult teoria sistemele instruibile, însă cu aplicații pe calculatoare universale. Pe de altă parte, cercetările în domeniul rețelelor neuronale au cunoscut un regres datorat, în primul rând, limitărilor tehnologice. Primele rețele neuronale construite cu structuri de tip ADALINE au fost dezvoltate de Widrow și Hoff în 1958-1960 și au avut la bază dispozitive electrochimice (memorii analogice) numite memistoare. Evident, o asemenea bază tehnologică nu putea asigura o evoluție solidă noului domeniu. La începutul anilor 70, odată cu progresul microtehnologiei electronice, s-a creat o nouă bază tehnologică pentru domeniul rețelelor neuronale și interesul pentru acestea a crescut foarte mult.

• 1972: Teuvo Kohonen introduce un model de memorie asociativă denumit asociator liniar.

• 1982: cercetătorul american J.J. Hopfield publică o lucrare științifică [Hopf 1982], în care introduce un punct de vedere elegant asupra funcționarii rețelelor neurale recurente cu conexiuni simetrice.

• 1986: Rumelhart, Hinton si Williams [Rume 1986] prezintă algoritmul de adaptare cunoscut sub numele backpropagation (cu propagarea inversă a erorii), utilizat pentru antrenarea rețelelor de tip perceptron multistrat. Acest algoritm, descris pentru prima dată de fapt în teza de doctorat a lui P.J. Werbos (1974), constituie și în prezent soluția cea mai des utilizată în aplicații dintre cele mai diverse.

• 1987: la San Diego (SUA) se desfășoară prima conferința internațională consacrată RNA. În următorii câțiva ani apar primele reviste specifice acestui domeniu (IEEE Transactions on Neural Networks, Neural Networks, Neural Computation), precum și unele organizații de profil (International Neural Networks Society, Neural Networks Council din cadrul IEEE).

1.2 Topologii de rețele neuronale artificiale cu și fără dinamică

În cadrul acestui paragraf se vor prezenta cele mai importante tipuri de RNA care pot fi utilizate în structuri de identificare și conducere a proceselor.

RNA pot fi clasificate după mai multe criterii. În contextul tematicii acestei teze, în cadrul acestui paragraf va fi luată în discuție o singură clasificare și anume cea care împarte RNA în:

– RNA fără dinamică (RNA multistrat);

– RNA cu dinamică (internă sau externă);

1.2.1 RNA multistrat

RNA multistrat sunt în continuare foarte populare datorită simplității și ușurinței în utilizare. Arhitectura lor se bazează pe organizarea neuronilor pe straturi. În principiu, o RNA multistrat poate conține un strat sau mai multe straturi ascunse. În figura 1.1 este reprezentată o RNA multistrat cu un singur strat ascuns.

Fig. 1.1 RNA multistrat

unde: Pi – reprezintă intrările în rețea (); Tj- reprezintă ieșirile din rețea ();

Xk – reprezintă ieșirile stratului ascuns (); Wk,i, Vj,k – reprezintă ponderile RNA.

Ieșirile RNA sunt calculate cu o relație de forma:

(1.2)

unde f1, f2, f3 – reprezintă funcțiile de activare ale celor 3 straturi. S-a considerat un caz simplificat de RNA, în care nu intervin și valorile de prag. De asemenea, neuronii de pe stratul 1 nu realizează nicio procesare a informației, ci doar o distribuție către stratul 2.

1.2.2 RNA cu dinamică externă

RNA cu dinamică externă utilizează RNA statice [Nare 1990; Nare 1992], la care se adaugă și elemente de dinamică.

În cel mai general caz, un model neliniar intrare – ieșire descrie ieșirea estimată, , ca o funcție de intrările și ieșirile filtrate [Mire 2002b]. Dacă se consideră q-1 drept operatorul de întârziere cu un pas, atunci se poate scrie:

(1.3)

în care nu și ny sunt ordinele procesului dinamic, iar d reprezintă timpul mort. Acești parametri trebuie cunoscuți a priori. Funcția necunoscută poate fi aproximată printr-o RNA statică, și fiind filtre liniare care furnizează RNA statice informații despre valorile anterioare ale intrărilor și ieșirilor rețelei, așa cum este ilustrat în fig. 1.2:

Fig. 1.2 Structura generală a unei RNA eu structură dinamică externă [Mire 2002b]

În funcție de modul de alegere al filtrelor liniare, pot fi evidențiate următoarele abordări [Iser 1997]:

a) RNA cu reacție după ieșirea rețelei

În acest caz apare reacția după ieșirea filtrată a rețelei, filtrele de regulă fiind elemente simple de întârziere:

, (1.4)

relația (1.3) devenind:

(1.5)

Reacția după ieșire determină, în general, pentru astfel de modele neuronale, ca stabilitatea acestor rețele să nu poată fi dovedită cu ușurință. De regulă, în practică, se realizează o reacție după ieșirea măsurată și filtrată din procesul real, în locul reacției după ieșirea rețelei.

b) RNA cu răspuns finit la impuls: această abordare nu implică reacție după ieșire, filtrele care apar în relația generală (1.3) fiind de forma:

, (1.6)

în felul acesta, ieșirea unui astfel de model neuronal este dată de relația:

(1.7) Această abordare este de fapt similară aceleia în care un sistem este aproximat prin serii Volterra. Dezavantajul acestei abordări este acela că nu trebuie să fie foarte mare, teoretic el trebuind să tindă la infinit, pentru o modelare exactă a procesului, lucru care determină o creștere a dimensiunii spațiului de intrare. Deoarece acest tip de modele nu implică reacție după ieșire, stabilitatea lor este garantată.

Un caz particular al rețelelor cu răspuns finit la impuls sunt rețele neuronale cu funcții de bază ortonormate. Acest tip de rețele încorporează, prin intermediul filtrelor, informații apriorice despre sistemul supus atenției, informații legate de existența și tipul polilor dominanți; cu cât aceste informații sunt mai precise, cu atât ordinul nu necesar unei modelări adecvate scade mai mult.

1.2.3 RNA cu dinamică internă

RNA cu elemente dinamice interne se obțin dotând RNA statice cu memorie, deci modificând structura internă a neuronilor, așa cum este prezentată în fig. 1.3 [Iser 1997], [Mire 2002b]. Spre deosebire de RNA cu dinamică externă, la intrarea RNA cu dinamică internă nu mai este necesară furnizarea de valori anterioare ale intrărilor și ieșirilor din proces, în felul acesta reducându-se dimensiunea spațiului de intrare.

RNA cu structură dinamică internă au următoarea descriere generală în spațiul stărilor:

(1.8)

Fig. 1.3 Rețea neuronală cu structură dinamică internă [Mire 2002b]

În funcție de modul în care este realizată intern (la nivelul neuronilor) recurența putem avea trei tipuri de rețele:

Rețele cu recurență totală: au în structura lor neuroni complet interconectați, fiecare neuron reprezentând o stare internă a rețelei, așa cum se poate observa și în fig. 1.4 [Will 1990]; dezavantajul acestei configurații este convergența lentă a procedurii de antrenare și problemele care apar legate de stabilitatea sa.

Fig. 1.4 Rețea neuronală cu recurență totală [Mire 2002b]

Rețele neuronale parțial recurente: au la bază structura generală a RNA, dar conțin suplimentar un strat de neuroni de context (fig. 1.5 ); neuronii stratului de context au rolul de memorie internă a modelului neuronal.

Fig. 1.5 Rețea neuronală parțial recurentă [Mire 2002b]

Cazuri particulare ale acestor tipuri de rețele pot fi: rețele cu neuroni memorie, rețele Elman, rețele Jordan.

1.2.3.1. Rețele cu neuroni memorie

Se știe faptul că ieșirea unui sistem la un anumit moment t1 depinde atât de structura sistemului, cât și de intrarea u(t) pentru t[t1-r,t1], unde parametrul r depinde de memoria sistemului. În strânsă concordanță cu această constatare, s-au dezvoltat structuri de rețele care rețin informația în neuroni numiți neuroni memorie [Sast 1994].

Arhitectura unei rețele cu trei straturi, care conține neuroni memorie este arătată în fig. 1.6.

Fig. 1.6 Structura unei rețele cu neuroni memorie [Sast 1994]

Comparativ cu o rețea neuronală clasică, RNA din fig. 1.6 conține neuroni memorie atașați la fiecare unitate din rețea. Neuronul memorie are ca intrare ieșirea neuronului corespondent din rețea și mai are, de asemenea, și o autoreacție. Toți neuronii de rețea, precum și neuronii memorie, trimit informație numai neuronilor din rețea ai nivelului următor. Fiecare neuron de rețea care aparține nivelului de ieșire poate avea o cascadă de neuroni memorie, fiecare dintre ei trimițând ieșirea lor către neuronul de rețea corespunzător.

Având în vedere structura rețelei din fig. 1.6, ieșirea neuronului j de pe stratul (l+1) la momentul k este dată de relația:

(1.9)

unde:

reprezintă ponderea conexiunii dintre neuronul i al stratului l și neuronul j al stratului l+1, la momentul k;

reprezintă ieșirea neuronului i al stratului l la momentul k;

reprezintă ponderea conexiunii dintre neuronul memorie i de pe stratul l și neuronul rețea j de pe stratul l+1 la momentul k;

reprezintă ieșirea neuronului memorie i al stratului l la momentul k;

Nl este numărul de neuroni de pe stratul l.

l[1,L] reprezintă stratul curent din rețea, L fiind numărul total de straturi.

În primul termen din relația (1.9), contorul i se inițializează cu 0, deoarece intervine și deplasarea neuronului de rețea j. Ieșirile neuronilor de pe ultimul strat se calculează cu relația

(1.10)

unde :

,,,au aceeași semnificație ca în cazul relației (1.9);

reprezintă ieșirea neuronului de memorie i asociat neuronului j de rețea al stratului de ieșire;

reprezintă conexiunea dintre neuronul j al stratului de ieșire și neuronul memorie i asociat neuronului j.

Ieșirea neuronului de memorie j de pe stratul l asociat neuronului de rețea j este dată de relația:

(1.11)

iar pentru neuronii de memorie ai stratului de ieșire avem relația

(1.12)

Pentru a asigura stabilitatea dinamicii rețelei se impune ca parametrii,, să aparțină intervalului [0 1].

Fiecare neuron de memorie stochează o combinație a activităților precedente ale neuronilor de rețea. Ieșirea neuronilor memorie este obținută prin trecerea ieșirii neuronilor de rețea printr-un filtru de ordinul unu, cu coeficient static unitar. Menținând coeficienții ,, între 0 și 1, se asigură stabilitatea filtrului.

Pentru instruirea rețelei se utilizează metoda gradientului cu pas descrescător, care urmărește minimizarea sumei erorilor pătratice:

(1.13)

unde: reprezintă ieșirea neuronului j al stratului de ieșire;

reprezintă ieșirea impusă neuronului j .

Eroarea se propagă înapoi numai prin neuronii de rețea, în vederea ajustării conexiunilor tuturor neuronilor.

Ecuațiile finale prin care se ajustează parametrii rețelei sunt:

(1.14)

unde reprezintă pasul de ajustare, iar

(1.15)

Relația anterioară reprezintă propagarea înapoi standard a erorii, fără a lua în considerare neuronii memorie. Funcția din relațiile (1.15) reprezintă derivata funcției de activare a neuronilor rețelei.

Pentru ajustarea ponderilor corespunzătoare neuronilor memorie se utilizează relațiile

(1.16)

Relațiile cu ajutorul cărora se ajustează coeficienții ,, sunt:

(1.17)

unde: (1.18)

Pentru ajustarea coeficienților neuronilor memorie se utilizează un pas de ajustare notat cu , deferit de .

1.2.3.2. Rețele neuronale Elman

Rețelele neuronale Elman [Elma 1990] se deosebesc de RNA multistrat prin faptul că mai conțin un strat de neuroni numit STRAT CONTEXT , care are rolul de a memora starea (contextul) ieșirilor stratului ascuns la momentul k și de a readuce informația (după ce se realizează o transformare liniară) la intrările stratului ascuns, pentru a fi procesată la momentul (k+1). Schema de principiu a unei rețele Elman este prezentată în fig. 1.7.

Fig. 1.7 Structura unei rețele Elman

Intrările în rețeaua neuronală Elman sunt notate cu U(k-1), iar ieșirile rețelei sunt notate cu Y(k). Activitatea stratului ascuns se reține în vectorul X(k), iar ieșirile stratului context se notează cu Xc(k). De asemenea, se notează cu Wxu, Wyx, Wxc matricele care conțin ponderile conexiunilor dintre: stratul de intrare și stratul ascuns, stratul ascuns și stratul de ieșire și, respectiv, dintre stratul context și stratul ascuns.

Dacă funcția de activare a stratului de ieșire este liniară, iar deplasările neuronilor sunt egale cu zero, atunci relațiile care stau la baza procesării informației de către rețeaua Elman sunt următoarele:

(1.19)

unde F(.,.) reprezintă funcția de activare a stratului ascuns al rețelei Elman, care poate fi atât liniară, cât și neliniară. Dacă și funcția de activare a stratului ascuns este liniară, având deplasarea egală cu zero, atunci relațiile (1.19) se scriu sub forma:

(1.20)

Se poate constata faptul că RNA Elman conține elemente specifice reprezentărilor discrete corespunzătoare sistemelor dinamice. Acest fapt rezultă din ecuația următoare:

(1.21)

Pentru a obține ecuațiile care stau la baza algoritmului de instruire a ponderilor rețelei Elman, se consideră cazul unui sistem dinamic cu o singură intrare și o singură ieșire. Realizările utilizate la instruirea rețelei sunt . Eroarea medie pătratică între ieșirea rețelei și ieșirea impusă pentru întreg lotul de date este dată de relația:

(1.22)

Instruirea ponderilor Wxu, Wyx, Wxc apelează la metoda gradientului cu pas descrescător, care presupune o relație de forma

(1.23)

unde (kp) reprezintă rata de învățare, iar kp este pasul de instruire a parametrilor.

Pentru cazul considerat (sistem cu o singură intrare și o singură ieșire), relația (1.20) se scrie sub forma

(1.24)

Având în vedere relațiile (1.22) și (1.24), relația (1.23) – particularizată pentru matricele de ponderi Wxu, Wyx, Wxc – devine (Anexa B pentru relațiile suplimentare de calcul):

(1.25)

unde

reprezintă al i-lea element al vectorului X(k). reprezintă linia i din matricea.reprezintă linia i din matricea.

Dacă se ignoră dependența X(k) de Wxc, atunci se obține algoritmul backpropagation standard.

1.2.3.3. Rețele neuronale Jordan

Arhitectura unei rețele Jordan [Jord 1986] este dată în fig. 1.8. După cum se observă, o rețea Jordan se deosebește de o rețea Elman prin faptul că, în acest caz, informația de la ieșirea rețelei este adusă la intrarea unui strat ascuns numit strat de stare. Această structură de rețea este capabilă să stocheze informații anterioare cu privire la ieșirea sistemului, practic pentru un timp nelimitat.

Dacă ipotezele de lucru în cazul rețelei Jordan sunt aceleași ca și în cazul rețelei Elman, atunci relațiile prin intermediul cărora se procesează informația într-o rețea Jordan sunt:

(1.26)

unde s-a notat cu Xs vectorul ieșirilor neuronilor din stratul de stare.

Se observă faptul că vectorul de ieșire al stratului de stare la momentul k depinde și de vectorul de ieșire al stratului de stare la momentul (k-1) înmulțit cu o constantă α. Acest aspect este ilustrat în fig. 1.8, prin faptul că fiecare neuron al stratului de stare conține câte o autoreacție pozitivă la el însuși. Relațiile de instruire a ponderilor Wxu, Wyx, Wxc se determină în aceeași manieră ca și în cazul rețelei Elman.

Fig. 1.8 Structura unei rețele neuronale Jordan

1.2.3.4 RNA multistrat cu structură dinamică mixtă

RNA multistrat cu structură dinamică mixtă conține filtre de tip ARMA pe sinapsele neuronilor, filtre de tip ARMA situate înainte de blocul funcției de activare dar și legături recurente în straturile interne [Marc 1997]. În cele ce urmează, s-a considerat că RNA conține un singur neuron în stratul de ieșire. Indicele superior ce apare în denumirea variabilelor indică stratul căruia îi aparțin: litera h indică stratul intern (de intrare) și litera o stratul de ieșire al rețelei. S-a considerat că RNA are P intrări, up(k), p=1,P, variabila k indicând unul din vectorii de intrare aparținând setului de antrenare sau testare.

Următoarele variabile binare sunt folosite pentru a indica prezența (valoarea 1) sau absența (valoarea 0) uneia din cele 3 structuri dinamice de bază, prezentate în [Mire 2002b]:

iSGF – structura cu filtre generalizate pe sinapse;

iIGF – structura cu filtre interne generalizate (situate înainte de blocul funcției de activare);

iCHL – structura cu strat intern cu legături recurente.

Fig. 1.9 RNA multistrat cu structură dinamică mixtă [Mire 2002b]

Relațiile folosite pentru evaluarea semnalelor din rețea sunt:

stratul intern

; (1.27)

s=1,S

stratul de ieșire

(1.28)

Dacă filtrele sinaptice nu sunt incluse (iSGF=0), atunci se obține:

1.2.3.5 RNA cu legături funcționale cu structură dinamică

Plecând de la arhitecturile dinamice pentru RNA multistrat, se pot proiecta RNA cu legături funcționale cu structură dinamică [Mire 2002b]. Astfel de rețele pot realiza o transformare neliniară dinamică a mărimilor aplicate la intrare. RNA cu legături funcționale cu structură dinamică au fost dezvoltate din dorința de a îmbunătăți capacitatea de aproximare a unor funcții variabile în timp, oferită de rețelele statice cu filtre aplicate pe intrare, reducând totodată efortul de calcul din faza de antrenare, pe care l-ar implica folosirea unor rețele multistrat cu structură dinamică.

Rețeaua FLNN (Functional Link Neural Network) dinamică cu structură mixtă (în limba engleză: "Dynamic FLNN with MTXed structure" – DFLNNMIX) conține un filtru de tip ARMA cu ordine diferite pentru numărător și numitor, situat înainte de blocul funcției de activare al neuronului rețelei, și un filtru ARMA cu ordine diferite pentru numărător și numitor, situat pe calea de reacție de la ieșirea neuronului rețelei, către intrarea sa (fig. 1.10) [Mire 2000; Mire 2002a]. Transformarea funcțională este formată, de obicei, din seturi de funcții ortogonale cum ar fi polinoamele Legendre, Cebîșev și polinoamele trigonometrice. Avantajul folosirii polinoamelor trigonometrice constă în faptul că acestea oferă cea mai compactă reprezentare a funcției de aproximat, în sensul mediei pătratice.

Fig. 1.10 Arhitectura rețelei DFLNNMIX [Mire 2002b]

Ieșirea rețelei se calculează utilizând următoarele relații:

(1.29)

unde reprezintă ieșirea filtrului ARMA plasat înaintea blocului funcției de activare al neuronului rețelei:

(1.30)

În relația (1.30), nA și mB sunt gradele polinoamelor, iar ai, și bj, sunt coeficienții polinoamelor de la numitorul și, respectiv, numărătorul funcției de transfer a filtrului ARMA introdus. În relația (1.30), x(k) reprezintă suma ponderată a intrărilor actuale ale rețelei, la care se adaugă ieșirea filtrului ARMA introdus pe calea de reacție, de la ieșirea către intrarea neuronului rețelei:

(1.31)

În relația (1.31), reprezintă ieșirea filtrului ARMA ce implementează reacția locală de ieșire:

(1.32)

unde nC și mD sunt gradele polinoamelor, iar și sunt coeficienții polinoamelor de la numitorul și, respectiv, numărătorul funcției de transfer a filtrului ARMA introdus.

1.2.4 RNA de tip RBF cu dinamică

Deși rețelele neuronale RBF statice au capacitatea de a realiza o bună aproximare, aplicarea lor în practică a fost limitată de faptul că numărul neuronilor interni crește odată cu dimensiunea spațiului de intrare al rețelei. Pentru modelarea sistemelor dinamice neliniare, RNA statice trebuie sa aibă la intrare valorile curente și întârziate ale mărimile de intrare-ieșire din procesul supus atenției. Aceasta conduce la o creștere a spațiului de intrare al rețelei neuronale și, deci, la necesitatea folosirii unei rețele de tip RBF statică cu un strat intern de dimensiune mare.

Acest dezavantaj a fost eliminat prin folosirea unor rețele RBF care au în structura lor elemente dinamice sub forma unor filtre ARMA [Ayou 1996; Mire 1999]. În felul acesta, nu mai este nevoie ca la intrarea rețelei RBF dinamice să se aplice mărimi de intrare-ieșire din proces întârziate și, astfel, spațiul de intrare al rețelei neuronale este micșorat. În fig. 1.11 este prezentată structura de bază a unei rețele neuronale RBF dinamice formată din M neuroni dinamici radiali.

Fig. 1.11 Structura rețelei neuronale dinamice de tip RBF [Mire 2002b]

Ieșirea unui neuron dinamic radial este dată de relația:

(1.33)

în care k semnifică perechea de date de intrare pentru care se determină semnalele din rețea, iar și sunt coeficienții numitorului și, respectiv, numărătorului filtrului ARMA corespunzător neuronului radial m. Prin nA și nB s-au notat gradele numitorului și, respectiv, numărătorului. ci și σi, reprezintă centrii, respectiv pantele funcțiilor radiale

Ieșirea rețelei neuronale DRBF este dată de relația:

(1.34)

în care a0 este un termen constant, introdus pentru a modela valoarea medie a măsurătorilor din proces.

1.3 Algoritmi de antrenare pentru rețele neuronale artificiale

Algoritmul backpropagation clasic [Rume 1986] are la bază algoritmul gradientului cu pas descrescător și ține cont de suma erorilor pătratice pentru fiecare strat al rețelei. Cea mai simplă implementare a algoritmului backpropagation presupune actualizarea ponderilor și deplasărilor “în direcția” în care criteriul de optimizare descrește cel mai repede. O iterație a acestui algoritm, pentru actualizarea ponderilor și deplasărilor, poate fi scrisă pe scurt astfel:

(1.35)

unde W(k) este vectorul ponderilor și deplasărilor la iterația k, g(k) este gradientul curent iar µ este rata de învățare. Performanța algoritmului este foarte sensibilă la alegerea corectă a ratei de învățare: dacă ea este prea mare, algoritmul va deveni instabil; dacă este prea mică, algoritmul va avea o convergență slabă.

Algoritmul backpropagation clasic este lent din următoarele cauze [Hayk 1997]:

utilizează eroarea pătratică instantanee. Gradientul erorii pătratice instantanee nu este o estimare bună pentru gradientul erorii medii pătratice. De aceea, o minimizare satisfăcătoare a acestei erori necesită mai multe iterații în procesul de antrenare;

este un algoritm de minimizare de ordinul 1 ce se bazează pe derivate de ordinul 1 (gradient). Algoritmii mai rapizi se bazează pe derivatele de ordinul 2 (matricea hessiană) [LeCu 1993];

propagarea erorii presupune serializarea calculelor de la strat la strat.

Eroarea medie pătratică este o suprafață relativ complexă în spațiul ponderilor, posibil cu multe puncte de minim local, secțiuni plate, neregularități puternice. Complexitatea suprafeței poate conduce algoritmul de antrenare către minime locale, deci la o soluție suboptimală.

Algoritmii rapizi de antrenare pot fi împărțiți în două categorii. Prima categorie utilizează tehnici euristice, care au la bază analiza performanțelor algoritmului gradient cu pas descrescător. Cei mai importanți algoritmi din această categorie sunt: metoda momentum, algoritmul backpropagation cu rată adaptivă de învățare și algoritmul resilient (elastic, mobil) backpropagation. A doua categorie folosește metode numerice standard de optimizare. Cele mai importante sunt: algoritmul gradientului conjugat [Powe 1977; Beal 1972], quasi-Newton și Levenberg-Marquardt.

1.3.1 Metode euristice de îmbunătățire a algoritmului backpropagation

1.3.1.1 Metoda momentum

Algoritmul backpropagation furnizează o traiectorie „aproximativă” în spațiul parametrilor, calculată prin metoda gradientului descrescător. Dacă rata de învățare este prea mare, RNA multistrat poate deveni instabilă. O metodă simplă de creștere a ratei de învățare și, în același timp, de evitare a instabilității este includerea unui termen momentum în ecuația (1.35):

(1.36)

Introducerea termenului momentum, care este proporțional cu valorile anterioare ale ponderilor, conduce la eliminarea oscilațiilor și a traiectoriilor eronate în spațiul stărilor. Metoda momentum permite să răspundă nu doar la gradientul local, ci și la tendințele de pe suprafața de eroare. Această metodă acționează ca un filtru trece jos. Fără metoda momentum, rețeaua poate „ajumge” într-un punct de minim local.

1.3.1.2 Rată de învățare adaptivă

O rată adaptivă pe durata algoritmului de învățare presupune menținerea acesteia la valori cât mai mari, fără a intra în instabilitate. O strategie simplă este aceea de a monitoriza rata de modificare a erorii medii pătratice după cum urmează:

– dacă eroare medie pătratică E scade constant, adică este negativ pentru un anumit număr de pași atunci

µ(k+1) = µ(k) + α, α > 0 (1.37)

– dacă eroarea a crescut (> 0 ), atunci rata de învățare este diminuată

µ(k+1) =β µ(k), 0< β <1 (1.38)

1.3.1.3 Algoritmul resilient backpropagation

De obicei, RNA multistrat utilizează funcții de transfer sigmoidale pentru straturile ascunse. Funcțiile sigmoidale se caracterizează prin faptul că panta se apropie de 0 dacă valoarea intrării crește. Acest lucru poate cauza probleme la utilizarea algoritmului gradient descrescător, deoarece gradientul poate avea variații foarte mici, deci implicit conduce la variații mici ale ponderilor și deplasărilor. Scopul algoritmului resilient backpropagation este de a elimina efectul amplificărilor asupra derivatelor parțiale. Doar semnul, nu și valoarea, derivatelor parțiale este utilizat pentru a determina „direcția” modificării ponderilor. Cuanta cu care sunt modificate ponderile și deplasările este amplificată cu un factor γ atunci când derivata funcției de performanță în raport cu ponderile are același semn, în raport cu iterația anterioară. Cuanta cu care sunt modificate ponderile și deplasările este diminuată cu un factor γ, atunci când derivata funcției de performanță în raport cu ponderile își schimbă semnul în raport cu iterația anterioară. Dacă derivata este 0, ponderile nu vor fi modificate. În momentul când ponderile oscilează, cuanta cu care sunt modificate va fi diminuată. În general, algoritmul resilient backpropagation converge mult mai repede decât algoritmii prezentați anteriori.

1.3.2 Algoritmul gradientului conjugat

În majoritatea algoritmilor de antrenare prezentați anterior, rata de învățare stabilește cuanta cu care vor fi modificați parametri RNA multistrat. Există mai multe variații ale acestui algoritm, cele mai importante fiind: Fletcher-Reeves, Polak-Ribiére, Powell-Beale, Moller. Vor fi făcute căutări pe mai multe direcții, pentru a determina cuanta (cuanta este ajustată la fiecare pas) care va minimiza funcția de performanță în direcția respectivă. Toate variantele algoritmului au ca punct de plecare direcția în care gradientul este negativ și scăderea a avut panta cea mai abruptă:

p(0) = -g(0), unde g este gradientul curent (1.39)

Va fi efectuată o căutare pe direcția vectorului p(k) pentru a determina valoarea distanței optime cu care se va face „deplasarea” pe această direcție:

w(k+1) = w(k) + µ(k)p(k) (1.40)

unde w(k+1) reprezintă vectorul noilor ponderi, obținut din vectorul ponderilor curente la care se adaugă deplasarea pe direcția p(k).

Procedura pentru stabilirea noii direcții de căutare se poate face prin următoarea relație:

p(k+1) = -g(k) + β(k)p(k) (1.41)

unde β(k) sunt factori de scalare care sunt calculați astfel încât direcțiile p(k) și p(k+1) să fie conjugate în report cu matricea hessiană adică

p(k+1)H pT(k) =0 (1.42)

Diferența între diferitele variante ale metodei gradientului conjugat constau în modul cum sunt calculați coeficienții β. De asemenea, periodic, direcția de căutare este resetată la valoarea negativă a gradientului. În mod normal, momentul când are loc această resetare este atunci când numărul de iterații este egal cu numărul de parametrii ai rețelei (ponderi și deplasări), dar există și alte metode de resetare, care pot crește eficiența algoritmului de antrenare.

Pentru versiunea Powell-Beale a algoritmului, resetarea are loc atunci când unghiul dintre gradientul curent și cel anterior este foarte mic. Acest lucru poate fi verificat prin intermediul următoarei inegalități:

(1.43)

Dacă această condiție este verificată, direcția de căutare este resetată la valoarea negativă a gradientului.

Relația de ajustare pentru β, conform algoritmului Fletcher-Reeves, este:

(1.44)

iar pentru algoritmul Polak-Ribière este:

(1.45)

În concluzie, metoda gradientului conjugat presupune: căutare inițială plecând din punctul p(0) = -g(0), minimizarea pe direcția respectivă în report cu µ, calculul noii direcții de căutare conform cu relația (1.41) și a coeficientului β pe baza relațiilor de mai sus.

1.3.3 Algoritmul quasi-Newton

Algoritmul lui Newton este o alternativă la metoda gradientului conjugat, putându-se obține o optimizare mai rapidă. Regula de adaptare a parametrilor RNA multistrat este următoarea:

w(k+1) = w(k) + H -1(k)g(k) (1.46)

unde H este hessianul (matricea derivatele de ordin 2) indicelui de performanță în raport cu parametrii rețelei neuronale. Hessianul oferă informații suplimentare cu privire la forma suprafeței indicelui de performanță în vecinătatea lui w(k). Algoritmul lui Newton are o convergență mai rapidă în comparație cu algoritmul gradientului conjugat, dar este nevoie de calculul hessianului, care este extrem de costisitor în materie de resurse.

Algoritmul quasi-Newton (metoda secantei) este derivat din algoritmul Newton și nu cere calculul derivatelor de ordin 2. O aproximație a hessianului este folosită la fiecare iterație și este calculată pe baza gradientului.

1.3.4 Algoritmul Levenberg-Marquardt

Una din problemele algoritmului Newton este aceea că hessianul este de dimensiune foarte mare și rareori inversabil. Pentru a depăși această problemă, algoritmul Levenberg-Marquardt folosește o constantă µ:

(1.47)

unde J(w) este iacobianul ce conține derivatele erorilor RNA în raport cu ponderile și deplasările, I este matricea identitate, e(w) vector ce conține erorile RNA iar o µ constantă de valoare mică. Pentru valori mai mari ale lui µ, termenul poate fi neglijat. Astfel, cuanta cu care vor fi adaptați parametrii va fi -, care este tot un gradient descrescător. Valoarea lui µ este succesiv mărită atât timp cât acest lucru nu conduce la creșterea erorii. Totuși, dacă valoarea lui µ devine prea mare, nu mai are loc nici un proces de învățare, deoarece se apropie de 0. Acest lucru se întâmplă, de obicei, când s-a ajuns la un minim local. Pentru valori mici ale lui µ, algoritmul devine algoritmul lui Gauss-Newton.

1.3.5 Algoritm de antrenare bazat pe filtrul Kalman extins

Filtrul Kalman extins (EKF) utilizat pentru antrenarea RNA poate fi o alternativă foarte bună la metodele care se bazează pe calculul derivatelor de ordinul 2. Esența algoritmului EKF, aplicat la RNA, constă în calculul unei matrice de covarianță a erorii și în ajustarea parametrilor RNA într-un mod secvențial.

Algoritmul de antrenare EKF global (GEKF) a fost pentru prima oară prezentat de Singhal and Wu [Sing 1989] la sfârșitul anilor 80 și a servit ca punct de plecare pentru dezvoltarea unor variante îmbunătățite ale algoritmului. Totuși, deși are performanțe mai bune decât algoritmii backpropagation, cerințele de calcul sunt destul de mari. Complexitatea acestuia este dată de pătratul numărului de parametrii ai RNA, căreia îi este aplicat algoritmul GEKF.

Procesul de instruire a RNA poate fi descris de următorul set de ecuații:

(1.48)

(1.49)

în care ecuația (1.48) este cunoscută și sub denumirea de ecuația procesului. Ea specifică faptul că starea unei RNA ideale (stările în acest caz sunt considerate ponderile RNA wk) este un proces staționar afectat de zgomotul de proces . Ecuația (1.49), cunoscută și sub denumirea de ecuația de măsurare, explicitează mărimea de ieșire a RNA, yk, ca o funcție neliniară de vectorul de intrări uk, vectorul de ponderi wk. La această funcție se adaugă și zgomotul de măsură vk. Vectorii și vk se consideră a fi zgomote albe de medie zero și covarianțe și .

Problema antrenării utilizând teoria filtrelor Kalman presupune minimizarea mediei statistice a pătratului erorii de estimare a stării w. Se presupune că RNA are un număr de M parametri și No noduri de ieșire. Soluția EKF de antrenare, plecând de la relațiile clasice ale EKF, presupune efectuarea următorilor pași:

(1.50)

(1.51)

(1.52)

(1.53)

Vectorul reprezintă estimațiile stărilor sistemului (ponderile) la pasul k. Această estimație este calculată pe baza matricii de câștig Kalman Kk și a vectorului de eroare (relația 1.52). yk este vectorul țintă, iar este ieșirea RNA pentru eșantionul k. Matricea Kk se calculează pe baza matricei de covarianță a erorii Pk, a matricei Hk ce conține derivatele ieșirilor RNA în raport cu ponderile și a matricei Ak, ce reprezintă o matrice globală de scalare (relația 1.51). Matricea Ak este calculată pe baza matricei de covarianță a zgomotului de măsură Rk și a matricelor Hk și a Pk (relația 1.50).

Antrenarea RNA folosind algoritmul GEKF este sintetizată în fig. 1.12:

Fig. 1.12 Schema de aplicare a algoritmului EKF

Pașii care trebuie parcurși pentru ajustarea ponderilor în concordanță și cu fig. 1.12 sunt următorii:

vectorul de intrare uk este propagat înainte prin RNA, rezultând . De asemenea, tot în acest stagiu este calculat și vectorul de eroare ;

matricea Hk ce conține derivatele ieșirilor RNA în raport cu ponderile este obținută prin propagarea înapoi (Observație: are loc o propagare înapoi pentru fiecare componentă a vectorului);

este calculată matricea de câștig Kalman în funcție de matricea Hk, matricea de covarianță a erorii Pk și matricea de covarianță a zgomotului de măsură Rk;

vectorul ponderilor este ajustat pe baza matricei de câștig Kk, a vectorului de eroare și a vectorului curent de ponderi ;

matricea de covarianță a erorii este ajustată utilizând matricea de câștig Kk, matricea Hk și matricea curentă de covarianță a erorii Pk.

Observație: Algoritmul de antrenare pe baza EKF necesită inițializarea unui număr de parametri. Se presupune că lotul de date intrare-ieșire a fost scalat, astfel încât să se situeze într-o plajă rezonabilă de valori (medie zero). Ponderile sunt inițializate cu valori mici, obținute pe baza unei distribuții uniforme și de medie zero. Matricea de covarianță a erorii este astfel inițializată, încât să reflecte faptul că nu au fost utilizate cunoștințe apriori în setarea ponderilor: , unde . Matricea de covarianță a zgomotului de proces Qk este de forma . Pentru început, q poate fi 0.1. Matricea de covarianță a zgomotului de măsură Rk este de forma cu .

1.3.6 Algoritmi de antrenare pentru rețelele neuronale cu dinamică

1.3.6.1 Considerații generale

În general, sunt două abordări (cu multe variații în fiecare caz) pentru antrenarea RNA dinamice, care presupun calculul gradientului și al iacobianului: Back-Propagation-Through-Time (BPTT) și Real Time Recurrent Learning (RTRL). În cazul algoritmului BPTT, răspunsul rețelei este calculat pentru toate momentele de timp, iar apoi gradientul este calculat plecând de la momentul de timp curent până la n momente de timp anterioare. Acest algoritm este eficient în calculul gradientului, dar este dificil de implementat on-line. În cazul algoritmului RTRL, gradientul poate fi calculat în același timp cu răspunsul rețelei, deoarece pornește de la timpul inițial și merge n pași înainte în timp. RTRL are nevoie de mai multe calcule pentru determinarea gradientului, dar este mai convenabil pentru implementarea on-line. Teoretic, RTRL este mai eficient decât BPTT, dar depinde foarte mult și de arhitectura rețelei.

Plecând de la cele două abordări amintite mai sus, de-a lungul timpului au apărut destule variante. Diferențele constau în ordinea în care se executau operațiile, cu scopul de a limita volumul de calcul și, astfel, să poată fi mai ușor de implementat on-line.

Se consideră o RNA complet recurentă [Camp 1998] cu n neuroni și m intrări. Se definește y(k) ca fiind un vector de dimensiune ce conține ieșirile neuronilor la momentul de timp k, – vector de dimensiune ce conține intrările externe la momentul de timp k. x(k) este un vector de dimensiune , obținut prin concatenarea celor 2 vectori anteriori cu relația . Se definește U ca fiind setul de indecși ai lui x(k), dacă xp este ieșirea unui neuron, iar I se definește ca fiind setul de indecși a lui x(k), dacă xp este o intrare externă. Astfel, vom avea:

(1.54)

Se definește matricea W de dimensiune ce conține ponderile. wij reprezintă ponderea conexiunii dintre neuronul i și neuronul j, dacă sau intrarea externă j dacă

Un exemplu de RNA complet recurentă cu 3 neuroni și 2 intrări externe este dat în fig. 1.13.

Fig. 1.13 RNA complet recurentă

Propagarea înainte în rețea se face după următoarele relații:

(1.55)

(1.56)

unde fp este funcția de activare a neuronului .

Se definește eroarea instantanee cu relația

(1.57)

unde este mărimea de ieșire dorită pentru ieșirea rețelei p la momentul de timp k. Eroarea instantanee globală este definită ca fiind:

(1.58)

în timp ce eroarea globală pe un număr de epoci de antrenare [k0 , k1] este:

(1.59)

În paragraful următor se prezintă algoritmul BPTT pentru o RNA complet recurentă.

1.3.6.2 Back-Propagation-Through-Time (BPTT)

Algoritmul BPTT a fost prezentat pentru prima dată în [Pear 1989; Werb 1990].

Funcția cost de minimizat în acest caz este eroarea pătratică totală peste toate epocile de antrenare, . În continuare, se vor prezenta pe scurt relațiile care stau la baza algoritmului BPTT (metoda gradientului descrescător). Cuanta cu care se vor ajusta ponderile RNA recurente se calculează cu relația:

(1.60)

unde µ – reprezintă rata de ajustare, iar reprezintă ponderea dintre neuronii i și j, , n fiind numărul total de neuroni.

După o serie de calcule și notații care pot fi consultate în Anexa A, relația (1.60) poate fi scrisă astfel:

(1.61)

Algoritmul BPTT are cea mai mică complexitate dintre algoritmii bazați pe metode de gradient [Will 1994]. Pentru o rețea neuronală complet recurentă cu n neuroni, deci n2 ponderi, algoritmul are nevoie de nh celule de memorie (h este lungimea unei epoci de antrenare) și de n2h operații pentru calculul variabilei și modificarea parametrilor (ponderi, deplasări).

1.3.6.3 Back-Propagation-Through-Time trunchiat

Varianta on-line a algoritmului BPTT, numit și BPTT trunchiat, a fost prezentată în [Will 1990] pentru o RNA complet recurentă. În acest caz, funcția cost de minimizat este eroarea pătratică instantanee la pasul curent de timp: e2(k).

Relația de ajustare a ponderilor este (1.62)

unde h este dimensiunea timpului pentru care se mai ține cont în calcule de „istoria” rețelei. Pentru acuratețe, h ar trebui să fie egal cu timpul de la care s-a început antrenarea, dar cum acesta variază, nu ar mai fi posibilă implementarea algoritmului on-line. De aceea, h trebuie să fie constant și cât mai mare, pentru o bună aproximare a funcției cost.

Ținând cont de relațiile și notațiile prezentate în Anexa A, relația (1.62) poate fi scrisă:

(1.63)

Pentru o RNA complet recurentă cu n neuroni, deci n2 ponderi, algoritmul are nevoie de nh celule de memorie și de n2h operații pentru calculul variabilei și modificarea parametrilor (ponderi, deplasări). Aici, h este dimensiunea unei epoci de antrenare.

1.3.6.4 Algoritmul de învățare în timp real recurent

În acest paragraf se va prezenta algoritmul de învățare în timp real recurent (RTRL – Real Time Recurrent Learning).

Relația de ajustare a ponderilor este (1.64)

unde (1.65)

în care derivata este obținută plecând de la următoarea ecuație:

(1.66)

unde este operatorul Kronecker’s ( dacă i = p; dacă ). Deoarece ponderile nu afectează condițiile inițiale, avem . sp(k+1) este calculat prin relația (1.55).

Pentru o RNA complet recurentă cu n neuroni, deci n2 ponderi, algoritmul are nevoie de n3 celule de memorie și de n4 operații pentru calculele aritmetice pe un pas de timp (modificarea parametrilor: ponderi, deplasări). De aceea, BPTT este mai eficient decât RTRL, atât în privința numărului de operații cât și a cerințelor de memorie [Will 1994].

1.4 Identificarea sistemelor folosind rețele neuronale artificiale

Cunoașterea modelului unui proces real are o importanță covârșitoare aproape în orice domeniu [Nell 2001]. Modelul oferă posibilitatea de a analiza sistemul în detaliu, de a face o predicție sau de a simula comportamentul sistemului. Tehnici avansate de proiectare a regulatoarelor, de optimizare, de supervizare, detecția și diagnoza defectelor sunt bazate pe modelul procesului analizat.

Calitatea unui model, de obicei, determină și calitatea soluției la care este utilizat. De aceea, modelarea se spune că este “piatra de temelie” pentru dezvoltarea ulterioară a întregii aplicații. Ca o consecință, sunt cerințe tot mai mari pentru scheme de identificare și proceduri de modelare avansate.

În general, literatura de specialitate [Nell 2001] clasifică modele în trei mari categorii:

modele de tip “white box” – sunt obținute pe baza unor legi generale din fizică (de exemplu: legea lui Hooke, legea conservării masei, a energiei), chimie, biologie, economie, etc. Toate ecuațiile și parametrii pot fi obținute pe baza modelării teoretice. O caracteristică importantă a acestor modele este aceea că nu depind (sau depind într-o mică măsură) de datele măsurate, iar parametrii modelelor pot fi interpretați pe baza legilor generale din domeniile amintite mai sus;

modele de tip “black box” – se bazează exclusiv pe date măsurate. Atât structura modelului, cât și parametrii acestuia sunt obținuți pe baza modelării experimentale. Pentru construirea modelelor de tip “black box” este nevoie de foarte puține cunoștințe a priori sau chiar deloc. Parametrii modelului nu au nicio interpretare fizică în baza principiilor generale din domeniile mai sus amintite. În această categorie intră și modelele obținute cu ajutorul RNA;

modele de tip “gray box” – sunt un compromis sau o combinație între modele de tip “black box” și “white box”. Modelele de tip “gray box” se caracterizează prin integrarea diferitelor tipuri de informații ușor accesibile. De obicei, structura modelului în acest caz se determină pe baza unor cunoștințe a priori, în timp ce parametrii modelului se determină pe baza datelor măsurate.

Prin capacitatea lor de generalizare, RNA permit obținerea unor modele ale sistemelor investigate, sisteme care nu trebuie să fie în exclusivitate liniare. Identificarea sistemelor cu ajutorul RNA prezintă un interes major, datorită următoarelor considerente:

se pot identifica cu ușurință sistemele neliniare;

modelele rezultate în urma identificării se pot utiliza în structuri de reglare cu RNA, care nu necesită existența unor metode analitice de calcul al legii de comandă.

Pentru identificarea sistemelor se utilizează, de obicei, următoarele tipuri de rețele: RNA multistrat cu sau fără dinamică, rețele RBF, RNA cu neuroni memorie, rețele RNA cu neuroni de ordin înalt, RNA cu filtre sau transformări funcționale, etc.

Procedura de identificare experimentală presupune în general o etapă de formare a datelor și o altă etapă de procesare a datelor în vederea ajustării parametrilor rețelei. În timpul desfășurării experimentului de identificare este necesar să se aibă în vedere următoarele aspecte:

variabilele de intrare care influențează ieșirea;

se pot aplica semnale de probă sau este necesară observarea în funcționarea normală a procesului;

care sunt limitele admise ale semnalului de probă;

ce semnal de probă trebuie ales pentru a obține informații cât mai bogate despre proces;

procesul se identifică în buclă închisă sau în buclă deschisă;

care este timpul maxim de experimentare admis;

care este tipul de rețea prin care se aproximează procesul;

care este ponderea zgomotului în semnalul de ieșire al sistemului;

care este procedura prin care se stabilește structura rețelei.

Modul general de desfășurare a unei procedurii de identificare este prezentat schematic în fig. 1.14.

Fig. 1.14 Schemă de identificare cu RNA

Mai multe detalii despre identificarea sistemelor cu RNA vor fi prezentate în capitolul 2.2.

1.5 Conducerea sistemelor folosind rețele neuronale artificiale

În mod tradițional, controlul inteligent înglobează controlul clasic dar și tehnici ce se bazează pe RNA, logica fuzzy, sisteme expert, algoritmi genetici, etc. Totuși, despre fiecare categorie în parte se poate spune că are la bază teoria controlului clasic. De exemplu, despre niciun principiu de proiectare utilizat în controlul neuronal [Whit 1997] nu se poate spune că este specific doar acestei categorii. Ele sunt derivate din principiile clasice ale teoriei controlului (fig. 1.15).

Fig. 1.15 Controlul neuronal – extensie a controlului clasic [Whit 1997]

O definiție simplă a unui regulator neuronal poate fi aceasta: un regulator automat ce utilizează o RNA pentru a genera semnalul de comandă [Hunt 1992]. Deoarece RNA își ajustează parametrii prin mecanismul de antrenare, se poate spune despre acestea că se aseamănă cu regulatoarele adaptive.

În general, în proiectarea unei noi structuri de control neuronal se utilizează una din următoarele direcții:

controlul supervizat – RNA sunt antrenate pe baza unui lot de date ce conține semnalele de control corecte pentru anumite situații;

controlul invers direct – RNA învață direct maparea dintre traiectoria dorită și semnalele de comandă care conduc procesul pe această traiectorie;

controlul neuronal adaptiv;

control neuronal de tip “adaptive critic” – folosește principiile programării dinamice.

J. Abonyi a propus o clasificare de tip ierarhic prezentată în fig. 1.16 [Abon 2005] și în Tabelul 1.3.

Fig. 1.16 Clasificare regulatoare neuronale [Abon 2005]

Tabel 1.3 – Descriere a tipurilor de regulatoare neuronale [Abon 2005]

Detalierea structurilor de conducere bazate pe RNA va fi făcută în capitolul 4.2.

1.6 Concluzii

În cadrul acestui capitol s-a prezentat o parte din RNA ce pot fi utilizate în structuri de identificare și conducere, dintre care putem enumera: RNA multistrat, RNA cu recurență totală (Hopfield) sau recurență parțială (Elman, Jordan, neuroni memorie), RNA cu filtre de tip ARMA sau cu transformări funcționale, RNA de tip radial basis function cu dinamică. În partea a doua a capitolului au fost prezentați cei mai importanți algoritmi de antrenare pentru RNA cu și fără dinamică. În ultima parte a capitolului au fost prezentate principiile de bază în cazul identificării și conducerii cu RNA.

Obiectivele tezei de doctorat intitulate "Contribuții privind rețelele neuronale artificiale în identificarea și conducerea proceselor" sunt următoarele:

obținerea unei structuri de identificare cu dinamică denumită IRNN (internal recurrent neural network) și a algoritmului de antrenare aferent, pornind de la descompunerea unui sistem neliniar în subsisteme. În situația când o parte din stările parțiale ale sistemului neliniar sunt măsurabile, se poate face o estimare a celorlalte stări; validarea structurii pe un sistem real: identificarea sistemului automobil;

realizarea unei structuri de identificare modulară bazată pe RNA multistrat. Această structură conține module neuronale care fac identificarea propriu-zisă și un comutator dinamic neuronal. Alegerea numărului de module va fi făcută pe baza caracteristicii statice a procesului. În acest sens va fi prezentat un algoritm de partiționare. Validarea structurii va fi făcută atât pe sisteme neliniare din literatură cât și pe sisteme reale (sistem pneumatic).

implementarea unei structuri de conducere neuronală ce simulează comportamentul și funcționarea unui regulator PID autoacordabil; implementarea în limbajul C++ a unei RNA și a structurii de conducere de tip PID.

proiectarea unui structuri de conducere modulară ce utilizează RNA multistrat și a algoritmului de antrenare aferent.

CAPITOLUL 2

METODOLOGII DE IDENTIFICARE CU REȚELE NEURONALE MULTISTRAT ȘI INTERN RECURENTE

2.1 Introducere

În acest capitol este abordată identificarea sistemelor neliniare folosind RNA multistrat. Într-o primă etapă se va prezenta o metodologie generală de identificare folosind RNA multistrat, ce include și o clasificare a modelelor neuronale. Această metodologie generală a fost implementată pe un studiu de caz din literatură.

În cea de a doua parte, pornind de la exemplele de descompunere a unui sistem neliniar în subsisteme, oferite de [Brun 1994], [Sjöv 2008], a fost propusă o structură de identificare neuronală cu dinamică, denumită IRNN (rețea neuronală intern recurentă). Astfel, este prezentată în detaliu structura IRNN și algoritmul de antrenare aferent.

În situația când o parte din stările parțiale ale sistemului sunt măsurabile, se poate face antrenarea separată a blocurilor neuronale. De asemenea, există situații când o parte din subsisteme au modelul matematic cunoscut. În acest sens, este prezentat un studiu de caz cu un sistem descompus în trei subsisteme, în care modelul matematic al unuia dintre subsisteme este complet cunoscut.

În ultima parte a capitolului este validată structura IRNN pe un sistem real: identificarea sistemului automobil. În prealabil, sunt oferite câteva detalii despre simulatorul auto, ce înglobează și un model matematic al automobilului.

2.2 Identificarea sistemelor cu ajutorul rețelelor neuronale

2.2.1 Problematica identificării

Problematica identificării [Sjöb 1994] poate fi considerată, într-un mod simplificat, ca o problemă de determinare a unei relații între istoria sistemului (intrările și ieșirile anterioare ale sistemului) și ieșirile viitoare. Se notează istoria sistemului pe un orizont de timp cu :

T (2.1)

unde: – reprezintă intrările anterioare ale sistemului,

– reprezintă ieșirile anterioare ale sistemului.

Pentru ușurința expunerii, y(t) se va considera ca fiind scalar; de asemenea, se va face notația d=na + nb. In aceste condiții, . Se dorește a se găsi o relație între y(t) și . Pentru a se obține această legătură, se consideră un set de date achiziționat (adesea este folosită denumirea de lot de antrenare), de forma:

(2.3)

Plecând de la acest lot de date, se cere o relație de forma

(2.4)

care să aproximeze modelul ce descrie legătura .

2.2.2 „Black Boxes”

Teoretic, pentru determinarea funcției din relația (2.4) se poate face o căutare într-o familie de funcții parametrizate de forma

(2.5)

Selectarea unei anumite parametrizări este o sarcină destul de dificilă. O soluție ar fi să se țină cont de principiile mecanice, fizico-chimice care guvernează sistemul (de exemplu: coeficienți ai transferului de căldură, coeficienți rezistivi etc.). Dacă nu se dorește să se țină cont de aceste principii, atunci trebuie ales un set flexibil de funcții care să fie capabile să descrie legătura dintre y(t) și :

(2.6)

unde sunt funcții adoptate, liniar independente, iar sunt componente ale vectorului .

Dificultățile intervin, în general, în cazul sistemelor neliniare. O cerință pentru funcțiile este să ofere o aproximare „bună“ pentru sume cu un număr finit de termeni. Astfel, se poate scrie:

„descrește rapid pe măsură ce n crește” (2.7)

De obicei, există o multitudine de posibilități în alegerea funcțiilor , care să satisfacă cerința (2.7). Plecând de relația (2.6), prin utilizarea polinoamelor pentru funcțiile , se poate ajunge la dezvoltarea Taylor sau la dezvoltarea Volterra, după caz. Totuși, în practică nu se poate lucra cu o infinitate de termeni, cum este cazul relației (2.6). În concluzie, alegerea funcțiilor este o sarcină destul de dificilă și depinde foarte mult de clasa funcțiilor care trebuie aproximate.

2.2.3 Modele liniare uzuale de tip „Black Boxes”

Cel mai simplu model dinamic liniar din literatură este modelul cu răspuns finit la impuls (FIR – Finite Impulse Response):

(2.8)

unde q-1 reprezintă operatorul de întârziere. În acest caz, predictorul corespunzător este și este bazat pe vectorul regresorilor T. Teoretic, cu cât n este mai mare, cu atât mai bine este aproximat sistemul. Totuși, prin această abordare, zgomotul e(t) nu este modelat.

O variantă este modelul „output error” (OE)

(2.9)

unde . (2.10)

Predictorul în acest caz este (2.11)

În această situație, predictorul este bazat doar pe intrările anterioare. El mai poate fi rescris astfel:

(2.12)

În acest caz, vectorul regresorilor este

T (2.13)

Pe măsură ce nb și nf tind spre infinit, modelul aproximează din ce în mai bine sistemul dinamic, dar nu și zgomotul aditiv e(t). Avantajul modelului (2.9) față de (2.8) este acela că, de obicei, are nevoie de mai puțini regresori pentru a obține o aproximare bună a sistemului. Dezavantajul este acela că minimizarea în raport cu este mai complicată. De asemenea, stabilitatea predictorului (2.11) depinde de F(q) și, de aceea, trebuie atent monitorizată în timpul minimizării.

O variantă foarte des utilizată este modelul ARX

(2.14)

cu predictorul

(2.15)

și vectorul regresorilor

T (2.16)

Așa cum este arătat în [Ljun 1992], această structură este capabilă să descrie o mare parte din sistemele liniare, inclusiv zgomotul, pe măsură ce na și nb tind spre infinit. Astfel, se poate spune, din perspectiva abordării „black box”, că modelul ARX este un model liniar foarte bun. Singurul dezavantaj este acela că pentru o modelare foarte bună (inclusiv cea a zgomotului) s-ar putea să fie necesară alegerea unor valori mari pentru na și nb. De aceea, s-au dezvoltat o serie de variante ale modelului ARX, una dintre acestea fiind aceea în care zgomotul este parametrizat separat. Cel mai cunoscut este modelul ARMAX:

(2.17)

cu predictorul

(2.18)

O familie mare de modele liniare de tip „black box” este abordată în [Söde 1983]. Ele au forma:

(2.19)

Cazul special când A(q)=1 conduce la modelul Box-Jenkins (BJ). În acest caz, regresorii sunt formați din , , predicțiile ieșirii – pe baza modelului curent.

Observație: Din perspectiva abordării „black box”, modelul cel mai general este dat prin (2.19). Celelalte sunt cazuri particulare ale acestuia. De obicei, pentru o modelare bună, modelul ARX este suficient (C=D=F=1). Prin utilizarea celorlalte modele se pot obține aproximări bune ale sistemului, dar cu mai puțini regresori.

2.2.4 Alegerea regresorilor pentru modelarea cu ajutorul rețelelor neuronale

Plecând de la modelarea cu ajutorul sistemelor liniare, în cazul modelării cu RNA se pot folosi următorii regresori:

intrările pe un anumit orizont de timp u(t-k);

ieșirile măsurate pe un anumit orizont de timp y(t-k);

predicțiile ieșirii pe un anumit orizont de timp , pe baza modelului curent;

Problema care se pune în cazul identificării cu RNA este de a stabili care din cele trei tipuri de regresori trebuie folosite și pe ce orizont de timp. În general, la alegerea regresorilor trebuie să se țină cont de următoarele aspecte generale:

dacă se folosesc doar regresorii intrării u(t-k), atunci trebuie să ne asigurăm că întreaga dinamică este captată de acești regresori. O regulă în alegerea numărului de regresori poate fi acesta: dacă timpul maxim de răspuns la o modificare a intrării este τ, iar perioada de eșantionare este T , atunci numărul de regresori ar trebui să fie τ/T. Totuși, numărul rezultat ar putea fi destul de mare. Pe de altă parte, modelele neuronale care folosesc doar acest tip de regresori sunt stabile, ceea ce poate fi un avantaj important în regim de simulare. O variantă a acestei abordări este formarea altor regresori prin utilizarea filtrelor Laguerre [Wahl 1991]. Această abordare beneficiază de avantajele modelării FIR și utilizarea unui număr mai mic de regresori;

prin utilizarea ieșirii y(t-k) se poate obține o modelare bună a sistemului, cu un număr mai mic de regresori. Un dezavantaj este acela că ieșirile anterioare introduc perturbații în model. Astfel, modelul neuronal trebuie să fie capabil să elimine și zgomotul. De asemenea, prin introducerea ieșirilor anterioare nu mai este garantată stabilitatea modelului;

prin introducerea predicțiilor ieșirii se crește, în general, flexibilitatea modelului, dar apar dificultăți legate de stabilitate. Prin introducerea acestor tipuri de regresori se obține o RNA recurentă.

În general, la inițierea unei proceduri de identificare este bine să se utilizeze, pentru început, doar primele două tipuri de regresori, utilizarea celui de al treilea tip fiind recomandată doar dacă nu s-au obținut rezultate satisfăcătoare cu primele două tipuri.

2.2.5 Modele dinamice cu ajutorul rețelelor neuronale

Plecând de la modele liniare, care au fost prezentate în paragrafele anterioare, se poate face o scurtă clasificare similară a modelelor neuronale.

modelul NNFIR – utilizează doar regresorii u(t-k) (vezi Fig. 2.1a);

modelul NNARX – utilizează regresorii u(t-k) și y(t-k) (vezi Fig. 2.1b);

modelul NNOE – utilizează regresorii u(t-k) și (vezi Fig. 2.1c);

modelul NNARMAX – utilizează regresorii u(t-k), y(t-k) și (vezi Fig. 2.1d);

În [Nare 1990] s-a folosit o altă notație pentru aceleași modele. Modelul NNARX a fost denumit model Serie-Paralel, iar NNOE a fost denumit model Paralel.

Observație: Modelele NNOE și NNARMAX corespund, de fapt, RNA recurente, deoarece ieșiri ale RNA sunt aduse la intrarea ei.

Fig. 2.1a Modelul NNFIR Fig. 2.1b Modelul NNARX

Fig. 2.1c Modelul NNOE Fig. 2.1d Modelul NNARMAX

2.2.6 Procedura de identificare cu ajutorul rețelelor neuronale artificiale

Un principiu de bază în identificarea sistemelor este „try simple things first” („încearcă abordarea mai simplă pentru început”). Ideea este de a porni cu cel mai simplu model care descrie cel mai bine sistemul nostru de identificat; se continuă cu un model mai complex doar dacă modelul mai simplu nu trece procedurile de validare. Chiar dacă se optează pentru modelul mai complex, modelul mai simplu va oferi niște informații suplimentare în privința alegerii parametrilor noului model. De obicei, este indicat să se pornească cu un model ARX, care va oferi niște informații cu privire la numărul de întârzieri ale intrării și ale ieșirii sistemului sau la modul de alegere a parametrilor pentru un model de tip ARMAX.

În general, pentru identificarea unui sistem cu ajutorul RNA trebuie parcurși următorii pași:

formarea lotului de instruire;

definirea structurii rețelei;

instruirea RNA multistrat.

O problemă importantă în instruirea rețelei o constituie alegerea structurii rețelei și a funcțiilor de activare. Trebuie menționat faptul că, în cazul identificării sistemelor, nu se pot aprecia limitele semnalului de ieșire în toate situațiile. Pentru alegerea funcțiilor de activare ale neuronilor este necesar să se cunoască și să se facă o estimare a domeniului de variație a semnalelor sistemului. De exemplu, dacă la ieșire avem semnale care variază în afara domeniului (-1,1), atunci utilizarea funcției

(2.20)

nu va avea capacitatea să descrie sistemul în toate situațiile. Se recomandă ca funcțiile de activare ale neuronilor stratului de ieșire să fie liniare.

Stabilirea ratei de instruire și a funcțiilor de activare ale neuronilor presupune o etapă de tatonare în timpul căreia se observă variația sumei erorilor pătratice, pentru diferite condiții inițiale. Aceste condiții se referă la numărul straturilor și numărul de neuroni ai straturilor. Se rețin condițiile inițiale care promit o convergență rapidă a algoritmului de instruire. Proiectantul trebuie să ajungă la un echilibru între aspectele logice și cele intuitive, pentru a parcurge etapele necesare identificării, care conduc la rezultate bune atât din punct de vedere al timpului de antrenare, cât și din punct de vedere al modelării corecte a sistemelor.

Modelul obținut se validează prin compararea ieșirii date de sistem cu ieșirea dată de RNA, pentru semnale de intrare aplicate atât sistemului, cât și RNA, semnale diferite de cele utilizate la instruirea rețelei. Se urmărește ca RNA obținută după antrenare să minimizeze următorul criteriu:

. (2.21)

unde y(t) este ieșirea dată de sistem, iar yr(t) este ieșirea data de rețeaua neuronală.

Se prezintă în cele ce urmează modul de desfășurare a procedurii de identificare a sistemului neliniar descris prin ecuația cu diferențe:

(2.22)

unde fp este un factor de ponderare a comenzii.

Pentru a sublinia importanța modului de formare a lotului de instruire, se utilizează pentru formarea lotului de instruire realizarea din fig. 2.2 și, respectiv, cea din fig. 2.3.

Fig. 2.2 Lot de antrenare 1 în jurul mai multor puncte statice de funcționare

Fig. 2.3 Lot de antrenare 2 în jurul unui singur punct static de funcționare

Diferența între cele două realizări constă în faptul că cea din fig. 2.2 oferă informații despre dinamica sistemului în jurul mai multor puncte statice, pe când realizarea din fig. 2.3 oferă informații doar în jurul unui singur punct static.

Lotul de date aplicat la intrarea rețelei (P) și ținta impusă (T) se definesc după cum urmează:

(2.23)

RNA multistrat utilizată are următoarea structură:

stratul 1 – 10 neuroni;

stratul 2 – 20 neuroni;

stratul 3 – 1 neuron.

Funcțiile de activare ale neuronilor celor trei straturi sunt:

, , (2.24)

Se observă că f3 s-a considerat liniară, pentru a da capacitatea RNA să reproducă ieșirea sistemului între limite mari, care se pot manifesta în cazul exploatării rețelei pentru diferite limite ale datelor de intrare.

În figurile 2.4, 2.5 și 2.6 se reprezintă y – ieșirea sistemului (ținta), y1- ieșirea RNA instruită cu lotul de date reprezentat în fig. 2.2, y2 – ieșirea RNA instruită cu lotul de date din fig. 2.3, iar u – semnalul de intrare. S-a avut în vedere să se testeze comportarea celor două RNA în jurul mai multe puncte statice de funcționare, caracterizate de următoarele valori ale mărimii de ieșire: 0.22, 0.8 și 1.65.

Fig. 2.4 Răspunsul RNA în jurul punctului static de funcționare 1 (0.22)

Fig. 2.5 Răspunsul RNA în jurul punctului static de funcționare 2 (0.8)

Ieșirea RNA, care s-a instruit cu date obținute numai în jurul unui punct static de funcționare, aproximează ieșirea sistemului numai în jurul acelui punct static de funcționare. Pe măsură ce se depărtează intrarea de acele valori, ieșirea y2 nu mai aproximează ieșirea y a sistemului. În situația când se utilizează lotul de instruire din fig. 2.2, ieșirea y1 aproximează corect ieșirea y a sistemului, pentru valori ale lui u în jurul punctelor statice din întreg domeniul utilizat la formarea lotului de instruire.

Fig. 2.6 Răspunsul rețelei neuronale în jurul punctului static de funcționare 3 (1.65)

2.3. Identificarea unui proces folosind rețele neuronale intern recurente

Considerații generale

În general, dinamicile unui sistem sunt neliniare, complexe și necunoscute. Un sistem poate fi privit ca un set de componente interconectate, de tipul elementelor/substructurilor mecanice, electrice, hidraulice, etc. Fiecare componentă a fost astfel aleasă de către ingineri, încât să îndeplinească o anumită sarcină. Componentele sunt interconectate între ele prin intermediul unui flux de energie sau informație. Fluxurile de energie caracterizează de obicei sistemele fizice (sau „procese”, în automatică). Componentele unui sistem și legăturile dintre ele definesc structura sistemului. De exemplu, senzorii, traductoarele, elementele de execuție, unitățile de procesare etc. sunt componente elementare, dar componente de o complexitate mai mare pot fi obținute prin interconectarea lor. Un grup de componente interconectate poate fi văzut ca un singur sistem de componente agregate. O modalitate de descompunere a unui sistem complex în subsisteme [Brun 1994], [Sjöv 2008] poate fi cea din figura 2.7,

Fig. 2.7. Descompunerea unui sistem în subsisteme

unde Si este al i – lea subsistem, ui – este intrarea în subsistemul Si, iar ySi – ieșirea subsistemului Si.

Sistemul MISO din figura 2.7 poate fi descris de următoarea ecuație discretă neliniară intrare-ieșire:

(2.25)

unde:

– este ieșirea subsistemului Sn la momentul k-q cu ;

este intrarea subsistemului Sj la momentul k-q cu și ;

– transformare neliniară;

Este destul de dificil de lucrat cu un model neliniar ca cel descris de ecuația (2.25). Complexitatea proiectării unei legi de reglare este un alt motiv care ne conduce la ideea de a lua în calcul o altă abordare. În loc de a utiliza pentru descrierea întregului sistem o singură ecuație neliniară, se vor folosi n ecuații neliniare corespunzătoare celor n subsisteme rezultate în urma descompunerii structurale. Setul de ecuații este prezentat mai jos:

(2.26)

unde:

– este ieșirea subsistemului Si la momentul k-q cu ;

– este ieșirea subsistemului Si-1 la momentul k-q cu ;

– este intrarea subsistemului Si la momentul k-q cu ,

fNLi – transformare neliniară, și – indexul subsistemului

Descompunerea în subsisteme [Yue 2005] oferă o serie de avantaje, cum ar fi:

pot fi făcute modificări importante în cadrul unui subsistem, fără a afecta celelalte subsisteme;

este redus numărul parametrilor de estimat, dacă o parte din subsisteme pot fi decuplate;

stările parțiale ale sistemului pot fi estimate considerându-le ca fiind ieșirile subsistemelor. (Fig. 2.7).

Identificarea sistemelor neliniare folosind IRNN (Internal Recurrent Neural Networks)

RNA pot aproxima teoretic orice mapare liniară sau neliniară dintre intrarea și ieșirea unui sistem. Scopul este de a potrivi neliniaritatea sistemului cu neliniaritatea RNA.

Un sistem neliniar ca cel descris de ecuația de mai jos poate fi aproximat cu o RNA cum ar fi cea reprezentată în fig. 2.8.

(2.27)

unde: x(k) – starea sistemului; u(k) – intrarea sistemului; y(k) – ieșirea sistemului.

a) b)

Fig. 2.8. a) Structură neuronală cu recurență b) blocul MDB explicitat

Remarcă:

MDB (bloc de memorare și întârziere) va avea aceeași semnificație pentru tot restul capitolului.

MNN este RNA multistrat iar q-1 este operatorul de întârziere.

În acest caz, pentru a capta dinamicile sistemului, este necesară o structură neuronală complexă și un lot de date consistent. RNA recurentă din fig. 2.8 nu beneficiază de informații a priori cu privire la structura sistemului. Astfel, etapa de antrenare presupune: un număr mare de straturi, număr mare de neuroni pentru fiecare strat, lot de antrenare de dimensiune mare, un timp îndelungat pentru antrenare. Pentru a evita aceste probleme, se propune o structură IRNN [Codr 2009] ce aproximează subsistemele rezultate în urma descompunerii (vezi ecuația 2.26).

În fig. 2.9 se prezintă structura IRNN ce aproximează funcțiile fNLi din relația (2.26)

Un avantaj destul de important al structurii propuse este acela că, în cazul în care există stări ale sistemului măsurabile (sau ieșiri ale subsistemelor), RNA pot fi decuplate în etapa de antrenare. Acest aspect va fi explicat în detaliu în paragraful 2.3.4. După etapa de antrenare, ieșirile RNA vor reprezenta estimări ale stărilor parțiale ale întregului sistem.

Fig. 2.9. Structura de identificare IRNN

Algoritm de antrenare IRNN

Algoritmul de antrenare al IRNN este bazat pe propagarea înainte a datelor și propagarea înapoi a erorii, ca și în cazul algoritmului standard backpropagation [Rume 1986]. Totuși, sunt două diferențe față de algoritmul clasic. Prima constă în modificarea la fiecare pas de timp a loturilor de antrenare, iar a doua – în propagarea înapoi a erorii de la MNNi la MNNi-1, printr-o singură conexiune (deoarece fiecare MNNi are un singur neuron pe stratul de ieșire).

Propagarea datelor înainte este prezentată în fig. 2.10, în timp ce propagarea înapoi a datelor în fig. 2.11. Pentru o prezentare mai simplă s-a luat în considerare doar MNNi împreună cu legăturile i-1 și i+1.

Fig. 2.10. Propagarea datelor înainte pentru IRNN

Fig. 2.11. Propagarea erorii înapoi pentru IRNN

În etapa de antrenare, pentru a minimiza criteriul

(2.28)

este utilizată metoda gradientului [Pusc 1999], [Lian 1999], [Srin 1994], unde y(k) este ieșirea IRNN la momentul de timp k și yS(k) este ieșirea măsurată a întregului sistem, nl dimensiunea lotului de antrenare.

Parametrii RNA (w,b) sunt ajustați conform cu relațiile de mai jos

(2.29)

unde

i – reprezintă indexul RNA;

Kp – reprezintă pasul de ajustare al parametrilor;

q – indexul stratului din RNA;

– reprezintă ponderea ajustată la pasul Kp dintre neuronul p de pe stratul q și neuronul j de pe stratul (q+1);

w, b – reprezintă ponderile și deplasările RNA;

(2.30)

(2.31)

cu notațiile

(2.32)

(2.33)

r – numărul de straturi al RNA corespunzătoare subsistemului Si;

– numărul de neuroni de pe stratul q al RNA corespunzătoare subsistemului Si;

– deplasarea neuronului ji de pe stratul r;

– funcție de activare pentru stratul r;

– eroarea propagată înapoi prin conexiunea dintre neuronul ji (de pe stratul q al RNA corespunzătoare subsistemului Si) și neuronii de pe stratul anterior;

– ieșirea neuronului pi de pe stratul q al RNA, corespunzătoare subsistemului Si;

– eroarea propagată înapoi prin conexiunea dintre cele două RNA corespunzătoare subsistemelor Si and Si+1 , și

(2.34)

Considerații asupra algoritmului de antrenare IRNN

În acest paragraf sunt prezentate câteva ipoteze cu privire la antrenarea IRNN. Pentru a configura rețelele , trebuie ținut cont de următorii factori:

structura sistemului și legăturile dintre subsisteme;

tipologia și complexitatea fiecărui subsistem;

gradul de corelație al datelor de intrare ui,

Identificarea sistemelor neliniare folosind IRNN necesită parcurgerea următorilor pași:

Descompunerea sistemului neliniar în subsisteme corespunzătoare;

Stabilirea stărilor parțiale ce pot fi măsurate cu senzori;

Obținerea unui lot de date persistent. Pentru a obține un model cât mai exact al sistemului, acesta trebuie excitat în toate punctele posibile de funcționare;

Antrenarea IRNN. Anterior etapei de antrenare va fi stabilită structura (număr de rețele, număr de straturi, număr de neuroni pentru fiecare strat, funcții de activare) IRNN ;

Validarea identificării IRNN prin utilizarea unui alt lot de date.

Observații:

În anumite ipoteze, metoda propusă oferă posibilitatea antrenării separate a unora dintre RNA (vezi fig. 2.12). Dacă anumite stări interne pot fi măsurate de senzori, de exemplu ieșirile ySi-1,…, ySj (zona gri din fig. 2.12), atunci RNA corespunzătoare sistemelor Si, …, Sj pot fi decuplate și antrenate separat. Acest lucru este posibil, deoarece lotul de antrenare pentru grupul de rețele MNNi,…, MNNj este complet cunoscut. După antrenare, rețelele MNNi,…, MNNj sunt utilizate în structura din fig. 2.13 pentru antrenarea celorlalte RNA (MNN1,…MNNi-1, MNNj+1,…, MNNn). În timpul antrenării, rețelele MNNi,…, MNNj sunt folosite doar pentru propagarea înapoi a erorii, parametrii lor nemodificându-se.

Fig. 2.12. Subsisteme cu ieșiri măsurabile (yi-1, yj)

Fig. 2.13. Structura IRNN ce înglobează RNA decuplabile (MNNi,…, MNNj)

Studiu de caz 1. Identificarea unui sistem neliniar în situația când modelul matematic al unuia dintre subsisteme este cunoscut.

În paragraful anterior a fost prezentată situația când unele subsisteme au ieșiri măsurabile. O altă situație care poate fi întâlnită este atunci când modelele matematice ale unora dintre subsisteme sunt complet cunoscute. De exemplu, unul dintre subsisteme poate fi un element de execuție al cărui model matematic este cunoscut. În această situație, propagarea înaintea informației în rețeaua IRNN, cât și propagarea înapoi a erorii trebuie realizată ținându-se cont de aceste modele matematice.

Fie un caz particular de descompunere în trei subsisteme, în care se consideră cunoscut doar modelul matematic al S2 (ec. 2 din sistemul 2.35). Celelalte două ecuații se consideră necunoscute, ele fiind utilizate doar la generarea lotului de date.

(2.35)

Setul de ecuații este o particularizare a setului (2.25), doar pentru trei subsisteme. În fig. 2.14 este reprezentată structura IRNN ce realizează identificarea.

Fig. 2.14. Structura de identificare IRNN

Structura IRNN utilizată la identificarea sistemului definit prin setul de ecuații (2.35) este următoarea:

MNN1 (identifică prima ecuație din set) are 3 straturi:

stratul 1- 5 neuroni cu funcție de activare tan-sigmoid;

stratul 2- 9 neuroni cu funcție de activare tan-sigmoid;

stratul 3- 1 neuron cu funcție de activare liniară.

MNN3 (identifică a treia ecuație din set) are 3 straturi, de asemenea:

stratul 1- 5 neuroni cu funcție de activare tan-sigmoid;

stratul 2- 9 neuroni cu funcție de activare tan-sigmoid;

stratul 3- 1 neuron cu funcție de activare liniară.

Lotul de date utilizat în etapa de antrenare este următorul:

Semnalele de intrare (u1, u2, u3) și de ieșire (y3) utilizate la formarea lotului de date sunt reprezentate în fig. 2.15.

Fig. 2.15. Lotul de date utilizat la antrenarea IRNN

Inițial, valorile primei linii din matricea P1 sunt 0, dar apoi sunt modificate după fiecare epocă de antrenare. De asemenea, valorile primei linii din P3 sunt completate cu ieșirile cunoscute ale subsistemului S2. Rețeaua IRNN a fost antrenată folosind algoritmul din paragraful 2.3.3, până s-a ajuns la o eroare egală cu 0.01.

Rezultatele identificării [Codr 2006], [Codr 2007] sunt reprezentate în fig. 2.16. Se poate remarca faptul că ieșirea IRNN aproximează ținta impusă cu o deviație standard de 0.0047, ceea ce reprezintă o performanță foarte bună.

Fig. 2.16. Validare IRNN

Pentru testarea procedurii de identificare s-a generat un alt lot de date. Și în acest caz, ieșirea IRNN aproximează cu performanțe bune ținta impusă având o deviație standard de 0.0111(fig. 2.17).

Fig. 2.17. Testare IRNN

Studiul de caz prezentat a tratat situația când un sistem neliniar descompus în subsisteme este parțial cunoscut. A fost considerat complet cunoscut modelul matematic al subsistemul S2 din cele trei subsisteme componente ale sistemului neliniar.

Studiu de caz 2. Identificarea modelului unui automobil.

Pentru creșterea clarității celor descrise anterior, în acest paragraf se vor prezenta algoritmul de antrenare și rezultatele obținute pentru o IRNN care include trei subsisteme necunoscute, conectate în structura din fig. 2.9. Se vor prezenta etapele și rezultatele identificării modelului unui automobil.

Scurtă prezentare a unui simulator auto

Antrenarea pe un simulator auto permite dobândirea abilităților necesare șoferilor [ADAM 2002]. Trebuie subliniat faptul că unul din principalele avantaje oferite de simulatorul auto este acela că dezvoltă un comportament în timpul condusului responsabil și preventiv, ceea ce poate conduce la reducerea numărului de accidente în viitor [Ande 1999]. Pentru a obține un astfel de comportament, trebuie simulate situații limită care pot apărea în trafic. În acest fel, viitorul șofer va fi capabil să anticipeze accidentele sau să minimizeze efectul lor dacă apar. O componentă importantă în cadrul simulatorului o reprezintă modelul automobilului. Acesta trebuie să includă toate comportamentele posibile ale mașinii.

În fig. 2.19 sunt prezentate blocurile funcționale ale unui simulator auto:

Fig. 2.19. Blocurile funcționale ale unui simulator auto

unde:

un mediu 3D ce modelează realitatea întâlnită pe drumurile publice [Boer 2000], [Leit 1997]. Acest mediu este generat de sistemul audio-video.

modelul matematic al automobilului [Kien 2005], care trebuie să reproducă cu acuratețe comportamentul mașinii în funcție de gradul de interacțiune cu elementele de control (accelerație, ambreiaj, frână, schimbător de viteze, volan etc.) și în funcție de geometria drumului [Pusc 2001].

sistem expert [Davi 1995] proiectat pentru a superviza manevrarea corectă a automobilului. Rolul său este de a informa cursanții în momentul când fac greșeli în condusul automobilului.

modul software ce supraveghează respectarea regulilor de circulație [Ande 2001], [Kadi 1995];

traductoare și placă de achiziție pentru măsurarea intrărilor de la automobil;

un bloc de normalizare pentru scalarea datelor măsurate;

Sistemul automobil este descompus în trei subsisteme și este prezentat în fig. 2.20.

Intrările și ieșirile pentru fiecare subsistem sunt următoarele:

Pentru subsistemul motor: intrarea este deplasarea pedalei de accelerație (u1), iar ieșirea este viteza unghiulară a motorului (y1).

Pentru subsistemul de transmisie: intrările sunt treapta de viteză (u3), deplasarea pedalei de ambreiaj (u2) și viteza unghiulară a motorului (care este și stare internă y1), iar ieșirea este viteza unghiulară a cutiei de viteze (y2).

Pentru subsistemul format din roată și suspensie: intrările sunt panta drumului (u5), deplasarea pedalei de frână (u4) și viteza unghiulară a cutiei de viteze (care este și stare internă y2), iar ieșirea este viteza automobilului (y3).

Perturbațiile care afectează sistemul automobil sunt generate de: condițiile meteorologice, starea carosabilului și direcția și forța vântului.

Fig. 2.20. Sistemul automobil descompus în subsisteme

Identificarea sistemului automobil folosind IRNN

Structura IRNN propusă are rolul de a aproxima modelul sistemului automobil. În acest caz particular, schema generală prezentată în fig. 2.7 va conține trei RNA, după cum se poate observa în fig. 2.21:

Fig. 2.21. IRNN pentru cazul particular al sistemului automobil

MNN1 are rolul de a identifica modelul motorului, MNN2 – modelul sistemului de transmisie, iar MNN3 – modelul subsistemului format din roată și suspensie. Structura IRNN este capabilă să capteze dinamicile sistemului automobil descompus, reprezentat în fig. 2.20. Structura este, de asemenea, capabilă, în anumite cazuri, să estimeze stările parțiale fără a mai fi nevoie să fie măsurate.

În plus, trebuie menționat faptul că lotul de antrenare utilizat a fost obținut în timpul funcționării unui automobil real, cu ajutorul unui sistem de achiziție. Datele sunt afectate și de perturbații.

Lotul de date utilizat în etapa de antrenare este prezentat mai jos:

(2.36)

unde,

nl – dimensiunea lotului de antrenare;

u1, u2, u3, u4, u5, y1, y2, y3 – au aceeași semnificație ca în fig. 2.20.

Lotul de date utilizat la antrenarea IRNN este cel din fig. 2.22.

Fig. 2.22. Lotul de antrenare

unde NV reprezintă valori normalizate.

Configurația IRNN pentru identificarea sistemului automobil este următoarea:

MNN3 are 3 straturi:

stratul 1- 3 neuroni și funcție de activare tan-sigmoid;

stratul 2- 7 neuroni și funcție de activare tan-sigmoid;

stratul 3- 1 neuron și funcție de activare liniară.

MNN2 are 3 straturi:

stratul 1- 3 neuroni și funcție de activare tan-sigmoid;

stratul 2- 7 neuroni și funcție de activare tan-sigmoid;

stratul 3- 1 neuron și funcție de activare liniară.

MNN1 are de asemenea 3 straturi:

stratul 1- 7 neuroni și funcție de activare tan-sigmoid;

stratul 2- 15 neuroni și funcție de activare tan-sigmoid;

stratul 3- 1 neuron și funcție de activare liniară.

Algoritmul de antrenare (pentru o singură epocă)

Diferențele dintre algoritmul propus și algoritmul clasic constau în calculul erorii înainte de a fi propagată înapoi prin conexiunea dintre MNN3 și MNN2 (pașii 9 și 12). În acești pași, parametrii stratului 2 vor fi calculați după actualizarea celor de pe stratul 3.

După etapa de antrenare, ieșirea rețelei MNN3 (ieșirea modelului) împreună cu viteza măsurată de senzori sunt reprezentate în fig. 2.23. Deviația standard în acest caz este de 0.058.

Fig. 2.23. Validare IRNN

Fig. 2.24. Testare IRNN

Pentru a verifica capacitatea de generalizare a structurii neuronale propuse, se aplică la intrarea rețelei un lot de date diferit de cel utilizat la instruire. În fig. 2.24 se prezintă cele două realizări: viteza mașinii și viteza dată de IRNN. Se poate constata faptul că ieșirea rețelei aproximează și în acest caz suficient de bine viteza mașinii cu o deviație standard de 0.0091.

2.4. Concluzii

În cadrul acestui capitol au fost prezentate câteva contribuții personale cu aplicații în identificarea proceselor folosind RNA multistrat și cu dinamică.

În prima parte a capitolului au fost prezentate noțiuni generale despre identificarea sistemelor. În continuare, au fost analizate cele mai importante modele neuronale din literatura de specialitate. O metodologie generală de identificare utilizând RNA multistrat a fost implementată și testată pe un sistem neliniar din literatură.

În cea de a doua parte a capitolului a fost introdusă o structură IRNN pentru identificarea unor sisteme neliniare complexe. A fost prezentată o metodă generală de descompunere a unui sistem în subsisteme. Pentru a obține modelele acestor subsisteme, au fost folosite RNA cu dinamică externă.

De asemenea, a fost luat în discuție și cazul particular când o parte a stărilor interne poate fi măsurată. În această situație, blocurile neuronale pot fi “decuplate” și antrenate separat. O altă situație aparte este și aceea când o parte din subsisteme au modelul matematic complet cunoscut. În acest sens, a fost prezentat și un studiu de caz. După prezentarea algoritmului de antrenare, au fost subliniate diferențele dintre acesta și cel clasic. Ca studiu de caz, a fost ales un sistem neliniar complex, identificarea modelului unui automobil. O direcție viitoare de cercetare poate fi aceea de a aplica această metodologie pentru sisteme MIMO. O a doua direcție ar fi aplicarea structurii IRNN în detecția și izolarea defectelor bazate pe modele neliniare.

CAPITOLUL 3

IDENTIFICAREA SISTEMELOR NELINIARE FOLOSIND REȚELE NEURONALE MODULARE

3.1 Introducere

În acest capitol este continuată problematica identificării sistemelor neliniare folosind RNA, începută în capitolul al doilea, dar de această dată sunt utilizate rețele neuronale modulare. Într-o primă etapă este prezentat conceptul de modularitate, derivat din domeniul neurobiologiei, și se insistă asupra avantajelor care derivă din utilizarea acestuia.

În subcapitolul al treilea sunt prezentate cele mai importante realizări din zona identificării neuronale modulare. Pornind de la aceste rezultate, este propusă o structură de identificare modulară care folosește rețele neuronale multistrat, atât pentru module cât si pentru comutatorul dinamic. Noutatea constă și în modalitatea de stabilire a numărului de module: pe baza caracteristicii statice a procesului. În acest caz, este prezentat și algoritmul de partiționare a caracteristicii statice. De asemenea, sunt stabilite o serie de condiții necesare pentru aproximarea unui sistem neliniar cu module neuronale, pe baza caracteristicii statice.

Validarea structurii de identificare modulară este realizată, într-o primă etapă, pe un studiu de caz din literatură [Sale 90]: sistem de reglare a nivelului unui lichid. Structura de identificare este testată, de asemenea, și pe un sistem real, întâlnit în mediul industrial: un sistem pneumatic.

Este cunoscut faptul că una dintre cele mai dificile probleme întâlnite în sistemele de acționare automatizate este frecarea. De aceea, în ultima parte a capitolului sunt prezentate noțiuni despre fenomenologia frecării și cele mai importante modele statice și dinamice ale acesteia. Pentru identificarea modulară este utilizat modelul LuGre, deoarece acesta surprinde cel mai bine majoritatea aspectelor legate de fenomenologia frecării.

3.2 Conceptul de modularitate

Modelul de inspirație în cazul proiectării rețelelor neuronale modulare este bazat pe funcționarea creierului uman. Descoperirile din domeniul neurobiologiei au demonstrat faptul că modularitatea este cheia eficienței funcționării creierului animal și a celui uman. Acest fapt este unul din principalele motive pentru care se dorește implementarea de structuri neuronale modulare.

Modularitatea [Faro 2000] este poate cel mai important principiu ce stă la baza metodologiilor ingineriei software moderne. Deși toate sistemele complexe sunt alcătuite din părți interconectate, un sistem este considerat modular doar dacă fiecare parte are o structură internă bine definită și independentă de celelalte module. De asemenea, legăturile dintre module trebuie să fie puține și bine definite. Aceste considerente permit ca fiecare modul să fie proiectat, analizat și înțeles separat; modularitatea este esențială pentru sinteza și analiza sistemelor complexe.

Modularitatea permite, de asemenea, legături cu sisteme fizice sau biologice care sunt mult prea complexe pentru a putea fi înțelese în întregime de către un singur individ. Creierul uman utilizează foarte mult principiul modularității. De exemplu, diferite părți din creier specializate pentru diferite taskuri și grupuri de neuroni interacționează în mod complex, pentru rezolvarea unei probleme. Nu s-a ajuns la o înțelegere în legătură cu numărul de module ce funcționează în creierul uman. Se crede că o specializare complexă are loc la nivelul unui modul de nivel înalt, cum ar fi cortexul vizual, care are rolul de a procesa și înțelege imagini. Creierul uman este descris în unele lucrări științifice ca fiind o colecție de module ce interacționează. Fiecare modul este capabil doar de a îndeplini taskuri simple, iar inteligența reiese din comportamentul colectiv al acestor module.

RNA și modelele conexioniste sunt inspirate din studii asupra creierului animal. Este logic faptul că astfel de rețele trebuie să exploateze principiile modularității care își au bazele în creierul biologic, pentru a rezolva probleme de complexitate considerabilă. RNA tradiționale au algoritmi de învățare și modele bazate pe subtaskuri mici, utilizând un comportament de nivel scăzut, obținut cu un număr mic de neuroni, totul bazându-se pe interconectivitatea dintre neuronii din straturile adiacente. Chiar dacă acești algoritmi sunt vitali pentru fundamentele sistemelor inteligente, o abordare din punct de vedere practic (ingineresc) în cazul tehnicilor modulare permite rezolvarea de probleme complexe. Dezvoltarea unei aplicații complexe cu RNA poate fi mai ușor implementată dacă se modularizează.

RNA pot fi modulare la diferite niveluri conceptuale. Într-un sens trivial, fiecare nod al fiecărui nivel poate fi considerat un modul. Totuși prima preocupare este legată de rețele ce sunt alcătuite din mai multe niveluri interconectate, în care fiecare modul este o rețea neuronală însăși. Foarte multe aplicații de succes din practica RNA au reușit datorită utilizării structurii modulare.

Într-un sens larg, modularitatea implică faptul că trebuie să existe o despărțire vizibilă și considerabilă la nivel structural între diferitele module ale unui sistem computațional. Proiectarea modulară a sistemelor are câteva avantaje evidente, cum ar fi simplitatea și eficiența computațională, toleranța la defecte sau extensibilitatea sporită. Cel mai mare avantaj este legat de faptul că este apropiat de sistemul biologic.

Conceptul de modularitate are la bază principiul descompunerii unui sistem complex în subsisteme cât mai simple, descompunere generată și de natura hardware a sistemului. În mod intuitiv se poate spune că un task computațional complex poate fi subdivizat în mai multe subtaskuri simple. Subtaskurile simple pot fi rezolvate de către un număr de sisteme computaționale specializate. Fiecare sistem computațional execută o anumită funcție conform algoritmilor și mecanismelor apelate. Soluția taskului complex este obținută prin combinarea rezultatelor individuale, cu ajutorul unui sistem bazat pe tehnici de optimizare. Descompunerea taskului complex în taskuri simple poate fi de tipul descompunere soft sau descompunere hard. În primul caz, subtaskul poate fi simultan repartizat la două sau mai multe sisteme computaționale, iar în cel de-al doilea caz doar un singur sistem computațional este responsabil de fiecare din subtaskuri.

Se poate spune despre o RNA că este modulară dacă operațiile realizate de către rețea pot fi descompuse în două sau mai multe module (subsisteme) ce pot opera pe un set distinct de intrări, fără a comunica unul cu celalalt. Ieșirile modulelor sunt mediate de către o unitate integratoare, căreia nu i se permite livrarea informației înapoi la module. Într-un caz particular, unitatea ce realizează integrarea decide și cum răspunsul modulelor este combinat pentru a forma răspunsul final al sistemului, precum și ce module trebuie să fie instruite.

3.3 Sinteză din literatura de specialitate

Multe sisteme neliniare au incertitudini și dinamici care variază considerabil în funcție de regimul de operare. Acest lucru poate să justifice apelarea la conceptul de sistem cu parametrii variabili în timp (time varying parameters) [Tham 2002a], [Theo 2010]. Astfel, se poate introduce conceptul de modele multiple și regulatoare multiple cu mecanism de comutare [Nare 1997], [Prin 1998], [Tham 2002b], [Murr 1997]. În general, este mai simplu de lucrat cu modele și regulatoare locale, deoarece dinamicile locale sunt mai simple decât dinamicile globale [Tham 2002a].

O abordare foarte populară în literatură constă în aproximarea unui sistem neliniar cu sisteme liniare în mai multe puncte de operare [Nare 2002]. Pe de o parte, dacă comportamentul sistemului nu se schimbă semnificativ odată cu punctul de operare, atunci un model liniar (sau regulator) va fi aproape întotdeauna suficient. Pe de altă parte, există situații când un model liniar poate aproxima un sistem neliniar doar pentru un interval foarte mic [Verd 2002].

În multe situații, modelele analitice ale sistemelor neliniare sunt dificil de utilizat. De exemplu, pot exista funcții nederivabile într-un astfel de model, ceea ce conduce la dificultăți în sinteza legii de reglare [Wang 2005], [Haya 2005].

Chen et al. [Chen 2001] și Yue Fu et al. [Fu 2007] au propus o structură modulară pentru controlul sistemelor neliniare. Schema adaptivă de control este compusă dintr-un regulator liniar adaptiv, un regulator adaptiv bazat pe RNA și un mecanism de comutare.

Alte abordări [Sun 2008], [Nell 2001], [Kekp 2007] au aproximat modelul neliniar printr-o serie de modele locale implementate cu RNA. Fiecărui model i-a fost atașată o funcție de ponderare care să cuantifice „contribuția” lui în procesul neliniar.

O altă abordare, care se bazează pe aproximarea cu modele locale liniare, a fost propusă de Cho et al. [Cho 2006]. Fiecărui model liniar îi este asociat un regulator liniar care este ușor de implementat. Mecanismul de comutare a fost realizat cu RNA cu auto-organizare.

Plecând de la aceste abordări, în acest capitol este propusă o strategie de identificare folosind RNA modulare, strategie ce include și un mecanism de comutare. Mecanismul de comutare este implementat, de asemenea, cu RNA. Comutarea este făcută pe baza istoriei sistemului.

3.4 Structură modulară de identificare

Pornind de la aproximarea unui sistem neliniar cu ajutorul mai multor sisteme neliniare, în cadrul acestui paragraf se propune o structură neuronală modulară, care permite identificarea unui sistem neliniar utilizând mai multe RNA pe care le vom numi modele neuronale locale (LNM – Local Neural Models) [Codr 2011].

Fără a reduce din generalitate, se consideră un sistem neliniar cu o singură intrare și o singură ieșire, descris de următoarea ecuație:

(3.1)

unde:

ys(k) – este ieșirea sistemului la momentul de timp k,

ys(k − j) – este ieșirea sistemului la momentul de timp (k − j) unde j = 1,n,

us(k − j) – este intrarea sistemului la momentul de timp (k − j) unde j = 1,m,

,

N reprezintă dimensiunea lotului de date utilizat la identificare.

Observație: Demersurile științifice realizate în cadrul acestui paragraf se fac în ipoteza în care mărimea de intrare este mărginită. În consecință, , unde uinf și usup reprezintă limita inferioară și superioară a intervalului în care se află mărimea de intrare us(k);

Având în vedere faptul ca în multe situații modelele proceselor sunt neliniare, identificarea acestora necesită o structură parametrică complexă și greu de utilizat la sinteza legii de reglare. Pentru a depăși acest neajuns, se utilizează o structură neuronală modulară care permite descompunerea unei probleme complexe în mai multe subprobleme cu un grad de complexitate mai mic.

Structura modulară propusă pentru identificarea sistemului neliniar descris prin ecuația neliniară (3.1) este dată în fig. 3.1:

Fig. 3.1 Structura modulară de identificare

unde:

LNMr – reprezintă modele neuronale locale, utilizate la identificarea sistemului neliniar într-un interval în jurul unor puncte statice de funcționare;

NS (neural switcher) – comutatorul dinamic neuronal este elementul care activează LNM ce aproximează cel mai bine ieșirea sistemului la acel moment;

Schema în detaliu a LNMr și cea a comutatorului dinamic neuronal (NS) din fig.3.1 sunt prezentate în fig. 3.2a și b.

Fig. 3.2a Schema detaliată a LNMr Fig. 3.2b Schema detaliată a NS

Semnificația mărimilor din figurile de mai sus este următoarea:

yr(k) r=1,q reprezintă ieșirea LNMr ;

y(k), ys(k − j), us(k − j) – au aceeași semnificație ca și mărimile din ecuația (3.1);

q−1 – este operatorul de întârziere;

outNS(k) – reprezintă ieșirea NS.

Într-o variantă a abordării gain scheduling control [Astr 1995], sistemul neliniar este aproximat cu un număr de subsisteme liniare, obținute prin liniarizarea sistemului neliniar în diferite puncte statice de funcționare. În acest caz, sistemul de reglare, numit sistem de reglare de tip multimodel, include regulatoare pentru fiecare zonă de liniarizare, precum și un mecanism de comutare a acestor regulatoare, în funcție de poziția curentă a punctului de funcționare al sistemului.

În cadrul acestui paragraf, modelul sistemului neliniar este aproximat cu q subsisteme neliniare, modelate prin RNA, care descriu proprietățile dinamice ale sistemului în jurul diferitelor puncte statice de funcționare ale acestuia. Modulele LNM utilizate necesită un număr mai mic de parametri și, de asemenea, timpul de antrenare este mai mic.

Modulul NS din fig. 3.2b este o RNA care are rolul de a stabili punctul static în jurul căruia operează sistemul la un moment dat și, evident, de a decide care LNM furnizează ieșirea cea mai apropiată de ieșirea sistemului. Modulul NS trebuie instruit astfel încât decizia acestuia să fie în raport cu starea sistemului și nu doar în raport cu valoarea intrării. În unele aplicații [Hou 2006], decizia este luată doar în funcție de valoarea comenzii sau doar pe baza ieșirii. Acest lucru poate conduce la apariția unor erori în regim dinamic.

LNM din fig. 3.2a implementează o funcție neliniară de forma:

(3.2)

unde:

– reprezintă funcția neliniară implementată de fiecare LNMr

, sunt valori ale mărimii de intrare care aparțin unui interval compact ce conține punctul de operare în jurul căruia se aproximează sistemul neliniar cu LNMr,

reprezintă limitele intervalului mărimii de intrare corespunzătoare modulului neuronal r,

,

,

N reprezintă dimensiunea lotului de date utilizat la identificare.

Pentru o bună aproximare a sistemului neliniar descris prin ec. (3.1) cu funcțiile neliniare (3.2), implementate cu ajutorul LNMr, trebuie ca loturile de instruire corespunzătoare celor q modele neuronale locale să acopere tot domeniul de operare al sistemului. Numărul parametrilor LNM este corelat cu neliniaritatea sistemului din vecinătatea punctului de operare. Rezultatele experimentale din cadrul acestei teze au indicat faptul că, pentru o clasificare corectă, este recomandat ca valorile întârzierilor nc și mc din fig. 3.2b să verifice relațiile: ; . În caz contrar, clasificatorul poate da rezultate eronate.

O caracteristică neparametrică importantă a unui sistem dinamic, în contextul abordărilor care se vor prezenta în cadrul acestui paragraf, este caracteristica statică, de care sunt corelate frecvent inclusiv proprietățile dinamice ale sistemului. Punctele statice de funcționare se caracterizează prin faptul că mărimile de intrare și de ieșire ale sistemului rămân neschimbate. Punând în (3.1):

, (a)

, (b)

rezultă

(3.6a)

Se admite ipoteza că, pentru valori constante ale intrărilor LNM (conform relațiilor (a) și (b)) , RNA are un punct de echilibru în care . Din ecuația (3.2) se obține

. (3.6b)

în care , deoarece ținta ieșirii RNA este mărimea de ieșire a sistemului.

Dacă se renunță la repetarea variabilelor yst, și ust în relațiile (3.6a, b), atunci rezultă următoarele ecuații neliniare care parametrizează în regim staționar sisteme descrise prin ecuațiile (3.1) și (3.2):

, (3.7a)

. (3.7b)

Observație. Punctele (ust, yst) se pot obține, pe cale teoretică, rezolvând ecuația neliniară (3.7a), corespunzătoare regimului static de funcționare, în care se consideră cunoscut ust și se determină yst, sau se consideră cunoscut yst și se determină ust. Se va alege varianta care necesită rezolvarea celei mai simple ecuații neliniare. În practică, ecuația (3.7a) nu este cunoscută, însă determinarea caracteristicii de regim staționar se poate face experimental.

Aproximarea sistemului neliniar descris prin ecuația (3.1), printr-un set de q LNM, unde fiecare LNM este descris printr-o ecuație de tipul ecuației (3.2), presupune verificarea unor condiții necesare care sunt stipulate în cele ce urmează:

Proprietățile dinamice ale sistemului neliniar sunt corelate strâns cu caracteristica statică neliniară, în sensul că structura RNA prin care se face identificarea sistemului neliniar este influențată de complexitatea modelului de regim staționar. Metoda nu se aplică în cazul sistemelor care au numai neliniarități dinamice.

Alegerea LNM se face astfel, încât să existe cel puțin un r{2,…, q}, pentru care ,, unde perechile de puncte (ust, yst) și (ust,) reprezintă puncte de pe caracteristica statică a sistemelor descrise prin ecuațiile (3.1) și (3.2).

Intervalele se aleg astfel:

a – atunci când caracteristica statică a procesului nu are discontinuități, intervalele trebuie să îndeplinească condițiile:

– ,

în care:

b – atunci când caracteristica procesului are o discontinuitate la intrarea u0 (caz în care se produce comutarea între două noduri stabile în planul fazelor), valoarea u0 se adoptă ca limită între două intervale adiacente, fie acestea , respectiv .

Dintre cerințele menționate privind alegerea intervalelor , cea mai importantă sub aspectul frecvenței cu care se întâlnește în practică este cea de la punctul 3a.

O posibilă acoperire a intervalului [uinf, usup] cu intervalele este ilustrată în fig. 3.3.

Fig. 3.3 Partiționarea intervalului de intrare

Partiționarea intervalului [uinf, usup] în q subintervale , astfel încât fiecare LNM să aproximeze sistemul dat prin ecuația (3.1) pe o porțiune cu grad de neliniaritate comparabil cu al celorlalte LNM , se prezintă în paragraful următor.

3.4.1 Algoritm de partiționare a caracteristicii statice în cazul sistemelor dinamice neliniare

Algoritmul de căutare a intervalelor corespunzătoare LNM trebuie să realizeze un compromis între gradul de neliniaritate al caracteristicii statice pe intervalul respectiv și numărul modulelor neuronale utilizate. Deoarece RNA pot aproxima funcții neliniare, nu este necesară o împărțire a intervalului [uinf, usup] într-un număr foarte mare de intervale. Pentru prezentarea algoritmului de partiționare a caracteristicii statice se consideră reprezentarea neparametrică dată în fig. 3.4. Caracteristica statică din această figură corespunde unui sistem dinamic neliniar, descris prin următoarea ecuație de regim static:

, unde : . (3.8)

Fig. 3.4 Caracteristica statică a sistemului dat prin ecuația (3.8)

Pentru aplicarea algoritmului se presupune dată caracteristica statică printr-o mulțime de puncte: , unde . Valorile vectorului reprezintă un șir de numere reale monoton strict crescătoare.

Problema care se pune este să se determine gradul de neliniaritate al unei porțiuni de pe caracteristica statică a respectivului sistem dinamic. Să presupunem că trebuie să apreciem gradul de neliniaritate aferent următoarelor puncte:

, (3.9)

unde:

n1, n2 – reprezintă punctul inițial și final al porțiunii selectate

– reprezintă puncte de pe caracteristica statică, iar n1, n2 verifica relațiile 1 < n1 < n2 < N.

Pentru început, trebuie să se determine segmentul de dreaptă care aproximează punctele . Se consideră următoarea ecuație liniară prin care se generează puncte coliniare având abscisele .

. (3.10)

Se pune condiția ca ordonatele de pe ecuația liniara să minimizeze următorul criteriu pătratic:

.

Dacă se înlocuiește expresia lui ylin(i) rezultă

. (3.11)

Parametrii a și b se determină din condiția de anulare a gradientului .

După efectuarea calculelor, rezultă valorile estimate ale parametrilor a, b:

. (3.12)

Pentru determinarea gradului de neliniaritate se folosește media erorilor pătratice ponderate cu un factor care depinde de panta . Criteriul prin care se evaluează gradul de neliniaritate este

. (3.13)

Se ponderează criteriul cu valoarea, deoarece distanțele sunt mult mai mari dacă este mare, comparativ cu situația când este mic .

Algoritmul de partiționare folosește criteriul (3.11) pentru determinarea parametrilor a și b, iar pentru calculul gradului de neliniaritate se folosește relația (3.13). Trebuie remarcat faptul că mărimile , care apar, în plus, în cadrul relației (3.13) nu influențează calculul parametrilor a și b, deoarece constantele respective nu modifică ecuația (3.12).

În cele ce urmează, se prezintă algoritmul de partiționare care presupune cunoscute punctele de pe caracteristica statica și valoarea de prag a gradului de neliniaritate (VPgn)

Mărimile n1, n2 sunt inițializate cu 1 și 3 deoarece dacă n1=1 și n2=2, criteriul (3.13) ar fi nul și condiția Vgn < VPgn ar fi satisfăcută. Reinițializarea de la pasul 9 este făcută din aceleași considerente.

În urma parcurgerii algoritmului pentru caracteristica statică a sistemului neliniar reprezentată în fig. 3.4 și pentru o valoare de prag VPgn = 0.012 s-au obținut trei subintervale: [-3, -1.7]; [1.7, 0.5]; [0.5 2]. Rezultatul partiționării este reprezentat în fig. 3.5.

Fig. 3.5 Rezultatul partiționării caracteristicii statice

O importanță majoră în partiționarea caracteristicii o are valoarea de prag a gradului de neliniaritate. Cu cât valoarea lui VPgn este mai mică, cu atât vom avea o partiționare mai fină. Având în vedere faptul că RNA sunt buni aproximatori, nu trebuie să alegem o valoare de prag foarte mică, deoarece LNM vor aproxima sistemul neliniar pe un interval mic, ceea ce ar conduce la creșterea numărului de LNM.

După determinarea numărului de LNM, urmează instruirea acestora și apoi instruirea comutatorului dinamic neuronal. Deoarece atât instruirea LNM , cât și cea a comutatorului dinamic neuronal reprezintă aplicații bine cunoscute din literatură, instruirea acestora și rezultatele instruirii se vor prezenta în studiile de caz.

În concluzie, se apreciază faptul că structura neuronală propusă pentru identificarea unui sistem neliniar are următoarele avantaje:

se realizează identificarea sistemului neliniar pe porțiuni, tot cu ajutorul unor sisteme neliniare, deci aproximarea este la fel de precisă în orice punct de operare al sistemul dat;

o problemă de aproximare a unei funcții neliniare se descompune în r probleme de aproximare a unor funcții neliniare mai puțin complicate;

nu este necesară utilizarea unui număr foarte mare de LNM, spre deosebire de aproximarea sistemului neliniar cu ajutorul unor sisteme liniare rezultate prin liniarizarea sistemului neliniar în jurul punctelor statice de funcționare;

LNM utilizate sunt RNA de dimensiune mai mică (număr mai mic de straturi și neuroni de pe fiecare strat);

NS este un comutator predictiv, în sensul că decide apartenența la momentul (k) pe baza realizărilor la momentul (k-1).

datorită caracterului predictiv al comutatorului dinamic, structura neuronala modulară poate fi utilizată la sinteza legii de reglare, deoarece la momentul (k-1) se face sinteza comenzii astfel încât ys(k) să aproximeze valoarea impusă acestuia la acel moment. Pentru a se determina comanda, avem nevoie de y(k).

3.5. Studiu de caz 1. Identificarea unui sistem de reglare a nivelului unui lichid folosind rețele neuronale modulare.

În acest studiu de caz este considerat un model binecunoscut din literatură, modelul unui sistem de reglare a nivelului unui lichid [Sale 1990], [Zhu 2004]. Sistemul constă dintr-o pompă de lichid alimentată de un motor de c.c. Pompa alimentează cu lichid un vas prin intermediul unui ghidaj conic. Intrarea (u) este tensiunea de alimentare a pompei, iar ieșirea sistemului (y) este nivelul lichidului în ghidajul conic. Scopul procedurii de reglare este de a menține nivelul lichidului la o anumită înălțime sau de a urmări un anumit profil.

Identificarea unui sistem neliniar printr-o structură neuronală modulară, prezentată în fig. 3.1, presupune o analiză preliminară a sistemului dinamic neliniar, pentru a stabili: numărul de LNM, lotul de instruire pentru fiecare LNM și, în final, instruirea NS astfel încât acesta să stabilească în jurul căror puncte de funcționare operează sistemul.

În [Sale 90] a fost identificat un model de tip NARMA care aproximează procesul dat prin următoarea ecuație:

(3.14)

Dacă se consideră îndeplinite condițiile de aproximare 1-3 din paragraful 3.4, atunci se obține următoarea ecuație de funcționare în regim de echilibru stabil:

(3.15)

Se fac simplificările de rigoare în ecuația anterioara și rezultă:

(3.16)

Punctele de pe caracteristica statică se obțin rezolvând ecuația (3.16), considerând ust cunoscut sau yst cunoscut. Evident că în cazul ecuației (3.16) se consideră yst cunoscut, deoarece în acest caz vom avea de rezolvat doar o ecuație de gradul 2, ecuație dată mai jos.

. (3.17)

Pentru aplicația în regim de simulare, s-a considerat caracteristica statică rezultată din rezolvarea ecuației (3.17). În practică, caracteristicile se vor determina pe cale experimentală așa cum s-a precizat într-o observație anterioară. În fig. 3.6 este reprezentată caracteristica statică a sistemului dat prin ecuația (3.14), pentru valori ale mărimii de intrare u[-0.8 1.1].

Fig. 3.6 Caracteristica statică a procesului dat prin ecuația (3.14)

Se poate observa că sistemul dinamic descris prin ecuația (3.14) are o caracteristica statică neliniară cu variații ale gradientului (pantei de creștere) și un punct de inflexiune.

3.5.1. Partiționarea caracteristicii statice

O primă problemă în cazul identificării sistemelor cu o structură modulară este de a stabili numărul de LNM utilizate. Acest număr trebuie stabilit în funcție de neliniaritatea caracteristicii statice, corespunzătoare sistemului neliniar dat. Dacă o porțiune a caracteristicii statice este aproximativ liniară, atunci acea porțiune se va aproxima cu un singur LNM. În cazul în care o porțiune a caracteristicii statice este puternic neliniară, atunci în acea zonă se vor utiliza mai multe LNM.

În urma parcurgerii algoritmului de partiționare a caracteristicii statice (paragraful 3.4.1), au rezultat trei LNM cu care se aproximează sistemul neliniar. Intervalele de variație ale mărimii de intrare sunt prezentate în fig. 3.7 și se poate observa faptul că acestea diferă ca lungime. Cu cât caracteristica statica este mai neliniară, cu atât intervalul este mai mic.

Fig. 3.7 Partiționarea mărimii de intrare

După partiționarea caracteristicii statice urmează instruirea celor trei LNM rezultate în urma parcurgerii algoritmului de partiționare.

3.5.2. Instruirea modulelor neuronale ce realizează identificarea

Pentru instruirea celor trei LNM, se formează câte un lot de instruire pentru fiecare în parte. Cele trei loturi de date utilizate sunt obținute prin generarea unui vector normal distribuit în jurul următoarelor puncte: u1= -0.45; u2= 0.0 și u3= 0.6, puncte ce reprezintă mijlocul intervalelor [-0.8 -0.1], [-0.1 0.1] și respectiv [0.1 1.1]. Loturile de date utilizate la instruirea celor trei LNM sunt date în fig. 3.8.

Fig. 3.8a. Lotul de date utilizat la antrenarea LNM1

Fig. 3.8b. Lotul de date utilizat la antrenarea LNM2

Fig. 3.8c. Lotul de date utilizat la antrenarea LNM3

Se poate observa faptul că loturile de date se suprapun la capetele intervalelor ceea ce înseamnă că , . Suprapunerea loturilor de date la capetele intervalelor este necesară, deoarece LNM trebuie să “capteze” dinamicile în jurul tuturor punctelor statice de funcționare. De asemenea, “captarea” dinamicilor este garantată de persistența semnalelor aplicate la intrarea sistemului în jurul tuturor punctelor în care operează sistemul.

Lotul de date utilizat în etapa de antrenare este următorul:

;

– lotul de date corespunzător LNMi

N=500 dimensiunea lotului de date.

Structura modulelor LNM este:

LNM1 și LNM3 au 3 straturi:

stratul 1–2 neuroni și funcție de activare tansigmoid,

stratul 2–5 neuroni și funcție de activare tansigmoid,

stratul 3–1 neuron și funcție de activare liniară.

LNM2 are 3 straturi:

stratul 1–3 neuroni și funcție de activare tansigmoid,

stratul 2–7 neuroni și funcție de activare tansigmoid,

stratul 3–1 neuron și funcție de activare liniară.

Deoarece caracteristica statică a sistemului prezintă o neliniaritate mai pronunțată pentru cazul când us[-0.1 0.1], atunci este necesar ca LNM2 să aibă un număr de neuroni mai mare pe fiecare strat, cu excepția celui de ieșire. Acesta este un alt avantaj al structurii modulare propuse, deoarece aceasta se poate structura astfel încât numărul parametrilor LNM să fie în funcție de gradul de neliniaritate al caracteristicii statice.

Instruirea se realizează utilizând algoritmul backpropagation [Rume 86].

După instruirea celor trei LNM, fiecare dintre acestea implementează câte o funcție neliniară descrisă printr-o ecuație de forma (3.2).

Caracteristicile statice ale funcțiilor neliniare implementate de cele trei LNM se obțin pe cale experimentală și sunt reprezentate în fig. 3.9. Se observă faptul că cele trei caracteristici reprezintă o bună aproximare (în sens ingineresc) a caracteristicii statice a sistemului descris prin ecuația (3.14), reprezentată în fig. 3.6.

Fig. 3.9 Caracteristica statică a sistemului și a celor trei LNM

Un alt aspect care trebuie remarcat este și faptul că sunt intervale ale mărimii de intrare pentru care caracteristicile statice ale celor două LNM vecine sunt aproximativ identice. Acest aspect nu reprezintă un dezavantaj, deoarece NS din fig. 3.2b va stabili că doar un singur LNM poate să aproximeze sistemul dat, chiar dacă ieșirile celor două LNM aproximează destul de bine ieșirea sistemului dat prin ecuația (3.14).

3.5.3. Instruirea comutatorului dinamic corespunzător structurii modulare

NS este un clasificator neuronal care decide care ieșire a unui LNM aproximează cel mai bine ieșirea sistemului dat, la un moment discret de timp k. Clasificatorul neuronal utilizat are un caracter predictiv, deoarece decide, pe baza datelor obținute până la momentul (k-1), care LNM trebuie activat, astfel încât la momentul k acesta să aproximeze ieșirea sistemului. Acest aspect este foarte important la sinteza legii de reglare, deoarece comanda sistemului la pasul (k-1) se determină astfel încât ieșirea sistemului la pasul k să aproximeze ieșirea impusă tot la pasul k. Instruirea NS se va face cu aceleași date utilizate la instruirea celor trei LNM, reprezentate în fig. 3.8(a, b, c).

Lotul de date utilizat la antrenarea comutatorului dinamic este următorul:

,

,

unde: N=500 reprezintă dimensiunea lotului de date,

– reprezintă lotul de date utilizat la instruirea .

Observație. În timpul instruirii NS, datorită faptului că loturile de date conțin și comportarea sistemului în jurul punctelor u1sup (u2inf ) sau u2sup (u3inf), instruirea rețelei necesită un număr mai mare de epoci de instruire. Acest aspect se explică prin faptul că loturile de date în acea zonă sunt aproximativ similare ca structură, dar ținta impusă este diferită. În funcție de lotul de instruire, este posibil ca eroarea în timpul instruirii să nu scadă foarte mult. Totuși, și în acest caz clasificatorul nu poate da rezultate eronate, deoarece în acea zonă sistemul este aproximat corect de două LNM, iar comutatorul dinamic va selecta una din cele două LNM.

În tabelul 3.1 sunt prezentate rezultatele antrenării când s-a utilizat o singură RNA și când s-a utilizat o structură modulară formată din trei module

Tabel 3.1. Parametrii rețelelor neuronale și parametrii de instruire

Se poate observa faptul că performanțele structurii modulare au fost mai bune. De asemenea, și timpul de antrenare, care nu a mai fost trecut în tabel, a fost cu câteva ordine de mărime mai mare în cazul RNA nonmodulare.

Validarea structurii modulare reprezentate în fig. 3.1 se realizează cu un lot de date diferit de cel utilizat la instruire. Modul de operare al NS, mai exact modul de selectare a uneia din cele trei ieșiri care aproximează cel mai bine ieșirea sistemului, este ilustrat în fig. 3.10.

Se poate constata din fig. 3.10 faptul că ieșirea structurii modulare aproximează foarte bine ieșirea sistemului descris prin ecuația (3.14) cu o deviație standard de 0.0743. De asemenea, comutatorul NS decide corect momentul în care trebuie activat un anumit LNM. De exemplu, la momentul k1, chiar dacă ieșirea y(k1) are valori mari, NS activează LNM2. Acest aspect se explică prin faptul că punctul în care operează sistemul la acel moment corespunde punctului care se află pe caracteristica statică corespunzătoare LNM2. O explicație suplimentară este și aceea că loturile de antrenare pentru NS au fost astfel generate, încât ele se suprapun la capete. De aceea, la un moment dat, deși mărimea de intrare poate sugera faptul că ar trebui să fie activat LNM2, se activează LNM3, deoarece NS a luat decizia că ieșirea LNM2 aproximează cel mai bine ieșirea sistemului.

Fig. 3.10 Performanțele de identificare ale structurii modulare

3.6. Studiu de caz 2. Identificarea unui sistem pneumatic folosind rețele neuronale modulare.

3.6.1. Schema generală a sistemului pneumatic

Componentele sistemului pneumatic utilizat sunt următoarele (fig. 3.11):

Fig. 3.11 Schema generală a sistemului pneumatic utilizat

un piston cu dublu efect (Festo);

un compresor (de tipul Festo Jun-Air);

o valva proporțională (Festo DAS-SDE-4-GD);

un senzor de poziție liniar (SLS 095);

o placă de achiziție (Advantech PCI 1711);

două arcuri pentru a simula sarcina ce trebuie acționată de piston.

3.6.2. Caracteristica statică a sistemului. Neliniaritățile sistemului.

Sistemul pneumatic descris este un sistem cu mai multe tipuri de neliniarități, introduse atât de către valva proporțională și cilindrul pneumatic, cât și de către sistemul fizic asupra căruia acționează sistemul pneumatic.

În urma analizei, asupra sistemului pot fi evidențiate neliniarități dinamice datorate forțelor de frecare, neliniarități statice rezultate din fenomene precum histerezisul (comportament diferit într-un sens față de celălalt sens), saturația (odată ajuns în zonele de capăt sistemul nu mai reacționează, indiferent de comanda aplicată valvei ) și zonă moartă (zona de tensiuni din jurul lui 5V în care valva nu răspunde). Zona moartă este nesimetrică față de tensiunea de echilibru și, în același timp, diferă de la valvă la valvă, așa cum este specificat și în documentația tehnică.

Toate aceste tipuri de neliniarități se pot constata pe caracteristica statică a sistemului, reprezentată în fig. 3.12.

Fig. 3.12 Caracteristica statică a sistemului de acționare pneumatică

3.6.3. Instruirea modulelor neuronale ce realizează identificarea

O etapă importantă este stabilirea numărului de module ce vor fi folosite. Acest lucru depinde mult de sistemul hardware pe care va fi implementată structura de identificare modulară [Codr 2010], de puterea de calcul, de forma caracteristicii statice a sistemului și, nu în ultimul rând, de condițiile impuse algoritmului de partiționare. În urma aplicării acestui algoritm, au rezultat două situații posibile: o structură cu 5 module și una cu 3 module. S-a optat pentru structura neuronală cu 3 module, pentru a fi cât mai aproape de sistemul fizic; un modul va modela deplasarea spre stânga a pistonului, unul deplasarea spre dreapta și un modul deplasarea în zona de mijloc.

Pentru instruirea celor trei LNM se formează câte un lot de instruire pentru fiecare în parte. Cele trei loturi de date au fost obținute aplicând valvei tensiuni de alimentare cu o evoluție pseudo-aleatoare, care au condus la deplasarea pistonului succesiv spre dreapta, spre stânga și în zona de mijloc. Loturile de date utilizate la instruirea celor trei LNM sunt reprezentate în fig. 3.13.

Fig. 3.13 Reprezentarea loturilor de date utilizate la instruirea celor trei module neuronale

Utilizând aceleași principii ca și în primul studiu de caz, s-a avut în vedere ca loturile de date generate să se suprapună la capetele intervalelor, ceea ce înseamnă că , .

Modulele neuronale LNM au fost configurate în felul următor: LNM1 și LNM3 au 3

straturi cu 3 neuroni și funcție de activare logsigmoid pentru primul strat, cu 7 neuroni și funcție de activare logsigmoid pentru stratul al doilea și 1 neuron și funcție de activare liniară pe stratul de ieșire. Deoarece neliniaritățile sunt mai pronunțate în intervalul de mijloc (us[4 6]V), s-a optat pentru un modul neuronal LNM2 de dimensiune puțin mai mare, astfel: stratul 1 are 5 neuroni și funcție de activare logsigmoid, stratul 2 are 11 neuroni și funcție de activare logsigmo, iar ultimul strat are 1 neuron și funcție de activare liniară. Acesta este unul din avantajele unei structuri modulare neuronale: fiecare modul neuronal poate fi configurat în funcție de gradul de neliniaritate a caracteristicii statice. Instruirea se realizează utilizând algoritmul backpropagation [Rume 1986].

După etapa de instruire, modulele neuronale implementează câte o funcție neliniară descrisă printr-o ecuație de forma (3.2). O altă etapă importantă este validarea structurii de identificare modulară. Validarea s-a făcut utilizând un lot de date diferit de cel folosit în etapa de instruire. Rezultatele obținute sunt prezentate în fig. 3.14:

Fig. 3.14 Validare module neuronale

Se poate observa că procedura de identificare a decurs în mod corespunzător, astfel încât, în toate cele trei cazuri, răspunsul modulelor neuronale practic se suprapune peste răspunsul sistemului pneumatic achiziționat. Deviațiile standard pentru cele 3 situații sunt: 0.0169 (dreapta), 0.2517 (stânga) și 0.0305 (mijloc).

Următoarea etapă în instruirea structurii modulare o constituie instruirea comutatorului neuronal. Lotul de date utilizat la antrenarea comutatorului dinamic este următorul:

P – este format din aceleași elemente ca și în cazul instruirii celor trei LNM, dar concatenate.

,

unde: N=2000 reprezintă dimensiunea lotului de date.

În tabelul 3.2 sunt prezentate rezultatele antrenării când s-a utilizat o singură RNA și rețeaua modulară formată din cele trei module.

Tabel 3.2. Parametrii rețelelor neuronale și parametrii de instruire

Se poate observa faptul că, atât numărul de parametri al LNM, cât și eroarea de antrenare, sunt mai mici în cazul structurii modulare. De asemenea, timpul de antrenare, care nu a mai fost trecut în tabel, a fost cu câteva ordine de mărime mai mare în cazul rețelei neuronale nonmodulare.

Atât modul de operare al NS, cât și validarea structurii modulare, realizată cu un lot de date diferit de cel de antrenare, sunt ilustrate în fig. 3.15.

Fig. 3.15 Reprezentarea răspunsului rețelei neuronale modulare și al clasificatorului neuronal

Se poate constata faptul că ieșirea structurii modulare aproximează destul de bine ieșirea sistemului pneumatic, având o deviație standard de 0.0179. De asemenea, în figură mai este ilustrat modul de comutare al NS. De exemplu, în jurul eșantionului 1000, NS activează succesiv LNM1 și LNM2. Acest aspect se explică prin faptul că punctul în care operează sistemul la acel moment corespunde intervalului de suprapunere a loturilor de date pentru intervalul stânga și intervalul de mijloc.

3.7. Modele ale frecării. Identificarea modelului de frecare LuGre folosind rețele neuronale modulare.

3.7.1 Forța de frecare. Considerații generale.

În general, frecarea este prezentă în toate sistemele care încorporează părți în mișcare relativă. Deși frecarea poate fi privită, uneori, ca un fenomen pozitiv (de exemplu, datorită forței de frecare un automobil se oprește mai repede la acționarea pedalei de frână), totuși ea este un impediment pentru servomecanisme.

Prin definiție, frecarea este un proces complex de natură mecanică și energetică, care apare între suprafețele în contact a două corpuri care se află în mișcare relativă. Fenomenul de frecare se caracterizează prin forța de frecare [Dumi 2007], aceasta având întotdeauna sensul opus mișcării.

Frecarea presupune un consum de energie care se disipă sub formă de căldură, la nivelul cuplei de frecare și în mediul înconjurător. În acest sens, tribologia indică soluțiile care trebuie avute în vedere, atât în faza de proiectare, cât și în faza de exploatare a mașinilor, astfel încât pierderile de energie să fie minime, în condițiile realizării unei fiabilități ridicate.

Frecarea, ca fenomen natural, este greu de modelat fiind, încă, incomplet înțeleasă. Modelele clasice utilizate sunt ilustrate de dependența forță de frecare-viteză. Exemplele tipice recurg la combinații diferite între frecarea Coulomb, frecarea vâscoasă, și efectul Stribeck. Ultimul element menționat produce efectul de destabilizare la viteze mici. Modelele clasice nu explică nici histerezisul forței de frecare în regim nestaționar al vitezei, nici variațiile forței de desprindere, așa cum rezultă ele din abordarea experimentală, și nici micile dislocări care survin la nivelul interfeței contactului în timpul fenomenului „stick-slip“. Frecarea este o funcție de viteză ca urmare a faptului că procesul fizic de forfecare la nivelul joncțiunilor depinde de viteză. Fig. 3.16 prezintă câteva curbe frecare-viteză, ale căror detalii sunt intrinsec legate de gradul de lubrifiere (în grafic, lubrifierea, ca atribut al fiecărei caracteristici, este asociată regimului frecării limită din curba Stribeck). Pentru analiză și simulare este important de a avea un model matematic al dependenței frecare-viteză staționară [Mart 1990].

Fig. 3.16 Frecarea în funcție de viteza staționară pentru diferite grade de lubrifiere

(curba Fuller frecare-viteză) [Dumi 2007]

3.7.2 Taxonomia modelelor clasice ale frecării

Un model al frecării este necesar pentru mai multe scopuri. În unele cazuri, este de dorit să se dispună de un model ce facilitează o pătrundere în mecanismele fizice ale interfeței frecării. În alte cazuri, este suficient să se obțină un model ce ajută la predicția comportamentului global, calitativ, al unui sistem cu frecare. Dacă modelul este utilizat pentru compensarea frecării, pot exista limitări în ceea ce privește complexitatea computațională a modelului.

În acest paragraf sunt prezentate exemple variate de modele ale frecării [Mart 1990]. Se vor avea în vedere doar cele mai importante modele ale frecării. Incursiunea în modelarea frecării sugerează o clasificare a modelelor frecării în două categorii, după criteriul atributului static/dinamic ce caracterizează dependența forță de frecare-viteză:

modele statice, în care forța de frecare este descrisă de o relație statică între viteză și forța aplicată;

modele dinamice, în care se iau în considerare, într-un cuantum mai mare sau mai mic, efectele dinamice ale frecării.

3.7.2.1 Modele statice ale frecării

Modelele frecării, determinate în deceniile trecute, aveau în vedere frecarea ca o funcție statică de viteza de alunecare. Prin urmare, sunt numite modele statice ale frecării și sunt prezentate în continuare. În cadrul abordării clasice a dependenței forță de frecare-viteză, se cunosc patru variante uzuale (fig. 3.17):

forță Coulomb;

forță Coulomb+frecare vâscoasă;

frecare statică („stiction“)+forță Coulomb+frecare vâscoasă;

includerea efectului Stribeck (varianta c)) la care se adaugă curba Stribeck).

Fig. 3.17 Exemple de modele statice ale frecării. a) forță Coulomb; b) forță Coulomb+frecare vâscoasă; c) frecare statică(„stiction“)+forță Coulomb+frecare vâscoasă; d) forță Coulomb+frecare vâscoasă la care se adaugă curba Stribeck) [Dumi 2007]

Modelele clasice ale frecării conțin componente diferite, fiecare componentă reprezentând o anumită parte a forței de frecare. Scopul acestor modele era de a facilita o înțelegere rudimentară a comportamentului frecării, ce permitea efectuarea unor experimente simple. Rezultatele cercetărilor lui da Vinci au fost redescoperite de Amontons la sfârșitul secolului al XVII-lea și apoi dezvoltate de Coulomb în secolul al XVIII-lea. Ideea principală era aceea că frecarea se opune mișcării, iar forța de frecare este independentă de viteza de alunecare și de aria de contact. Prin urmare, forța de frecare putea fi descrisă prin:

(3.18)

(3.19)

unde FC – forța Coulomb, v – viteza de alunecare, µ – coeficientul de frecare, N – apăsarea normală.

Această descriere a frecării poartă numele de frecare Coulomb (fig. 3.17a). După cum se observă, modelul frecării Coulomb nu specifică forța de frecare pentru viteza 0. Depinzând de modul în care este definită funcția semn (sgn), forța de frecare poate fi egală cu 0 sau poate lua orice valoare cuprinsă în intervalul de la -FC la FC. Datorită simplității sale, modelul frecării Coulomb a fost folosit adesea pentru compensarea frecării [Frie 1991].

În secolul al XIX-lea, teoria hidrodinamică a fost dezvoltată conducând la expresii ale forței de frecare ce depind de vâscozitatea lubrifianților (Reynolds – 1886). Termenul frecare vâscoasă este folosit pentru a descrie componenta corespunzătoare a frecării (frecarea fluidă din curba Stribeck), ce este descrisă în mod normal de relația:

(3.20)

Frecarea vâscoasă împreună cu frecarea Coulomb sunt prezentate în fig. 3.17b. În general, nu este corect să se considere că frecarea vâscoasă este funcție liniară de viteză. O relație mai generală este următoarea:

(3.21)

unde δv este un parametru ce depinde de geometria suprafețelor implicate.

Termenul „stiction“ (o posibilă traducere este „sticție“) este prescurtarea de la static friction (frecare statică). Acest termen descrie forța de frecare la repaus. Morin (1833) a introdus ideea că forța de frecare la repaus este mai mare decât nivelul frecării Coulomb. Frecarea statică contracarează forțele externe (ce acționează asupra corpului) sub un anumit nivel, astfel încât obiectul este ținut pe loc. În orice caz, dacă forțele externe sunt prea mari, atunci forța de frecare statică nu poate împiedica mișcarea de alunecare a corpului. Pornind de la aceste lucruri, este evident că forța de frecare la repaus nu poate fi descrisă ca o funcție de viteză. În schimb, ea trebuie modelată folosind forța externă aplicată corpului, în următorul mod:

(3.22)

în care Fe este forța externă, iar FS este forța stiction.

Se observă că forța de frecare pentru viteză nulă este o funcție de forța externă și nu de viteză. Componentele clasice ale frecării pot fi combinate în diferite moduri, ca în figurile 3.17c și d, și orice combinație de acest fel va fi etichetată ca model clasic. O descriere mai generală a frecării statice clasice este următoarea:

(3.23)

unde F(v) devine o funcție de viteză, cu anumite parametrizări [Arms 1991]. Forma ei cea mai comună este următoarea:

(3.24)

unde vS este numită viteză Stribeck. Tustin [Tust 1947] a folosit parametrizarea cu δS=1, iar Bo și Pavelescu [Bo 1982] au sugerat că valoarea lui δS să fie între 0,5 și 4. Armstrong-Hélouvry [Arms 1991] a folosit o parametrizare gaussiană cu δS=1. Alte parametrizări notabile care au fost folosite sunt:

(3.25)

și parametrizarea folosită de Canudas de Wit (1993),

(3.26)

Această parametrizare are avantajul de a fi liniară în raport cu parametrul v, dar este validă numai într-un interval limitat de viteze datorită termenului, care explică efectul Stribeck. În afara acestui interval, forța de frecare poate avea semn eronat.

Deoarece forța de frecare depinde de mulți factori, nicio parametrizare particulară nu poate fi încă complet motivată teoretic. Parametrizarea care trebuie aleasă depinde de aplicația specifică și poate fi decisă prin experimente simple.

Modelul Karnopp. Dezavantajul principal al modelului de tip (3.23), atunci când se utilizează în probleme de comandă și simulare, constă în detectarea vitezei 0. Un remediu în această problemă este furnizat de modelul lui Karnopp [Karn 1985]. Acest model a fost conceput pentru a depăși problema detectării vitezei 0 și a evitării comutării între diferitele relații (v. ec. 3.23), comutare care, în esență, caracterizează fenomenul stick-slip. În cadrul modelului, se definește un interval de „viteză 0“, [-DV/2, +DV/2]. Când viteza |v|<DV/2, adică valoarea vitezei este plasată în interiorul intervalului de lărgime DV, atunci frecarea este egală cu forța exterioară aplicată sistemului cu frecare. În cazul în care viteza este în afara intervalului de lungime DV, frecarea va fi o funcție statică de viteză (F(v) din ec. 3.23). În concluzie, în funcție de plasarea vitezei în zona moartă asociată intervalului de bandă DV, frecarea ia fie valoarea forței exterioare, fie o valoare dată de o funcție de viteză.

Modelul Tustin . Trecerea de la modele statice la modele dinamice ale frecării a fost făcută cu aplicabilitate practică de modelul Tustin. Oferind o bună aproximare a dinamicii frecării, modelul este simplu sub aspect matematic, constantele implicate fiind ușor de obținut. Frecarea este dată de expresia:

(3.27)

unde constantele au următoarea semnificație: C0, C1 sunt parametri ce definesc frecarea statică, C2 este coeficientul de frecare vâscoasă, v viteza și α o constantă de timp asociată pantei negative a frecării din curba Stribeck (frecarea mixtă).

Luând în considerare frecarea Coulomb, frecarea vâscoasă, amortizarea vâscoasă aferentă curbei Stribeck, frecarea statică și asimetria, modelul poate fi considerat eficient. Însă, el nu acoperă efectul Dahl, defazajul temporal, memoria fricțională, timpul de înțepenire deci, implicit, capabilitatea de modelare a fenomenului real are o acuratețe relativă.

3.7.2.2 Modele dinamice ale frecării

Modelul Dahl

Utilizat cu precădere în simulările proiectelor militare și inspirat de frecarea solidului, modelul este unul dinamic simplu, capturând în esență dislocarea la viteză 0 (dislocare pre-alunecare) și histerezisul forță-poziție (fig. 3.18). Proprietățile modelului arată că forța depinde numai de dislocare, nedepinzând de viteză. Modelul nu include efectul Stribeck și, implicit, ignoră frecarea statică.

Fig. 3.18 Modelul Dahl: histerezisul frecare-poziție [Dumi 2007]

Ecuațiile care definesc și descriu modelul sunt prezentate mai jos. Caracteristica efortului la întindere se definește ca fiind:

(3.28)

unde σ este rigiditatea contactului. Derivând forța de întindere funcție de timp, obținem:

(3.29)

Pentru α=1 , rezultă: (3.30)

Introducând F= σ z atunci: (3.31)

În regim staționar: sau (3.32)

Versiunea staționară a modelului Dahl reprezintă chiar modelul Coulomb (F devine Fc) al frecării. z reprezintă dislocarea sau deplasarea la viteză 0 și se constituie într-o variabilă de stare.

Modelul Bliman-Sorine

Bliman și Sorine au dezvoltat o familie de modele dinamice pornind de la investigații experimentale, cu scopul de a extinde modelul Dahl prin includerea efectului Stribeck. Impunând independența frecării față de viteză, au arătat că forța de frecare depinde doar de semnul vitezei și de o variabilă definită prin:

(3.33)

Depinzând numai de direcția în care se deplasează sistemul, și nu de cât de repede se deplasează, modelul asociat utilizează elegant teoria operatorilor de histerezis, fiind exprimat în termeni liniari în raport cu variabila s, după cum urmează:

(3.34)

unde variabilele sunt funcții de variabila s (vS=sgn(v) iar xS – vectorul de stare al frecării). Modelele de stare de acest tip au diferite grade de complexitate. În context, adesea se consideră sistemul de ordin 2 (care furnizează și forța statică), în care matricele implicate sunt:

, , (3.35)

unde f1 – f2 corespunde frecării cinetice atinse asimptotic când s →∞ (frecarea Coulomb, FC). Rigiditatea este σ=f1/εf, iar η este un parametru empiric.

Modelul (ec. 3.35) poate fi asimilat unei conectări în paralel a două modele Dahl, unul rapid și celălalt lent. Modelul rapid are frecarea staționară mai mare decât cea a modelului lent, aceasta din urmă fiind extrasă din modelul rapid ca amplitudine maximă a frecării statice.

Dacă εf →0, modelul de ordinul 1 devine un model clasic Coulomb, iar cel de ordinul 2 un model consacrat Coulomb-stiction.

Modelul LuGre

Modelul LuGre este un model dinamic care pleacă de la ideea generalizării modelului Dahl și se bazează pe o interpretare abstractă a asperităților din contact, așa-numitul model „bristle”. Frecarea este modelată ca o medie a forțelor de deflecție asociate resorturilor elastice care emulează contactul. Când forța tangențială se aplică, joncțiunile se deformează elastic ca niște resorturi până când abaterea (variabila z din model) este suficient de mare pentru a se declanșa alunecarea. Modelul introduce, astfel, o nouă variabilă de stare, z, care reprezintă abaterea medie a asperităților, și care este determinată de viteză. Ea este mai mică la viteze mici, ceea ce implică faptul că valoarea ei staționară scade odată cu creșterea vitezei.

Fig. 3.19 Interpretare „bristle” [Dumi 2007]

Modelul are forma:

(3.36)

Ecuația derivă din modelul Dahl, unde FC s-a înlocuit cu funcția g(v) care modelează efectul Stribeck. Expresia forței de frecare este dată de:

(3.37)

σ0 fiind rigiditatea la nivelul asperităților, σ1 amortizarea.

3.7.3 Concluzii privind modelele forței de frecare

Din subcapitolul prezentat se poate trage concluzia că modelele de frecare, adoptate în mod uzual, se pot clasifica în:

modele statice ale frecării;

modele dinamice ale frecării.

Cele din urmă, derivate din primele, iau în considerare detaliat dinamica frecării, incluzând astfel și fenomenele de natură temporală (memoria fricțională, de exemplu). Faptul că modelele frecării prezintă proprietăți diferite, în funcție de amplitudinea semnalului de intrare, constituie un motiv pentru a propune utilizarea structurii modulare pentru identificarea acestui proces. Așa cum s-a arătat în [Dumi 2007], modelul dinamic ce surprinde cel mai bine fenomenologia frecării este modelul LuGre. De aceea, în studiul de caz următor va fi abordată problema identificării modulare a forței de frecare, considerând procesul simulat pe baza modelului dinamic LuGre.

3.7.4 Studiu de caz 3. Identificarea modulară a modelului dinamic al forței de frecare.

Pentru a surprinde neliniaritățile pronunțate ale frecării, au fost realizate diferite teste în regim de simulare, pentru un semnal de intrare (viteză) cu amplitudine foarte mică și cu amplitudine mare (cu 2 ordine de mărime mai mare).

a) b)

Fig. 3.20 Simulare model LuGre pentru viteză mică a) și viteză mare b)

După cum se poate observa și din fig. 3.20, modelul LuGre răspunde diferit pentru valori diferite ale semnalului de intrare: pentru viteze mici forța de frecare este prezentă un timp mai îndelungat (fig. 3.20a), iar pentru viteze mari forța de frecare are o valoare mai mare pentru un timp foarte scurt (fig. 3.20b). În continuare, s-a aplicat modelului LuGre un semnal de intrare format dintr-o succesiune de trepte de diferite amplitudini,

Fig. 3.21 Simulare model LuGre pentru o succesiune de trepte

Se poate observa că răspunsul modelului este foarte variat. În concluzie, se poate spune despre modelul LuGre al frecării că este un sistem neliniar complex.

Fig. 3.22 Lotul de date utilizat pentru antrenare (valori mici ale vitezei)

Fig. 3.23 Lotul de date utilizat pentru antrenare (valori mari ale vitezei)

Într-o primă etapă s-a făcut identificarea folosind o singură RNA de dimensiune 30 – 20 – 1 neuroni cu funcții de activare tansig – tansig – purelin. Lotul de date aplicat RNA constituit din cele 2 loturi din figurile 3.22 și 3.23 concatenate este de forma:

(3.38)

unde: N=600 reprezintă dimensiunea lotului de date, Ff -forța de frecare iar v – viteza.

Pentru antrenarea RNA a fost folosit algoritmul Levenberg – Marquard. După 10000 de epoci s-a ajuns la o eroare de 16265. După cum se poate observa și din fig. 3.24, rezultatele identificării nu sunt bune, existând o eroare mare între ținta impusă și ieșirea rețelei neuronale (deviația standard este de 5.2152). O explicație posibilă ar fi aceea că diferența amplitudinilor semnalului de intrare din prima jumătate a lotului de date și diferența amplitudinilor semnalului de intrare din cea de-a doua este de cel puțin un ordin de mărime, făcând astfel dificilă identificarea cu o singură RNA.

Fig. 3.24 Reprezentarea ieșirii rețelei neuronale și a țintei

În ce de-a doua etapă s-a făcut identificarea cu două RNA de dimensiune 10 – 10 – 1 neuroni cu funcții de activare tansig – tansig – purelin. Primei RNA i-a fost aplicat lotul de date din fig. 3.22, iar celei de-a doua rețele neuronale lotul din fig. 3.23. Loturile au avut aceeași formă ca cel din ec. 3.38. Rezultatele identificării sunt prezentate în fig. 3.25 (viteză mică) și în fig. 3.26 (viteză mare).

Fig. 3.25 Reprezentarea ieșirii rețelei neuronale și a țintei (pentru viteză mică)

Fig. 3.26 Reprezentarea ieșirii rețelei neuronale și a țintei (pentru viteză mare)

Se poate observa faptul că rezultatele identificării sunt mai bune în situația când s-au utilizat două RNA (deviațiile standard sunt 1.7871 pentru viteză mare și 0.3782 pentru viteză mică). De asemenea, în tabelul 3.3 au fost notați parametrii de antrenare. Parametrii însumați ai celor două RNA (timp de antrenare, eroare de antrenare, ponderi și deplasări) au valori mai bune decât cei ai rețelei neuronale monolitice. Acest studiu de caz confirmă ideea utilizării mai multor module neuronale în situația când se dorește identificarea unui sistem neliniar complex și când amplitudinea semnalului de intrare variază în intervale mari.

Tabel 3.3. Parametrii rețelelor neuronale și parametrii de instruire

Comutatorul neuronal este o RNA multistrat cu următoarea structură: 10 – 10 – 1 neuroni cu funcții de activare tansig – tansig – logsig. Lotul de date a fost similar celui aplicat rețelei neuronale monolitice, de forma celui din ec. (3.38), cu deosebirea că de această dată ținta a avut următoarea configurație:

(3.39)

Clasificatorul neuronal a fost antrenat folosind algoritmul Levenberg – Marquard, 270 de epoci până s-a ajuns la o eroare de . Performanțele structurii modulare de identificare împreună cu selecția modulelor sunt reprezentate în fig. 3.27. Deviația standard în acest caz este de 1.8093.

Fig. 3.27 Performanțele structurii modulare de identificare; selecția modulelor

3.8. Concluzii

Obiectivul urmărit în acest capitol a fost stabilirea unor noi soluții de identificare neuronală modulară, care să ofere unele avantaje specifice, în raport cu realizările existente. În acest cadru, a fost propusă o structură neuronală de identificare modulară ce include, pe lângă modulele neuronale care fac identificarea propriu-zisă, și un comutator dinamic neuronal. Acesta din urmă are rolul de a stabili care modul neuronal aproximează cel mai bine sistemul neliniar. Într-o primă etapă au fost prezentate condițiile preliminare necesare pentru identificarea unui sistem folosind rețele neuronale modulare. Noutatea apare și din faptul că numărul de module neuronale este stabilit pe baza informațiilor oferite de caracteristica statică a sistemului neliniar. În acest sens a fost propus un algoritm de partiționare a caracteristicii statice.

Validarea structurii de identificare modulară a fost realizată, într-o primă etapă, pe un studiu de caz din literatură [Sale 90]: un sistem de reglare a nivelului unui lichid. În acest caz, a fost făcută o comparație și cu cazul când identificarea a fost făcută cu o rețea neuronală monolitică. Structura de identificare este testată, de asemenea, și pe un sistem real întâlnit în mediul industrial: un sistem pneumatic.

Fiind cunoscut faptul că una dintre cele mai dificile probleme întâlnite în sistemele de acționare automatizate este cea a procesului de frecare, în ultima parte a capitolului au fost prezentate unele noțiuni despre fenomenologia frecării și, de asemenea, cele mai importante modele statice și dinamice. Utilizând modelul dinamic considerat a fi cel mai evoluat (modelul LuGre), s-au pus în evidență proprietățile foarte diferite ale acestuia la niveluri mici și la niveluri mari ale semnalului de intrare. Pe această bază, a fost propusă utilizarea structurii de identificare modulară pentru modelul de frecare LuGre. A fost testată structura de identificare modulară pe un lot de date generat de modelul LuGre. Rezultatele obținute și în acest ultim studiu de caz recomandă utilizarea unei abordări modulare pentru identificare, mai ales când este un sistem cu neliniarități complexe și ale cărui amplitudini ale semnalului de intrare variază într-un domeniu extins.

CAPITOLUL 4

METODOLOGII DE CONDUCERE CU

REȚELE NEURONALE MULTISTRAT

4.1 Introducere

În acest capitol este abordată conducerea sistemelor neliniare folosind RNA multistrat. Obiectivele urmărite sunt:

prezentarea unor metodologii generale de conducere folosind RNA;

conducerea sistemelor neliniare folosind un regulator neuronal de tip PID. Sunt abordate următoarele probleme:

stabilirea structurii de conducere;

implementarea acestei structuri și a algoritmului de antrenare în limbajul C++;

validarea structurii de conducere pe un proces real;

conducerea sistemelor neliniare folosind o structură neuronală modulară. Pentru această problemă se prezintă:

structura neuronală modulară de conducere și algoritmul de antrenare;

implementarea în Matlab și aplicarea structurii de conducere și a algoritmului de antrenare la controlul nivelului unui lichid dintr-un stand de laborator.

4.2 Conducerea sistemelor neliniare cu ajutorul rețelelor neuronale

O alternativă la metodele clasice de control al proceselor neliniare o reprezintă controlul neuronal [Nare 1990; Nare 1992]. Acesta presupune, în general, furnizarea de către o RNA a comenzii către elementul de execuție, comandă care va fi aplicată procesului. Controlerele neuronale [Gil 1999] pot fi aplicate cu succes atunci când există dinamici nemodelate, erori de modelare, efecte de histerezis, saturație etc. În funcție de modul cum este utilizat regulatorul neuronal, există mai multe abordări, care sunt prezentate succint în cele ce urmează.

4.2.1 Controlul neuronal în circuit deschis, bazat pe model invers

Dacă poate fi găsită o relație inversă între ieșirea și intrarea unui sistem neliniar, atunci este posibil să se construiască un controler bazat pe modelul invers. În general, sistemul invers al unui sistem cauzal, care reprezintă modelul procesului reglat, este strict necauzal, deci nerealizabil fizic. Controlerele neuronale utilizează aproximări la limită cauzale ale modelelor inverse, precum și procedee prin care valorile viitoare ale mărimii de ieșire a procesului, care intervin în descrierea modelului invers, sunt înlocuite cu valorile referinței (considerată cunoscută). Obținerea sub formă neuronală a modelului invers este sensibil mai dificilă decât în cazul obținerii modelului direct, adică al identificării procesului.

RNA pot învăța modelul invers prin proceduri off-line sau on-line, ținând cont de anumite restricții (aproximarea ca sistem la limită cauzal a modelului invers, cerința de fază minimă a procesului, prezența timpului mort) [Mill 1995], [Sofg 1990]. În fig. 4.1 este prezentată schema de control în circuit deschis, cu model invers.

Fig. 4.1 Controler neuronal invers (off-line)

Fie următorul sistem neliniar:

(4.1)

Scopul este de a obține un model exprimat astfel:

(4.2)

Întrucât un sistem de forma (4.2) este necauzal, după instruirea RNA se înlocuiește y(k+1) cu referința r(k+1). Pentru a se obține rezultate bune folosind controlul invers, lotul de antrenare trebuie să acopere un domeniu mare al spațiului intrare-ieșire. De asemenea, semnalul de comandă furnizat de controlerul invers trebuie să fie în domeniul semnalului de ieșire din lotul de antrenare.

Controlerul invers poate fi antrenat și on-line. În acest caz, schema de conducere (fig. 4.2) va fi formată din două RNA.

Fig. 4.2 Controler neuronal invers (online)

Aceasta este o schemă de control indirect. Modelul invers neuronal este antrenat on-line, astfel încât să minimizeze diferența dintre u și um. El este transferat permanent în poziția regulatorului.

O altă soluție privind instruirea regulatorului neuronal la comanda în circuit deschis a unui proces este ilustrată în fig. 4.4. Pentru instruirea RNA, aici se utilizează eroarea e = r – y. Această eroare ar trebui să fie propagată înapoi prin proces, pentru a se putea aplica algoritmul backpropagation de instruire a RNA. Evident, această backpropagare nu se poate realiza printr-un proces fizic, decât pe baza unei proceduri aproximative, care implică experimente realizate pe proces. Deoarece procesul este necunoscut, derivatele parțiale implicate în operația de backpropagare pot fi obținute variind foarte puțin semnalul de intrare și măsurând ieșirea procesului pentru fiecare variație [Psal 1988].

Fig. 4.3 Controler neuronal invers (online)

Totuși, în practică, există situații când RNA nu sunt capabile să învețe dinamicile inverse. De exemplu, Psichogios and Ungar [Psic 1991] au arătat pe diferite studii de caz faptul că modelele inverse nu s-au comportat cum ar fi trebuit, datorită necauzalității acestora. Dificultățile inversării unui model pot apărea și din cauza existenței timpilor morți în proces.

Concluzionând, deși structura de conducere în circuit deschis, bazată pe modelul invers al procesului, este simplu de implementat, aceasta are o serie de dezavantaje:

nu poate rejecta perturbațiile;

nu toate procesele pot fi inversate, deci aplicabilitatea este limitată.

Din perspectiva practică, este de preferat ca mărimea de comandă furnizată de un regulator neuronal să fie aplicată inițial unui model al procesului, și nu direct procesului. Astfel, se pot evita eventuale defectări ale procesului, datorate unor comenzi neadecvate. Dacă modelul procesului nu este disponibil, atunci se poate utiliza o RNA pentru a realiza identificarea procesului. Regulatorul neuronal va fi antrenat astfel încât ieșirea modelului să urmărească o cât mai mare varietate de referințe. După acest stagiu de (pre)antrenare, regulatorul neuronal poate fi cuplat la bucla reală de conducere. Performanțele acestei structuri de control depind foarte mult de “calitatea” modelului.

Performanțele acestei structuri au fost arătate în câteva studii, cum ar fi [Nguy 1990], [Trou 1991]. Structura de control a adus și importante beneficii economice, care au fost prezentate în [Stai 1993]. Unul din cele mai importante succese din industrie, obținute prin utilizarea acestei structuri de control neuronal, a fost controlul unui arc electric într-un cuptor, dezvoltat de Neural Applications Corporation and Milltech-HOH și prezentat în [Stai 1993].

4.2.2 Controlul neuronal în circuit închis, bazat pe model

Când se dorește să se impună un anumit profil mărimii de ieșire, poate fi utilizată o schemă de conducere în buclă închisă cu model de referință. Schema de control neuronal bazat pe model de referință este prezentată în fig. 4.4.

Fig. 4.4 Schemă de control neuronal cu model de referință

Modelul neuronal al procesului se obține prin instruirea off-line. În timpul instruirii, eroarea ei este propagată înapoi prin modelul neuronal al procesului (MNP), în vederea ajustării parametrilor acestuia. Procedura de instruire se consideră terminată când diferența dintre y și yi tinde la zero pentru toți vectorii lotului de instruire. Pentru a obține performanțe bune în timpul reglării, MNP rezultat trebuie să conțină informații bogate cu privire la dinamica procesului, pentru toate datele posibile din timpul funcționării structurii de reglare. Regulatorul neuronal se instruiește on-line prin propagarea înapoi a erorii de reglare ec, prin MNP, fără a mai ajusta parametrii acestuia din urmă. În acest caz, blocul MNP este folosit doar pentru propagarea informației. Ponderile regulatorului neuronal se vor stabiliza la valori bine determinate, după ce procesul de reglare a parcurs o perioadă suficientă de timp, necesară extragerii de „cunoștințe” cu privire la legea de reglare.

Fie sistemul neliniar descris prin următoarea ecuație:

(4.3)

Mărimea de ieșire a sistemului la momentul k+1 poate fi aproximată de o RNA, după cum urmează:

(4.4)

Se presupune că modelul de referință este descris de următoarea ecuație:

(4.5)

Scopul procedurii de control este de a genera o comandă situată într-un anumit interval, astfel încât , unde ec(k) = ym(k) – y(k).

Din relația (4.4), comanda poate fi calculată la fiecare moment de timp k. Se va ține cont de faptul că poate fi înlocuit cu din relația (4.5), astfel încât:

(4.6)

Din relațiile (4.3) și (4.6) se poate descrie ieșirea procesului neliniar prin relația:

(4.7)

adică eroarea de reglare ec(k) este determinată de diferența .

4.2.3 Control neuronal prin corecția comenzii

O variantă a schemei clasice de control cu anticipare, utilizată frecvent în sistemele de urmărire, este prezentată în fig. 4.5.

Fig. 4.5 Control neuronal cu anticipare

Inițial, comanda procesului este preluată de regulatorul clasic, iar RNA se instruiește pentru determinarea modelului invers al procesului. Atunci când criteriul de eroare care definește precizia modelului invers scade sub un prag, modelul invers este transferat în poziția regulatorului de anticipare. Din acest moment, acest regulator joacă rolul de compensator dinamic, iar regulatorul clasic, conținând o componentă integrală, asigură anularea erorii staționare și rejecția perturbațiilor.

4.2.4 Control neuronal cu model intern

Metodele de control bazate pe model prezic ieșirile viitoare ale procesului, utilizând un model neuronal al acestuia, dedus pe baza minimizării unui criteriu de eroare a aproximării procesului prin model. Majoritatea tehnicilor tradiționale de control, bazate pe model, folosesc modele liniare sau cu neliniarități “netede”, relativ simple, ceea ce creează probleme serioase, atunci când se încearcă conducerea unor procese cu neliniarități complexe (de ex., neliniarități esențiale). Mult mai potrivite în aceste situații sunt RNA.

Structura de control IMC (Internal Model Control) a fost propusă de Garcia și Morari [Garc 1982] și folosește un model al procesului (ym) în paralel cu procesul însuși (y), pentru a produce semnalul de reacție utilizat de controler, care este de fapt o estimare a perturbației (p). Această structură este prezentată în fig. 4.6. Pentru a crește robustețea controlerului, acesta este precedat de multe ori de un filtru de ordinul întâi.

Fig. 4.6 Control neuronal cu model intern

Regulatorul neuronal trebuie să aproximeze dinamica inversă a procesului, pentru ca acesta să urmărească traiectoria de referință dorită (r). Atât modelul direct, cât și modelul invers (al regulatorului), pot fi actualizate on-line, modelul direct prin folosirea semnalului de eroare dintre ieșirea procesului și ieșirea modelului neuronal direct, iar modelul invers fie prin inversarea modelului direct actualizat (de ex., prin metoda de inversare prezentată în secțiunea 8.4.5 din [Pusc 2000]), fie prin antrenarea RNA asociate controlerului, utilizând ca intrări în regulatorul neuronal ieșirea curentă y și ieșirea dorită a procesului r, iar ca țintă utilizând comanda u.

4.2.5 Control neuronal predictiv

Deși controlul IMC este utilizat pe o scară foarte largă, acesta are și câteva dezavantaje [Unga 1995]: nu va funcționa pentru sisteme instabile sau pentru sistemele de fază neminimă, la care este nevoie de o predicție pe un orizont de timp mai mare pentru a observa comportamentul acestora. Plecând de la aceste neajunsuri și, de asemenea, de la structura de control predictiv clasică, a fost propusă o structură de control predictiv neuronal (fig. 4.7) [Psic 1991], [Sain 1991]. Aceasta implică o procedură de optimizare bazată pe un criteriu pătratic.

Fig. 4.7 Control neuronal predictiv

Controlul predictiv se bazează pe trei tipuri de acțiuni:

se deduce un model al procesului, pentru a face o predicție a ieșirii acestuia pe un anumit orizont de timp;

se calculează o secvență de control pe un anumit orizont de timp, prin minimizarea unei funcții criteriu;

se aplică procesului doar prima valoare din secvența de control, apoi este actualizat intervalul de predicție și se repetată procedura de optimizare.

Principiile enumerate mai sus pot fi observate în fig. 4.8.

Fig. 4.8 Control predictiv [Babu 1998]

Ieșirile viitoare ale procesului sunt predictate pe un orizont de timp Hp, pe baza modelului procesului. Predicțiile ieșirii, notate cu , depind de starea procesului la momentul de timp k și de mărimile de control u(k+i), , unde este orizontul de control. Mărimile de control se modifică doar în orizontul de control. În afara acestuia, ele nu se mai modifică: ,

Secvența mărimilor de control u(k+i), este calculată, de obicei, prin optimizarea unui criteriu pătratic de forma:

(4.8)

Primul termen din criteriu minimizează diferența dintre ieșirea procesului și referință, în timp ce al doilea termen penalizează efortul de comandă. Matricele Pi, Qi sunt pozitiv definite și ponderează cei doi termeni din criteriu. Pentru sisteme cu timp mort sau de fază neminimă pot fi introduși termeni suplimentari în criteriu.

4.2.6 Control neuronal prin supervizare

Cea mai răspândită metodă de control prin supervizare, întâlnită în literatură, este folosirea unei RNA care determină sau ajustează parametrii unui controler tradițional, cum ar fi un controler PD, PI sau PID.

RNA supervizoare din fig. 4.9 determină parametrii K, TI, TD ai controlerului PID, pe baza semnalului de eroare și a stării curente a procesului. Dezvoltări ale acestui concept sunt discutate pe larg de Swiniarski [Swin 1990] și Ruano et al. [Ruan 1992]. În [Swin 1990], RNA este instruită folosind euristica Ziegler-Nichols, pentru determinarea parametrilor regulatorului PID. În timpul funcționării, intrarea în rețea cuprinde 128 de eșantioane din răspunsul procesului la semnal treaptă în buclă deschisă. Ruano a propus o metodă de autoacordare bazată pe preprocesarea datelor de intrare-ieșire. Parametrii PID sunt obținuți prin utilizarea unui algoritm de optimizare quasi-Newton, care este inițializat cu valori obținute prin procedura Ziegler-Nichols.

Fig. 4.9 Structură de control neural prin supervizare

Unii autori [Abu 1993] antrenează rețeaua supervizoare printr-o metodă de învățare cu întărire ("reinforcement"). Algoritmul "reinforcement" necesită un criteriu (sau o funcție de optimizat) furnizat de utilizator, și care depinde de performanțele sistemului în perioada anterioară evaluării. Astfel, algoritmul evaluează performanțele sistemului și, în funcție de acestea, invocă unele mecanisme pentru "penalizare" sau "premiere" (de exemplu, în cazul unui controler bazat pe reguli, se invocă acele reguli care "penalizează" sau "premiază", în funcție de performanțe).

O structură generică [Abu 1993] de utilizare a unei tehnici de învățare cu "reinforcement" (principiul recompensă – penalizare) a unei RNA supervizoare este prezentată în fig. 4.10. RNA numită „critică” (critic neural network) evaluează performanțele sau progresele sistemului, pe baza unei funcții de optimizat impusă de utilizator. Ieșirea rețelei critice descrie performanțele viitoare ale regulatorului neuronal (action neural network), rețea ce maximizează funcția implementată de rețeaua critică. Practic, rețeaua „action” este instruită de rețeaua “critic”.

Fig. 4.10 Structură de învățare cu rețea neuronală critică

O variantă a schemei din fig. 4.10, ce folosește principiile programării dinamice, a fost propusă de Si și Wang [Si 2001] (fig. 4.11). Ca și în cazul anterior, trebuie rezolvată o problemă de optimizare care ține cont de principiul de optimalitate a lui Bellman [Bell 1957]: o traiectorie optimală are proprietatea că, indiferent de punctul intermediar atins, restul traiectoriei trebuie să coincidă cu cea optimală, considerând ca punct de start acest punct intermediar. Acest principiu este aplicat și în învățarea de tip "reinforcement". Astfel, inițial se formează un semnal r(k) care încorporează un scenariu de control impus, apoi se formează un al doilea semnal care înglobează scenariul de control dorit pe un orizont de timp (trough time). Acestea formează ecuația Bellman, care are următoarea formă:

(4.9)

unde este un factor de ponderare cu valori în intervalul (0, 1) și care stabilește importanța recompensei curente în comparație cu recompensele viitoare. Semnalul r(k) este de tip binar: are valoarea 0 când obiectivul impus este îndeplinit și -1 când acesta nu este îndeplinit. Scopul programării dinamice este de a alege o succesiune de semnale generată de RN “Action”, astfel încât să fie maximizat J(k). Totuși, o astfel de optimizare nu este fezabilă din punct de vedere computațional, deoarece ar trebui cunoscute predicțiile procesului pe un orizont de timp. În general, se preferă pentru J(k) utilizarea unei aproximări, întâlnită în literatură sub numele de ecuația recursivă a lui Bellman:

(4.10)

Pentru a putea fi obținut J(k) este nevoie de o estimare a lui J(k+1). Werbos a propus o serie de metode pentru estimarea lui J(k+1) [Werb 1990b], [Werb 1992], majoritatea utilizând RNA.

Fig. 4.11 Structură de control cu rețea neuronală critică

4.3 Conducerea sistemelor neliniare utilizând un regulator neuronal PID

În cadrul acestui subcapitol se va prezenta o structură de conducere autoacordabilă bazată pe RNA. Noutatea acestei structuri constă în modalitatea de proiectare a regulatorului neuronal. Se poate afirma că acesta „emulează” comportamentul unui regulator PID autoacordabil. Structura de reglare neuronală propusă [Codr 2001], [Codr 2006b] permite sinteza unui regulator PID și obținerea unor informații cu privire la necesitatea utilizării, în cazul sistemelor neliniare, a unui regulator PID cu parametri variabili.

Schema de reglare propusă este prezentată în fig. 4.12. Blocul MDB are aceeași semnificație ca și cel din fig. 2.8b din paragraful 2.3.2.

Fig. 4.12 Schema generală de conducere

yd – referința prescrisă procesului;

u – comanda generată de regulatorul neuronal;

yi – ieșirea neuro-identificatorului;

ei – eroare utilizată la instruirea neuro-identificatorului (MN);

e – eroare utilizată la instruirea regulatorului neuronal (RN);

eap – eroarea de ajustare a parametrilor regulatorului neuronal.

Modelul neuronal al procesului (MNP) se obține prin instruirea off-line a unei RNA multistrat. În timpul instruirii, eroarea ei este propagată înapoi prin MNP, în vederea ajustării parametrilor acesteia. Procedura de instruire se consideră terminată când diferența dintre y și yi tinde la zero pentru toți vectorii lotului de instruire. Pentru a obține performanțe ridicate în timpul reglării, modelul neuronal rezultat trebuie să conțină informații bogate cu privire la dinamica procesului, pentru toate datele posibile din timpul funcționării structurii de reglare.

Regulatorul neuronal se instruiește on-line și utilizează eroarea de ajustare a parametrilor eap, eroare obținută prin propagarea înapoi a erorii de reglare e, prin MNP. Vectorii de intrare în RNA care modelează regulatorul conțin:

suma erorilor până la pasul k, e(k)+e(k+1)+…+e(0). Această sumă este corespunzătoare componentei integratoare;

diferența e(k+1) – e(k), corespunzătoare componentei derivative;

eroarea e(k), considerată – de data aceasta – ca intrare în RNA, corespunzătoare componentei proporționale.

Ponderile regulatorului neuronal se vor stabiliza la valori bine determinate, după ce procesul de reglare a parcurs o perioadă suficientă de timp. Stabilizarea parametrilor RN depinde și de condiția ca parametrii procesului să rămână nemodificați în timpul funcționării structurii de

reglare.

Se poate observa faptul că nu s-au impus restricții cu privire la natura procesului sau restricții cu privire la tipurile de neliniarități pe care poate să le conțină instalația de automatizat. Metoda este generală și, dacă cele două RNA au capacitatea de a modela procesul, respectiv de a sintetiza legea de reglare, atunci reușita reglării este garantată în majoritatea cazurilor.

4.3.1 Studiu de caz 1.

Pentru a ilustra comportarea structurii de reglare din fig. 4.12, se consideră sistemul dinamic neliniar descris de următoarea ecuație cu diferențe:

(4.11)

Modelul neuronal al procesului s-a obținut parcurgând următoarele etape:

formarea lotului de instruire;

definirea structurii RNA;

instruirea RNA multistrat.

Pentru formarea lotului de instruire se utilizează datele reprezentate în fig. 4.13:

Fig. 4.13 Lotul de antrenare al MNP

Se observă că aceste date oferă informații bogate despre dinamicile sistemului în jurul mai multor puncte statice de funcționare. Acest lot de date trebuie să surprindă toate dinamicile sistemului, pentru că, altfel, procesul nu va fi identificat în mod satisfăcător și procedura de reglare

va fi sortită eșecului.

Lotul de date aplicat la intrarea rețelei (P) și ținta impusă (T) se definesc după cum urmează:

(4.12)

Antrenarea RNA, etapa ce urmează formării lotului de date, se face cu un algoritm Levenberg-Marquardt [Haga 1994]. Stabilirea structurii MNP presupune o etapă de tatonare, în timpul căreia se observă variația sumei erorilor pătratice, pentru diferite condiții inițiale. Aceste condiții se referă, în special, la numărul de neuroni din fiecare strat [Codr 2001]. Se rețin condițiile inițiale, care promit o convergență rapidă a algoritmului de instruire.

Modelul obținut se validează prin compararea ieșirii date de sistem cu ieșirea dată de RNA, pentru semnale de intrare aplicate atât sistemului, cât și RNA, semnale diferite de cele utilizate la instruirea rețelei. Se urmărește ca RNA obținută după antrenare să minimizeze un criteriu de forma:

(4.13)

Algoritmul Levenberg-Marquardt este robust și reprezintă o alternativă populară la metodele Gauss-Newton de minimizare a unei funcții. Acesta folosește doar calculul iacobianului care intervine în rezolvarea unei ecuații de forma:

(4.14)

unde J este iacobianul vectorului de eroare în raport cu parametrii RNA (ponderi și deplasări), este factorul de uitare Levenberg, este matricea care conține cuantele cu care vor fi actualizați parametrii RNA, iar E este vectorul de eroare, de forma .

Minimizarea criteriului (4.13) presupune derivarea acestuia în raport cu W. Astfel, vom avea termeni de forma: (4.15)

unde , N fiind numărul total de seturi de antrenare utilizate și , M este numărul total de parametrii ai RNA (ponderi și deplasări). Astfel, se poate forma iacobianul vectorului de eroare în raport cu vectorul format din parametrii RNA, care va avea următoarea formă:

(4.16)

După rezolvarea ecuației (4.14), parametrii RNA (ponderi și deplasări) vor fi actualizați cu o relație de forma:

(4.17)

Observații: Valoarea inițială a parametrului se alege 0.1. De obicei, ecuația (4.14) se rezolvă utilizând descompunerea LU. Dacă termenul din stânga al ecuației nu este inversabil, atunci se utilizează descompunerea SVD (descompunerea în valori singulare).

În continuare, se prezintă pașii algoritmului de antrenare Levenberg-Marquardt, utilizați pentru antrenarea MNP din fig. 4.12.

Într-o primă etapă trebuie stabilită structura RNA, care va identifica procesul neliniar. Aceste condiții se referă la numărul straturilor și la numărul de neuroni ai straturilor. De asemenea, stabilirea ratei de instruire și a funcțiilor de activare ale neuronilor presupune o etapă de tatonare, în timpul căreia se observă variația criteriului de eroare pentru diferite condiții inițiale. Se vor reține condițiile inițiale care promit o convergență rapidă a algoritmului de instruire. În urma parcurgerii acestei etape, MNP are structura (5, 7, 1) neuroni pe cele 3 straturi și, respectiv, funcții de activare (tan-sigmoid, tan-sigmoid, liniară). Funcția de activare a ultimului strat s-a ales liniară, pentru a asigura capacitatea RNA de a reproduce ieșirea sistemului între limite mari.

În fig. 4.14 este prezentată evoluția sumei erorilor pătratice:

Fig. 4.14 Evoluția erorii de antrenare

După cum se poate observa, algoritmul converge destul de rapid către valoarea impusă. Etapa de antrenare s-a considerat încheiată când s-a ajuns la o eroare de 0.001, eroare ce asigură o identificare foarte bună a procesului. De altfel, acest lucru se observă și din fig. 4.15, în care pe același grafic sunt reprezentate atât ținta, cât și ieșirea RNA care a identificat procesul. Se va observa că ele se suprapun aproape exact.

Fig. 4.15 Validare model neuronal

După terminarea acestor etape, urmează instruirea on-line a RNA, care va genera legea de reglare. RNA care modelează regulatorul are cea mai simplă structură: 1 neuron.

Lotul de date aplicat la intrarea rețelei (P) și ținta impusă (T) se definesc după cum urmează:

(4.18)

unde , , yd este referința impusă.

Lotul de date aplicat la intrarea rețelei (P) poate varia după caz, mai precis: dacă dorim ca rețeaua să simuleze un regulator de tip P, păstrăm doar prima linie din (P); dacă dorim să simuleze un regulator de tip PD, păstrăm primele 2 linii; dacă dorim să simuleze un regulator de tip PI, atunci păstrăm doar liniile 1 și 3.

După cum s-a precizat și la începutul acestui paragraf, RNA care simulează regulatorul PID este antrenată cu un algoritm Levenberg-Marquardt, dar cu deosebirea că eroarea de reglare este propagată și prin MNP care aproximează procesul neliniar.

Performanțele structurii de reglare sunt prezentate în fig. 4.16:

Fig. 4.16 Exemplificare reglare proces neliniar cu neuroregulator PID

Se poate observa faptul că performanțele de reglare sunt foarte bune având doar un mic suprareglaj (deviația standard este 0.5972). În fig. 4.17 se prezintă ponderile regulatorului neuronal, care corespund componentelor proporțională, derivativă și integratoare.

Fig. 4.17 Componentele neuroregulatorului

Din fig. 4.16 rezultă faptul că structura de control reușește să genereze comanda u, astfel încât ieșirea sistemului să urmărească fidel mărimea impusă. Deoarece procesul este neliniar, iar mărimea prescrisă comută între două valori constante, parametrii regulatorului PID se ajustează până când intră într-un regim permanent oscilant.

În continuare, se prezintă performanțele reglării în cazul când se utilizează un neuroregulator P, PD și PI (fig. 4.18 – 4.20).

Fig. 4.18 Exemplificare reglare pentru neuroregulator de tip P

Fig. 4.19 Exemplificare reglare pentru neuroregulator de tip PD

După cum se poate observa din fig. 4.18 și 4.19, în cazul legilor de reglare P și PD, deși performanțele reglării sunt în limite admisibile (deviație standard de 0.193), există eroare staționară, datorită lipsei componentei integratoare.

Fig. 4.20 Exemplificare reglare pentru neuroregulator de tip PI

Performanțele neuroregulatorului PI (fig. 4.20) sunt foarte bune. Se observă că ieșirea procesului practic se suprapune peste referință. Deviația standard în acest caz este 0.0620.

În fig. 4.21 se prezintă rezultatele reglării pentru o referință de tip rampă. Se poate observa că, și în acest caz, rezultatele sunt foarte bune (deviația standard este de 0.1047). Cum era de așteptat, există o eroare de regim permanent la variația în rampă a referinței.

Fig. 4.21 Exemplificare reglare pentru referință de tip rampă

Pentru a se putea face o comparație cu alte structuri neuronale de reglare, s-au afișat în aceeași fereastră grafică (fig. 4.22) rezultatele conducerii cu model invers, cu model de referință și cu neuroregulatorul PID, prezentat în acest capitol. Se menționează faptul că, pentru toate cele trei cazuri, s-a utilizat procesul dat de ecuația (4.11). Diferența a constat în modul de proiectare a regulatorului neuronal. O diferență importantă o constituie și structura RN care generează legea de comandă: în primele două cazuri, RN are 3 straturi; în cazul neuroregulatorului PID, rețeaua are doar un singur neuron. Dacă în cazul conducerii cu model invers, răspunsul sistemului prezintă un suprareglaj, în celelalte două cazuri, performanțele sunt aproape identice, cu un ușor avantaj în cazul utilizării neuroregulatorului PID. Totuși, avantajele importante derivă din ușurința în implementarea hardware și din rapiditatea în calculul comenzii.

Fig. 4.22 Comparație reglări neuronale.

4.3.2 Studiu de caz 2. Reglarea temperaturii într-o incintă folosind un neuroregulator PID.

În acest paragraf se prezintă rezultatele reglării folosind structura de conducere neuronală prezentată în paragraful anterior. Pentru validare s-a ales un stand de laborator (cuptor), scopul fiind reglarea temperaturii în incintă. Schema bloc și structura hardware pot fi consultate în [Pusc 2000]. Prima etapă a constat în reglarea temperaturii pe baza modelului identificat în regim de simulare. Obținerea modelului identificat al cuptorului este prezentată pe larg în [Pusc 2000]. Rezultatele sunt prezentate în fig. 4.23.

Structura de reglare asigură performanțe de reglare bune, iar după un timp de instruire parametrii neuroregulatorului se stabilizează la valori constante.

În cazul reglării temperaturii pe standul de laborator, aplicația a fost implementată în limbajul de programare C++ și poate fi consultată în Anexa C.

Fig. 4.23 Exemplificare reglare temperatură

RNA a fost implementată prin intermediul unei clase (Anexa D) în care se definesc toți parametrii acesteia și care are următoarele metode:

evaluareERR – eroarea este propagată înapoi prin rețea;

evaluare – calculează ieșirea dată de fiecare neuron de pe fiecare strat;

instruire – instruirea propriu-zisă a RNA;

AjustarePonderi – sunt ajustate ponderea și deplasarea fiecărui neuron.

Și în acest caz, RN care calculează legea de reglare este un regulator PID neuronal. Rezultatele reglării și comanda dată de regulator sunt prezentate în fig. 4.24, 4.25.

Fig. 4.24 Rezultatele reglării temperaturii

Fig. 4.25 Comanda generată de sursa comandată de tensiune

Se poate observa că temperatura din cuptor are niște oscilații în jurul referinței. Totuși, performanțele reglării sunt în limite admisibile (deviația standard este de 0.2516). Deoarece convertoarele plăcii de achiziție returnează valori diferite cu 0.1 V pentru același punct al măsurătorii, în cadrul programului, în loc de utilizarea tensiunii citite de la placa de achiziție, s-a preferat utilizarea unei medii a 100 de citiri. În felul acesta, performanțele de reglare s-au îmbunătățit.

4.4 Conducerea sistemelor neliniare cu ajutorul rețelelor neuronale modulare

În general, proiectarea unui regulator tradițional (PID, predicție, adaptiv, sliding-mode, control linearizant) implică o analiză matematică complexă și poate fi destul de dificilă în cazul proceselor neliniare. Conducerea proceselor utilizând RNA nu necesită o descriere matematică analitică a procesului condus, deoarece obținerea legii de reglare se face pe baza comportării procesului. În acest mod, legea de reglare se determină ținând cont de toate aspectele care se pot întâlni în timpul funcționării sistemului. Utilizarea abilităților de învățare a RNA ușurează implementarea regulatoarelor și, de asemenea, oferă o flexibilitate ridicată, în special în cazul sistemelor neliniare.

Pentru realizarea structurilor de reglare cu ajutorul RNA s-au conturat două abordări:

obținerea unui regulator neuronal utilizând un regulator clasic sau o lege de reglare a unui expert uman. În acest caz, se transferă cunoștințe de la un sistem de reglare existent către regulatorul neuronal. Acest mod de abordare se justifică doar prin prisma faptului că, în cazul RNA, se utilizează calculul paralel sau – în cazul înlocuirii unui expert uman – se face transferul de cunoștințe de la acesta către RNA [Pusc 1999];

realizarea unui regulator neuronal utilizând datele obținute de la proces. În acest caz, regulatorul neuronal generează legea de comandă din datele obținute de la sistemul în cauză, urmărind minimizarea unei funcții criteriu. Se poate afirma faptul că, în această situație, se utilizează în totalitate capacitatea RNA de a extrage legile de reglare din realizările obținute de la proces, comparativ cu prima abordare, în care se face doar un transfer de cunoștințe de la un regulator deja existent către o RNA [Hayk 1999], [Theo 2010], [Sure 2010],[Ahme 2000];

Utilizarea RNA modulare permite scăderea timpului de antrenare din următoarele motive [Anan 1995]:

numărul total de iterații necesare antrenării modulelor este mai mic decât numărul de iterații necesar antrenării rețelei non-modulare, pentru îndeplinirea aceluiași task. De aceea, o epocă de antrenare pentru un modul are o durată mai mică decât cea din cazul rețelei non-modulare;

chiar dacă numărul total de parametri ai tuturor modulelor este mai mare decât numărul de parametri ai rețelei non-modulare, abordarea modulară are o convergență mai rapidă

și generalizează cel puțin la fel de bine;

modulele pot fi antrenate independent și în paralel.

4.4.1. Prezentarea structurii de conducere modulară

În cadrul acestui paragraf se propune o structura de reglare modulară [Codr 2011] care include și structura modulară utilizată la identificarea sistemelor neliniare, prezentată în capitolul 3. Schema structurii de conducere este prezentată în fig. 4.26.

Fig. 4.26 Schema de reglare modulară propusă

unde

yd (k) – referința prescrisă procesului;

u(k-1) – comanda calculată de către unul din cele q regulatoare neuronale locale (LNC);

yi(k) – ieșirea LNMi;

e(k) – eroarea dintre ieșirea modelului de referință și ieșirea structurii modulare, utilizată la identificarea sistemului;

ei(k) – eroare utilizată la instruirea LNM;

eap(k) – eroarea de ajustare a parametrilor regulatorului neuronal, care se obțin prin propagarea înapoi a erorii e(k), printr-un LNM.

În fig. 4.27 se prezintă schema în detaliu a LNCi , care furnizează mărimea de comandă în cazul în care sistemul dinamic operează în jurul punctului de funcționare ce aparține intervalului

corespunzător LNMi.

Fig. 4.27 Schema în detaliu a LNCi

Semnificația blocurilor componente corespunzătoare structurii de control modulare este următoarea:

„procesul neliniar” este procesul condus, de la care se pot obține date până la momentul de timp (k-1). Pe baza acestor date se generează comanda u(k-1), astfel încât, la momentul k, ieșirea sistemului să urmărească valoarea impusă acestuia;

„modelul de referință” are rolul de a stabili un anumit profil mărimii prescrise și de a limita efortul de comandă al elementelor de execuție. În general, dacă valoarea prescrisă mărimii de ieșire variază brusc, atunci și eroarea e variază brusc, iar pentru a readuce aceasta eroare la zero într-un timp mic, în multe situații este necesar să se dispună de un efort de comandă mare. Prin utilizarea modelului de referință, eroarea nu mai variază brusc, iar efortul de comandă nu mai trebuie sa fie foarte mare, pe un orizont de timp mic. Pe de altă parte, folosind un model de referință adecvat se poate impune procesului o anumită dinamică;

structura neuronală (neuro-identificator modular), formată din cele q LNM utilizate la identificarea sistemului neliniar, reprezintă o structură modulară de tipul celei prezentate în paragraful 3.4. Se menționează faptul că fiecare LNM se instruiește off-line;

comutatorul dinamic are rolul de a activa un anumit LNM și LNC corespunzător, în funcție de punctul de funcționare în jurul căruia operează procesul;

structura modulară de control generează, prin intermediul fiecărui LNM, legea de reglare în diferite puncte de operare ale sistemului. Menționăm faptul că fiecare LNCi este utilizat împreună cu LNMi corespunzător.

Ca și în cazul identificării sistemelor neliniare, structura neuronală prezentată în fig. 4.26 facilitează descompunerea unei probleme de control neliniar în q subprobleme de control locale. În această manieră, LNM utilizate sunt mai suple și necesită un timp de instruire mai mic. În cazul în care sistemul operează în jurul unui punct de funcționare, calculul legii de reglare este asigurat de LNMi care aproximează sistemul în jurul acelui punct și respectiv de LNCi. Activarea celor două module neuronale locale (LNM și LNC) este făcută de către comutatorul dinamic.

Eroarea de ajustare a parametrilor LNCi (eap) se obține prin propagarea înapoi a erorii e(k) prin LNMi. În acest mod, LNCi își modifică parametrii astfel încât u(k) va determina ca ieșirea yi(k) să aproximeze ymr(k). Având în vedere faptul că procesul și LNMi au un comportament practic identic în acel punct de operare, rezultă că mărimea de comandă u(k) va produce aceeași valoare la ieșirea sistemului y(k). Prin mecanismul de instruire, structura de control face ca mărimile de ieșire y(k), yi(k), ymr(k) să fie practic egale.

Un aspect care trebuie menționat în cazul structurii de reglare modulară este și inițializarea parametrilor LNCi. Dacă parametrii se inițializează cu valori aleatoare, atunci la începutul funcționării structurii de reglare este necesar un număr mai mare de epoci pentru instruirea LNC. Însă, după un anumit timp de funcționare, regulatoarele neuronale generează legi de reglare neliniare, corespunzătoare punctelor în jurul cărora operează sistemul dinamic neliniar dat. Acest inconvenient (inițializarea parametrilor LNC) poate fi depășit printr-o etapă de preinstruire a LNC în regim de simulare. În acest sens, se stabilesc diferite valori ale mărimii prescrise astfel încât, în timpul acestei etape, să fie preinstruite toate LNC. În acest mod, fiecare LNC va genera o lege de reglare neliniară în jurul punctelor de pe caracteristica statică corespunzătoare LNM, care aproximează sistemul neliniar în acea zonă. În această etapă de preinstruire nu este necesară prezența procesului condus, deoarece instruirea parametrilor LNC se face prin propagarea erorii doar prin LNM.

Modul de sinteza a legii de reglare utilizând structura modulară din fig. 4.26 devine mai clar, dacă se prezintă etapele de sinteză a comenzii u(k-1), astfel încât ys(k) să aproximeze ymr(k). Menționăm faptul că aceste etape de procesare se repetă la fiecare moment discret k, , unde N este numărul valorilor eșantionate ale timpului la care s-au cules date din proces, iar n,m reprezintă întârzierile din ecuația (3.1). Imediat după activarea LNM și LNC, urmează etapele de procesare, astfel încât să se determine u(k-1).

În contextul celor afirmate anterior, pentru prezentarea algoritmului de ajustare a parametrilor LNC se consideră cunoscută structura celor două RNA care sunt activate de către comutatorul neuronal la un anumit moment de timp.

Se presupune ca cele două RNA au următoarea structură:

RNA care implementează LNC are nLNC straturi, iar cea care implementează LNM are nLNM straturi;

fiecare strat are neuroni pentru LNC și, respectiv, neuroni pentru LNM;

funcțiile de activare ale celor două RNA sunt notate cu și, respectiv, cu ;

cele două straturi de ieșire ale celor două RNA au doar un singur neuron, ceea ce înseamnă că . Menționăm faptul că, pentru un sistem dinamic neliniar cu o singură intrare și o singura ieșire, este nevoie de o RNA cu un singur neuron pe stratul de ieșire, atât pentru LNC, cât și pentru LNM.

Vectorii de intrare ai celor două RNA sunt :

, (4.18)

. (4.19)

În momentul ajustării parametrilor LNC, cele două RNA corespunzătoare, LNM și, respectiv, LNC sunt conectate ca în fig. 4.28.

Fig. 4.28 Conexiunea dintre LNC și LNM

Având în vedere faptul că se prezintă etapa de instruire pentru cazul când s-au activat cele două RNA, corespunzătoare LNC și LNM, în fig. 4.28 s-a renunțat la indicii aferenți rețelelor respective.

Pentru simplificarea relațiilor care guvernează mecanismul de instruire, se vor înlocui indicii care indică apartenența la LNC sau LNM cu „*”. În consecință, în relațiile care urmează se poate citi în loc de „*”, LNC sau LNM . În cazul în care anumite relații sunt scrise doar pentru LNC sau LNM, atunci se vor folosi indicii respectivi.

Criteriul ce urmează să fie minimizat este eroarea pătratică dintre ieșirea procesului – ys(k) și ieșirea modelului de referință – ymr(k).

, (4.20)

unde: nl – reprezintă dimensiunea lotului de instruire.

Menționăm faptul că ieșirea y(k) reprezintă de fapt ieșirea neuronului stratului de ieșire a LNM, care mai este notată și cu . Fiind precizate toate mărimile implicate în mecanismul de instruire, în cele ce urmează se prezintă relațiile matematice care stau la baza algoritmului de ajustare a parametrilor LNC.

Mecanismul de adaptare a parametrilor LNC conține următoarele etape de calcul:

Etapa de calcul de la intrarea rețelei la ieșirea acesteia pentru a determina eroarea dintre ieșirea rețelei și ținta impusă. Relațiile care stau la baza propagării înainte a informației sunt:

(4.21)

unde:

– reprezintă ieșirea neuronului i care aparține stratului r;

– reprezintă conexiunea dintre neuronul i al stratului r și neuronul j al stratului (r-1);

– reprezintă deplasarea neuronului i al stratului r;

– reprezintă funcția de activare a neuronilor stratului r;

– reprezintă numărul de neuroni ai stratului r.

După această etapă de propagare înainte a datelor prin rețea, urmează etapa de propagare înapoi a erorii prin rețea. Relațiile care stau la baza propagării înapoi a erorilor sunt:

unde:

, , T(i) – reprezintă ținta impusă RNA.

Semnificația celorlalte variabile este aceeași ca și în cazul relațiilor anterioare. După etapa de propagare înainte a datelor de la intrare la ieșire și cea de propagarea înapoi a erorilor, urmează

etapa de ajustare doar a parametrilor LNC.

(4.23)

unde: – reprezintă rata de învățare. Facem observația că este de fapt PLNC(j).

Ajustarea parametrilor LNM nu mai este necesară, deoarece instruirea LNM s-a realizat înaintea acestei etape și scopul acesteia este de a transmite eroarea de ajustare [ys(k) – ymr(k)] către LNC.

Algoritmul de instruire on-line a parametrilor LNC conține etapele de calcul între două perioade de eșantionare consecutive, etape care se repetă la fiecare moment de eșantionare. Fie situația când s-a ajuns la momentul k de eșantionare, moment în care trebuie să se genereze comanda u(k-1), necesară obținerii unei valori la ieșirea sistemului, ys(k), cât mai aproape de ieșirea modelului de referință. Etapele algoritmului de instruire sunt următoarele:

Prin intermediul constantelor Nel și Ermin se controlează condițiile de oprire a etapelor de instruire a LNC. În cazul implementării în timp real a algoritmului de instruire trebuie avut în vedere faptul că un stagiu de instruire (instruirea neurocontrolerului între două momente de eșantionare – de exemplu, acest stagiu poate fi de 20 de epoci de antrenare) nu trebuie să fie mai mare decât perioada de eșantionare. Valoarea lui Nel se stabilește ca fiind de valoare egală cu valoarea întreagă din raportul (Te/tpel), unde Te este perioada de eșantionare, iar tpel reprezintă timpul necesar unei epoci de instruire.

Structura de control modulară prezentată în acest paragraf are următoarele avantaje:

se descompune o problemă de sinteză a unei legi de reglare neliniară în q subprobleme, astfel ca sinteza celor q legi de reglare este mult mai simplă;

fiecare regulator neuronal necesită un număr mai mic de parametri;

timpul de instruire on-line a unui regulator neuronal este mult mai mic decât dacă s-ar utiliza o singură RNA. Astfel, aceste structuri se pot utiliza și în cazul în care se impune o perioadă de eșantionare mică;

faptul că fiecare LNC generează o lege de reglare în cazul în care sistemul neliniar

operează într-un anumit domeniu reprezintă un mare avantaj. Acest avantaj constă în faptul că în momentul comutării, LNC activat este deja instruit, evident dacă sistemul a mai operat în jurul acelui punct de operare;

4.4.2. Studiu de caz. Reglarea nivelului unui lichid folosind rețele neuronale modulare.

Pentru exemplificarea funcționării structurii de control modulare neuronale a fost utilizat modelul obținut de la un stand de laborator ce controlează nivelul lichidului într-un vas. Acest sistem a fost prezentat în detaliu în paragraful 3.5. Se reamintește faptul că, în urma aplicării algoritmului de partiționare a caracteristicii statice, au rezultat trei module neuronale ce realizează identificarea. Corespunzător, se utilizează pentru structura de conducere modulară tot 3 module neuronale.

Pentru a se putea face o comparație, inițial, conducerea procesului a fost realizată cu un regulator neuronal non-modular. S-a folosit configurația 5-11-1 neuroni cu funcții de activare tansig – tansig – purelin. Regulatorul neuronal este instruit on-line 50 de epoci cu o rată de învățare de 0.005. Trebuie precizat, de asemenea, faptul că a fost impusă o limitare comenzii, de a nu depăși intervalul [-1 1.5], din cauza restricțiilor sistemului fizic. Performanțele sistemului de reglare cu regulator neuronal non-modular sunt ilustrate în fig. 4.29. În fig. 4.30 este prezentată ieșirea clasificatorului neuronal. În acest caz, clasificatorul selectează doar LNMi. Se poate observa că, în general, ieșirea acestuia se modifică când se modifică referința.

Fig. 4.29 Rezultatele reglării cu un regulator neuronal 5-11-1

Fig. 4.30 Ieșirea clasificatorului pentru LNM

Se poate spune că rezultatele prezentate mai sus sunt acceptabile (deviația standard este de 0.4351), totuși în unele zone timpul tranzitoriu este destul de mare.

Pentru implementarea structurii de conducere neuronală modulară s-a folosit o structură 2-5-1, cu funcții de activare tansig – tansig – purelin. RNA se instruiesc on-line 20 de epoci cu o rată de învățare de 0.005. Pentru a se observa faptul că structura de conducere își îmbunătățește performanțele, au fost afișate rezultatele reglării pentru primele 600 (fig. 4.31, 4.32) eșantioane de timp și apoi după 4100 eșantioane de timp (fig. 4.33, 4.34) .

Fig. 4.31 Rezultate comparative pentru structura de reglare modulară

Fig. 4.32 Ieșirea clasificatorului pentru structură modulară neuronală

Fig. 4.33 Rezultate comparative pentru structura de reglare modulară

Fig. 4.34 Ieșirea clasificatorului pentru structură modulară neuronală

Dacă se compară fiecare nivel al referinței, se poate observa o îmbunătățire a rezultatelor, reglării, inclusiv a timpului tranzitoriu. Performanțele s-au îmbunătățit datorită faptului că, pentru fiecare zonă de funcționare, regulatorul are deja parametrii instruiți și nu necesită un timp de instruire mare, ca în cazul utilizării unui singur regulator. Deviația standard este de 0.04647

În figurile 4.35, 4.36 este reprezentată comportarea sistemului pentru o referință de timp rampă. Și în acest caz, deși există o eroare de regim permanent, performanțele structurii modulare de reglare sunt bune.

Fig. 4.35 Rezultatele reglării cu o structură modulară de dimensiune 3 x 2-5-1

Fig. 4.36 Ieșirea clasificatorului pentru structură modulară neuronală

4.5. Concluzii

Analiza stadiului actual privind structurile de control neuronal relevă o varietate importantă a acestora. Obiectivul urmărit în acest capitol a fost stabilirea unor noi soluții, care să ofere unele avantaje specifice, în raport cu realizările existente. În acest cadru, principalele rezultate obținute în cadrul acestui capitol se referă la obținerea a două noi structuri de regulatoare neuronale, după cum urmează:

elaborarea unei structuri de reglare neuronală, denumită neuroregulator PID, care primește ca parametri de intrare semnalele ce intervin și în legea de reglare clasică PID. Principalul avantaj al acestei structuri este simplitatea regulatorului neuronal, implementat prin intermediul unui singur neuron liniar. Rezultatele obținute cu această structură neuronală se referă la:

stabilirea algoritmului de instruire a neuroregulatorului, utilizând eroarea dintre ieșirea modelului de referință și ieșirea procesului, retro-propagată prin modelul neuronal direct al procesului reglat;

analiza prin simulare numerică a sistemului de reglare, utilizând structura propusă de neuroregulator și un proces reglat neliniar;

validarea soluției propuse prin implementarea fizică a unui sistem de reglare neuronală a temperaturii unui proces termic;

elaborarea unei structuri de reglare neuronală incluzând un regulator neuronal modular și un model neuronal direct, modular, al procesului. O asemenea structură este adecvată conducerii proceselor care au proprietăți foarte diferite, în diferite regiuni în care se poate situa punctul curent de funcționare. Rezultatele obținute cu această structură neuronală se referă la:

stabilirea algoritmului de instruire a regulatorului neuronal (relațiile de calcul pentru parametrii regulatorului neuronal modular), cât și algoritmul de ajustare a parametrilor structurii de conducere;

analiza prin simulare numerică a performanțelor soluției propuse, în cadrul unui sistem de reglare care utilizează 3 module, atât la regulator, cât și la modelul neuronal direct.

CAPITOLUL 5

Concluzii

5.1 Concluzii generale

În cadrul acestei teze de doctorat au fost tratate aspecte legate de identificarea și conducerea sistemelor neliniare utilizând RNA.

Demersul științific realizat în cadrul tezei de doctorat a pornit de la stadiul actual al cunoașterii în domeniu – Capitolul 1 – unde s-au prezentat fundamentele RNA, principalele categorii de RNA cu și fără dinamică, cei mai utilizați algoritmi de antrenare, dar și aspecte generale privind identificarea și conducerea sistemelor neliniare cu ajutorul RNA. Pe baza analizei din acest capitol, s-au stabilit obiectivele tezei de doctorat.

În capitolul al doilea a fost prezentată o metodologie generală de identificare cu RNA și, de asemenea, au fost au fost analizate cele mai importante modele neuronale din literatura de specialitate. Pornind de la avantajele oferite de descompunerea unui sistem în subsisteme, a fost propusă și implementată o structură de identificare ce utilizează RNA cu dinamică denumită IRNN. Această structură utilizează pentru identificarea fiecărui subsistem în parte câte o RNA cu dinamică externă. De asemenea, a fost implementat un algoritm de antrenare ce are la bază algoritmul clasic backpropagation. Validarea structurii IRNN a fost realizată pe un sistem de actualitate: identificarea modelului unui automobil. În acest sens, a fost prezentată în detaliu și descompunerea unui automobil în subsisteme.

În capitolul al treilea a fost exploatat conceptul de modularitate, prezentându-se o structură de identificare modulară, care folosește RNA multistrat, atât pentru module, cât și pentru comutatorul instruibil care le selectează. Un aspect de noutate al structurii de identificare a constat și în modalitatea de stabilire al numărului de module: pe baza caracteristicii statice a procesului. În acest sens, au fost subliniate o serie de condiții care trebuie îndeplinite de către un sistem neliniar ca să poată fi aproximat cu module neuronale pe baza caracteristicii statice, apoi a fost prezentat un algoritm de partiționare a acesteia. Validarea structurii de identificare modulară a fost realizată, într-o primă etapă, pe un studiu de caz din literatură: sistem de reglare a nivelului unui lichid. Structura de identificare a fost testată, de asemenea, pe un sistem real întâlnit în mediul industrial: un sistem pneumatic.

Fiind cunoscut faptul că una din cele mai mari probleme întâlnite în sistemele de acționare automatizate este frecarea, în ultima parte a capitolului al treilea au fost prezentate unele noțiuni despre fenomenologia frecării și, de asemenea, cele mai importante modele statice și dinamice. Utilizând modelul dinamic considerat a fi cel mai evoluat (modelul LuGre), s-au pus în evidență proprietățile foarte diferite ale acestuia la niveluri mici și la niveluri mari ale semnalului de intrare. Pe această bază, a fost propusă utilizarea structurii de identificare modulară a proceselor de frecare. A fost testată structura de identificare modulară pe un lot de date generat de modelul LuGre. Rezultatele obținute recomandă utilizarea unei abordări modulare pentru identificare, mai ales când este un sistem cu neliniarități complexe și a cărui amplitudini ale semnalului de intrare variază într-un domeniu extins.

Analiza stadiului actual privind structurile de control neuronal a relevat o varietate importantă a acestora. Pornind de la aceste structuri de conducere, în capitolul al patrulea a fost elaborată o de reglare neuronală, denumită neuroregulator PID, care primește ca parametri de intrare semnalele ce intervin și în legea de reglare clasică PID. Principalul avantaj al acestei structuri este simplitatea regulatorului neuronal. Validarea aceste structuri a fost realizată atât pe un sistem din literatură, cât și pe un sistem de reglare neuronală a temperaturii unui proces termic. În acest sens, structura neuronală PID a fost implementată în limbajul C++. În situația în care un sistem are proprietăți foarte diferite în diferite regiuni în care se poate situa punctul curent de funcționare, este recomandat să se utilizeze o abordare modulară. Astfel, a fost propusă o structură de conducere modulară care utilizează module, atât pentru regulator, cât și pentru modelul neuronal direct. În cazul acestei structuri de conducere a fost prezentat și algoritmul de instruire a regulatorului neuronal modular.

Studiile de caz implementate în fiecare situație, o parte bazate pe modele din literatura de specialitate, dar și pe date de la procese reale, au confirmat eficiența soluțiilor propuse.

Pe viitor, se dorește continuarea cercetărilor, cu precădere în:

implementarea modelelor frecării cu ajutorul RNA;

elaborarea unor scheme de identificare și control modular ce conțin module implementare cu RNA recurente sau RNA cu filtre;

implementarea unor algoritmi de antrenare bazați pe filtrul Kalman extins.

5.2 Contribuții

În opinia autorului, contribuțiile originale se regăsesc în capitolele 2, 3 și 4. Ele pot fi enumerate după cum urmează:

Capitolul 2:

proiectarea unei structuri de identificare neuronală denumită Internal Recurrent Neural Network, pe baza descompunerii unui sistem în subsisteme;

aplicarea structurii de identificare IRNN în situația când modelul matematic al unuia dintre subsisteme este complet cunoscut;

aplicarea structurii de identificare IRNN pe un sistem neliniar complex: identificarea sistemului automobil.

Capitolul 3:

proiectarea unei structuri de identificare modulară ce folosește RNA multistrat, atât pentru module, cât și pentru comutatorul dinamic;

realizarea și implementarea unui algoritm de partiționare a caracteristicii statice pe baza căruia se stabilește numărul de module neuronale din structura de identificare modulară;

elaborarea unor condiții necesare pentru aproximarea unui sistem neliniar cu module neuronale pe baza caracteristicii statice;

aplicarea structurii de identificare modulară pe serie de procese din literatură (sistem de reglare a nivelului unui lichid, modelul de frecare Lugre), dar și pe un proces real (sistem pneumatic).

Capitolul 4:

proiectarea unei structuri conducere ce folosește un regulator neuronal de tip PID;

adaptarea algoritmului Levenberg-Marquardt pentru structura de conducere neuronală de tip PID;

implementarea în limbajul C++ a structurii neuronale de conducere de tip PID și aplicarea acesteia pe un stand de laborator (reglarea temperaturii într-o incintă);

elaborarea unei structuri de conducere modulară bazată pe RNA multistrat;

implementarea în Matlab și aplicarea structurii de conducere și a algoritmului de antrenare la controlul nivelului unui lichid dintr-un stand de laborator.

5.3 Diseminarea rezultatelor

Aceste contribuții au fost diseminate în cadrul a 9 lucrări publicate la diferite manifestări științifice și în reviste de specialitate din țară și străinătate.

Reviste cotate ISI

1. Gheorghe Pușcașu, Bogdan Codreș, Nonlinear System Identification And Control Based On Modular Neural Networks, International Journal of Neural Systems, Vol. 21, No. 4 (2011) pp,319–334, 2011.

Factor de impact 4.237 în anul 2010

2. Gheorghe Pușcașu, Bogdan Codreș, Alexandru Stancu, Nonlinear System Identification Based On Internal Recurrent Neural Networks, International Journal of Neural Systems, Vol. 19, No. 2 (2009) pp,115–125, 2009.

Factor de impact 0.901 în anul 2008

Lucrarea are 17 citări în publicații ISI Web of Knowledge (All Databases), din care 16 sunt citări din articole publicate în reviste cotate ISI. Lista publicațiilor care citează lucrarea este detaliată în Anexa E.

Alături de cele două lucrări, au mai fost publicate 3 lucrări în reviste de categorie B+ și 3 lucrări la conferințe internaționale sau cu participare internațională.

Reviste de categorie B+

Codreș Bogdan, Gheorghe Pușcașu, Gabriel Murariu, Zanoschi Aurelian, Identification of a Nonlinear Pneumatic Servo System Using Modular Neural Networks, The Annals Of Dunarea De Jos University Of Galati, Fascicle III – Electrotechnics, Electronics, Automatic Control, Informatics, Vol. 33, No.2, pp.40 – 47, ISSN 1221-454X, 2010.

Alexandru Stancu, Bogdan Codreș, Gheorghe Pușcașu, Aspects regarding of the neuro-adaptive control structure proprieties. Application to the nonlinear pneumatic servo system benchmark , The Annals Of Dunarea De Jos University Of Galati, Fascicle III – Electrotechnics, Electronics, Automatic Control, Informatics, Vol. 29, pp.82 – 86, ISSN 1221-454X, 2006.

Gheorghe Pușcașu, Bogdan Codres, Alexandru Stancu , Identification of the non-linear systems using internal recurrent neural networks, The Annals Of Dunarea De Jos University Of Galati, Fascicle III – Electrotechnics, Electronics, Automatic Control, Informatics, Vol. 29, pp.74 – 81, ISSN 1221-454X, 2006.

Conferințe internaționale

Bogdan Codreș, Gheorghe Pușcașu, Alexandru Stancu, The Estimation of a Nonlinear Subsystem’s Output Using Internal Recurrent Neural Networks, 9th International Symposium on Automatic Control and Computer Science, SACCS 2007, Romania, Proceedings CD-ROM, 2007, ISSN 1843-665-X.

Gheorghe PUȘCAȘU, Bogdan Codreș, A study concerning the elimination of the neurons or of the layers from a multilayer neural network, The IVth International Conference On Microelectronics, ICMCS -2005, pp. 279-287, Chișinău, Moldova, ISBN-9975-66-040-1 (Vol.2).

Bogdan Codreș, Alexandru Codreș, Gheorghe Pușcașu, Aspects regarding the Neuro Adaptive Control Structure Properties, SIMSIS 11, Galați, România, ISBN 973-8139-98-9, pp. 214-219, 2001.

BIBLIOGRAFIE

[Abu 1993] Z. R. A. Abu, “Machine Learning with Rule Extraction by Genetic Assisted Reinforcement; Application to Nonlinear Control“, Ph.D. thesis, , 1993.

[ADAM 2002] ADAMS (Advanced Driving and Maneuvering Simulator), Oerlikon Contraves AG, , 2002.

[Ahme 2000] M. S. Ahmed, “Neural-net-based direct adaptive control for a class nonlinear plants”, IEEE Transactions on Automatic Control, Vol. 45, No. 1, pp. 119 – 124, 2000.

[Anan 1995] R. Anand, et. al., “Efficient Classification for Multiclass Problems Using Modular Neural Networks”, IEEE Transactions on Neural Networks, Vol. 6, No.1, pp.117-124, 1995.

[Ande 1999] J. G. Andersen, J. Cisneros, et. al., “Speed, size, and edge-rate information for the detection of collision events”, Journal of Experimental Psychology: Human Perception and Performance, Vol. 25, pp. 256-269, 1999.

[Ande 2001] J. G. Andersen, A. Saidpour, et. al., “Detection of Collision Events by Older and Younger Drivers” , Proceedings of the first international driving symposium on human factors in driver assessment, training and vehicle design, pp. 255-258, , 2001.

[Arms 1991] B. Armstrong-Helouvry, “Control of Machines with Friction”, Kluwer Academic Publisher, Norwell, MA, 1991.

[Astr 1995] K. J. Astrom, B. Wittenmark, Adaptive Control, 2nd edn., Addison-Wesley, Reading, MA, 1995.

[Ayou 1996] M. Ayoubi, Nonlinear System Identification Based on Neural Networks With Locally Distributed Dynamics and Applications to Technical Process, VDI Verlag, Düsseldorf, 1996.

[Abon 2005] J. Abonyi, capitol 2.18 Neural Networks for Process Modeling, INSTRUMENT ENGINEERS' HANDBOOK, 4th Edition, Volume 2 – Process Control, 2005.

[Babu 1998] R. Babuska, Fuzzy Modeling for Control, Kluwer Academic Publishes, , 1998.

[Beal 1972] E. M. L. Beale, “A derivation of conjugate gradients”, F. A. Lootsma, ed. Numerical methods for nonlinear optimization, : Academic Press, 1972.

[Bell 1957] R. E. Bellman, “Dynamic programming”, Princeton University Press, Princeton, NJ, 1957.

[Bo 1982] L. C. Bo, D. Pavelescu, “The friction- speed relation and its infuence on the critical velocity of stick-slip motion”, Wear, Vol. 82, pp. 277-289, 1982.

[Boer 2000] E. Boer, T. Yamamura, et.al.,“Experiencing the same road twice: a driver centered comparison between simulation and reality”, in Proceedings of the Driving Simulation Conference DSC’2000, pp. 33-55, , Sept 2000.

[Brun 1994] P. Bruniaux, D. Pinchon, “Non-Linear System Identification by Decomposition in Subsystems”, ESM’94,S.C.S. European Simulation Multiconference, Barcelona, Espagne, 1994.

[Camp 1998] P. Campolucci, A Circuit Theory Approach to Recurrent Neural Network Architectures and Learning Methods, PhD thesis, Università Degli Studi di Bologna, 1998.

[Chen 2001] L. J. Chen, K. S. Narendra, “Nonlinear adaptive control using neural networks and multiple models”, Automatica, Vol. 37, No. 8, pp. 1245–1255, 2001.

[Cioc 2001] I.B. Ciocoiu, Retele neurale artificiale, Editura Cantes, Iasi, 2001, ISBN 973-8173-16-7.

[Codr 2001] B. Codreș, Al. Codreș, Gh. Pușcașu, “Aspects regarding the Neuro Adaptive Control Structure Properties”, SIMSIS 11, , ISBN 973-8139-98-9, pp. 214-219, 2001.

[Codr 2005] Gh. Pușcașu, B. Codreș, “A study concerning the elimination of the neurons or of the layers from a multilayer neural network”, The IVth International Conference On Microelectronics, ICMCS -2005, pp. 279-287, Chisinau, Moldova, ISBN-9975-66-040-1 (Vol.2), 2005

[Codr 2006] Gh. Pușcașu, B. Codreș, A. Stancu, “Identification of the non-linear systems using internal recurrent neural networks”, The Annals of “Dunarea de Jos” University of Galati, Fascicle III – Electrotechnics, Electronics, Automatic Control, Informatics, 2006.

[Codr 2006b] Al. Stancu, B. Codreș, Gh. Pușcașu, Aspects regarding of the neuro-adaptive control structure proprieties. Application to the nonlinear pneumatic servo system benchmark , The Annals of “Dunarea de Jos” , Fascicle III – Electrotechnics, Electronics, Automatic Control, Informatics, 2006.

[Codr 2007] B. Codreș, Gh. Pușcașu, A. Stancu, “The Estimation of a Nonlinear Subsystem’s Output Using Internal Recurrent Neural Networks”, 9th International Symposium on Automatic Control and Computer Science, SACCS 2007, Romania, Proceedings CD-ROM ISSN 1843-665-X, 2007.

[Codr 2009] Gh. Puscasu, B. Codres, Al. Stancu, G. Murariu, “Nonlinear System Identification Based On Internal Recurrent Neural Networks”, International Journal of Neural Systems, Vol. 19, No. 2, pp. 115–125, 2009.

[Codr 2010] B. Codreș, Gh. Pușcașu, G. Murariu, A. Zanoschi, “Identification of a Nonlinear Pneumatic Servo System Using Modular Neural Networks”, The Annals of “Dunarea de Jos” University of Galati, Fascicle III – Electrotechnics, Electronics, Automatic Control, Informatics, Vol. 33, No. 2, pp.40-47, ISSN 1221-454X, 2010.

[Codr 2011] Gh. Puscasu, B. Codres, “Nonlinear System Identification And Control Based On Modular Neural Networks”, International Journal of Neural Systems, Vol. 21, No. 4 (2011) pp,319–334, 2011.

[Cybe 1989] G. Cybenko, “Approximation by superpositions of a sigmoid function”, Math. Control Signals and Systems, Vol. 2, No. 3, pp. 303-314, 1989.

[Davi 1995] W. H. David, A. J. Clark, “A survey of Mid-Level Driving Simulator”, International Congress & Exposition, , 1995.

[Dumi 2007] T. Dumitriu, “Contribuții privind tehnici de reglare pentru conducerea servosistemelor cu sarcină neliniară”, teză de doctorat, Universitatea „Dunărea de Jos”, , 2007.

[Elma 1990] J. L. Elman, ”Finding Structure in time”, Cognitive Science, Vol. 14, pp. 179-211, 1990.

[Faro 2000] A. Farooq, “Biologically Inspired Modular Neural Networks, PhD thesis, Faculty of the Virginia Polytechnic Institute and State University, 2000.

[Frie 1992] B. Friedland, J. K. Park, “On adaptive friction compensation”, Proc. 30th CDC, 1991, IEEE, Brighton, pp.2889-2903; IEEE Trans. on Automatic Control, Vol. 37, No. 10, pp. 1609-1612, 1992.

[Fu 2007] Y. Fu, T. Chai, “Nonlinear Multivariable Adaptive Control using Multiple Models and Neural Networks”, Automatica, Vol. 43, No. 6, pp. 1101-1110, 2007.

[Garc 1982] C.E Garcia, M. Morari, “Internal model control. A unifying review and some new results”, Industrial Engineering Chemical Process Design and Development, Vol. 21, pp. 308 – 332, 1982.

[Gil 1999] P. Gil, J. Henriques et. al., “Non-linear Predictive Control Based on a Recurrent Neural Network”, Proc. ESIT99, June 3-4, Crete, Greece, 1999.

[Haga 1994] M. Hagan, M. Menhaj, “Training Feedforward Networks with the Marquardt Algorithm”, IEEE Transactions on Neural Networks, Vol. 5, No. 6, pp. 989-993, 1994.

[Haya 2005] T. Hayakawa, W. M. Haddad, N. Hovakimyan, V. S. Chellaboina, “Neural network adaptive control for nonlinear nonnegative dynamical system”, IEEE Trans. Neural Networks, Vol. 16, No. 2, pp. 399–413, 2005.

[Hayk 1999] S. Haykin, “Neural Networks. A Comprehensive Foundation”, Second Ed., Prentice Hall, 1999.

[Hebb 1949] D. O. Hebb, „The organization of Behavior”,New York, John Wiley, 1949.

[Hopf 1982] J. J. Hopfield, “Neural networks and physical systems with emergent collective computational properties”, Proc. Nat. Acad. Sci. () 79, 2554-2558, 1982.

[Horn 1989] K. Hornik, M. Stinchcombe, H. White, „Multilayer feedforward networks are universal approximators”, Neural Networks, Vol. 2, No. 5, pp. 359-366, 1989.

[Hou 2006] G. L. Hou, J. H. Zhang, J. Wang, Q.H. Wu, “Adaptive sliding mode and fuzzy gain scheduling control for steam temperature in power plants”, The Proceedings of IEEE Control Conference, UK, Glasgow, 2006.

[Hunt 1992] K. J. Hunt, D. Sbarbaro, R. Zbikowki, P. J. Gawthrop, “Neural Networks for Control Systems – A Survey”, Automatica, Vol. 28, pp. 1083-1112, 1992.

[Iser 1997] R. Isermann, “Supervision, Fault-Detection and Fault-Diagnosis Methods. An Introduction", Control Engineering Practice, Vol.5, No.5, pp.639-652, 1997.

[Jord 1986] M. I. Jordan, “Attractor dynamics and parallelism in a connectionist sequential machine”, Cognitive Science Society, pp.531-546, 1986.

[Jord 1994] M. I. Jordan, R. A. Jacobs, “Hierarchical Mixtures of Experts and the EM algorithm” Neural Computation, Vol. 6, pp. 181-214, 1994.

[Kadi 1995] W. Kading, F. Hoffmeyer, “The Advanced Daimler-Benz Driving Simulator”, International Congress & Exposition, , 1995.

[Karn 1985] D. Karnopp, “Computer simulation of stick-slip friction in mechanical dynamic systems”, Trans. ASME: J. of Dynamic Systems, Measurement and Control, Vol. 107, No. 1, pp. 100-103, March 1985.

[Kekp 2007] K. M. Kekpe, J. P. Cassar, , “Identification of MIMO Takagi-Sugeno model of a bioreactor”, IEEE Int. Fuzzy Systems Conf., pp. 1–6, 2007.

[Kien 2005] U. Kiencke, L. Nielsen, “Automotive Control Systems”, Springer-Verlag, ISBN 3-540-23139-0, 2005.

[Koho 1989] T. Kohonen, “Self-organisation and Associative Memory”, Springer Verlag, Berlin Heidelberg, 1989.

[LeCu 1993] Y. LeCun, “Efficient learning and second-order methods”, A Tutorial at NIPS 93, , 1993.

[Leit 1997] J. Miguel Leitão, A. Coelho, et.al., “DriS – A Virtual Driving Simulator”, Proceedings of the Second International Seminar on Human Factors in Road Traffic, ISBN 972-8098-25-1, Braga, Portugal, 1997.

[Lian 1999] J. Liang, M. M. Gupta, “Stable Dynamic Backpropagation Learning in Recurrent Neural Networks”, IEEE Transactions on Neural Networks, Vol. 10 No. 6, pp. 1321 – 1334, 1999.

[Ljun 1992] L. Ljung, B Wahlberg, “Asymptotic properties of the least-squares method for estimating transfer functions and disturbance spectra”, Adv. Appl. Prob., Vol. 24, pp 412-440, 1992.

[Marc 1997] T. Marcu, L. Mirea, E. Mirea, “A Generalized Observer Scheme for Component Fault Diagnosis using Dynamic Neural Networks with Mixed Structure”, 2nd European Workshop on Fuzzy Decision Analysis and Neural Networks for Management, Planning and Optimization, EFDAN’97, Dortmund, Germany, pp. 136-145, 1997.

[Mart 1990] J. A. C. Martins, J. T. Oden, F. M. F. Simoes, “A study of static and kinetic friction”, Int. J. Engineering Science, Vol. 28, No. 1, pp. 29-92, 1990.

[Mill 1995] W. T. Miller, R. S. Sutton, R J. Werbos, “Neural Networks for Control, MIT Press, Cambridge, Massachusetts, 1995.

[Mire 1999] L. Mirea, T. Marcu – “Development of Dynamic Radial Basis Function Artificial Neural Networks”, Buletinul Universitatii Tehnice Iași, Tomul XLV (IL), Fasc. 1-4, pp. 5-15, 1999.

[Mire 2000] L. Mirea, T. Marcu, “Functional-Link Neural Networks with Dynamic Structure Applied to System Identification”, Buletinul Universitatii Tehnice Iași, Tomul XLVI (L), Fasc. 1-4, pp. 61-68, 2000.

[Mire 2002a] L. Mirea, T. Marcu, “System Identification Using Functional-Link Neural Networks With Dynamic Structure”, 15th IFAC World Congress, Barcelona, Spain, CD-ROM Proceedings, 2002.

[Mire 2002b] L. Mirea, “Tehnici ale inteligentei artificiale aplicate la diagnoza proceselor industriale“, teză de doctorat, Univ. Tehnică Gh. Asachi, , 2002.

[McCu 1943] W. S McCulloch, W. Pitts, “A Logical Calculus of the Ideas Immanent in Nervous Activity”, Bulletin of Mathematical Biophysics 5, 115-33, 1943.

[Mins 1969] M. L. Minsky, S. Papert, “Perceptrons: An Introduction to Computational Geometry”, MIT Press, , Mass, 1969.

[Mood 1989] J. E. Moody, C. J. Darken, “Fast Learning in Networks of Locally Tuned Processing Units”, Neural Computation, Vol. 1, 1989, pp. 281-294.

[Murr 1997] R. Murray-Smith, T. A. Johansen, “Multiple Model Approaches to Modeling and Control”, Taylor & , 1997.

[Nare 1990] K. , K. Parthasarathy, "Identification and Control of Dynamical Systems Using Neural Networks", IEEE Transactions on Neural Networks, Vol. 1, No. 1, pp.4-26, 1990.

[Nare 1992] K. S. Narendra, ”Adaptive control of dynamical systems using neural networks,”In D. A. White and D. A. Sofge. editors, handbook of Intelligent Control: Neural, Fuzzy and Adaptive Approaches, , 1992.

[Nare 1997] K. S. Narendra, J. Balakrishnan, “Adaptive control using multiple models”, IEEE Trans. Autom. Control, Vol. 42, No. 2, pp. 171-187, 1997.

[Nare 2002] K. S. Narendra, K. George, “Adaptive control of simple nonlinear systems using multiple models”, Proceedings of the American Control Conference, Vol. 3, pp. 1779–1784, 2002.

[Nell 2001] O. Nelles, „Nonlinear System Identification: from Classical Approaches to Neural Networks and Fuzzy Models”, Ed. Springer, Berlin, Germany, 2001.

[Nguy 1990] D. Nguyen, B. Widrow, “The truck backer-upper: An example of self-learning in neural networks”, Neural Networks for Control, pp. 287-300, W. T. Miller and P. J. Werbos, editors, MIT Press, Cambridge, Massachusetts, 1990.

[Park 1993] J. Park, I. W. Sandberg, “Approximation and Radial Basis Function Networks”, Neural Computation, Vol. 5, 1993, pp. 305-316

[Pear 1989] B. A. Pearlmutter, “ Space Trajectories in Recurrent Neural Networks”, Neural Computation 1, pp. 263-269, 1989.

[Prin 1998] J. C. Principe, L. Wang, M. A. Motter, “Local dynamic modeling with self-organizing maps and applications to nonlinear system identification and control”, Proc. of IEEE, Vol. 86, No. 11, pp. 2240–2258, 1998.

[Powe 1977] M. J. D. Powell, “Restart procedures for the conjugate gradient method”, Mathematical Programming, Vol. 12, pp. 241-254, 1977.

[Psal 1988] D. Psaltis, A. Sideris, A. A. Yamamura, “A multilayer neural network controller”, IEEE Control Systems Magazine, Vol. 9, pp. 17–25, 1988.

[Psic 1991] D. C. Psichogios, L. H. Ungar, “Direct and indirect model based control using artificial neural networks”, Industrial and Engineering Chemical Research, Vol. 30, pp. 2564–2573, 1991.

[Pușc 1999] Gh. Pușcașu, Al. Stancu, “Neural Networks with Applications in Pattern Recognition and Systems Control”, București, MATRIX ROM, ISBN 973-685-074-9, 1999.

[Pusc 2000] Gh. Pușcașu, et. al., “Sisteme de conducere clasice si inteligente a proceselor”,  București, MATRIX ROM; ISBN 973-685-127-3, 2000.

[Pusc 2001] Gh. Pușcașu, V. Pușcașu, “Aspects regarding the modelling of the car used to implementation of a simulator”, 7th International Symposium on Automatic Control and Computer Science, Iași, Romania, pp. 51-57, 2001.

[Rose 1957] F. Rosenblatt, “The Perceptron, a Parceiving and Recognizing Automaton”, Cornell Aeronautical Laboratory Report No. 85-640-1, 1957.

[Ruan 1992] A. E. B. Ruano, P. J. Fleming, D. I. Jones, “Connectionist approach to PID tuning”, IEEE Proceedings, Part D, Vol. 129, pp. 279-285, 1992.

[Rume 1986] E. D. Rumelhart, E. G. Hinton, J. R. Williams, “Learning internal representations by error propagation”, Parallel Distributed Processing, Vol. 1, pp. 318-362. MIT Press, Cambridge, 1986.

[Sain 1991] J. Saint-Donat, N. Bhat,T. J. McAvoy, “Neural net model predictive control”, International Journal of Control, Vol. 54, pp. 1453–1468, 1991.

[Sast 1994] S. P. Satry, et. al., “ Memory Neuron Networks for Identification and Control of Dynamical Systems ” , IEEE Neural Networks Vol. 5 No. 2, 1994.

[ 1990] K. R. Sales, S. A. Billings, “Self-tuning control of nonlinear ARMAX model”, Int. Journal of Control, Vol. 51, pp. 753–769, 1990.

[Shin 2009] Y. C. Shin, C. Xu, “Intelligent Systems–Modelling Optimization and Control”, Taylor & Francis, 2009.

[Si 2001] J. Si, Y. T. Wang, “Online learning control by association and reinforcement”, IEEE Transactions on Neural Networks, Vol. 12, No. 2, pp. 264–76, 2001.

[Sing 1989] S. Singhal, L. Wu, “Training feedforward networks with extended Kalman filter algorithm”, Proc. Int. Conf. ASSP, pp. 1187–1190, 1989.

[Sofg 1990] D. A. Sofge, D. A. White, “Neural network based process optimization and control”, Proceedings of the IEEE Conference on Decision & Control, pp. 3270-3276, 1990.

[Sjöb 1994] J. Sjöberg, H. Hjalmerson, L. Ljung, “Neural Networks in System Identification”, Preprints 10th IFAC symposium on SYSID, Copenhagen, Denmark. Vol.2, pp. 49-71, 1994.

[Sjöv 2008] P. Sjövall, Th. Abrahamsson, “Substructure system identification from coupled system test data”, Mechanical systems and signal processing, Vol.22, pp.15-33, Elsevier, , 2008.

[Söde 1983] T. Söderström, L. Ljung, “User choices for recursive identification methods”, Proc. IAESTED Conf on Applied Control and Identification, ACI '83, Lyngby, Denmark, pp. 24-14, 1983.

[Srin 1994] B. Srinivasan, et. al., “Backpropagation Through Adjoints for the Identification of Non-linear Dynamic Systems Using Recurrent Neural Models”, IEEE Transactions on Neural Networks, Vol. 5 No.2, pp.213-228, 1994.

[Stai 1992] W. E. Staib, R. B. Staib, “The Intelligent Arc Furnace controller: A neural network electrode position optimization system for the electric arc furnace”, Proceedings of the International Conference on Neural Networks, Vol. 3, pp. 1-9, IEEE Press, Piscataway, New Jersey, 1992.

[Stai 1993] W. E. Staib, “The Intelligent Arc Furnace: Neural networks revolutionize steelmaking”, Proceedings of the World Congress on Neural Networks, pp. 466-469, 1993.

[Sun 2008] L. Sun, A. Sano, “Nolinear System Identification Based on Local Sub-Model Networks”, Proceedings of the 17th World Congress IFAC, pp. 4030-4035, , , 2008.

[Sure 2010] S. Suresh, N. Kannan, “Neural adaptive control for vibration suppression in composite fin-tip of aircraft”, International Journal of Neural Systems, Vol. 18, No. 3, pp. 219-231, 2010.

[Swin 1990] R. W. Swiniarski, “Novel neural network based self-tuning PID controller which uses pattern recognition techniques”, Proceedings of the American Control Conference, pp. 3023-3024, 1990.

[Tham 2002a] G. Thampi, J. C. Principe, M. A. Motter, J. Cho, J. Lan, “Multiple model based flight control design”, Proc. IEEE Int. Midwest Symp. Circuits Systems (MWSCAS 2002), Vol. 3, pp. 133–136, 2002.

[Tham 2002b] G. Thampi, J. C. Principe, J. Cho, M. A. Motter, “Adaptive inverse control using SOM based multiple models”, Proc. Portuguese Conf. Automatic Control, pp. 278–282, 2002.

[Theo 2010] D. Theodoridis, Y. Boutalis, M. Christodoulou, “Indirect adaptive control of unknown multi variable nonlinear systems with parametric and dynamic uncertainties using a new neuro-fuzzy system description”, International Journal of Neural Systems, Vol. 20, No. 2, pp. 129–148, 2010.

[Trou 1991] T. Troudet, “Towards practical control design using neural computation”, Proceedings of the International Conference on Neural Networks,Vol. 2, pp. 675-681, IEEE Press, Piscataway, New Jersey, 1991.

[Tust 1947] A. Tustin, “The effects of backlash and of speed-dependent friction on the stability of closed-cycle control systems”, J. of the Institution of Electrical Engineers, Vol. 94, No. 2A, pp. 143-151, 1947.

[Unga 1995] L. H. Ungar, “Process Control”, The Handbook of Brain Theory and Neural Networks, ed. M.A. Arbib, MIT Press, pp. 760-764, 1995.

[Verd 2002] V. Verdult, “Nonlinear System Identification: A State-Space Approach”, Ph. D thesis, , 2002.

[Yue 2005] M. Yue, R. Schlueter, “An algorithm and properties enabling identification of bifurcation subsystems”, Electric Power Components and Systems, Vol.33, pp. 611-628, Taylor & Francis Inc., 2005.

[Wahl 1991] B. Wahlberg, „System identification using Laguerre filters”, IEEE Trans. Automatic Control, Vol. 36, pp. 551-562, 1991.

[Wang 2005] D. Wang, J. Huang, “Neural network-based adaptive dynamic surface control for a class of uncertain nonlinear systems in strict-feedback form”, IEEE Trans. Neural Networks, Vol. 16, No. 1, pp.195–202, 2005.

[Werb 1990] P. J. Werbos, “Backpropagation through time: what it does and how to do it”, Proc. of IEEE, Special issue on neural networks, vol. 78, no. 10, pp. 1550-1560, 1990.

[Werb 1990b] P. J. Werbos, “A menu of designs for reinforcement learning over time”, Neural networks for control, MIT Press, Cambridge, MA, pp. 67–95, 1990.

[Werb 1992] P. J. Werbos, “Approximate dynamic programming for real-time control and neural modelling”, Handbook of intelligent control: neural, fuzzy and adaptive approaches, Van Nostrandm Reinhold, New York, pp. 493–525, 1992.

[Widr 1960] B. Widrow, M. A. Lehr, “30 years of adaptive neural networks: Perceptron, madaline and backpropagation”, Proceedings of the Institute of Electrical and Electronics Engineers, Vol. 78, pp. 1415 – 1442, 1960.

[Whit 1997] D. White, D. Sofge, “Handbook of Intelligent Control: Neural, Fuzzy, and Adaptive Approaches”, Ed. Van Nostrand Reinhold, NewYork, 1997.

[Will 1994] R. J. Williams, D. Zipser, “Gradient-based learning algorithms for recurrent networks and their computational complexity”, Backpropagation: Theory Architectures and Applications, Eds. : Lawrence Erlbaum Associates, pp. 433-486, 1994.

[Will 1990] R. J. Williams, J. Peng, “An efficient gradient-based algorithm for on line training of recurrent network trajectories”, Neural Computation 2, pp. 490-501, 1990.

[Zaha 2006] D. Zaharie, “Rețele Neuronale. Note de curs.”, Universitatea de Vest, Timișoara 2006.

[Zhu 2004] Q. Zhu, L. Guo, “Stable Adaptive Neurocontrol for Nonlinear Discrete-Time Systems”, IEEE Trans. Neural Networks, Vol. 15, No. 3, pp. 653–662, 2004.

Anexa A.

Relații de calcul pentru algoritmul Back-Propagation-Through-Time (BPTT)

Gradientul poate fi calculat în felul următor:

(A.1)

unde (A.2)

Dacă, atunci (A.3)

Dacă, atunci

(A.4)

Pentru și oricare , se poate defini (A.5)

Ținând cont de relațiile (A.2), (A.3) și (A.4), relația (A.5) mai poate fi scrisă astfel:

(A.6)

Relații de calcul pentru algoritmul Back-Propagation-Through-Time trunchiat

(A.7)

unde: (A.8)

dacă , atunci (A.9)

dacă, atunci (A.10)

Pentru oricare și, se definește (A.11)

Ținând cont de relațiile (A.8), (A.9) și (A.10), relația (A.11) devine:

(A.12)

Pentru o simplificare cât mai mare, adesea se obișnuiește să se memoreze doar ponderile curente, obținând performanțe similare. Astfel, relația (A.10) poate fi scrisă:

(A.13)

Algoritmul BPTT clasic și BPTT trunchiat se diferențiază prin modul de calcul al ponderilor și al variabilei . Deoarece, în cazul algoritmului on-line parametrii sunt modificați la fiecare pas de timp, termenul din relația (A.6), trebuie calculat doar la pasul curent de timp, de aceea nu este prezent în linia a doua a relației (A.12).

Anexa B

Relații de calcul pentru RNA Elman

(B.1)

(B.2)

(B.3)

În ecuația (B.3) reprezintă al i-lea element al vectorului X(k). reprezintă linia i din matricea.reprezintă linia i din matricea. Se reamintește faptul că este dependent de.

Astfel ținând cont de prima ecuația din setul de ecuații (1.21 – capitolul 1) putem scrie:

(B.4)

Anexa C

Implemetare C++ a algoritmului de reglare PID neuronal

#include<stdio.h>

#include<graphics.h>

#include<conio.h>

#include<math.h>

#include<string.h>

#include<stdlib.h>

#include<io.h>

#include<fcntl.h>

#include<sys/stat.h>

#include<time.h>

#include<dos.h>

#include "retea.h"

retea neuro;

retea reg;

float dw[5][10][10],db[10][5];

int base=0x220;

int grd = 0,hld = 0,on=1,off=0;

int contr=1,Xval=1,Yval=1;

float autoX=1,autoY=1,minx,maxx,miny,maxy;

void initializare(void);

void desen_contur(int x1,int y1,int x2,int y2,float minx,float maxx,float miny,float maxy);

void deseneaza(float *x,float *y,int n,int culoare,int nr,int pos);

void deseneaza(float *y,int n,int culoare,int nr,int pos);

void grid(int sel);

void hold(int sel);

void setXrange(float min,float max);

void setYrange(float min,float max);

void contur(int sel);

void Xvalue(int sel);

void Yvalue(int sel);

void TextVertical(int x,int y,const char *s);

float acan(unsigned char canal,unsigned char gain,float Umax);

float volti_in_grade(float tens);

void programare_sursa(float tens);

float acan(unsigned char canal,unsigned char gain,float Umax)

{

unsigned char lb,hb;

float Ucan;

outport((base+9),gain); //selectie gain

outport((base+10),canal); //selectie canal}

outport((base+12),0xff); //start conversie}

do

{

hb=inportb(base+5);

}

while ((hb & 0x10)==0x10); //se asteapta sfarsitul conversiei}

lb=inportb(base+4);

Ucan=((256*hb+lb)-2048)*Umax/2048; //se imparte la 2048 si nu la 4096 deoarece

return(Ucan); //placa este pusa pe -5…5 si nu pe 0…10V

}

float volti_in_grade(float tens) //conversia tens.trad.[V]->temp. cuptor[grd. Celsius

{ //caracteristica liniarizata pe 4 portiuni

float temp;

for(;;)

{

if (/*(tens>(float)2.1) && */(tens<=(float)3.3))

{temp=20*tens-32.2;break;}

if ((tens>(float)3.3) && (tens<=(float)3.5))

{temp=21*tens-35.5;break;}

if ((tens>(float)3.5) && (tens<=(float)3.7))

{temp=23*tens-42.5;break;}

if ((tens>(float)3.7) && (tens<=(float)3.9))

{temp=26.5*tens-55.45;break;}

if ((tens>(float)3.9) && (tens<=(float)4.1))

{temp=35.5*tens-90.55;break;}

if ((tens>(float)4.1) && (tens<=(float)4.3))

{temp=36.5*tens-94.65;break;}

if ((tens>(float)4.3) && (tens<=(float)4.5))

{temp=53.5*tens-167.75;break;}

if ((tens>(float)4.5) && (tens<=(float)4.7))

{temp=65*tens-219.5;break;}

if ((tens>(float)4.7) && (tens<=(float)4.9))

{temp=115*tens-454.5;break;}

}

return (temp);

}

void programare_sursa(float tens)

{ int i;

unsigned char dal,dah,d[12];

float y,Um=5; //tens. max. = 5V

float v[12] ;

// initializarea este utila la conversia real-byte

v[0]=5.0/2048; v[1]=5.0/1024; v[2]=5.0/512; v[3]=5.0/256;

v[4]=5.0/128; v[5]=5.0/64; v[6]=5.0/32; v[7]=5.0/16;

v[8]=5.0/8; v[9]=5.0/4; v[10]=5.0/2; v[11]=5.0;

// se face conversia real – 2 bytes

if (tens > Um) tens=Um; // daca tens.>5V -> tens.=5V

y=tens/2; //factor de amplifica aprox. = 2

for (i=0;i<12;i++)

{

if (y>=v[11-i]) //conversie din baza 10 in baza 2

{

d[11-i]=1;

y=y-v[11-i];

}

else

{

d[11-i]=0;

}

}

dal=d[0]+2*d[1]+4*d[2]+8*d[3]+16*d[4]+32*d[5]+64*d[6]+128*d[7];

dah=d[8]+2*d[9]+4*d[10]+8*d[11];

// se transmit octetii la CNA conform tensiunii prescrise;

// facorul de amplificare este aproximativ egal cu 2;

outport((base+4),dal);

outport((base+5),dah);

}

//////////////////////////////////////////////////////////////////////////

FUNCȚII DE AFIȘARE GRAFICĂ

//////////////////////////////////////////////////////////////////////////

float linear(float x,float b)

{

return (x+b);

}

float lineard(float x,float b)

{

return 1;

}

float logsig(float x,float b)

{

return (1/(1+exp(-(x+b))));

}

float logsigd(float x,float b)

{

return (1/(2+exp(-(x+b))+exp(x+b)));

}

float tansig(float x,float b)

{

return ((1-exp(-(x+b)))/(1+exp(-(x+b))));

}

float tansigd(float x,float b)

{

return (2/(2+exp(-(x+b))+exp(x+b)));

}

float functie(float x)

{

return x*x+1;

}

void retea::evaluare(int esantion)

{

int i,j,k;

float s;

for(i=0;i<neuro.nrneuroni[0];i++)

{

p[i]=intrari[i][esantion];

A[i][0]=p[i];

}

//nrneuroni[0]=r;

for(i=1;i<=nrstraturi;i++)

{

for(j=0;j<nrneuroni[i];j++)

{

s=0;

for(k=0;k<nrneuroni[i-1];k++)

s+=w[i][j][k]*A[k][i-1];

if(!strcmp(functii[i],"linear"))

A[j][i]=linear(s,b[j][i]);

if(!strcmp(functii[i],"logsig"))

A[j][i]=logsig(s,b[j][i]);

if(!strcmp(functii[i],"tansig"))

A[j][i]=tansig(s,b[j][i]);

}

}

}

void retea::evaluareERR(int esantion,float lr)

{

int i,j,k;

float s,s2;

for(i=0;i<neuro.nrneuroni[0];i++)

{

p[i]=intrari[i][esantion];

A[i][0]=p[i];

}

for(i=0;i<nrneuroni[nrstraturi];i++)

t[i]=tinte[i][esantion];

for(i=0;i<nrneuroni[nrstraturi];i++)

E[i][nrstraturi+1]=A[i][nrstraturi]-t[i];

//nrneuroni[0]=r;

for(i=nrstraturi;i>=1;i–)

{

for(j=0;j<nrneuroni[i];j++)

{

s=0;

for(k=0;k<nrneuroni[i-1];k++)

s+=w[i][j][k]*A[k][i-1];

if(i<nrstraturi)

{

s2=0;

for(k=0;k<nrneuroni[i+1];k++)

s2+=E[k][i+1]*w[i+1][k][j];

}

else

s2=E[j][i+1];

if(!strcmp(functii[i],"linear"))

E[j][i]=lineard(s,b[j][i])*s2;

if(!strcmp(functii[i],"logsig"))

E[j][i]=logsigd(s,b[j][i])*s2;

if(!strcmp(functii[i],"tansig"))

E[j][i]=tansigd(s,b[j][i])*s2;

for(k=0;k<nrneuroni[i-1];k++)

dw[i][j][k]+=2*lr*E[j][i]*A[k][i-1];

db[j][i]+=2*lr*E[j][i];

}

}

}

void retea::AjustarePonderi(float lr)

{

int i,j,k;

for(i=1;i<nrstraturi;i++)

for(j=0;j<nrneuroni[i];j++)

for(k=0;k<nrneuroni[i-1];k++)

{

w[i][j][k]-=2*lr*E[j][i]*A[k][i-1];

b[j][i]-=2*lr*E[j][i];

}

}

float retea::instruire(long int nrepoci,float lr,float err)

{

int j,k;

long int i,x=0;

float ERR[100],ER;

evaluare(0);

for(i=1;i<=nrepoci;i++)

{

for(k=0;k<nresantioane;k++)

{

evaluare(k);

evaluareERR(k,lr);

ERR[k]=0;

for(j=0;j<nrneuroni[nrstraturi];j++)

ERR[k]+=(A[j][nrstraturi]-tinte[j][k])*(A[j][nrstraturi]-tinte[j][k]);//*E[j][nrstraturi+1];

//if(ERR[k]<err)

//i=nrepoci+1;

}

ER=0;

for(int l=1;l<=nrstraturi;l++)

for(j=0;j<nrneuroni[l];j++)

{

for(k=0;k<nrneuroni[l-1];k++)

{

w[l][j][k]-=dw[l][j][k];

dw[l][j][k]=0;

}

b[j][l]-=db[j][l];

db[j][l]=0;

}

for(k=0;k<nresantioane;k++)

ER+=ERR[k];

if(ER<=err)

i=nrepoci+1;

/*if(i/1000==x)

{

printf("\n%ld.eroare=%.9lf \n",i,ER);

x++;

} */

}

return ER;

}

void scrie()

{

int i,j,k;

FILE *fis;

fis=fopen("retea.nro","wb");

fwrite(&neuro.nrstraturi,sizeof(int),1,fis);

for(i=0;i<=neuro.nrstraturi;i++)

fwrite(&neuro.nrneuroni[i],sizeof(int),1,fis);

for(i=1;i<=neuro.nrstraturi;i++)

for(j=0;j<neuro.nrneuroni[i];j++)

for(k=0;k<neuro.nrneuroni[i-1];k++)

fwrite(&neuro.w[i][j][k],sizeof(float),1,fis);

for(i=1;i<=neuro.nrstraturi;i++)

for(j=0;j<neuro.nrneuroni[i];j++)

fwrite(&neuro.b[j][i],sizeof(float),1,fis);

fwrite(&neuro.functii,100,1,fis);

fclose(fis);

}

void citeste()

{

int i,j,k;

FILE *fis;

fis=fopen("retea.nro","rb");

fread(&neuro.nrstraturi,sizeof(int),1,fis);

for(i=0;i<=neuro.nrstraturi;i++)

fread(&neuro.nrneuroni[i],sizeof(int),1,fis);

for(i=1;i<=neuro.nrstraturi;i++)

for(j=0;j<neuro.nrneuroni[i];j++)

for(k=0;k<neuro.nrneuroni[i-1];k++)

fread(&neuro.w[i][j][k],sizeof(float),1,fis);

for(i=1;i<=neuro.nrstraturi;i++)

for(j=0;j<neuro.nrneuroni[i];j++)

fread(&neuro.b[j][i],sizeof(float),1,fis);

fread(&neuro.functii,100,1,fis);

fclose(fis);

}

void main()

{

unsigned char canal,gain;

clrscr();

float a[15][15];

int i,j,k,option,i1,contor;

float ref[300],er[300],der[300],p[300],u[300],y[300],x[300],temp1[300],temp2[300],temp3[300];

char c[10],ch;

int exit=0;

float referinta=0,U1=0,temp=0,bool=0,tempcitita=0,e=0;

FILE *fisier1,*fisier2,*fisier3,*fisier4,*fisier5,*fisier6;

if ((fisier1 = fopen("iesire.dat", "w")) == NULL)

{

fprintf(stderr, "Cannot open .dat file.\n");

}

if ((fisier2 = fopen("ref.dat", "w")) == NULL)

{

fprintf(stderr, "Cannot open .dat file.\n");

}

if ((fisier3 = fopen("comanda.dat", "w")) == NULL)

{

fprintf(stderr, "Cannot open .dat file.\n");

}

if ((fisier4 = fopen("P.dat", "w")) == NULL)

{

fprintf(stderr, "Cannot open .dat file.\n");

}

if ((fisier5 = fopen("D.dat", "w")) == NULL)

{

fprintf(stderr, "Cannot open .dat file.\n");

}

if ((fisier6 = fopen("I.dat", "w")) == NULL)

{

fprintf(stderr, "Cannot open .dat file.\n");

}

initializare();

setusercharsize(2,1,2,1);

settextstyle(SMALL_FONT,HORIZ_DIR,0); ///////////////////////////////////////////////////////////

for(i=0;i<100;i++)

u[i]=((int)i/20+1)*20;

y[0]=0;

for(i=7;i<100;i++)

{

y[i]=1.9864*y[i-1]-0.9864*y[i-2]+0.0917*u[i-5]-0.0911*u[i-6]+0.0006*u[i-7];

neuro.intrari[0][i]=y[i-1];

neuro.intrari[1][i]=y[i-2];

neuro.intrari[2][i]=u[i-5];

neuro.intrari[3][i]=u[i-6];

neuro.intrari[4][i]=u[i-7];

neuro.tinte[0][i]=y[i];

}

setfillstyle(SOLID_FILL,BLACK);

do

{

bar(0,0,640,480);

setcolor(WHITE);

outtextxy(250,10,"1.Instruire");

outtextxy(250,20,"2.Reinstruire");

outtextxy(250,30,"3.Exemplificare Reglare");

c[0]=getch();

option=atoi(c);

bar(0,0,640,480);

neuro.nresantioane=100;

for(i=1;i<=neuro.nrstraturi;i++)

for(j=0;j<neuro.nrneuroni[i];j++)

{

for(k=0;k<neuro.nrneuroni[i-1];k++)

dw[i][j][k]=0;

db[j][i]=0;

}

switch(option)

{

case 1:

neuro.r=5;

neuro.nrstraturi=1;

neuro.nrneuroni[1]=1;

neuro.nrneuroni[2]=5;

neuro.nrneuroni[3]=1;

neuro.nrneuroni[0]=neuro.r;

strcpy(neuro.functii[1],"tansig");

strcpy(neuro.functii[2],"tansig");

strcpy(neuro.functii[1],"linear");

time_t t;

srand((unsigned) time(&t));

for(i=1;i<=neuro.nrstraturi;i++)

for(j=0;j<neuro.nrneuroni[i];j++)

for(k=0;k<neuro.nrneuroni[i-1];k++)

neuro.w[i][j][k]=random(100)/(float)100;

for(i=1;i<=neuro.nrstraturi;i++)

for(j=0;j<neuro.nrneuroni[i];j++)

neuro.b[j][i]=random(100)/(float)100;

printf("eroarea finala=%f",neuro.instruire(1000000,0.0000001,0.0000001));

scrie();

break;

case 2:

citeste();

outtextxy(250,50,itoa(neuro.instruire(50000,0.0000001,0.000000001),c,10));

scrie();

break;

case 3:

citeste();

reg.r=3;

reg.nrstraturi=1;

reg.nrneuroni[1]=1;

reg.nrneuroni[0]=reg.r;

strcpy(reg.functii[1],"linear");

for(i=1;i<=reg.nrstraturi;i++)

for(j=0;j<reg.nrneuroni[i];j++)

for(k=0;k<reg.nrneuroni[i-1];k++)

reg.w[i][j][k]=random(100)/(float)100;

for(i=1;i<=reg.nrstraturi;i++)

for(j=0;j<reg.nrneuroni[i];j++)

reg.b[j][i]=random(100)/(float)100;

canal=7;

gain=0;

U1=acan(canal,gain,5.0);

referinta=volti_in_grade(U1);

for(i=0;i<300;i++)

{

y[i]=referinta;

u[i]=0;

er[i]=0;

p[i]=0;

ref[i]=0;

temp1[i]=0;

temp2[i]=0;

temp3[i]=0;

}

setYrange(0,100);

i=7;

contor=7;

exit=0;

do

{

if(i>200)

for(k=0;k<199;k++)

{

ref[k]=ref[k+1];

er[k]=er[k+1];

p[k]=p[k+1];

y[k]=y[k+1];

u[k]=u[k+1];

temp1[k]=temp1[k+1];

temp2[k]=temp2[k+1];

temp3[k]=temp3[k+1];

i=199;

}

er[i]=referinta-y[i-1];

der[i]=er[i]-er[i-1];

if(er[i]<0)

er[i]=0;

p[i]=p[i-1]+er[i];

ref[i]=referinta;

temp=referinta;

reg.intrari[0][0]=er[i];

reg.intrari[1][0]=der[i];

reg.intrari[2][0]=p[i];

reg.evaluare(0);

u[i-5]=reg.A[0][1];

neuro.intrari[0][0]=y[i-1];

neuro.intrari[1][0]=y[i-2];

neuro.intrari[2][0]=u[i-5];

neuro.intrari[3][0]=u[i-6];

neuro.intrari[4][0]=u[i-7];

for(j=0;j<200;j++)

{

neuro.evaluare(0);

neuro.tinte[0][0]=ref[i];

neuro.evaluareERR(0,0.1);

reg.tinte[0][0]=u[i-6]-neuro.E[0][1];

for(int l=1;l<=reg.nrstraturi;l++)

for(int q=0;q<reg.nrneuroni[l];q++)

{

for(k=0;k<reg.nrneuroni[l-1];k++)

{

dw[l][q][k]=0;

}

db[q][l]=0;

}

reg.evaluareERR(0,0.0000003);

for(l=1;l<=reg.nrstraturi;l++)

for(q=0;q<reg.nrneuroni[l];q++)

{

for(k=0;k<reg.nrneuroni[l-1];k++)

{

reg.w[l][q][k]-=dw[l][q][k];

dw[l][q][k]=0;

}

reg.b[q][l]-=db[q][l];

db[q][l]=0;

}

reg.evaluare(0);

neuro.intrari[0][0]=y[i-1];

neuro.intrari[1][0]=y[i-2];

neuro.intrari[2][0]=u[i-5];

neuro.intrari[3][0]=u[i-6];

neuro.intrari[4][0]=u[i-7];

}

u[i-5]=reg.A[0][1];

if(u[i-5]>5)

u[i-5]=5;

if(u[i-5]<0)

u[i-5]=0;

bool = 1;

float u_curent=0;

for(int i1=0;i1<10;i1++)

{ // u_curent+=u[i-i1-5]/10;

if(ref[i]!=ref[i-i1])// || fabs(referinta-y[i-1])>1)

bool=0;

}

temp=ref[i];

if(temp>y[i-1])

e=temp-y[i-1];

else e=y[i-1]-temp;

programare_sursa(u[i-5]);

delay(150);

U1=acan(canal,gain,5.0);

y[i]=volti_in_grade(U1);

if(contor>200)

for(i1=0;i1<200;i1++)

x[199-i1]=contor-i1;

else

for(i1=0;i1<i;i1++)

x[i1]=i1;

setYrange(0,100);

fprintf(fisier1,"%f\n",y[i]);

fprintf(fisier2,"%f\n",temp);

fprintf(fisier3,"%f\n",u[i-5]);

deseneaza(x,y,i,RED,2,1);

hold(on);

deseneaza(x,ref,i,YELLOW,2,1);

setYrange(0,6);

setXrange(contor-199,contor-5);

deseneaza(x,u,i,GREEN,2,1);

setXrange(0,0);

axa_dreapta(40,20,580,220,0,100,0,6);

hold(off);

setYrange(-1,1);

temp1[i]=50*reg.w[1][0][0];//*er[i];

deseneaza(x,temp1,i,GREEN,2,2);

fprintf(fisier4,"%f\n",temp1[i]);

hold(on);

temp2[i]=100*reg.w[1][0][1];//*der[i];

deseneaza(x,temp2,i,RED,2,2);

fprintf(fisier5,"%f\n",temp2[i]);

//temp3[i]=10*reg.w[1][0][2];//*p[i];

/* if(reg.w[1][0][2]*p[i]>5)

p[i]=5/reg.w[1][0][2];

else if(reg.w[1][0][2]*p[i]<0)

p[i]=0;*/

/* if(reg.w[1][0][2]*p[i]>5)

p[i]=5/reg.w[1][0][2];

else if(reg.w[1][0][2]*p[i]<0)

p[i]=0;*/

temp3[i]=5*reg.w[1][0][2];

deseneaza(x,temp3,i,YELLOW,2,2);

fprintf(fisier6,"%f\n",temp3[i]);

hold(off);

setcolor(RED);

TextVertical(0,50,"Temperatura cuptor");

setcolor(GREEN);

TextVertical(610,50,"Comanda cuptor");

setcolor(YELLOW);

TextVertical(10,50,"Temperatura referinta");

setcolor(YELLOW);

TextVertical(0,240,"Componenta integratoare");

setcolor(RED);

TextVertical(10,240,"Componenta derivativa");

setcolor(GREEN);

TextVertical(610,240,"Componenta proportionala");

if(kbhit())

{

ch=getch();

if(ch==27)

{

exit=1;

fclose(fisier1);

fclose(fisier2);

fclose(fisier3);

fclose(fisier4);

fclose(fisier5);

fclose(fisier6);

}

if(ch==0)

{

ch=getch();

if(ch==72)

referinta+=.25;

if(ch==80)

referinta-=.25;

}

}

i++;

contor++;

}

while(exit==0);

settextstyle(SMALL_FONT,HORIZ_DIR,0);

terminare_program();

break;

}

}

while(c[0]!=27);

closegraph();

}

Anexa D

Implemetare C++ a unei rețele neuronale artificiale

CLASA retea.h

class retea

{

public:

float w[5][10][10];

float b[10][5];

float p[10],t[15];

float A[10][5],E[15][5];

float tinte[10][100],intrari[10][100];

int nresantioane;

int nrneuroni[10],nrstraturi,r;

char functii[10][10];

retea(){}

~retea(){}

void evaluare(int esantion);

void evaluareERR(int esantion,float lr);

float instruire(long int nrepoci,float lr,float err);

void AjustarePonderi(float lr);

};

void retea::AjustarePonderi(float lr)

{

int i,j,k;

for(i=1;i<nrstraturi;i++)

for(j=0;j<nrneuroni[i];j++)

for(k=0;k<nrneuroni[i-1];k++)

{

w[j][i][k]-=2*lr*E[j][i]*A[k][i-1];

b[j][k]-=2*lr*E[k][i];

}

}

void scrie()

{

int i,j,k;

FILE *fis;

fis=fopen("retea.nro","wb");

fwrite(&neuro.nrstraturi,sizeof(int),1,fis);

for(i=0;i<=neuro.nrstraturi;i++)

fwrite(&neuro.nrneuroni[i],sizeof(int),1,fis);

for(i=1;i<=neuro.nrstraturi;i++)

for(j=0;j<neuro.nrneuroni[i];j++)

for(k=0;k<neuro.nrneuroni[i-1];k++)

fwrite(&neuro.w[i][j][k],sizeof(float),1,fis);

for(i=1;i<=neuro.nrstraturi;i++)

for(j=0;j<neuro.nrneuroni[i];j++)

fwrite(&neuro.b[j][i],sizeof(float),1,fis);

fwrite(&neuro.functii,100,1,fis);

fclose(fis);

}

void citeste()

{

int i,j,k;

FILE *fis;

fis=fopen("retea.nro","rb");

fread(&neuro.nrstraturi,sizeof(int),1,fis);

for(i=0;i<=neuro.nrstraturi;i++)

fread(&neuro.nrneuroni[i],sizeof(int),1,fis);

for(i=1;i<=neuro.nrstraturi;i++)

for(j=0;j<neuro.nrneuroni[i];j++)

for(k=0;k<neuro.nrneuroni[i-1];k++)

fread(&neuro.w[i][j][k],sizeof(float),1,fis);

for(i=1;i<=neuro.nrstraturi;i++)

for(j=0;j<neuro.nrneuroni[i];j++)

fread(&neuro.b[j][i],sizeof(float),1,fis);

fread(&neuro.functii,100,1,fis);

fclose(fis);

}

float retea::instruire(long int nrepoci,float lr,float err)

{

int j,k;

long int i,x=0;

float ERR[100],ER;

evaluare(0);

for(i=1;i<=nrepoci;i++)

{

for(k=0;k<nresantioane;k++)

{

evaluareERR(k,lr);

ERR[k]=0;

for(j=0;j<nrneuroni[nrstraturi];j++)

ERR[k]+=(A[j][nrstraturi]-tinte[j][k])-(A[j][nrstraturi]-tinte[j][k]);//*E[j][nrstraturi+1];

//if(ERR[k]<err)

//i=nrepoci+1;

}

ER=0;

for(int l=1;l<=nrstraturi;l++)

{

for(k=0;k<nrneuroni[l-1];k++)

{

w[l][j][k]-=dw[l][j][k];

dw[l][j][k]=0;

}

b[j][l]-=db[j][l];

db[j][l]=0;

}

for(k=0;k<nresantioane;k++)

ER+=ERR[k];

if(ER<=err)

i=nrepoci+1;

}

return ER;

}

Anexa E – Citări pentru articolele cotate ISI

BIBLIOGRAFIE

[Abu 1993] Z. R. A. Abu, “Machine Learning with Rule Extraction by Genetic Assisted Reinforcement; Application to Nonlinear Control“, Ph.D. thesis, , 1993.

[ADAM 2002] ADAMS (Advanced Driving and Maneuvering Simulator), Oerlikon Contraves AG, , 2002.

[Ahme 2000] M. S. Ahmed, “Neural-net-based direct adaptive control for a class nonlinear plants”, IEEE Transactions on Automatic Control, Vol. 45, No. 1, pp. 119 – 124, 2000.

[Anan 1995] R. Anand, et. al., “Efficient Classification for Multiclass Problems Using Modular Neural Networks”, IEEE Transactions on Neural Networks, Vol. 6, No.1, pp.117-124, 1995.

[Ande 1999] J. G. Andersen, J. Cisneros, et. al., “Speed, size, and edge-rate information for the detection of collision events”, Journal of Experimental Psychology: Human Perception and Performance, Vol. 25, pp. 256-269, 1999.

[Ande 2001] J. G. Andersen, A. Saidpour, et. al., “Detection of Collision Events by Older and Younger Drivers” , Proceedings of the first international driving symposium on human factors in driver assessment, training and vehicle design, pp. 255-258, , 2001.

[Arms 1991] B. Armstrong-Helouvry, “Control of Machines with Friction”, Kluwer Academic Publisher, Norwell, MA, 1991.

[Astr 1995] K. J. Astrom, B. Wittenmark, Adaptive Control, 2nd edn., Addison-Wesley, Reading, MA, 1995.

[Ayou 1996] M. Ayoubi, Nonlinear System Identification Based on Neural Networks With Locally Distributed Dynamics and Applications to Technical Process, VDI Verlag, Düsseldorf, 1996.

[Abon 2005] J. Abonyi, capitol 2.18 Neural Networks for Process Modeling, INSTRUMENT ENGINEERS' HANDBOOK, 4th Edition, Volume 2 – Process Control, 2005.

[Babu 1998] R. Babuska, Fuzzy Modeling for Control, Kluwer Academic Publishes, , 1998.

[Beal 1972] E. M. L. Beale, “A derivation of conjugate gradients”, F. A. Lootsma, ed. Numerical methods for nonlinear optimization, : Academic Press, 1972.

[Bell 1957] R. E. Bellman, “Dynamic programming”, Princeton University Press, Princeton, NJ, 1957.

[Bo 1982] L. C. Bo, D. Pavelescu, “The friction- speed relation and its infuence on the critical velocity of stick-slip motion”, Wear, Vol. 82, pp. 277-289, 1982.

[Boer 2000] E. Boer, T. Yamamura, et.al.,“Experiencing the same road twice: a driver centered comparison between simulation and reality”, in Proceedings of the Driving Simulation Conference DSC’2000, pp. 33-55, , Sept 2000.

[Brun 1994] P. Bruniaux, D. Pinchon, “Non-Linear System Identification by Decomposition in Subsystems”, ESM’94,S.C.S. European Simulation Multiconference, Barcelona, Espagne, 1994.

[Camp 1998] P. Campolucci, A Circuit Theory Approach to Recurrent Neural Network Architectures and Learning Methods, PhD thesis, Università Degli Studi di Bologna, 1998.

[Chen 2001] L. J. Chen, K. S. Narendra, “Nonlinear adaptive control using neural networks and multiple models”, Automatica, Vol. 37, No. 8, pp. 1245–1255, 2001.

[Cioc 2001] I.B. Ciocoiu, Retele neurale artificiale, Editura Cantes, Iasi, 2001, ISBN 973-8173-16-7.

[Codr 2001] B. Codreș, Al. Codreș, Gh. Pușcașu, “Aspects regarding the Neuro Adaptive Control Structure Properties”, SIMSIS 11, , ISBN 973-8139-98-9, pp. 214-219, 2001.

[Codr 2005] Gh. Pușcașu, B. Codreș, “A study concerning the elimination of the neurons or of the layers from a multilayer neural network”, The IVth International Conference On Microelectronics, ICMCS -2005, pp. 279-287, Chisinau, Moldova, ISBN-9975-66-040-1 (Vol.2), 2005

[Codr 2006] Gh. Pușcașu, B. Codreș, A. Stancu, “Identification of the non-linear systems using internal recurrent neural networks”, The Annals of “Dunarea de Jos” University of Galati, Fascicle III – Electrotechnics, Electronics, Automatic Control, Informatics, 2006.

[Codr 2006b] Al. Stancu, B. Codreș, Gh. Pușcașu, Aspects regarding of the neuro-adaptive control structure proprieties. Application to the nonlinear pneumatic servo system benchmark , The Annals of “Dunarea de Jos” , Fascicle III – Electrotechnics, Electronics, Automatic Control, Informatics, 2006.

[Codr 2007] B. Codreș, Gh. Pușcașu, A. Stancu, “The Estimation of a Nonlinear Subsystem’s Output Using Internal Recurrent Neural Networks”, 9th International Symposium on Automatic Control and Computer Science, SACCS 2007, Romania, Proceedings CD-ROM ISSN 1843-665-X, 2007.

[Codr 2009] Gh. Puscasu, B. Codres, Al. Stancu, G. Murariu, “Nonlinear System Identification Based On Internal Recurrent Neural Networks”, International Journal of Neural Systems, Vol. 19, No. 2, pp. 115–125, 2009.

[Codr 2010] B. Codreș, Gh. Pușcașu, G. Murariu, A. Zanoschi, “Identification of a Nonlinear Pneumatic Servo System Using Modular Neural Networks”, The Annals of “Dunarea de Jos” University of Galati, Fascicle III – Electrotechnics, Electronics, Automatic Control, Informatics, Vol. 33, No. 2, pp.40-47, ISSN 1221-454X, 2010.

[Codr 2011] Gh. Puscasu, B. Codres, “Nonlinear System Identification And Control Based On Modular Neural Networks”, International Journal of Neural Systems, Vol. 21, No. 4 (2011) pp,319–334, 2011.

[Cybe 1989] G. Cybenko, “Approximation by superpositions of a sigmoid function”, Math. Control Signals and Systems, Vol. 2, No. 3, pp. 303-314, 1989.

[Davi 1995] W. H. David, A. J. Clark, “A survey of Mid-Level Driving Simulator”, International Congress & Exposition, , 1995.

[Dumi 2007] T. Dumitriu, “Contribuții privind tehnici de reglare pentru conducerea servosistemelor cu sarcină neliniară”, teză de doctorat, Universitatea „Dunărea de Jos”, , 2007.

[Elma 1990] J. L. Elman, ”Finding Structure in time”, Cognitive Science, Vol. 14, pp. 179-211, 1990.

[Faro 2000] A. Farooq, “Biologically Inspired Modular Neural Networks, PhD thesis, Faculty of the Virginia Polytechnic Institute and State University, 2000.

[Frie 1992] B. Friedland, J. K. Park, “On adaptive friction compensation”, Proc. 30th CDC, 1991, IEEE, Brighton, pp.2889-2903; IEEE Trans. on Automatic Control, Vol. 37, No. 10, pp. 1609-1612, 1992.

[Fu 2007] Y. Fu, T. Chai, “Nonlinear Multivariable Adaptive Control using Multiple Models and Neural Networks”, Automatica, Vol. 43, No. 6, pp. 1101-1110, 2007.

[Garc 1982] C.E Garcia, M. Morari, “Internal model control. A unifying review and some new results”, Industrial Engineering Chemical Process Design and Development, Vol. 21, pp. 308 – 332, 1982.

[Gil 1999] P. Gil, J. Henriques et. al., “Non-linear Predictive Control Based on a Recurrent Neural Network”, Proc. ESIT99, June 3-4, Crete, Greece, 1999.

[Haga 1994] M. Hagan, M. Menhaj, “Training Feedforward Networks with the Marquardt Algorithm”, IEEE Transactions on Neural Networks, Vol. 5, No. 6, pp. 989-993, 1994.

[Haya 2005] T. Hayakawa, W. M. Haddad, N. Hovakimyan, V. S. Chellaboina, “Neural network adaptive control for nonlinear nonnegative dynamical system”, IEEE Trans. Neural Networks, Vol. 16, No. 2, pp. 399–413, 2005.

[Hayk 1999] S. Haykin, “Neural Networks. A Comprehensive Foundation”, Second Ed., Prentice Hall, 1999.

[Hebb 1949] D. O. Hebb, „The organization of Behavior”,New York, John Wiley, 1949.

[Hopf 1982] J. J. Hopfield, “Neural networks and physical systems with emergent collective computational properties”, Proc. Nat. Acad. Sci. () 79, 2554-2558, 1982.

[Horn 1989] K. Hornik, M. Stinchcombe, H. White, „Multilayer feedforward networks are universal approximators”, Neural Networks, Vol. 2, No. 5, pp. 359-366, 1989.

[Hou 2006] G. L. Hou, J. H. Zhang, J. Wang, Q.H. Wu, “Adaptive sliding mode and fuzzy gain scheduling control for steam temperature in power plants”, The Proceedings of IEEE Control Conference, UK, Glasgow, 2006.

[Hunt 1992] K. J. Hunt, D. Sbarbaro, R. Zbikowki, P. J. Gawthrop, “Neural Networks for Control Systems – A Survey”, Automatica, Vol. 28, pp. 1083-1112, 1992.

[Iser 1997] R. Isermann, “Supervision, Fault-Detection and Fault-Diagnosis Methods. An Introduction", Control Engineering Practice, Vol.5, No.5, pp.639-652, 1997.

[Jord 1986] M. I. Jordan, “Attractor dynamics and parallelism in a connectionist sequential machine”, Cognitive Science Society, pp.531-546, 1986.

[Jord 1994] M. I. Jordan, R. A. Jacobs, “Hierarchical Mixtures of Experts and the EM algorithm” Neural Computation, Vol. 6, pp. 181-214, 1994.

[Kadi 1995] W. Kading, F. Hoffmeyer, “The Advanced Daimler-Benz Driving Simulator”, International Congress & Exposition, , 1995.

[Karn 1985] D. Karnopp, “Computer simulation of stick-slip friction in mechanical dynamic systems”, Trans. ASME: J. of Dynamic Systems, Measurement and Control, Vol. 107, No. 1, pp. 100-103, March 1985.

[Kekp 2007] K. M. Kekpe, J. P. Cassar, , “Identification of MIMO Takagi-Sugeno model of a bioreactor”, IEEE Int. Fuzzy Systems Conf., pp. 1–6, 2007.

[Kien 2005] U. Kiencke, L. Nielsen, “Automotive Control Systems”, Springer-Verlag, ISBN 3-540-23139-0, 2005.

[Koho 1989] T. Kohonen, “Self-organisation and Associative Memory”, Springer Verlag, Berlin Heidelberg, 1989.

[LeCu 1993] Y. LeCun, “Efficient learning and second-order methods”, A Tutorial at NIPS 93, , 1993.

[Leit 1997] J. Miguel Leitão, A. Coelho, et.al., “DriS – A Virtual Driving Simulator”, Proceedings of the Second International Seminar on Human Factors in Road Traffic, ISBN 972-8098-25-1, Braga, Portugal, 1997.

[Lian 1999] J. Liang, M. M. Gupta, “Stable Dynamic Backpropagation Learning in Recurrent Neural Networks”, IEEE Transactions on Neural Networks, Vol. 10 No. 6, pp. 1321 – 1334, 1999.

[Ljun 1992] L. Ljung, B Wahlberg, “Asymptotic properties of the least-squares method for estimating transfer functions and disturbance spectra”, Adv. Appl. Prob., Vol. 24, pp 412-440, 1992.

[Marc 1997] T. Marcu, L. Mirea, E. Mirea, “A Generalized Observer Scheme for Component Fault Diagnosis using Dynamic Neural Networks with Mixed Structure”, 2nd European Workshop on Fuzzy Decision Analysis and Neural Networks for Management, Planning and Optimization, EFDAN’97, Dortmund, Germany, pp. 136-145, 1997.

[Mart 1990] J. A. C. Martins, J. T. Oden, F. M. F. Simoes, “A study of static and kinetic friction”, Int. J. Engineering Science, Vol. 28, No. 1, pp. 29-92, 1990.

[Mill 1995] W. T. Miller, R. S. Sutton, R J. Werbos, “Neural Networks for Control, MIT Press, Cambridge, Massachusetts, 1995.

[Mire 1999] L. Mirea, T. Marcu – “Development of Dynamic Radial Basis Function Artificial Neural Networks”, Buletinul Universitatii Tehnice Iași, Tomul XLV (IL), Fasc. 1-4, pp. 5-15, 1999.

[Mire 2000] L. Mirea, T. Marcu, “Functional-Link Neural Networks with Dynamic Structure Applied to System Identification”, Buletinul Universitatii Tehnice Iași, Tomul XLVI (L), Fasc. 1-4, pp. 61-68, 2000.

[Mire 2002a] L. Mirea, T. Marcu, “System Identification Using Functional-Link Neural Networks With Dynamic Structure”, 15th IFAC World Congress, Barcelona, Spain, CD-ROM Proceedings, 2002.

[Mire 2002b] L. Mirea, “Tehnici ale inteligentei artificiale aplicate la diagnoza proceselor industriale“, teză de doctorat, Univ. Tehnică Gh. Asachi, , 2002.

[McCu 1943] W. S McCulloch, W. Pitts, “A Logical Calculus of the Ideas Immanent in Nervous Activity”, Bulletin of Mathematical Biophysics 5, 115-33, 1943.

[Mins 1969] M. L. Minsky, S. Papert, “Perceptrons: An Introduction to Computational Geometry”, MIT Press, , Mass, 1969.

[Mood 1989] J. E. Moody, C. J. Darken, “Fast Learning in Networks of Locally Tuned Processing Units”, Neural Computation, Vol. 1, 1989, pp. 281-294.

[Murr 1997] R. Murray-Smith, T. A. Johansen, “Multiple Model Approaches to Modeling and Control”, Taylor & , 1997.

[Nare 1990] K. , K. Parthasarathy, "Identification and Control of Dynamical Systems Using Neural Networks", IEEE Transactions on Neural Networks, Vol. 1, No. 1, pp.4-26, 1990.

[Nare 1992] K. S. Narendra, ”Adaptive control of dynamical systems using neural networks,”In D. A. White and D. A. Sofge. editors, handbook of Intelligent Control: Neural, Fuzzy and Adaptive Approaches, , 1992.

[Nare 1997] K. S. Narendra, J. Balakrishnan, “Adaptive control using multiple models”, IEEE Trans. Autom. Control, Vol. 42, No. 2, pp. 171-187, 1997.

[Nare 2002] K. S. Narendra, K. George, “Adaptive control of simple nonlinear systems using multiple models”, Proceedings of the American Control Conference, Vol. 3, pp. 1779–1784, 2002.

[Nell 2001] O. Nelles, „Nonlinear System Identification: from Classical Approaches to Neural Networks and Fuzzy Models”, Ed. Springer, Berlin, Germany, 2001.

[Nguy 1990] D. Nguyen, B. Widrow, “The truck backer-upper: An example of self-learning in neural networks”, Neural Networks for Control, pp. 287-300, W. T. Miller and P. J. Werbos, editors, MIT Press, Cambridge, Massachusetts, 1990.

[Park 1993] J. Park, I. W. Sandberg, “Approximation and Radial Basis Function Networks”, Neural Computation, Vol. 5, 1993, pp. 305-316

[Pear 1989] B. A. Pearlmutter, “ Space Trajectories in Recurrent Neural Networks”, Neural Computation 1, pp. 263-269, 1989.

[Prin 1998] J. C. Principe, L. Wang, M. A. Motter, “Local dynamic modeling with self-organizing maps and applications to nonlinear system identification and control”, Proc. of IEEE, Vol. 86, No. 11, pp. 2240–2258, 1998.

[Powe 1977] M. J. D. Powell, “Restart procedures for the conjugate gradient method”, Mathematical Programming, Vol. 12, pp. 241-254, 1977.

[Psal 1988] D. Psaltis, A. Sideris, A. A. Yamamura, “A multilayer neural network controller”, IEEE Control Systems Magazine, Vol. 9, pp. 17–25, 1988.

[Psic 1991] D. C. Psichogios, L. H. Ungar, “Direct and indirect model based control using artificial neural networks”, Industrial and Engineering Chemical Research, Vol. 30, pp. 2564–2573, 1991.

[Pușc 1999] Gh. Pușcașu, Al. Stancu, “Neural Networks with Applications in Pattern Recognition and Systems Control”, București, MATRIX ROM, ISBN 973-685-074-9, 1999.

[Pusc 2000] Gh. Pușcașu, et. al., “Sisteme de conducere clasice si inteligente a proceselor”,  București, MATRIX ROM; ISBN 973-685-127-3, 2000.

[Pusc 2001] Gh. Pușcașu, V. Pușcașu, “Aspects regarding the modelling of the car used to implementation of a simulator”, 7th International Symposium on Automatic Control and Computer Science, Iași, Romania, pp. 51-57, 2001.

[Rose 1957] F. Rosenblatt, “The Perceptron, a Parceiving and Recognizing Automaton”, Cornell Aeronautical Laboratory Report No. 85-640-1, 1957.

[Ruan 1992] A. E. B. Ruano, P. J. Fleming, D. I. Jones, “Connectionist approach to PID tuning”, IEEE Proceedings, Part D, Vol. 129, pp. 279-285, 1992.

[Rume 1986] E. D. Rumelhart, E. G. Hinton, J. R. Williams, “Learning internal representations by error propagation”, Parallel Distributed Processing, Vol. 1, pp. 318-362. MIT Press, Cambridge, 1986.

[Sain 1991] J. Saint-Donat, N. Bhat,T. J. McAvoy, “Neural net model predictive control”, International Journal of Control, Vol. 54, pp. 1453–1468, 1991.

[Sast 1994] S. P. Satry, et. al., “ Memory Neuron Networks for Identification and Control of Dynamical Systems ” , IEEE Neural Networks Vol. 5 No. 2, 1994.

[ 1990] K. R. Sales, S. A. Billings, “Self-tuning control of nonlinear ARMAX model”, Int. Journal of Control, Vol. 51, pp. 753–769, 1990.

[Shin 2009] Y. C. Shin, C. Xu, “Intelligent Systems–Modelling Optimization and Control”, Taylor & Francis, 2009.

[Si 2001] J. Si, Y. T. Wang, “Online learning control by association and reinforcement”, IEEE Transactions on Neural Networks, Vol. 12, No. 2, pp. 264–76, 2001.

[Sing 1989] S. Singhal, L. Wu, “Training feedforward networks with extended Kalman filter algorithm”, Proc. Int. Conf. ASSP, pp. 1187–1190, 1989.

[Sofg 1990] D. A. Sofge, D. A. White, “Neural network based process optimization and control”, Proceedings of the IEEE Conference on Decision & Control, pp. 3270-3276, 1990.

[Sjöb 1994] J. Sjöberg, H. Hjalmerson, L. Ljung, “Neural Networks in System Identification”, Preprints 10th IFAC symposium on SYSID, Copenhagen, Denmark. Vol.2, pp. 49-71, 1994.

[Sjöv 2008] P. Sjövall, Th. Abrahamsson, “Substructure system identification from coupled system test data”, Mechanical systems and signal processing, Vol.22, pp.15-33, Elsevier, , 2008.

[Söde 1983] T. Söderström, L. Ljung, “User choices for recursive identification methods”, Proc. IAESTED Conf on Applied Control and Identification, ACI '83, Lyngby, Denmark, pp. 24-14, 1983.

[Srin 1994] B. Srinivasan, et. al., “Backpropagation Through Adjoints for the Identification of Non-linear Dynamic Systems Using Recurrent Neural Models”, IEEE Transactions on Neural Networks, Vol. 5 No.2, pp.213-228, 1994.

[Stai 1992] W. E. Staib, R. B. Staib, “The Intelligent Arc Furnace controller: A neural network electrode position optimization system for the electric arc furnace”, Proceedings of the International Conference on Neural Networks, Vol. 3, pp. 1-9, IEEE Press, Piscataway, New Jersey, 1992.

[Stai 1993] W. E. Staib, “The Intelligent Arc Furnace: Neural networks revolutionize steelmaking”, Proceedings of the World Congress on Neural Networks, pp. 466-469, 1993.

[Sun 2008] L. Sun, A. Sano, “Nolinear System Identification Based on Local Sub-Model Networks”, Proceedings of the 17th World Congress IFAC, pp. 4030-4035, , , 2008.

[Sure 2010] S. Suresh, N. Kannan, “Neural adaptive control for vibration suppression in composite fin-tip of aircraft”, International Journal of Neural Systems, Vol. 18, No. 3, pp. 219-231, 2010.

[Swin 1990] R. W. Swiniarski, “Novel neural network based self-tuning PID controller which uses pattern recognition techniques”, Proceedings of the American Control Conference, pp. 3023-3024, 1990.

[Tham 2002a] G. Thampi, J. C. Principe, M. A. Motter, J. Cho, J. Lan, “Multiple model based flight control design”, Proc. IEEE Int. Midwest Symp. Circuits Systems (MWSCAS 2002), Vol. 3, pp. 133–136, 2002.

[Tham 2002b] G. Thampi, J. C. Principe, J. Cho, M. A. Motter, “Adaptive inverse control using SOM based multiple models”, Proc. Portuguese Conf. Automatic Control, pp. 278–282, 2002.

[Theo 2010] D. Theodoridis, Y. Boutalis, M. Christodoulou, “Indirect adaptive control of unknown multi variable nonlinear systems with parametric and dynamic uncertainties using a new neuro-fuzzy system description”, International Journal of Neural Systems, Vol. 20, No. 2, pp. 129–148, 2010.

[Trou 1991] T. Troudet, “Towards practical control design using neural computation”, Proceedings of the International Conference on Neural Networks,Vol. 2, pp. 675-681, IEEE Press, Piscataway, New Jersey, 1991.

[Tust 1947] A. Tustin, “The effects of backlash and of speed-dependent friction on the stability of closed-cycle control systems”, J. of the Institution of Electrical Engineers, Vol. 94, No. 2A, pp. 143-151, 1947.

[Unga 1995] L. H. Ungar, “Process Control”, The Handbook of Brain Theory and Neural Networks, ed. M.A. Arbib, MIT Press, pp. 760-764, 1995.

[Verd 2002] V. Verdult, “Nonlinear System Identification: A State-Space Approach”, Ph. D thesis, , 2002.

[Yue 2005] M. Yue, R. Schlueter, “An algorithm and properties enabling identification of bifurcation subsystems”, Electric Power Components and Systems, Vol.33, pp. 611-628, Taylor & Francis Inc., 2005.

[Wahl 1991] B. Wahlberg, „System identification using Laguerre filters”, IEEE Trans. Automatic Control, Vol. 36, pp. 551-562, 1991.

[Wang 2005] D. Wang, J. Huang, “Neural network-based adaptive dynamic surface control for a class of uncertain nonlinear systems in strict-feedback form”, IEEE Trans. Neural Networks, Vol. 16, No. 1, pp.195–202, 2005.

[Werb 1990] P. J. Werbos, “Backpropagation through time: what it does and how to do it”, Proc. of IEEE, Special issue on neural networks, vol. 78, no. 10, pp. 1550-1560, 1990.

[Werb 1990b] P. J. Werbos, “A menu of designs for reinforcement learning over time”, Neural networks for control, MIT Press, Cambridge, MA, pp. 67–95, 1990.

[Werb 1992] P. J. Werbos, “Approximate dynamic programming for real-time control and neural modelling”, Handbook of intelligent control: neural, fuzzy and adaptive approaches, Van Nostrandm Reinhold, New York, pp. 493–525, 1992.

[Widr 1960] B. Widrow, M. A. Lehr, “30 years of adaptive neural networks: Perceptron, madaline and backpropagation”, Proceedings of the Institute of Electrical and Electronics Engineers, Vol. 78, pp. 1415 – 1442, 1960.

[Whit 1997] D. White, D. Sofge, “Handbook of Intelligent Control: Neural, Fuzzy, and Adaptive Approaches”, Ed. Van Nostrand Reinhold, NewYork, 1997.

[Will 1994] R. J. Williams, D. Zipser, “Gradient-based learning algorithms for recurrent networks and their computational complexity”, Backpropagation: Theory Architectures and Applications, Eds. : Lawrence Erlbaum Associates, pp. 433-486, 1994.

[Will 1990] R. J. Williams, J. Peng, “An efficient gradient-based algorithm for on line training of recurrent network trajectories”, Neural Computation 2, pp. 490-501, 1990.

[Zaha 2006] D. Zaharie, “Rețele Neuronale. Note de curs.”, Universitatea de Vest, Timișoara 2006.

[Zhu 2004] Q. Zhu, L. Guo, “Stable Adaptive Neurocontrol for Nonlinear Discrete-Time Systems”, IEEE Trans. Neural Networks, Vol. 15, No. 3, pp. 653–662, 2004.

Anexa A.

Relații de calcul pentru algoritmul Back-Propagation-Through-Time (BPTT)

Gradientul poate fi calculat în felul următor:

(A.1)

unde (A.2)

Dacă, atunci (A.3)

Dacă, atunci

(A.4)

Pentru și oricare , se poate defini (A.5)

Ținând cont de relațiile (A.2), (A.3) și (A.4), relația (A.5) mai poate fi scrisă astfel:

(A.6)

Relații de calcul pentru algoritmul Back-Propagation-Through-Time trunchiat

(A.7)

unde: (A.8)

dacă , atunci (A.9)

dacă, atunci (A.10)

Pentru oricare și, se definește (A.11)

Ținând cont de relațiile (A.8), (A.9) și (A.10), relația (A.11) devine:

(A.12)

Pentru o simplificare cât mai mare, adesea se obișnuiește să se memoreze doar ponderile curente, obținând performanțe similare. Astfel, relația (A.10) poate fi scrisă:

(A.13)

Algoritmul BPTT clasic și BPTT trunchiat se diferențiază prin modul de calcul al ponderilor și al variabilei . Deoarece, în cazul algoritmului on-line parametrii sunt modificați la fiecare pas de timp, termenul din relația (A.6), trebuie calculat doar la pasul curent de timp, de aceea nu este prezent în linia a doua a relației (A.12).

Anexa B

Relații de calcul pentru RNA Elman

(B.1)

(B.2)

(B.3)

În ecuația (B.3) reprezintă al i-lea element al vectorului X(k). reprezintă linia i din matricea.reprezintă linia i din matricea. Se reamintește faptul că este dependent de.

Astfel ținând cont de prima ecuația din setul de ecuații (1.21 – capitolul 1) putem scrie:

(B.4)

Anexa C

Implemetare C++ a algoritmului de reglare PID neuronal

#include<stdio.h>

#include<graphics.h>

#include<conio.h>

#include<math.h>

#include<string.h>

#include<stdlib.h>

#include<io.h>

#include<fcntl.h>

#include<sys/stat.h>

#include<time.h>

#include<dos.h>

#include "retea.h"

retea neuro;

retea reg;

float dw[5][10][10],db[10][5];

int base=0x220;

int grd = 0,hld = 0,on=1,off=0;

int contr=1,Xval=1,Yval=1;

float autoX=1,autoY=1,minx,maxx,miny,maxy;

void initializare(void);

void desen_contur(int x1,int y1,int x2,int y2,float minx,float maxx,float miny,float maxy);

void deseneaza(float *x,float *y,int n,int culoare,int nr,int pos);

void deseneaza(float *y,int n,int culoare,int nr,int pos);

void grid(int sel);

void hold(int sel);

void setXrange(float min,float max);

void setYrange(float min,float max);

void contur(int sel);

void Xvalue(int sel);

void Yvalue(int sel);

void TextVertical(int x,int y,const char *s);

float acan(unsigned char canal,unsigned char gain,float Umax);

float volti_in_grade(float tens);

void programare_sursa(float tens);

float acan(unsigned char canal,unsigned char gain,float Umax)

{

unsigned char lb,hb;

float Ucan;

outport((base+9),gain); //selectie gain

outport((base+10),canal); //selectie canal}

outport((base+12),0xff); //start conversie}

do

{

hb=inportb(base+5);

}

while ((hb & 0x10)==0x10); //se asteapta sfarsitul conversiei}

lb=inportb(base+4);

Ucan=((256*hb+lb)-2048)*Umax/2048; //se imparte la 2048 si nu la 4096 deoarece

return(Ucan); //placa este pusa pe -5…5 si nu pe 0…10V

}

float volti_in_grade(float tens) //conversia tens.trad.[V]->temp. cuptor[grd. Celsius

{ //caracteristica liniarizata pe 4 portiuni

float temp;

for(;;)

{

if (/*(tens>(float)2.1) && */(tens<=(float)3.3))

{temp=20*tens-32.2;break;}

if ((tens>(float)3.3) && (tens<=(float)3.5))

{temp=21*tens-35.5;break;}

if ((tens>(float)3.5) && (tens<=(float)3.7))

{temp=23*tens-42.5;break;}

if ((tens>(float)3.7) && (tens<=(float)3.9))

{temp=26.5*tens-55.45;break;}

if ((tens>(float)3.9) && (tens<=(float)4.1))

{temp=35.5*tens-90.55;break;}

if ((tens>(float)4.1) && (tens<=(float)4.3))

{temp=36.5*tens-94.65;break;}

if ((tens>(float)4.3) && (tens<=(float)4.5))

{temp=53.5*tens-167.75;break;}

if ((tens>(float)4.5) && (tens<=(float)4.7))

{temp=65*tens-219.5;break;}

if ((tens>(float)4.7) && (tens<=(float)4.9))

{temp=115*tens-454.5;break;}

}

return (temp);

}

void programare_sursa(float tens)

{ int i;

unsigned char dal,dah,d[12];

float y,Um=5; //tens. max. = 5V

float v[12] ;

// initializarea este utila la conversia real-byte

v[0]=5.0/2048; v[1]=5.0/1024; v[2]=5.0/512; v[3]=5.0/256;

v[4]=5.0/128; v[5]=5.0/64; v[6]=5.0/32; v[7]=5.0/16;

v[8]=5.0/8; v[9]=5.0/4; v[10]=5.0/2; v[11]=5.0;

// se face conversia real – 2 bytes

if (tens > Um) tens=Um; // daca tens.>5V -> tens.=5V

y=tens/2; //factor de amplifica aprox. = 2

for (i=0;i<12;i++)

{

if (y>=v[11-i]) //conversie din baza 10 in baza 2

{

d[11-i]=1;

y=y-v[11-i];

}

else

{

d[11-i]=0;

}

}

dal=d[0]+2*d[1]+4*d[2]+8*d[3]+16*d[4]+32*d[5]+64*d[6]+128*d[7];

dah=d[8]+2*d[9]+4*d[10]+8*d[11];

// se transmit octetii la CNA conform tensiunii prescrise;

// facorul de amplificare este aproximativ egal cu 2;

outport((base+4),dal);

outport((base+5),dah);

}

//////////////////////////////////////////////////////////////////////////

FUNCȚII DE AFIȘARE GRAFICĂ

//////////////////////////////////////////////////////////////////////////

float linear(float x,float b)

{

return (x+b);

}

float lineard(float x,float b)

{

return 1;

}

float logsig(float x,float b)

{

return (1/(1+exp(-(x+b))));

}

float logsigd(float x,float b)

{

return (1/(2+exp(-(x+b))+exp(x+b)));

}

float tansig(float x,float b)

{

return ((1-exp(-(x+b)))/(1+exp(-(x+b))));

}

float tansigd(float x,float b)

{

return (2/(2+exp(-(x+b))+exp(x+b)));

}

float functie(float x)

{

return x*x+1;

}

void retea::evaluare(int esantion)

{

int i,j,k;

float s;

for(i=0;i<neuro.nrneuroni[0];i++)

{

p[i]=intrari[i][esantion];

A[i][0]=p[i];

}

//nrneuroni[0]=r;

for(i=1;i<=nrstraturi;i++)

{

for(j=0;j<nrneuroni[i];j++)

{

s=0;

for(k=0;k<nrneuroni[i-1];k++)

s+=w[i][j][k]*A[k][i-1];

if(!strcmp(functii[i],"linear"))

A[j][i]=linear(s,b[j][i]);

if(!strcmp(functii[i],"logsig"))

A[j][i]=logsig(s,b[j][i]);

if(!strcmp(functii[i],"tansig"))

A[j][i]=tansig(s,b[j][i]);

}

}

}

void retea::evaluareERR(int esantion,float lr)

{

int i,j,k;

float s,s2;

for(i=0;i<neuro.nrneuroni[0];i++)

{

p[i]=intrari[i][esantion];

A[i][0]=p[i];

}

for(i=0;i<nrneuroni[nrstraturi];i++)

t[i]=tinte[i][esantion];

for(i=0;i<nrneuroni[nrstraturi];i++)

E[i][nrstraturi+1]=A[i][nrstraturi]-t[i];

//nrneuroni[0]=r;

for(i=nrstraturi;i>=1;i–)

{

for(j=0;j<nrneuroni[i];j++)

{

s=0;

for(k=0;k<nrneuroni[i-1];k++)

s+=w[i][j][k]*A[k][i-1];

if(i<nrstraturi)

{

s2=0;

for(k=0;k<nrneuroni[i+1];k++)

s2+=E[k][i+1]*w[i+1][k][j];

}

else

s2=E[j][i+1];

if(!strcmp(functii[i],"linear"))

E[j][i]=lineard(s,b[j][i])*s2;

if(!strcmp(functii[i],"logsig"))

E[j][i]=logsigd(s,b[j][i])*s2;

if(!strcmp(functii[i],"tansig"))

E[j][i]=tansigd(s,b[j][i])*s2;

for(k=0;k<nrneuroni[i-1];k++)

dw[i][j][k]+=2*lr*E[j][i]*A[k][i-1];

db[j][i]+=2*lr*E[j][i];

}

}

}

void retea::AjustarePonderi(float lr)

{

int i,j,k;

for(i=1;i<nrstraturi;i++)

for(j=0;j<nrneuroni[i];j++)

for(k=0;k<nrneuroni[i-1];k++)

{

w[i][j][k]-=2*lr*E[j][i]*A[k][i-1];

b[j][i]-=2*lr*E[j][i];

}

}

float retea::instruire(long int nrepoci,float lr,float err)

{

int j,k;

long int i,x=0;

float ERR[100],ER;

evaluare(0);

for(i=1;i<=nrepoci;i++)

{

for(k=0;k<nresantioane;k++)

{

evaluare(k);

evaluareERR(k,lr);

ERR[k]=0;

for(j=0;j<nrneuroni[nrstraturi];j++)

ERR[k]+=(A[j][nrstraturi]-tinte[j][k])*(A[j][nrstraturi]-tinte[j][k]);//*E[j][nrstraturi+1];

//if(ERR[k]<err)

//i=nrepoci+1;

}

ER=0;

for(int l=1;l<=nrstraturi;l++)

for(j=0;j<nrneuroni[l];j++)

{

for(k=0;k<nrneuroni[l-1];k++)

{

w[l][j][k]-=dw[l][j][k];

dw[l][j][k]=0;

}

b[j][l]-=db[j][l];

db[j][l]=0;

}

for(k=0;k<nresantioane;k++)

ER+=ERR[k];

if(ER<=err)

i=nrepoci+1;

/*if(i/1000==x)

{

printf("\n%ld.eroare=%.9lf \n",i,ER);

x++;

} */

}

return ER;

}

void scrie()

{

int i,j,k;

FILE *fis;

fis=fopen("retea.nro","wb");

fwrite(&neuro.nrstraturi,sizeof(int),1,fis);

for(i=0;i<=neuro.nrstraturi;i++)

fwrite(&neuro.nrneuroni[i],sizeof(int),1,fis);

for(i=1;i<=neuro.nrstraturi;i++)

for(j=0;j<neuro.nrneuroni[i];j++)

for(k=0;k<neuro.nrneuroni[i-1];k++)

fwrite(&neuro.w[i][j][k],sizeof(float),1,fis);

for(i=1;i<=neuro.nrstraturi;i++)

for(j=0;j<neuro.nrneuroni[i];j++)

fwrite(&neuro.b[j][i],sizeof(float),1,fis);

fwrite(&neuro.functii,100,1,fis);

fclose(fis);

}

void citeste()

{

int i,j,k;

FILE *fis;

fis=fopen("retea.nro","rb");

fread(&neuro.nrstraturi,sizeof(int),1,fis);

for(i=0;i<=neuro.nrstraturi;i++)

fread(&neuro.nrneuroni[i],sizeof(int),1,fis);

for(i=1;i<=neuro.nrstraturi;i++)

for(j=0;j<neuro.nrneuroni[i];j++)

for(k=0;k<neuro.nrneuroni[i-1];k++)

fread(&neuro.w[i][j][k],sizeof(float),1,fis);

for(i=1;i<=neuro.nrstraturi;i++)

for(j=0;j<neuro.nrneuroni[i];j++)

fread(&neuro.b[j][i],sizeof(float),1,fis);

fread(&neuro.functii,100,1,fis);

fclose(fis);

}

void main()

{

unsigned char canal,gain;

clrscr();

float a[15][15];

int i,j,k,option,i1,contor;

float ref[300],er[300],der[300],p[300],u[300],y[300],x[300],temp1[300],temp2[300],temp3[300];

char c[10],ch;

int exit=0;

float referinta=0,U1=0,temp=0,bool=0,tempcitita=0,e=0;

FILE *fisier1,*fisier2,*fisier3,*fisier4,*fisier5,*fisier6;

if ((fisier1 = fopen("iesire.dat", "w")) == NULL)

{

fprintf(stderr, "Cannot open .dat file.\n");

}

if ((fisier2 = fopen("ref.dat", "w")) == NULL)

{

fprintf(stderr, "Cannot open .dat file.\n");

}

if ((fisier3 = fopen("comanda.dat", "w")) == NULL)

{

fprintf(stderr, "Cannot open .dat file.\n");

}

if ((fisier4 = fopen("P.dat", "w")) == NULL)

{

fprintf(stderr, "Cannot open .dat file.\n");

}

if ((fisier5 = fopen("D.dat", "w")) == NULL)

{

fprintf(stderr, "Cannot open .dat file.\n");

}

if ((fisier6 = fopen("I.dat", "w")) == NULL)

{

fprintf(stderr, "Cannot open .dat file.\n");

}

initializare();

setusercharsize(2,1,2,1);

settextstyle(SMALL_FONT,HORIZ_DIR,0); ///////////////////////////////////////////////////////////

for(i=0;i<100;i++)

u[i]=((int)i/20+1)*20;

y[0]=0;

for(i=7;i<100;i++)

{

y[i]=1.9864*y[i-1]-0.9864*y[i-2]+0.0917*u[i-5]-0.0911*u[i-6]+0.0006*u[i-7];

neuro.intrari[0][i]=y[i-1];

neuro.intrari[1][i]=y[i-2];

neuro.intrari[2][i]=u[i-5];

neuro.intrari[3][i]=u[i-6];

neuro.intrari[4][i]=u[i-7];

neuro.tinte[0][i]=y[i];

}

setfillstyle(SOLID_FILL,BLACK);

do

{

bar(0,0,640,480);

setcolor(WHITE);

outtextxy(250,10,"1.Instruire");

outtextxy(250,20,"2.Reinstruire");

outtextxy(250,30,"3.Exemplificare Reglare");

c[0]=getch();

option=atoi(c);

bar(0,0,640,480);

neuro.nresantioane=100;

for(i=1;i<=neuro.nrstraturi;i++)

for(j=0;j<neuro.nrneuroni[i];j++)

{

for(k=0;k<neuro.nrneuroni[i-1];k++)

dw[i][j][k]=0;

db[j][i]=0;

}

switch(option)

{

case 1:

neuro.r=5;

neuro.nrstraturi=1;

neuro.nrneuroni[1]=1;

neuro.nrneuroni[2]=5;

neuro.nrneuroni[3]=1;

neuro.nrneuroni[0]=neuro.r;

strcpy(neuro.functii[1],"tansig");

strcpy(neuro.functii[2],"tansig");

strcpy(neuro.functii[1],"linear");

time_t t;

srand((unsigned) time(&t));

for(i=1;i<=neuro.nrstraturi;i++)

for(j=0;j<neuro.nrneuroni[i];j++)

for(k=0;k<neuro.nrneuroni[i-1];k++)

neuro.w[i][j][k]=random(100)/(float)100;

for(i=1;i<=neuro.nrstraturi;i++)

for(j=0;j<neuro.nrneuroni[i];j++)

neuro.b[j][i]=random(100)/(float)100;

printf("eroarea finala=%f",neuro.instruire(1000000,0.0000001,0.0000001));

scrie();

break;

case 2:

citeste();

outtextxy(250,50,itoa(neuro.instruire(50000,0.0000001,0.000000001),c,10));

scrie();

break;

case 3:

citeste();

reg.r=3;

reg.nrstraturi=1;

reg.nrneuroni[1]=1;

reg.nrneuroni[0]=reg.r;

strcpy(reg.functii[1],"linear");

for(i=1;i<=reg.nrstraturi;i++)

for(j=0;j<reg.nrneuroni[i];j++)

for(k=0;k<reg.nrneuroni[i-1];k++)

reg.w[i][j][k]=random(100)/(float)100;

for(i=1;i<=reg.nrstraturi;i++)

for(j=0;j<reg.nrneuroni[i];j++)

reg.b[j][i]=random(100)/(float)100;

canal=7;

gain=0;

U1=acan(canal,gain,5.0);

referinta=volti_in_grade(U1);

for(i=0;i<300;i++)

{

y[i]=referinta;

u[i]=0;

er[i]=0;

p[i]=0;

ref[i]=0;

temp1[i]=0;

temp2[i]=0;

temp3[i]=0;

}

setYrange(0,100);

i=7;

contor=7;

exit=0;

do

{

if(i>200)

for(k=0;k<199;k++)

{

ref[k]=ref[k+1];

er[k]=er[k+1];

p[k]=p[k+1];

y[k]=y[k+1];

u[k]=u[k+1];

temp1[k]=temp1[k+1];

temp2[k]=temp2[k+1];

temp3[k]=temp3[k+1];

i=199;

}

er[i]=referinta-y[i-1];

der[i]=er[i]-er[i-1];

if(er[i]<0)

er[i]=0;

p[i]=p[i-1]+er[i];

ref[i]=referinta;

temp=referinta;

reg.intrari[0][0]=er[i];

reg.intrari[1][0]=der[i];

reg.intrari[2][0]=p[i];

reg.evaluare(0);

u[i-5]=reg.A[0][1];

neuro.intrari[0][0]=y[i-1];

neuro.intrari[1][0]=y[i-2];

neuro.intrari[2][0]=u[i-5];

neuro.intrari[3][0]=u[i-6];

neuro.intrari[4][0]=u[i-7];

for(j=0;j<200;j++)

{

neuro.evaluare(0);

neuro.tinte[0][0]=ref[i];

neuro.evaluareERR(0,0.1);

reg.tinte[0][0]=u[i-6]-neuro.E[0][1];

for(int l=1;l<=reg.nrstraturi;l++)

for(int q=0;q<reg.nrneuroni[l];q++)

{

for(k=0;k<reg.nrneuroni[l-1];k++)

{

dw[l][q][k]=0;

}

db[q][l]=0;

}

reg.evaluareERR(0,0.0000003);

for(l=1;l<=reg.nrstraturi;l++)

for(q=0;q<reg.nrneuroni[l];q++)

{

for(k=0;k<reg.nrneuroni[l-1];k++)

{

reg.w[l][q][k]-=dw[l][q][k];

dw[l][q][k]=0;

}

reg.b[q][l]-=db[q][l];

db[q][l]=0;

}

reg.evaluare(0);

neuro.intrari[0][0]=y[i-1];

neuro.intrari[1][0]=y[i-2];

neuro.intrari[2][0]=u[i-5];

neuro.intrari[3][0]=u[i-6];

neuro.intrari[4][0]=u[i-7];

}

u[i-5]=reg.A[0][1];

if(u[i-5]>5)

u[i-5]=5;

if(u[i-5]<0)

u[i-5]=0;

bool = 1;

float u_curent=0;

for(int i1=0;i1<10;i1++)

{ // u_curent+=u[i-i1-5]/10;

if(ref[i]!=ref[i-i1])// || fabs(referinta-y[i-1])>1)

bool=0;

}

temp=ref[i];

if(temp>y[i-1])

e=temp-y[i-1];

else e=y[i-1]-temp;

programare_sursa(u[i-5]);

delay(150);

U1=acan(canal,gain,5.0);

y[i]=volti_in_grade(U1);

if(contor>200)

for(i1=0;i1<200;i1++)

x[199-i1]=contor-i1;

else

for(i1=0;i1<i;i1++)

x[i1]=i1;

setYrange(0,100);

fprintf(fisier1,"%f\n",y[i]);

fprintf(fisier2,"%f\n",temp);

fprintf(fisier3,"%f\n",u[i-5]);

deseneaza(x,y,i,RED,2,1);

hold(on);

deseneaza(x,ref,i,YELLOW,2,1);

setYrange(0,6);

setXrange(contor-199,contor-5);

deseneaza(x,u,i,GREEN,2,1);

setXrange(0,0);

axa_dreapta(40,20,580,220,0,100,0,6);

hold(off);

setYrange(-1,1);

temp1[i]=50*reg.w[1][0][0];//*er[i];

deseneaza(x,temp1,i,GREEN,2,2);

fprintf(fisier4,"%f\n",temp1[i]);

hold(on);

temp2[i]=100*reg.w[1][0][1];//*der[i];

deseneaza(x,temp2,i,RED,2,2);

fprintf(fisier5,"%f\n",temp2[i]);

//temp3[i]=10*reg.w[1][0][2];//*p[i];

/* if(reg.w[1][0][2]*p[i]>5)

p[i]=5/reg.w[1][0][2];

else if(reg.w[1][0][2]*p[i]<0)

p[i]=0;*/

/* if(reg.w[1][0][2]*p[i]>5)

p[i]=5/reg.w[1][0][2];

else if(reg.w[1][0][2]*p[i]<0)

p[i]=0;*/

temp3[i]=5*reg.w[1][0][2];

deseneaza(x,temp3,i,YELLOW,2,2);

fprintf(fisier6,"%f\n",temp3[i]);

hold(off);

setcolor(RED);

TextVertical(0,50,"Temperatura cuptor");

setcolor(GREEN);

TextVertical(610,50,"Comanda cuptor");

setcolor(YELLOW);

TextVertical(10,50,"Temperatura referinta");

setcolor(YELLOW);

TextVertical(0,240,"Componenta integratoare");

setcolor(RED);

TextVertical(10,240,"Componenta derivativa");

setcolor(GREEN);

TextVertical(610,240,"Componenta proportionala");

if(kbhit())

{

ch=getch();

if(ch==27)

{

exit=1;

fclose(fisier1);

fclose(fisier2);

fclose(fisier3);

fclose(fisier4);

fclose(fisier5);

fclose(fisier6);

}

if(ch==0)

{

ch=getch();

if(ch==72)

referinta+=.25;

if(ch==80)

referinta-=.25;

}

}

i++;

contor++;

}

while(exit==0);

settextstyle(SMALL_FONT,HORIZ_DIR,0);

terminare_program();

break;

}

}

while(c[0]!=27);

closegraph();

}

Anexa D

Implemetare C++ a unei rețele neuronale artificiale

CLASA retea.h

class retea

{

public:

float w[5][10][10];

float b[10][5];

float p[10],t[15];

float A[10][5],E[15][5];

float tinte[10][100],intrari[10][100];

int nresantioane;

int nrneuroni[10],nrstraturi,r;

char functii[10][10];

retea(){}

~retea(){}

void evaluare(int esantion);

void evaluareERR(int esantion,float lr);

float instruire(long int nrepoci,float lr,float err);

void AjustarePonderi(float lr);

};

void retea::AjustarePonderi(float lr)

{

int i,j,k;

for(i=1;i<nrstraturi;i++)

for(j=0;j<nrneuroni[i];j++)

for(k=0;k<nrneuroni[i-1];k++)

{

w[j][i][k]-=2*lr*E[j][i]*A[k][i-1];

b[j][k]-=2*lr*E[k][i];

}

}

void scrie()

{

int i,j,k;

FILE *fis;

fis=fopen("retea.nro","wb");

fwrite(&neuro.nrstraturi,sizeof(int),1,fis);

for(i=0;i<=neuro.nrstraturi;i++)

fwrite(&neuro.nrneuroni[i],sizeof(int),1,fis);

for(i=1;i<=neuro.nrstraturi;i++)

for(j=0;j<neuro.nrneuroni[i];j++)

for(k=0;k<neuro.nrneuroni[i-1];k++)

fwrite(&neuro.w[i][j][k],sizeof(float),1,fis);

for(i=1;i<=neuro.nrstraturi;i++)

for(j=0;j<neuro.nrneuroni[i];j++)

fwrite(&neuro.b[j][i],sizeof(float),1,fis);

fwrite(&neuro.functii,100,1,fis);

fclose(fis);

}

void citeste()

{

int i,j,k;

FILE *fis;

fis=fopen("retea.nro","rb");

fread(&neuro.nrstraturi,sizeof(int),1,fis);

for(i=0;i<=neuro.nrstraturi;i++)

fread(&neuro.nrneuroni[i],sizeof(int),1,fis);

for(i=1;i<=neuro.nrstraturi;i++)

for(j=0;j<neuro.nrneuroni[i];j++)

for(k=0;k<neuro.nrneuroni[i-1];k++)

fread(&neuro.w[i][j][k],sizeof(float),1,fis);

for(i=1;i<=neuro.nrstraturi;i++)

for(j=0;j<neuro.nrneuroni[i];j++)

fread(&neuro.b[j][i],sizeof(float),1,fis);

fread(&neuro.functii,100,1,fis);

fclose(fis);

}

float retea::instruire(long int nrepoci,float lr,float err)

{

int j,k;

long int i,x=0;

float ERR[100],ER;

evaluare(0);

for(i=1;i<=nrepoci;i++)

{

for(k=0;k<nresantioane;k++)

{

evaluareERR(k,lr);

ERR[k]=0;

for(j=0;j<nrneuroni[nrstraturi];j++)

ERR[k]+=(A[j][nrstraturi]-tinte[j][k])-(A[j][nrstraturi]-tinte[j][k]);//*E[j][nrstraturi+1];

//if(ERR[k]<err)

//i=nrepoci+1;

}

ER=0;

for(int l=1;l<=nrstraturi;l++)

{

for(k=0;k<nrneuroni[l-1];k++)

{

w[l][j][k]-=dw[l][j][k];

dw[l][j][k]=0;

}

b[j][l]-=db[j][l];

db[j][l]=0;

}

for(k=0;k<nresantioane;k++)

ER+=ERR[k];

if(ER<=err)

i=nrepoci+1;

}

return ER;

}

Anexa E – Citări pentru articolele cotate ISI

Similar Posts

  • Metode Activ Participative Folosite In Predarea Unitatilor cu Continut Dogmatic

    Metode activ-participative folosite in predarea unitatilor cu continut dogmatic Motto: „Orânduirea întregii lumi atârnă de educație” (Sf. Ioan Gură de Aur) CUPRINS INTRODUCERE I. EDUCATIA RELIGIOASA IN CONTEXTUL EDUCATIONAL CONTEMPORAN II. METODE DE INVATAMANT III. METODE ACTIVE IN PREDAREA RELIGIEI IV. METODE ACTIV PARTICIPATIVE UZUALE ANEXA1 ANEXA2 ANEXA3 BIBLIOGRAFIE INTRODUCERE „A educa înseamnă a cultiva…

  • Relația idealul educațional și programa școlară de limba și literatura română

    Metodica Relația idealul educațional și programa școlară de limba și literatura română Modul în care idealul educațional este formulat în Legea educației este extrem de important pentru toate disciplinele, programele școlare reflectând o viziune unitară asupra finalităților educaționale urmărite. Un model european asumat și de către țara noastră este cel al competențelor cheie. Cadrul european…

  • Aspecte ale Marketingului Relational In Cadru Pietei Serviciilor de Offshore In Cadrul Companiei “gpg Phoning Group S.r.l,,

    CUPRINS Declarația de propria răspundere Lista adrevierilor (optionale INTRODUCERE Capitolul I. Aspecte teoretice ale marketingului relațional Conceptul de marketing relațional Conceptul de orientare spre client Strategii de fidelizare aplicate în domenul serviciilor de consultanță în afaceri Capitolul II. Caracteristică generală a activității companii „GPG Phoning Group” 2.1 Analiza economico-financiară a companii „GPG Phoning Group 2.2…

  • Cunoasterea Si Utilizarea Mijloacelor Didactice

    CUPRINS Introducere……………………………………………………………………………………………………………………..3 Capitolul I – Mijloace de învățământ………………………………………………………………………………….7 Definiție……………………………………………………………………………………………………………….7 Funcții………………………………………………………………………………………………………………….8 Clasificare…………………………………………………………………………………………………………….9 Semnificații psihologice………………………………………………………………………………………..12 Avantaje / dezavantaje …………………………………………………………………………………………12 Integrarea mijloacelor didactice în procesul didactic………………………………………………..13 Capitolul II – Istoria în învățământ……………………………………………………………………………………15 2.1. Rolul istoriei în educarea elevilor………………………………………………………………………….15 2.2. Valori și atitudini prin studiul istoriei…………………………………………………………………….15 2.3. Formarea și dezvoltarea gândirii istorice………………………………………………………………..16 2.4. Realizarea sarcinilor educaționale prin procesul învățării…

  • Dezvoltarea Deprinderilor de Receptare a Textului Narativ In Gimnaziu

    CUPRINS Argument ……………………………………………………………………………………………………………7 Partea I- Premisele teoretice ale studiului Cap. 1. Dezvoltarea deprinderilor de muncă intelectuală-obiectiv al educației intelectuale…………………………………………………………………………………………………………..12 1.1. Educația intelectuală-ax al individului contemporan………………………………….12 1.2. Definiția și caracterixarea deprinderilor……………………………………………………16 1.3. Etapele formării deprinderilor…………………………………………………………………19 1.4. Transferul și interferența deprinderilor…………………………………………………….21 1.5. Principalele deprinderi de muncă intelectuală care se dezvoltă în ciclul gimnazial………………………………………………………………………………………………………………23 Cap. 2. Lectura în…

  • Instruirea Asistata de Calculator

    INTRODUCERE Instruireɑ ɑsistɑtă de cɑlculɑtor (IɑC) este o metodă didɑctică ce vɑlorifică principiile de modelɑre si ɑnɑliză cibernetică ɑ ɑctivitɑții de instruire în contextul noilor tehnologii informɑtice si de comunicɑții. Sintezɑ dintre resursele pedɑgogice ɑle instruirii progrɑmɑte si disponibilitɑtile tehnologice ɑle cɑlculɑtorului (sistem de procesɑre ɑ informɑtiei) conferă ɑcestei metode de învɑtɑmînt importɑnte cɑlități privind:…