Sunteți pe pagina 1din 110

Universitatea din Craiova

Facultatea de Inginerie Electrică


Departamentul de Electromecanica, Mediu si Informatica Aplicată

MASTER
Sisteme electromecanice complexe

Sisteme avansate și algoritmi de comandă

Prof. univ. dr. ing. Dan MIHAI


4/27/2019

1. DESPRE continut
 APROFUNDAREA unor tematici de la ciclul de licenţă:
- Algoritmi de control specifici sistemelor discrete;
- Aplicaţii pe model.

 INTRODUCERE în problematica sistemelor avansate, complexe, inteligente:


Despre:
- Sisteme inteligente, Soft computing, sisteme hibride;
- Inteligenţă artificială;
- BIA.
Aprofundare:
- Logică şi controlere fuzzy – în principal;
- Reţele neuronale artificiale – mediu;
- Algoritmi genetici – mai puţin.

 APROFUNDAREA unor aplicaţii complexe de control inteligent (algoritmi pentru sisteme cu eşantionare,
fuzzy, neuro-fuzzy):

Sisteme Avansate şi Algoritmi de Comandă


- motion control;
- temperature control.

 INTEGRAREA de soluţii avansate în aplicaţii (Embedded Systems):


- Ce semnifică, cum se pune problema;
- Sinteză hardware;
- Sinteză software;
- Ilustrări din diverse domenii: auto, avionică, foto, spaţial..

 “The Algorithm Design Manual” ,


Steven Skiena, Spring-Verlag, 1997
 “Introduction to Algorithms”,
Cormen, Leiserson & Rivest, MIT Press, 2001
Prof. Dan MIHAI  “Computers and Intractability”, Garey and Johnson, Freeman, 1979
 http://web.info.uvt.ro/~dzaharie/alg/alg2010.html

1 2

Ştiinţe ale
complexităţii -
disciplinele noi
care abordează
sistemele complexe
(Scarlat E.,
Chiriţă N., 2005)

3 4

1
4/27/2019

5 6

2. Algoritmi – o viziune largă

Cât de general şi important este conceptul:


- în tehnică;
- în societate;
Perspective dinspre - în viaţa personală;
cibernetică = - în ontologie;
metaştiinţă
- ...totul este algoritm?

De ce ?

Determinism

TIMP !
7 8

2
4/27/2019

Problemă

Eficienţa
Timp
240 =1.099 * 1012
15min

1s 230 =1073741824
Soluţii?

1ms 220 =1048576

1ms 210 =1024

Număr
1ns puncte

Lungime = 71.7 Lungime = 64.1 9 1 10 20 30 40 50 10

3. Un algoritm de control cu forţare (Dead-Beat)


Pentru un m.c.c. cu inerţie redusă:
kM (s)
G M (s)  
1  s  Tem U(s)

1 kM (s)
G M (s)   
s 1  s  Tem U(s)
 G ( s) 
GP ( z 1 )  GEX 0GM ( z 1 )  (1  z 1 )  Z  M 
Algoritmi numerici  s 
Y ( z 1 )
R( z 1 )
GDb ( z 1 ) 
 Y ( z 1 ) 
GEX 0GM ( z 1 )  1  1 

 R( z ) 

    
    
 G M (s) 
  Z k M      k   1 
1 1 1
Z   
 s   s 1  M
 1  z 1  T 
  s  1  e em  z 1 
T
  Tem  

11 12

3
4/27/2019

 
T
 1 a1p  z 1  a 2p  z 2
1  e Tem z G P (z 1 )  k1p 
 
b 0p  b1p  z 1  b 2p  z  2
G P (z 1 )  k M   T


1
1 e Tem
z  T
Tem
1 1 1 z 1 k1p  k M  Tem ; a1p  T / Tem  1  e
R (z )  Y(z ) 
1  z 1 1  z 1
 T  T
Tem T
 T a 2p  1  T / T em  e  e em
1  e T em  z 1
G Db ( z 1) 
1

kM   T   T
1  e T em   (1  z 1) Tem  T
b0p  1; b1p  1  e T em
2p  e
  ;b
 

Pentru bucla de poziţie:


a  a 1  z 1  a 2  z 2
G Db (z 1 )  k 2  0
     b 0  b1  z 1  b 2  z 2
 G (s)    1 T   1 
em    k   T  z
T T Tem
Z  M   Z  k M    em   em 

  T  T
 s 2 1   M 
 (1  z ) 1  z
1 2 1  T 
 s  s 1 Tem T
  s    
Tem  z 1  k2  ; a 0  1; a1  1  e ; a 2  e em
  T em   1 e k M  Tem

13 14

5. Algoritmi specifici sistemelor cu eşantionare


 T  T
Tem T
b0  e  1  T / Tem ; b1  2  T / Tem  (2  T / Tem )  e em

 T  T
Tem T
b2  1  e  T / Tem  e em

p 0  p1  z 1  ...  p n  z  n
G Db (z 1 ) 
q 0  q1  z 1  ...  q n  z n

a 0  a 1  z 1  ...  a n  z  n
G P (z 1 ) 
b 0  b1  z 1  ...  b n  z n

T

1 1 e Tem
 q 1 uk
G Db (q 1 )   
kM 
T
1
k
(1  e )  (1  q )
Tem

 T
1 e T em
u k  u k 1   k    k 1  u k 1  λ 0  ε k  λ1  ε k 1
 T  T
Tem k M  (1  e T em )
k M  (1  e )

15 16

4
4/27/2019

17 18

19 20

5
4/27/2019

21 22

23 24

6
4/27/2019

25 26

27 28

7
4/27/2019

29 30

31 32

8
4/27/2019

6. Sinteza algoritmilor de reglare numerică specifici sistemelor discrete Cazul t = 0

Ipotezele preliminare:
Din eşantioanele:
- se dispune de Gf (z-1), incluzând şi EX0, sub forma:
y1, ..., yr, cu yi  yj , în conformitate cu aspectul răspunsului indicial, iar yr+i =1,
G(z-1) = B(z-1) / A(z-1) · z-N ; N  0;
i N
B/A este o funcţie raţională proprie; Yd(z-1) = y1· z-1 + y2· z-2 +… + yr· z-r + z-(r+1) + z-(r+2) +…
n =[t/T] timpul mort al părţii fixate în multiplii de T.
Yd fiind stabil (poli subunitari z<1), seria geometrică, la limită, are o sumă finită:
- referinţa este treaptă unitate: R(z-1) =1/(1-z-1);
Yd(z-1) = y1· z-1 + y2· z-2 +… + yr· z-r + z-(r+1) / (1- z-1)
- mărimile sistemice ale buclei automate discrete sunt în prealabil normate.
Yd(z-1) = [ y1· z-1 + (y2- y1)· z-2 +… + (yr- yr+1)· z-r + (1- yr) · z-(r+1) ] / (1- z-1)
Se alege secvenţa infinită a eşantioanelor răspunsului indicial dorit de la ieşirea sistemului
automat (conform unor indici de calitate ai regimului tranzitoriu şi staţionar). Yd(z-1) = Q(z-1 ) / (1- z-1)

Se cunosc deci eşantioanele răspunsului dorit yk, deci şi:


Cunoscând referinţa, rezultă funcţia de transfer a sistemului închis:
Yd (z 1 )   y k  z  k
G0(z-1) = Yd(z-1) / R(z-1) = Q(z-1 )
k 0
1
Cu y 0  lim (1  Yd (z ))  0 din motive de cauzalitate.
z 1

4/27/2019 33 4/27/2019 34

Cazul t = NT Funcţia de transfer a sistemului deschis va fi:

Gd(z-1) = G0(z-1) / (1- G0(z-1)) = Gf(z-1) · GR(z-1)


Primele eşantioane sunt nule: y0 = y1 = . . . = yN = 0.
Rezultă funcţia de transfer a regulatorului digital:
Se aleg eşantioanele nenule neunitare ale răspunsului:
GR(z-1) = Gd(z-1) / Gf(z-1) = A(z-1) / B(z-1) · zN · [Q(z-1) /(1- Q(z-1))]
yN+1 , yN+2, . . . ,yr, distincte între ele şi yr+i = 1, i  N.
După obţinerea acestui rezultat se impune o analiză a realizabilităţii algoritmului prin corelarea
Atunci: gradelor polinoamelor din rezultat cu unele caracteristici ale procesului / sistemului condus.
Yd(z-1) = yN+1· z-(N+1) +… + yr· z-r + z-(r+1) + z-(r+2) +…
Durata regimului tranzitoriu este:

Yd(z-1) = yN+1· z-(N+1) +… + yr· z-r + z-(r+1) / (1- z-1) tr = (r+1) ·T

Yd(z-1) = z-N · [yN+1· z--1 + (yN+2- yN+1)· z-2 + … + (yr- yr+1)· z-(r-N) + (1- yr) · z-(r-N+1) ] / (1- z-1) =

= QN(z-1 ) / (1- z-1)


Rezultă: G0 (z-1 ) = QN (z-1 )

4/27/2019 35 4/27/2019 36

9
SAAC 47

2.1.5 ANALIZA UNUI SISTEM DE POZI IONARE CU


REGULATOR DIGITAL

2.1.5.1 Sistemul comandat

Structura sistemului de pozi ionare – fig. 2.16 - include un motor de c.c. cu


rotor disc alimentat de la o surs cu comand numeric i un traductor incremental
(TIRO 2500) cu Ni/r impulsuri pe rota ie. Se modeleaz elementul de execu ie i
partea de comand astfel încât condi iile simul rii s fie cât mai apropiate de cele
pentru o implementare on-line bazat pe folosirea unui microcontroler standard de
8 bi i.

Fig. 2.16 Elementele fizice ale sistemului comandat

PC1 este folosit pentru dezvoltarea programelor iar PC2 con ine un analizor logic
pentru urm rirea func ion rii. Sursa de alimentare a motorului prime te o referin
numeric pe 8 bi i de la un port numeric al microcontrolerului 80C552 (Philips).
Viteza este determinat din informa ia de pozi ie:

5k 5k 1 24 k div 3N k
6k = = c vit 3N k (2.192)
T N i/r T
k div: coeficient de divizare / multiplicare al impulsurilor de la encoder
T: perioada de e antionare
Nk: num rul de impulsuri de pozi ie contorizate pe durata T
cvit: coeficient de vitez .
O analiz de detaliu asupra corel rii (optime) a tuturor elementelor (formate,
caracteristici ale interfe ei, parametri hardware i software) - [16] - relev
posibilitatea lucrului cu cvit [rad/sec / imp. / T] unitar.
48 SAAC

2.1.5.2 Tratarea sistemic' a modelului

Structura bloc de reglare a pozi iei este redat în fig. 2.17a. Referin a pentru
pozi ie se impune prin num rul de impulsuri ale traductorului de deplasare
(encoder) – N* . Eroarea de pozi ie este amplificat de regulatorul de pozi ie de tip
P, furnizând prescrierea pentru bucla de vitez – *. Eroarea de vitez este
prelucrat de regulatorul PI al buclei de vitez care furnizeaz la ie ire comanda c
pentru elementul de execu ie (servomotorul de pozi ionare).
Fig. 2.17b precizeaz elementele concrete ale structurii implementate, cu
m rimile prelucrate în timp real. Z-1 este blocul care formeaz valoarea anterioar
(cu un pas de e antionare) a unei m rimi, valoare care trebuie memorat de
algoritmul de reglare. BPC este un bloc (software) de prelucrare a comenzii
elaborate de algoritm, rezultând comanda efectiv trimis la EE: ckout. SCN este o
surs cu referin (comand ) numeric , M este motorul iar TP reprezint
traductorul de pozi ie.

Fig. 2.17 Elementele sistemice ale structurii de reglare a pozi iei

Blocul principal de prelucrare din fig. 2.17b cumuleaz prelucr rile celor 2 bucle
de reglare, pe baza rela iilor care urmeaz . Intervin:
kp : amplificarea buclei de pozi ie;
kp , Ti: parametrii regulatorului PI de vitez .

6*k = k p5 B 5k = k p5 (N *5 N 5k ) (2.193)

Se discretizeaz func ia de transfer a buclei de vitez :


SAAC 49

1 C(s)
G R6 (s) = k p6 1+ = (2.194)
s Ti E 6 (s)
Rezult :
k p6 T
c k = c k 1 + k p6 (B 6k B 6k 1 ) + B 6k (2.195)
Ti

B 6k = k p5 B 5k c vit 3N k (2.196)

Înlocuind, se ob ine:

k p5 k p6 T k p5 c sp T
ck = ck 1 + B 5k 3N k +
Ti Ti
+ k p6 c sp 3N k 1 k p5 (k p6 + c sp ) 3N k (2.197)

Sau, într-o form compact - [17], [18]:

c k = c k 1 + A 3N k 1 + B 3N k + C B 5k (2.198)

A = k p6 c sp
c sp T
B= k p6 k p5 c sp +
Ti
k p6 k p5 T
C =
Ti

2.1.5.3 Simularea pe model

Proiectan ii sistemelor automate (continui sau discrete) au primit în ultimele


decenii un ajutor extrem de pre ios prin apari ia unor pachete de programe pentru
simulare. Unul dintre cele mai populare ( i performante) este SIMULINK /
MATLAB. Simularea confirm corectitudinea unor modele i totodat se constituie
ca o baz de referin pentru acordarea buclelor. Rezultatele simul rii sunt cu
atât mai utile pentru implement rile ulterioare on-line cu cât acurate ea modelului
este mai ridicat . Fig. 2.18 red modelul Simulink pentru sistemul de pozi ionare.
Elementul de reglare este blocul notat cu 80C552, care realizeaz prelucr rile
50 SAAC

corespunz toare rela iilor anterioare.

Fig. 2.18 Modelul sistemului de pozi ionare

Pentru motor s-a folosit modelul (liniar):

1 R

L(s) = Ce U(s) Ce 2 M s (s) (2.199)


Tem s + 1 Tem s + 1

Pentru cuplul de sarcin s-a utilizat un bloc tip tabel de valori care
genereaz Ms(s) în func ie de vitez . Referin a aplicat este de tip treapt . Blocul
denumit “Trad. vit. soft” determin viteza în unit i SI cu rel. (2.192). Modulul
STOPek suprim orice comand în momentul în care s-a sesizat c eroarea de
pozi ie (principalul parametru de proces urm rit) a devenit nul . Referin a i
informa ia de la encoder sunt e antionate cu perioada de e antionare T = 2, 456 ms;
aceast valoare corespunde unui optim multicriterial i va fi utilizat la
implement ri on-line. Modulul de frânare diminueaz efectul iner iei de dup
suprimarea comenzii (la vitez redus ) printr-o frânare dinamic cu indusul
scurtcircuitat. Fig. 2.19 red structura celorlalte blocuri de prelucrare principale. Pi
SAAC 51

acest model poate fi precedat de un altul – cel de reglare cu bucle continui.


Utilitatea acestuia este legat de aplicarea unor metodologii bine cunoscute de
acordare, pe baza c rora de determin parametrii Kp , Kp , Ti.

Fig. 2.19 Modelele unor blocuri din structura de comand


Modelul pentru controler – fig. 2.19a cumuleaz toate opera iile aritmetice
necesare calculului comenzii. Variabilele de intrare sunt: referin a de pozi ie,
reac ia dup pozi ie i viteza curent (prin Nk). Sumatorul 1 corespunde rel.
(2.198) la care se mai adun o comand ini ial . Aceasta nu a rezultat din tratarea
sistemic ; ea dureaz numai o perioad de e antionare i corespunde unei strategii
52 SAAC

de timp real. Blocurile de cuantificare Q1–Q3 s-au introdus pentru operarea numai
cu numere întregi, similar cu aritmetica microcontrolerului care va lucra on-line.
Modelul sursei de alimentare a elementului de execu ie are urm toarele
caracteristici:
- transform informa ia (semnalul) de comand din gama 0 – 148 D în
tensiune în plaja 0 – 12 V cc. Aceast scalare ine seama de sursa real care
va fi utilizat on-line, care acoper intervalul 0 – 24 Vcc la o referin
numeric pe 8 bi i.
- dac regulatorul genereaz o comand inferioar unui prag de sensibilitate
la limita de mi care pentru motor, formeaz la ie ire o tensiune corespunz -
toare acestui prag;
- reduce cu o valoare fix (2 V cc) tensiunea de la ie ire. Prin aceasta se ia în
considerare faptul c datorit limitei inferioare nenule a sursei fizice, situat
deasupra pragului de sensibilitate al motorului, a fost necesar introducerea
unor diode în serie cu indusul servomotorului de pozi ionare.
- limiteaz prin satura ie nivelul la ie ire.
Rezultatele simul rii pentru o referin de 5000 impulsuri encoder (2 rota ii
complete) sunt redate de fig. 2.20 – 2.21. Fig. 2.20 prezint componentele comenzii
calculate dup rel. (2.198). Este remarcabil simetria (cu opozi ie a semnului) a
termenilor ck1 – ck2. Aceasta face ca termenul ck3 (componenta integral ) s aib
un rol foarte important, de i amplitudinea sa este redus comparativ cu a celorlal i
doi termeni. De asemenea se observ suprapunerea practic a graficelor notate ck,
ck-1, ceea ce semnific absen a unor salturi ale comenzii pe o perioad de
e antionare i – totodat – valoarea foarte mic a duratei T în raport cu intervalul
analizat. U oara diferen dintre cele 2 grafice se sesizeaz prin aspectul de grafic
unic cu linie înt rit . Operarea cu numere întregi se eviden iaz prin varia ia în
mici trepte a componentelor respective. Limitele de varia ie ale acestora arat o
for are ini ial accentuat , deasupra nivelului de satura ie din modelul sursei. În
zona final a cursei, comanda rezultat î i schimb semnul, tendin a fiind de
frânare accentuat . Ambele aspecte dovedesc o acordare bun a buclelor.
Fig. 2.21 red varia ia m rimilor macroscopice caracteristice sistemului de
pozi ionare: eroare de pozi ie, vitez i tensiune de alimentare a motorului. Timpul
pe abcis este marcat în num r de perioade de e antionare. Practic pozi ionarea se
termin în cca 1 sec., ceea ce revine la o vitez medie global de 120 rot / min –
pu in sub jum tate din viteza nominal . For area comenzii, evident i în graficele
vitezei i tensiunii ar putea fi mai accentuat dar eroarea de pozi ionare ar cre te.
Vârful de vitez la aproape 500 rot / min este admisibil, de i nN = 300 rot / min,
având în vedere c tura ia maxim (la gol) este de aproape 700 rot / min. Sunt
vizibile pragul de vitez de apropiere (cu valoare constant de aprox. 40 rot / min)
i frânarea de dup suprimarea comenzii. Dup for area ini ial a comenzii, efortul
buclelor este relevat prin riplul comenzii în zona intermediar .
SAAC 53

Fig. 2.20 Componentele comenzii calculate la simularea buclelor

Fig. 2.21 Evolu ia erorii de


pozi ie, a vitezei i a tensiunii
54 SAAC

2.1.6 ANALIZA COMPORT.RII UNEI BUCLE DEAD - BEAT

Aplica iile care urmeaz se refer la utilizarea unor controlere Dead – Beat
pentru comanda unor sisteme de ac ionare cu motor de c.c. cu model liniar de
ordinul I. În fig. 2.22 este analizat un sistem de pozi ionare. Partea fixat discret
are func ia de transfer:

1
G f (z 1 ) = k M k S K TR (1 z 1 ) S (2.200)
s 2 (1 + TM )
TM: constanta electromecanic de timp a motorului (50 ms);
k: amplific rile pentru motor, surs i traductor
Func ia de transfer rezultat prin calcul pentru regulatorul Dead – Beat este cea
înscris în blocul cu acela i nume. Pentru extrapolator, e antionor i calculele de
discretizare s-a utilizat perioada de e antionare T = 2,456 ms. Satura ia care
precede sursa intervine firesc prin capacitatea maxim a convertorului numeric-
analogic care la cap t de scal genereaz referin a sursei pentru tensiunea nominal
a motorului. Se ob ine o pozi ionare de calitate în aproape 4 x TM, dar contribu ia
regulatorului dup for area ini ial este minim .

Fig. 2.22 Model i rezultatele simul rii buclei Deat – Beat de pozi ie
SAAC 55

În fig. 2.23 este prezentat o bucl Dead – Beat de vitez . Perioada de e antionare
s-a redus la 1 ms iar pragul de satura ie pentru tensiunea de alimentare s-a fixat la
125 % din valoarea tensiunii nominale a motorului. Prezen a lui împiedic
scurtarea regimului tranzitoriu pân la limita teoretic , pornirea sistemului durând
cam 1,5 x TM. Se constat un suprareglaj de circa 10 %.

Fig. 2.23 Pornire cu nivel coborât de satura ie


Pentru accea i perioad de e antionare s-a suprimat blocul de satua ie pentru
comand (pentru tensiunea de alimentare a motorului) – fig. 2.24. Pe ecartul de
timp de 10 ms al înregistr rii se constat c pornirea se termin dup 2 x T, când
tensiunea se stabilizeaz la valoarea de regim sta ionar. Viteza ajunge îns la
valoarea prescris dup numai o perioad de e antionare. Este cel mai scurt regim
tranzitoriu posibil. Aceast performan se realizeaz cu pre ul unei solicit ri
energetice extreme: motorul trebuie alimentat cu aproape 150 V, adic la mai mult
de 6 x UN. Concluzia este c , folosind un element de comand adecvat, se poate
ob ine o dinamic ideal dac elementul de execu ie suport solicit rile energetice,
mecanice sau de alt natur (de exemplu comuta ia la motoarele cu perii) iar sursa
de alimentare este capabil s genereze impulsuri scurte de mare amplitudine i cu
pant ridicat a tensiunii. Reducerea în continuare a perioadei de e antionare (care
este un parametru de proiectare) nu înseamn c este posibil reducerea nelimitat
56 SAAC

a regimului tranzitoriu, cu atât mai mult cu cât se face sim it mai pregnant iner ia
electromagnetic , neluat în considerare prin func ia de transfer. Chiar la un motor
cu rotor disc cu constanta electromagnetic de 0,2 ms, influien a inductivit ii
devine prezent la perioade de e antionare sub 1 ms .

Fig. 2.24 Pornire cu nivel ridicat de satura ie


SAAC 57

2.2.4 UN MICROCONTROLER DIN A II-A GENERA IE:


PIC 16 C 71X (Microchip Technology Inc)

2.2.4.1 Elemente caracteristice

Codul 16C71X desemneaz o familie de microcontrolere de 8 bi i, ieftine i


performante, în tehnologie CMOS rapid', cu putere redus' i cu convertor
analog-digital (ADC) inclus. Bazate pe o arhitectur' Harvard, cu magistrale
separate pentru date (8 bi i) i pentru instruc iuni (14 bi i), cu prelucrare tip
pipeline (deci paralelism par ial) i folosind un set restrâns de instruc iuni (unitate
central' RISC – numai 35 de instruc;iuni), fa de microcontrolerele standard
ale clasei de 8 bi i, PIC 16 C71X sunt de 4 ori mai rapide iar codul generat pentru
programe este de 2 ori mai compact. Majoritatea instruc iunilor sunt executate într-
un singur ciclu ma in .Elementele caracteristice:
Pentru nucleu
Frecven maxim : 20 MHz;
Stiv hardware cu 8 nivele;
Adresare direct , indirect i relativ ;
Reset la alimentare (Power-on Reser: POR);
Protec ie cod program;
Mod cu putere redus (SLEEP);
Op iuni selectabile pentru oscilator;
Alimentare 2,5 – 6 Vcc;
Capabilitate în curent: 25 mA;
Disponibilitate pentru gam extins de temperatur ;
Consum redus (2mA/5 V /4 MHz; 15 µA/3V/32 kHz; <1 µA la standby);
Pentru periferice
ADC cu 4 canale / 8 bi i;
Programare serial în circuit;
4 surse de întrerupere;
13 pini I / O cu control individual;
Timer de 8 bi i cu prescaler de 8 bi i;
Timer watch-dog cu oscilator propriu on-chip;
Membrii familiei >i elementele distinctive sunt prezentate în tabelul urm'tor
iar capsula (PDIP) cu semnalele asociate în fig. 2.32.

Tabelul 2.3
Caracteristici PIC 16C71X 710 71 711 715
Memorie program EPROM (x 14) 512 1K 1K 2K
Memorie de date (x 8) 36 36 68 128
Reset la sc derea tensiunii (BOR) Da - Da Da
Verificare paritate memorie program (PER) - - - Da
58 SAAC

Fig. 2.32 Semnalele de la pinii capsulei PIC16C71X


Semnifica ia semnalelor:
OSC1 / CLKIN: intrare oscilator cristal / intrare surs oscilator extern;
OSC1 / CLKOUT: ie ire oscilator cristal. In mod RC, ie ire cu frecven a ¼ din
OSC1, desemnând un ciclu instruc iune;
MCLK/VPP: tergere MASTER sau intrare pentru tensiune de programare;
RA0/AN0: pin port A bidirec ional sau intrare analogic 0;
RA1/AN1: pin port A bidir. sau intrare analogic 1;
RA2/AN2: pin port A bidir. sau intrare analogic 2;
RA3/AN3/VREF: pin port A bidir. sau intrare analogic 3 sau referin analogic ;
RA4/T0CKI: pin port A bidir. (ie ire cu drena în gol) sau intrare de tact timer;
RB0/INT: pin port B bidir. sau întrerupere extren ;
RB1-RB3: pini port B bidir.;
RB4-RB5: pini port B bidir., cu întrerupere la comutare;
RB6-RB7: pini port B bidir., cu întrerupere la comutare. Pini programare serial .
VDD, VSS: alimentare.

2.2.4.2 Elementele hardware

Schema bloc

Fig. 2.33 prezint principalele elemente hardware din structura


microcontrolerelor PIC 16C7XX. Nota iile desemneaz urm toarele blocuri:

CPU: unitatea central de prelucrare CC: circuite de ceas


DI/C: decodificare instruc iuni i comand WDT: timer Watch-dog
PC: num r torul de program POR: ini ializare la pornire
LIFO: stiva POT: timer stabilizare ini ial surs
FSR: registrul de selectare fi iere BOR: reset la diminuarea tensiunii
A/D: convertor analog-numeric OST: timer stabilizare ceas la pornire
SAAC 59

MCLR VDD,VSS

14 OSC/xx
WDT
Mag. Progr. POR
EPROM CC
POT
CPU DI & C BOR
OST Mag. date 1
PC LIFO 8
Mag. Date 2 8

FSR
RAM A/D TIMER 0 PORT B PORT A

RB1-7 RB0/INT RAx -ANx

Fig. 2.33 Schema bloc a microcontrolerelor PIC 16C7XX

Într-o arhitectur tip Harvard, programele i datele sunt accesate din memorii
separate prin magistrale distincte. Instruc iunile folosesc coduri pe 14 bi i, deci ele
sunt aduse spre prelucrare într-un singur ciclu. Tehnica pipe-line, prin
suprapunerea etapelor de aducere (fetch) i execu ie, face ca toate instruc iunile
(mai pu in cele cu ramifica ii) s fie decodificate i executate într-un singur ciclu
ma in .
Fi ierele de registre i memoria de date sunt adresabile direct sau indirect.
Toate fi ierele de registre speciale (SFR) sunt mapate în memoria RAM. Unitatea
logic i aritmetic din CPU realizeaz opera iile aritmetice (adunare, sc dere,
deplasare bi i) i logice de baz între operanzi din fi ierul de lucru - W - i din
oricare alt registru. Procesorul este caracterizat printr-un set ortogonal (simetric) de
instruc iuni, fiind posibil operarea în acela i mod cu oricare registru, f r
preferin e. Se lucreaz în cod complement de 2. Rezultatele opera iilor afecteaz
urm toarele flag-uri: C (Carry), DC (Digit carry), Z (Zero) din registrul STATUS.
Un ciclu ma in dureaz 4 perioade de tact ale oscilatorului extern, frecven a
acestuia divizat cu 4 fiind disponibil la pinul OSC2.

Organizarea memoriei

Deoarece diferi i membrii ai familiei PIC16Cxxx au volume diferite de


memorie, în continuare va fi referit ca reprezentativ circuitul PIC 16C71. Fig. 2.34
red structura memoriei de programe.
60 SAAC

PC < 12 : 0 >
13

STIVA nivel 1

Fig. 2.34 Memoria de programe STIVA nivel 8


pentru PIC 16C71
Vector RESET 0000 h

Vector întrerupere 0004 h


Memorie program 0005 h
on-chip
03FF h
Memoria de date este divizat în 2 b nci care con in registre cu destina ie
general (GPR) i registre cu destina ie special (SFR). Zona cu SFR se întinde de
la 00 h la 0B h în banca 0 i de la 80 h la 8B h în banca 1. GPR sunt de la adresa
0C h la 2F h – numai în banca 0. Majoritatea SFR, în special cele des utilizate, se
reg sesc “reflectate” în ambele b nci de registre, permi ând un acces rapid i un
cod mai compact. GPR sunt accesabile direct sau indirect prin FSR. SFR sunt
utilizate de CPU sau modulele periferice pentru controlul modului de operare al
acestora. Se prezint în continuare câteva registre principalele.

STATUS (adresa 03 h, 83 h)

R/W – 0 R/W – 0 R/W – 0 R-1 R-1 R/W – x R/W – x R/W – x


Bit 7 Bit 0
IRP RP1 RP0 /T0 /PD Z DC C
R/W – x : bitul citibil / inscriptibil - valoarea la Reset

IRP: selec ie banc pentru adresare indirect (0 – banca 0);


RP1 – RP0: selec ie banc pentru adresare direct (00 – banca 0);
/TO: Time-out. Setat la conectare, instruc iuni CLRWDT i SLEEP. Resetat la
epuizare WDT.
/PD: Power-down. Setat la conectare, instruc iune CLRWDT. Resetat la execu ie
SLEEP.
Z: Zero - setat la rezultat nul pentru opera ii aritmetice sau logice;
DC: Digit Carry - transport de la al 4-lea bit al rezultatului; la opera ii de sc dere
devine bit de împrumut, activ pe zero.
SAAC 61

C: Carry – transport de la MSB; la opera ii de sc dere devine bit de împrumut activ


pe zero.

OPTION (adresa 81h, 181h)


Con ine bi i de control pentru configurarea prescalerului TMR0 / WDT,
întreruperea extern INT, TMR0 i ie irile portului B.

R/W – 1 R/W – 1 R/W – 1 R/W – 1 R/W – 1 R/W – 1 R/W – 1 R/W – 1


Bit 7 Bit 0
RBPU INTED T0CS T0SE PSA PS2 PS1 PS0

/RPBU – bit de validare pentru rezisten ele pull-up ale portului B


1: invalidare pull-up
0: validare individual prin valorile latch – urilor portului
INTEDG – selectere front activ pentru întrerupere
1: întrerupere la front cresc tor la pinul RB0 / INT
0: întrerupere la front descresc tor la pinul RB0 / INT
T0CS – selec ie surs clock
1: tranzi ie la pinul RA4 / T0CKI
0: tact de ciclu instruc iune (CLKOUT)
T0SE – selec ie front la semnalele pentru TMR0
1: tranzi ie la front descresc tor la pinul RA4 / T0CKI
0: tranzi ie la front cresc tor la pinul RA4 / T0CKI
PSA – bit de asignare prescaler
1: prescalerul este atribuit la WDT
0: prescalerul este atribuit timerului
PS2, PS1, PS0 – setare prescaler pentru TMR0 i WDT.

INTCON (adresa 0B h, 8B h)

Con ine valid ri i flag-uri pentru dep ire timer, schimb ri la portul B i
pinul de întrerupere extern .

Porturile

Portul A

Citirea registrului PORTA înseamn citirea st rii pinilor. Scrierea la port


înseamn scrierea în latch. Toate opera iile sunt de tip citire – modificare înscriere,
aceasta presupunând c o scriere la port implic citirea pinului, modificarea valorii
i apoi scrierea datei în lach – ul pinului. Trei dintre pinii portului A sunt
62 SAAC

multiplexa i cu intr ri analogice. Registrele implicate în utilizarea portului A sunt:


PORTA, TRISA i ADCON1.

Portul B

Portul B este bidirec ional de 8 bi i. Sensul I / O este selectat prin registrul


TRISB. Setarea bi ilor s i aduce pinii în stare de înalt impedan iar tergerea lor
determin transferul bi ilor din latch – uri la pini. To i pinii au o impedan mic ,
intern , de sarcin (week pull-up), programabil software. Prin tergerea bitului
/RBPU din registrul OPTION aceast polarizare este realizat . La configurarea ca
ie ire, automat aceast polarizare este eliminat i la fel la RESET. SFR implicate
în utilizarea portului B sunt PORTB, TRISB i OPTION. Comutarea nivelului la
oricare din pinii RB4 - RB7 determin activarea unei întreruperi, dar numai la acei
pini configura i ca intr ri. Nivelele de la pinii de intrare respectivi sunt comparate
cu valori prezente în latch-uri la ultima citire. Dac cel pu in un bit difer , se
genereaz întrerupere – flagul RBIF. Aceast întrerupere poate scoate procesorul
din starea SLEEP. Mecanismul descris (sesizarea unor comut ri la intrare) ca i
configurabilitatea software a polariz rilor (pull-up) fac posibil interfa area u oar
cu o tastatur i sesizarea ap s rii unei taste.

Timerul 0

Schema bloc a acestui timer este cea din fig. 2.35. Este un - timer /
num r tor pe 8 bi i, citibil i inscriptibil, cu prescaler programabil . Se poate
selecta clock intern sau extern La dep irea FF h – 00 h se genereaz întrerupere.
Bus date

8
Pin Fosc/4 0 PSout PSout
RA4/T0CKI
0
1 Sincronizare
cu clock intern TMR0
Prescaler 1
programabil 2 cicluri întârziere
T0SE
3 Setare flag
întrerupere
T0CS PS2, PS1, PS0 PSA T0IF la dep ire

Fig. 2.35 Schema bloc a timerului 0

În modul timer, setat prin activarea bitului /T0CS, modulul este incrementat
SAAC 63

la fiecare ciclu instruc iune – 4 x Tck. La modul de num rare, TMR0 este
incrementat la fiecare front descendent de la RA4 / T0CKI (dac T0SE este setat)
sau la fiecare front ascendent (dac T0SE este resetat). Prescalerul este utilizat ori
de TMR0 ori de WDT, în func ie de bitul PSE (la tergerea lui, asignarea este
pentru timer). Prescalerul nu este citibil sau inscriptibil.
La dep irea FF h – 00 h, este setat fanionul de întrerupere T0IF.
Întreruperea poate fi mascat dac bitul T0IE este ters. Fanionul T0IF trebuie ters
în rutina de serviciu a întreruperii. Aceasta nu poate reactiva procesorul din starea
SLEEP dac timerul a fost oprit.

Convertorul analog – digital

Convertorul A / D este de 8 bi i, de tipul cu aproxima ii succesive i are 4


canale. Referin a analogic este selectabil software între tensiunea de alimentare
VDD i tensiunea la pinul RA3 / AN3 / VREF. Convertorul poate lucra în timp ce
procesorul este în stare SLEEP.
Documenta ia firmei constructoare precizeaz elementele de calcul pentru
durata achizi iei Tacq i durata conversiei. Prima este dat de timpul de preg tire al
amplificatorului i timpul de înc rcare al condensatorului de memorare. Depinde
de tensiunea de alimentare, impedan a sursei de semnal RS, de temperatur i de
parametri interni. De exemplu, pentru VDD = 5 V, RS =10 k i o temperatur
o
maxim de 50 C, rezult Tacq=11,997 µs.
Se poate interveni asupra compromisului vitez' de conversie – rezolu;ie.
Ca exemplu, pentru PIC16C71, la fck=16 MHz, durata conversiei pentru 4 bi i se
poate reduce la 12,5 µs (de la 20 µs pentru 8 bi i).
Registrele implicate în func ionarea convertorului A/D sunt: INTCON,
ADRES, ADCON0, ADCON1, PORTA, TRISA.

Sistemul de întreruperi

Sursele de întreupere sunt:


- întrerupere extern RB0 / INT;
- întrerupere la dep ire timer 0;
- întrerupere la comut ri sesizate la pinii RB7 – RB4;
- întreruperea modulului A/D.
La apari ia unei întreruperi are loc imediat vectorizarea la o adres unic :
0004 h. Programatorul trebuie ca prin testarea fanioanelor s descopere sursa
întreruperii. La apari ia întreruperii, GIE este ters - invalidând deci temporar alte
întreruperi. Fanioanele de întrerupere trebuie resetate în rutina de serviciu pentru a
evita reactivarea intempestiv a lor. Instruc iunea RETFIE cu care se termin
obligatoriu rutina de întrerupere valideaz automat GIE. Acest bit este ters la
64 SAAC

Reset.

Timerul Watchdog (WTD)

WDT este un timer cu num rare liber activat de un oscilator RC on-chip. El


continu s lucreze i în condi iile în care ceasul la pinii OSC1 i OSC2 a fost
oprit, de ex. la execu ia unei instruc iuni SLEEP. În timpul oper rii normale, WDT
genereaz RESET. Dac procesorul este în starea SLEEP, WDT scoate procesorul
din aceast stare. Invalidarea se face prin bitul WDTE. Perioada nominal a WDT,
f r prescaler, este de 18 ms. Dac se doresc durate mai mare, prescalerul se
asigneaz la WDT i perioada men ionat se poate multiplica cu pân la 128 de ori
(max. 2,3 secunde). Instruc iunile CLRWDT i SLEEP terg WDT i prescalerul,
prevenind resetarea procesorului prin expirarea duratei. Dac aceasta a fost
epuizat , bitul /TO din STATUS va fi activat. CLRWDT nu schimb asignarea
prescalerului.

POR, PWRT, OST

RESET la conectare (POR) este generat on-chip la cre terea suficient a


tensiunii de alimentare. Pentru aceasta trebuie conectat pinul /MCLR la VDD direct
sau printr-o rezisten .
Timerul PWRT întârzie intrarea în operare normal o durat de 72 ms de la
POR, utilizând un oscilator RC intern.
OST este un timer care num r 1024 perioade de la OSC1 dup ce PWRT
este terminat, a teptându-se astfel stabilizarea circuitului de ceas extern.

Modul de putere redus' (SLEEP)

Intrarea în regim de putere redus este realizat prin instruc iunea SLEEP.
WDT – dac este validat – va fi ters, continuând s func ioneze. Bitul /PD este
ters, bitul /TO este setat iar driverul oscilatorului este deconectat. Porturile I/O î i
men in valorile. Revenirea din SLEEP se realizeaz prin:
- Reset extern la pinul /MCLR;
- Reactivarea WDT (dac acesta a fost validat);
- Întrerupere la pinul INT, schimbare la portul B sau întreruperi ale perifericelor
(TMR1, A/D cu tact RC).

Protejarea codului

Loca iile de memorie 2000h – 2003h sunt rezervate pentru un cod de


identificare (ID). El poate fi utilizat pentru o sum de control sau un cod de
identificare ca atare. Loca iile respective nu sunt accesibile în timpul oper rii
SAAC 65

normale dar sunt citibile i inscriptibile în timpul program rii / verific rii.

Programarea serial' în circuit

Programarea în circuitul de aplica ie se face prin folosirea urm toarelor


conexiuni: date, ceas, tensiunea de programare VPP, tensiunea de alimentare VDD i
mas .

2.2.4.3 Setul de instruc;iuni

Instruc iunile microcontrolerului PIC 16C71 folosesc pentru OPCODE i


operanzi 14 bi i.
O parte din instruc iuni sunt cu operare pe byte. Pentru acestea, f reprezint
registrul fi ier utilizat iar d locul depunerii rezultatului. Când d = 0, rezultatul este
plasat în registrul de lucru, iar dac d = 1, rezultatul este l sat în registrul specificat
de instruc iune. Format:

13 8 7 6 0
OPCODE d f

Alte instruc iuni sunt de tipul cu operare pe bit. În acest caz, b desemneaz
bitul afectat opera iei iar f constituie localizarea bitului. Format:

13 10 987 6 0
OPCODE b f

A treia categorie de instruc iuni o constituie aceea a instruc;iunilor literale


sau de comand'. La acestea, k este o valoare constant sau literal pe 8 sau 11
bi i. Format:

General:
13 8 7 0
OPCODE k

Instruc iunile CALL sau GOTO:

13 11 10 0
OPCODE k

Alte nota ii:


W: registrul de lucru (acumulator);
TOS: vârful stivei.
66 SAAC

Toate instruc iunile se efectueaz într-un ciclu instruc iune (4 x Tck), mai
pu in în cazul când testele de condi ii sunt adev rate, sau când PC este modificat
de c tre instruc iune. În aceste cazuri, execu ia dureaz 2 cicluri instruc iune.
Setul de instruc iuni este redat în tab. 2.4.

Tabelul 2.4 Instruc iunile microcontrolerelor 16C7xx

Mnemonic Descriere Fanioane Comen-


Operanzi afectate tarii

Instruc;iuni pe octet

ADDWF f, d Adun W cu f C, DC, Y


ANDWF f, d SI logic între W i f Z
CLRF f Pterge f Z
CLRW Pterge W Z
COMF f, d Complementeaz f Z
DECF f, d Decrementeaz f Z
DECFSZ f, d Decrementeaz f, salt dac este 0
INCF f, d Incrementeaz f Z
INCFSZ f, d Incrementeaz f, salt dac este 0
IORWF f, d SAU logic între W i f Z
MOVF f, d Mut f (în W sau f) Z
MOVWF f Mut W în f
NOP Nici o opera ie
RLF f, d Rota ie spre stânga prin Carry C
RRF f, d Rota ie spre dreapta prin Carry C
SUBWF f, d Scade W din f C, DC, Z
SWAPF f, d Comut tetradele din f
XORWF f, d SAU excusiv între W i f Z

Instruc;iuni pe bit

BCF f, b Bitul b din registrul f este ters


BSF f, d Bitul b din registrul f este setat
BTFSC f, b Se testeaz bitul b din registrul f,
salt dac este ters
Dac b=1, se execut
instruc iunea urm toare
Dac b=0, în locul instruc iunii
urm toare se execut NOP
SAAC 67

BTFSS f, b Se testeaz bitul b din registrul f,


salt dac este setat

Instruc;iuni literale >i de comand'

ADDLW k Adun con inut W cu k, rezultat în C, DC, Z


W
ANDLW k SI logic între con inut W i k, Z
rezultat în W
CALL k Apel subrutin
CLRWDT Pterge WDT /TO, /PD
GOTO k Salt la adres
IORLW k SAU logic între W i k, rezulatat în Z
W
MOVLW k Mut cuvântul k în W
RETFIE Revenire din întrerupere
RETLW k Registrul W este înc rcat cu k. PC
este înc rcat cu vârful stivei (adresa
de revenire)
RETURN Revenire din subrutin
SLEEP Intrare în mod de putere redus /TO, /PD
SUBLW k Scade registrul W din k, rezultat în C, DC, Z
W
XORLW k SAU EXCLUSIV între W i k, Z
rezultat în W

O instruc iune special este OPTION, care transfer con inutul W în


registrul OPTION i TRIS f, care transfer con inutul registrului de lucru în TRIS
f. Aceste dou instruc iuni nu se recomand din motive de compatibilitate a codului
cu versiuni ulterioare ale circuitului.
O instruc iune poate opera asupra unui registru cu depunerea rezultatului tot în
el. Acest lucru poate fi util de exemplu pentru testarea registrului prin urm rirea
fanionului Z. Dac registrul respectiv este unul I/O, valoare folosit va fi cea de la
pini. De exemplu, dac data din latch este 1 pentru un pin configurat ca intrare,
dac un circuit extern aduce pinul la 0, data va fi scris apoi ca 0.
O bun parte din instruc iunile pe octet i bit terg prescalerul dac registrul
implicat este TMR0 iar prescalerul i-a fost asignat lui.
Toate instruc iunile pot avea etichet .
68 SAAC

2.2.5 IMPLEMENTAREA UNUI ALGORITM NUMERIC DE


REGLARE A POZI IEI CU MICROCONTROLER

Se impune realizarea unui controler de pozi ie în logic programat , pentru


sistemul de ac ionare electric cu motor de curent continuu cu rotor disc descris la
2.1.5, beneficiind de aparatul sistemic dezvoltat la subcapitolul men ionat i de
rezultatele simul rii pe model. Aplica ia a fost implementat pe un sistem de
dezvoltare cu microcontrolerul 80C552 (Philips), aflat în dotarea laboratorului de
Comenzi Numerice al Facult ii de Electromecanic din Craiova.

2.2.5.1 Organizarea algoritmului pentru timp real

Principiile de baz pentru implementare on-line a algoritmului sunt


urm toarele:
- informa ia de pozi ie este prioritar i modificarea ei (primirea unui puls
de la encoder) trebuie luat imediat în considerare printr-o întrerupere
hardware;
- prelucr rile pentru elaborarea comenzii sunt ciclice, durata unui ciclu fiind
perioada de e antionare T;
- deoarece pe o durat T se fac mai multe actualiz ri ale erorii de pozi ie e k,
algoritmul va fi de tip strict cauzal, cu un timp mort dat de T. Comanda ck+1
se determin în func ie de elementele de la pasul anterior:

c k +1 = f ( N k , B 5k , c k ) (2.208)

Elementele software caracteristice algoritmului de timp real sunt redate în


fig. 2.36. Fig. 2.36a con ine prelucr rile din programul principal (MAIN), întrerupt
de rutinele INT0, lansat la fiecare front descendent al impulsurilor traductorului i
RT2 lansat prin software de c tre timer-ul T2 care marcheaz perioada de
e antionare.
INT0, ilustrat în fig. 2.36b, realizeaz :
- decrementarea cu o unitate a erorii de pozi ie la fiecare puls TIRO;
- incrementarea lui Nk cu o unitate la fiecare puls TIRO;
- testarea condi iei de eroare de pozi ie nul , moment în care este setat fanionul F1.
RT2 (fig. 2.36c) parcurge etapele:
- preluarea datelor finale de la perioada de e antionare (k-1) dintr-un buffer dedicat
pentru utilizarea în algoritmul strict cauzal;
- repornirea T2 pentru m surarea perioadei de e antionare;
- determinarea vitezei;
- calcululul comenzii;
- prelucrarea comenzii calculate i trimiterea rezultatului în exterior;
SAAC 69

- salvarea unor valori în zone alocate pentru analiz off-line;


- actualizarea bufferelor cu valori necesare algoritmului.

Fig. 2.36 Prelucr rile în timp real pentru algoritmul de control a pozi iei

În fig. 2.37 se prezint derularea temporal a task-urilor, eviden iind


prioritatea maxim a rutinei INT0 i necesitatea unei durate minime pentru aceasta.
Prelucrarea comenzii ck pentru ob inerea valorii ckout care este trimis la portul de
ie ire se refer la (fig. 2.38):
70 SAAC

- ob inerea unei comenzi pentru ie ire de 8 bi i, compatibil cu formatul referin ei


sursei care alimenteaz elementul de execu ie;
- saturarea la valoarea maxim care corespunde tensiunii nominale;
- adoptarea unei valori minime pentru comand , numit de prag, ce corespunde
deplas rii sistemului cu viteza minim decelabil . Pentru comanda într-un cadran a
sistemului de pozi ionare, aceast tehnic elimin comenzile care se situeaz sub
pragul de sensibilitate al motorului electric – [17], [18].

Fig. 2.37 Distribuirea task-urilor


de timp real

Fig. 2.38 Procesarea comenzii calculate de algoritmul de reglare


SAAC 71

2.2.5.2 Programul în limbaj de asamblare

Modulele i comentariile din programul surs prezentate în continuare


ilustreaz o mic parte din elementele practice legate de implementarea on-line a
algoritmului.
; INT0 - Rutina de intrerupere externa (hard) activata de encoder
cseg at intr0
ljmp rintr0
cseg at rintr0
using 0
clr p1.2 ; reset fortat fanion rt2
setb p1.1 ; marcaj pentru durata intreruperii initiate
push acc
mov a,aekl ; test eroare pozitie nula
jnz cor21 ; rutina decrementeaza eroarea de pozitie cu
mov a,aekh ; o unitate
jnz cor22
mov stop,#0ffh ; set fanion STOP
pop acc
clr ex0
reti
cor22: dec aekh ; LSbyte er. poz. nul
mov aekl,#0ffh
ljmp cor23
cor21: dec aekl ; LSbyte er. poz. nenul
cor23: inc adnk
clr p1.1
mov a,semaf ; preluat val. semafor
jz cor40
setb p1.2
cor40: pop acc
reti
;
; RT2
cseg at rt2
using 0
cpl p1.0 ; marcator perioada de esantionare
setb p1.2 ; marcator durata prelucrari algorim de reglare
mov semaf,#01h ; set bit SPA pentru combinare fan. rt2 - intr0
mov adnkb,adnk
mov adnk_1b,adnk_1
mov adnk,#00h ; golire dnk pentru achizitie
72 SAAC

mov aeklb,aekl
mov aekhb,aekh
; TASK 1 : stergere T2OV pentru relansare timer T esant.
; TASK 2 : inregistare eroare de pozitie
; TASK 3 : formare imagine viteza (8 biti, in SI) - traductor soft
; TASK 4: înregistrare vitez
; TASK 5 : calcul termen ck1
; TASK 6 : calcul termen comanda ck2
; TASK 7 : calcul termen comanda ck3
; TASK 8 : calcul final comanda
; TASK 9 : procesare comanda calculata
; TASK 10 : inregistrare comanda realizata si test nedepasire zona rezervata
; TASK 11 : reactualizare locatii algoritm: k trece in k-1pentru comanda si er. poz.

2.2.5.3 Rezultate experimentale

Fig. 2.39 ilustreaz foarte conving tor derularea temporal a activit ilor on-
line din sistemul de reglare a pozi iei, inclusiv întreruperea RT2 (PROC) de c tre
INT0. Nota ia canalelor de la analizorul logic:
SPER: marcaj perioada de e antionare ARITH: rutine aritmetice
PULSE: impulsurile de la traductor SCON: opera iile pentru bucla
INT0: rutina de întrerupere hardware de vitez
PROC: prelucr rile din RT2 SAVES: salv ri de date
Rutinele aritmetice utilizate se ferer la:
- adunare cu semn pe 16 bi i;
- împ r ire cu semn 16 bi i la 8 bi i cu rezultat pe 16 bi i.

Fig. 2.39 Imaginea prelucr rilor în timp real


SAAC 73

Înregistrarea timing - ului permite nu numai verificarea modului de


func ionare ( i concordan a dintre versiunea scontat i cea real ) dar face posibile
evaluari cantitative precise ale duratelor unor module software, deci ajust ri în
algoritmul de proiectare. S-au putut m sura precis duratele de execu ie ale rutinelor
de întrerupere, ale prelucr rilor aritmetice precum i ale unor module software
auxiliare – de exemplu pentru înregistrarea în NVRAM a datelor pentru analiza
ulterioar off-line. Folosind înregistr ri de acest tip a fost posibil i evaluarea
indirect a erorii sta ionare de pozi ie, prin contorizarea impulsurilor de la encoder
dup ce eroarea de pozi ie a devenit nul - [18]. Prin ajust ri experimentale ale
parametrilor de acordare s-a reu it ob inerea unei erori de 2-3 impulsuri TIRO,
ceea ce pentru o referin de 5000 de pulsuri înseamn o eroare de 0,06 % - adic
excelent .
Fig. 2.40 red evolu ia m rimilor caracteristice sistemului de pozi ionare:
eroare de pozi ie i vitez . Se constat o bun concordan cu rezultatele
simul rilor de la 2.1.5 dar i unele diferen e. Astfel, durata pozi ion rii pentru
aceea i referin este mai redus (cca 0,7 sec fa de 1 sec). Palierul de vitez
redus (de apropiere de pozi ia final , la limita de mi care) este sesizabil, dar mult
diminuat ca durat . De i viteza maxim este diminuat în raport cu varianta
simulat , valoarea medie este superioar . Aceasta înseamn o mai bun utilizare a
resurselor, cu o pozi ionare mai scurt i în acela i timp cu varia ii mai pu in bru te
pentru cinematica sistemului.

Fig. 2.40 Evolu*ia real. a sistemului de pozi*ionare

Mai trebuie men ionat faptul c la utilizarea pe aplica ie la beneficiar a unui


asemenea sistem se pot optimiza atât elementele hardware cât i cele legate de
programare. Arhitectura complex de laborator este substituit la nivelul comenzii
de o plac cu microcontrolerul, elementele asociate lui, o tastatur hexazecimal i
un display LCD. Din programe se elimin blocurile de marcaj temporal i pentru
salv ri în memorie, ad ugând în schimb task-uri pentru activare on-line display i
tastatur .
74 SAAC

2.3 CONTROLERUL DSP TMS320C24x (TEXAS


INSTRUMENTS)

Pe parcursul a mai pu in de 20 de ani, procesoarele numerice de semnal


(DSP – Digital Signal Processor) au cunoscut o evolu ie remarcabil , atât din
punct de vedere al hardware-ului cât i al software-ului. De la o putere de calcul
relativ modest , s-a ajuns în anul 1999 la aproape 2000 MIPS. Simultan, aria de
utilizare s-a extins mult în afara domeniului consacrat ini ial - sisteme de
comunica ie. Aplica iile în sfera comenzii numerice a sistemelor electromecanice
(ac ion ri electrice, robo i, ma ini-unelte) au condus la situa ii de competitivitate cu
alte structuri numerice programabile - în spe cu microcontrolerele – sau la
necesitatea combin rii cu acestea în sisteme hibride. TMS320C24x desemneaz un
set de circuite din familia procesoarelor numerice de semnal TMS320 al firmei
Texas Instruments. Particularitatea acestor circuite este dat de integrarea unor
blocuri i func ii tipice pentru microcontrolere, devenind controlere DSP.
Structura rezultat este remarcabil ca putere de prelucrare, num r i tipuri de
periferice on-chip, dovedindu-se o solu ie performant i extrem de compact de
comand numeric a sistemelor de ac ionare electric . Calit ile ei sunt legate de:
- posibilitatea proiect'rii >i realiz'rii unor controlere robuste pentru
noile genera;ii de ac;ion'ri electrice reglabile: cu motoare asincrone,
cu magne;i permanen;i, f'r' perii (brushless);
- ob inerea unor consumuri mai reduse de energie prin strategii de comand
performante;
- o operare cu zgomote i vibra ii mult reduse prin diminuarea pulsa iilor
cuplului;
- eliminarea unor senzori / traductoare prin utilizarea unor algoritmi
performan i (cu estimatori, adaptivi, dup stare, vectoriali);
- reducerea costurilor prin solu ii de calcul on-line îmbun t ite (eliminarea
tabelelor de valori, a calculelor de interpolare);
- comanda cu procesor unic a sistemelor multimotoare;
- ob inerea unor solu ii alternative mai eficiente i fiabile prin substituirea
unor ac ion ri fluidice cu ac ion ri electrice (exemplul tipic îl ofer
industria automobilului iar sistemele implicate sunt în special cele de frân
cu antiblocare, direc ie asistat , climatizare).

2.3.1 CARACTERISTICI GENERALE

Circuitele C24x sunt realizate în tehnolgie CMOS, folosesc un nucleu DSP


pe 16 bi i în vigul fix , cu o capacitate de calcul de 20 MIPS. Folosesc o
arhitectur Harvard modificat . Aproape toate instruc iunile sunt executate într-un
singur ciclu de 50 ns (fck = 20 MHz). Consumul minim de energie este ob inut atât
SAAC 75

prin tehnologia de realizare cât i prin programarea a 4 moduri de putere redus ,


fiecare dezactivând diferite blocuri.
Nucleul pentru timp real – Managerul de evenimente – include modulatoare
PWM cu timpi de gard programabili i ma in de stare cu vectori spa iali PWM
pentru comanda ma inilor trifazate. Timerele reversibile, fiecare cu propriul
registru de comparare, pot genera impulsuri modulate în l ime asimetrice sau
simetrice. 2 din cele 4 unit i de captur sunt direct conectabile la semnalele tip
encoder.
Nucleul CPU are urm toarele caracteristici de baz :
- unitate central aritmetic i logic pe 32 de bi i (CALU);
- acumulator pe 32 de bi i;
- multiplicator 16 x 16 cu rezultat pe 32 de bi i;
- 8 registre de 16 bi i cu o unitate aritmetic auxiliar (ARAU) dedicat
pentru adresare indirect a memoriei de date;
Memoria:
- RAM cu acces dual pentru date sau program: 544 x 16 bi i, dintre care 288
pentru date iar 256 pentru program;
- ROM sau EEPROM flash pentru program: 16K x 16 bi i;
- Spa iul maxim de memorie adresabil : 224 K cuvinte x 16 bi i;
- Modul de interfa cu memoria extern , cu generator de st ri de a teptare,
bus date de 16 bi i i bus adrese de 16 bi i;
Controlul programului:
- operare pipeline cu 4 nivele;
- stiv hardware pe 8 nivele;
- 6 întreruperi externe;
Setul de instruc;iuni;
- instruc iuni MAC;
- instruc iuni de transfer blocuri de memorie pentru date / program;
- disponibilit i pentru adresare indexat , radical, FFT etc.
Periferice on-chip:
- managerul de evenimente cu elementele:
- 12 canale de comparare / PWM, dintre care 9 independente;
- 3 timere pe 16 bi i cu 6 moduri;
- 3 unit i de comparare cu posibilit i pentru timpi de gard ;
- 3 unit i de comparare simple;
- 4 unit i de captur pe 16 bi i, 2 compatibile cu semnalele în cuadratur
tip encoder.
- ADC dual pe 10 bi i (2 conversii în 10 µs);
- Modul PLL;
- Modul WDT;
- Module de interfa seriale SCI, SPI.
76 SAAC

Circuitul TMS320F240 este similar cu varianta C240 dar în locul memoriei


interne ROM con ine o zon de Flash EEPROM, tot de 16 K. Programarea ei se
poate face “în circuit”, chiar la aplica ie, de c tre nucleul DSP. Poate re ine datele
timp de 10 ani. Alimentarea circuitului se face la 5 V iar capsula este PQ 132 P.

2.3.2 ELEMENTE STRUCTURAL – FUNC IONALE

Schema bloc din fig. 2.41 red elementele constructive esen iale al DSP
controlerului C24x. În afara spa iului pentru date i adrese, cu magistralele lor
distincte, exist un al 3-lea spa iu i o magistral dedicat : pentru intr ri / ie iri
(I/O). Bus-ul interfe ei externe, permite utilizarea / selec ia unui mare num r de
periferice. Aceast magistral fiind mapat în zona de date i interfa at cu
magistrala de date printr-un modul sistem, toate instruc iunile care opereaz în
spa iul datelor, opereaz de asemenea asupra registrelor perifericelor.
Separarea zonelor de memorie i posibilitatea transferurilor pe magistrale
distincte fac posibile prelucr ri paralele. De exemplu, în acela i ciclu ma in , se
poate realiza o multiplicare, adunarea unui produs anterior la acumulator i
generarea unei noi adrese.
DARAM semnific memorie RAM cu acces dual (Dual – Access RAM).
Magistralele de date i de programe sunt divizate în 6 magistrale interne, dup cum
urmeaz :
Magistrala pentru adrese externe, în:
PAB – magistrala adreselor program, vehiculeaz adrese atât pentru citire
cât i pentru scriere în memoria program;
DRAB – magistrala adreselor pentru citire date, vehiculeaz adrese
pentru citiri din memoria de date;
DWAB - magistrala adreselor pentru scriere date, vehiculeaz adrese pentru
scrieri în memoria de date.
Magistrala pentru date externe, în:
PRDB – magistrala pentru citire program, vehiculeaz codul
instruc iunilor, operanzi imedia i de la memoria program la CPU;
DRDB – magistrala pentru citire date, vehiculeaz datele din memoria de
date spre CALU i unitatea aritmetic cu registre auxiliare;
DWEB – magistrala pentru scrierea datelor, vehiculeaz' date atât spre
memoria de date cât >i pentru cea de programe.
Existen a unor magistrale distincte DRAB i DWAB permite ca CPU s
poat scrie i s citeasc date în acela i ciclu ma in . Fiecare modul figurat în
schema bloc are un spa iu de adrese corespunz tor. Pentru diferi i membri ai
familiei C24x, inserarea unor blocuri periferice implic utilizarea uneia sau mai
multor zone desemnate ca ”disponibile”. Configurarea modului de lucu pentru
nucleu sau periferice se realizeaz prin intermediul a 67 de registre programabile
de câte 16 bi i.
SAAC 77

Fig. 2.41 Schema bloc a controlerelor DSP TMS 320C24x


78 SAAC

CPU, prin structura i modul de lucru, este în primul rând o unitate puternic de
calcul. Multiplicarea cu rezultat pe 32 de bi i într-un singur ciclu ma in face
posibil implementarea comod a unor algoritmi de convolu ie, corelare i filtrare
numeric . Tot CPU con ine logica de generare a adreselor de date i de program.
ARAU lucreaz în paralel cu CALU.
Memoria este divizat în 4 zone selectabile:
- memoria program (64 kwords), con inând instruc iunile care urmeaz s fie
executate sau date necesare în timpul execu iei programului;
- memoria datelor locale (64 kw), re inând datele folosite de instruc iuni;
- memoria datelor globale (32 kw) care administreaz date în comun cu alte blocuri
sau serve te ca spa iu de date suplimentar;
- spa iul I/O (64 kw) pentru interfa area cu periferice externe, con inând de
asemenea registre on-chip.
Relativ la tipul memoriilor alocate acestor zone, intervine o oarecare
flexibilitate software i hardware. Astfel, prin bitul CNF din registrul ST1,
DARAM poate fi configurat în totalitate ca zon de date (CNF =0) sau, o parte este
zon de date iar alta de programe (CNF =1). Selectare memoriei program între
intern i extern revine unui semnal la pin i tot hardware se prescrie un spa iu de
adrese pentru memoria de date / program fie în interior fie în exterior.
Execu;ia programului este de tip pipeline, cu 4 etape care se pot suprapune:
aducere instruc iune, decodificare instruc iune, aducere operand i execu ie
instruc iune. A a rezult posibilitatea realiz rii instruc iunilor într-un singur ciclu
ma in : pe durata a 4 cicluri se prelucreaz (în stadii diferite) 4 instruc iuni. Stiva
are 8 nivele i anumite instruc iuni pot beneficia de o microstiv (1 nivel) auxiliar .
Func;iile sistem sunt:
- transferul dintre magistrala de date a CPU i magistrala perifericelor (care poate
lucra cu un tact mai lent), monitorizat de modulul sistem; exist i blocuri – de
exemplu managerul de evenimente – conectate direct la magistrala CPU.
- configur ri / status prin registrele programabile;
- controlul întreruperilor;
- controlul modurilor de putere redus , în num r de 4.
Întreruperile, în num r total de 31, pot fi software sau hardware, acestea
din urm externe sau interne. O întrerupere este fie mascabil fie nemascabil . Cele
mascabile au 10 nivele de prioritate. În afara acestora exist un indice de prioritate
global .
Resetarea procesorului se face automat în situa iile:
- interven ie WDT;
- reset software;
- ini ializare la conectare surs de alimentare;
- VDD în afara plajei admise;
- adres ilegal ;
- semnal la pinul Reset.
SAAC 79

Modulele periferice

1. Managerul de evenimente (EV) este o structur complex , cu func ii i


caracteristici specifice pentru comanda motoarelor electrice. În afara unor blocuri
de utilitate general (timere, unit i de captur , de comparare), se men ioneaz
modulatorul PWM, cu 9 ie iri independente, circuit pentru comand PWM
vectorial (SV-PWM) i modulul de generare a timpilor de gard – elemente
specifice comenzii convertoarelor statice de energie pentru ac ion ri electrice. EV
îi sunt alocate 39 de registre de configurare / status.
Pentru timerele generale (GP) exist prescalere, posibilitatea de cascadare pe
32 de bi i, de oprire, de control a sensului de evolu ie, de selectare a modului de
num rare (unic / continu ), de corelare cu startarea ADC i de generare a formelor
de und în ramp simetrice sau asimetrice
Unit ile de captur simple au asociate câte o ie ire PWM iar cele duble câte
2 ie iri PWM. Baza de timp este preluat de la GP. Circuitele PWM con in
generatoare de und simetric / asimetric , unit ile pentru timpi de gard
programabili (DBU), blocul SV-PWM i modulul de ie ire. Rezolu ia PWM este
pe 16 bi i. Reglajul DBU este în plaja 0 – 2048 cicli ceas CPU. Blocurile de ie ire
gestioneaz logica de selec ie a nivelelor active la momentele de comutare /
comparare i fac func ii de set / reset, basculare i men inere.
Blocul SV-PWM asigur o modulare optimizat , cu minimizarea armonicilor
curentului în fazele motorului i o utilizare mai eficient a sursei decât modularea
sinusoidal .
2. Convertoarele ADC pot realiza conversii continue sau unice, lansate
software sau hardware. Con in circuitele S&H, un prescaler pentru tactul conversiei
i depun rezultatele în unit i FIFO cu 2 nivele (re in 2 rezultate).
3. Modulul de interfa;are / comunica;ie serial' SCI realizeaz transferuri
seriale full-duplex între CPU i periferice asincrone cu rat variabil (prin 16 bi i,
de la 9,5 bps la 650 kbps pentru clock de 20 MHz). Are posibilit i de testare a
corectitudinii transferurilor. SCI lucreaz cu formatul de date NRZ (non-return-to-
zero). Ultimul bit din câmp serve te la distinc ia adrese / date. Pentru comunica ii
interprocesor exist 2 protocoale specifice.
4. Unitatea de interfa;are serial' cu perifericele (SPI) este de fapt un port
sincron serial rapid I / O. Serve te la comunica ii cu periferice externe sau cu alte
controlere. Se pot programa: lungimea câmpului de date, rata de tarnsfer (125
selec ii), 4 moduri de lucru pentru tact.
5. Modulul WD / RTI are func ii de watchdog i sistem de întrerupere în
timp real (Real Time Interrupt). WD intervine prin Reset la r mânerea în bucle sau
defectarea CPU. RTI opereaz prin generarea unor întreruperi periodice care pot fi
validate sau nu prin software.
6. Porturile I / O numerice con in 32 de canale.
7. Modulul PLL este unitatea de sincronizare, cu 4 seturi de tacte.
80 SAAC

Programarea procesorului

Se pot utiliza 3 moduri de adresare:


- adresare imediat , cu varianta de operand scurt (pe 8, 9 sau 13 bi i) i varianta de
operand lung (pe 16 bi i);
- adresare direct , la care adresa se realizeaz prin concatenarea a 7 bi i ai
instruc iunii cu 9 bi i ai pointer-ului de date (DP);
- adresare indirect , prin folosirea a 16 registre auxiliare.
Setul de instruc iuni în limbaj de asambare con ine urm toarele categorii:
1. Instruc iuni aritmetice i logice;
2. Instruc iuni pentru registre auxiliare i pointerul de date (DP);
3. Instruc iuni asociate modulului de înmul ire;
4. Instruc iuni de ramificare;
5. Instruc iuni de comand ;
6. Instruc iuni pentru I / O i memorie.
Complexitatea structurii, num rul mare de registre programabile, de moduri
de lucru i de opera ii fac dificil programarea în limbaj de asamblare pentru
aplica ii cu un grad de complexitate mediu – mare. În acest caz se poate opta pentru
una din alternativele:
- programarea în limbaj C. Ea nu scute te totu i pe utilizator de cunoa terea
unor detalii hardware, cu atât mai mult cu cât unele module program trebuie
scrise în limbaj de asamblare.
- programarea conversa ional prin intermediul unor programe specializate
cu o interfa grafic puternic - [37]. Prin pagini i meniuri ecran se fac
set ri, configur ri, execu ii de program iar instrumenta ia virtual d o
imagine a rezultatelor programelor. Utilizatorul este scutit de cunoa terea
unor coduri, reguli i detalii hardware.
- programarea prin interfa grafic cu ajutorul unor programe de uz general
care transform forme program – surs u or accesibile în cod direct
executabil de c tre DSP. Este ilustrativ în acest sens instrumentarul oferit de
firma dSpace - [33], care face posibil preluarea direct a programelor
SIMULINK / MATLAB i generarea codului pentru comanda în timp real
(în condi iile utiliz rii componentei Real-Time Workshop din Matlab).
Trebuie men ionat c un acces total la resursele procesorului este oferit
numai de c tre limbajul de asamblare. El genereaz totodat cele mai rapide
execu ii. De obicei, un proiectant de sistem / aplica ie nu poate evita în totalitate
utilizarea limbajului de asmblare, chiar dac se serve te (uneori preponderent) de
alte modalit i de programare.
SAAC 81

2.4 APLICA II CU UN CONTROLER DSP

Aplica iile descrise se refer la utilizarea kit-ului MCK 240 al firmei


Technosoft S.A. - [37], bazat pe controlerul DSP TMS 320F240 (Texas
Instruments) i aflat în dotarea laboratorului de Comenzi Numerice al Facult ii de
Electromecanic din Craiova.

2.4.1 ELEMENTE HARDWARE

Fig. 2.42 prezint componen a platformei experimentale. Un motor f r


perii (PITTMAN 3441E023; 19,1 VDC; 9100 – 500), având încorporat un encoder
cu 500 imp. / rot. i 3 senzori Hall, este alimentat de la un invertor trifazat PWM
(100 kHz). Curen ii din coloane invertorului sunt m sura i prin intermediul unor
unturi i semnalele respective sunt conectate la intr rile convertorului ADC de la
DSP. Acesta comunic prin SCI cu un calculator care se constituie ca un terminal
inteligent. Un bloc de memorie adi ional de 32 de kcuvinte poate fi utilizat pentru
date sau programe. Platforma mai con ine elemente de conectic (incluzând
magistrala DSP), cuar pentru circuitul de ceas, jumperi de configurare hardware,
LED-uri de semnalizare.

3
TMS 320F240
2
+
10
Program monitor
Motor +
Bloc Encoder +
m sur Hall

Memorie
Extern
D/P
32 kcuv.

MCK 240 Invertor trifazat

Fig. 2.42 Elementele de baz ale kit-ului MCK 240


82 SAAC

Sunt utilizate urm toarele resurse hardware ale controlerului DSP:


- Interfa a SCI (pentru comunica ie);
- ADC pentru m surarea curen ilor motorului;
- Blocul PWM cu timerul T1, pentru generarea impulsurilor cu modula ie
(simetric ) în l ime;
- Timerul T2 pentru generarea perioadelor de e antionare pentru buclele de
curent i vitez ;
- Interfa a QEP pentru m surarea pozi iei pe baza impulsurilor de la
encoder;
- GPIO, cu 3 bi i pentru intr rile de la senzorii Hall;
- Blocul de întreruperi RTI, pentru:
- Transmisie – recep ie;
- Control conversie A/D;
- Monitorizare rutine de întrerupere asociate buclelor de curent i
vitez (T2 comparare).

2.4.2 ELEMENTE SOFTWARE

Platforma MCK 240 are integrate elementele software în pachetul MCWIN,


cu rulare sub Windows, con inând: program monitor (responsabil de exploatarea
unor resurse de baz tipice i de comunica ia prin SCI cu PC), evaluator al
procesorului (cu acces la o parte din blocurile hardware periferice ale DSP-ului),
un set de instrumente grafice pentru analiza mi c rii i programe aplicative.
Structura func ional software pentru aplica ii de control a mi c rii este ilustrat în
fig. 2.43.
Modul comunica ie

Comenzi mi care Intrepretor limbaj mi care

Parametri mi care
Generator referin

Referin motor Comand motor

Referin PWM Referin curent / câmp

Comand curent / câmp Generator PWM

Fig. 2.43 Modulele software pentru comanda ac ion rilor electrice


SAAC 83

Structura sistemic asociat aplica iei este redat de fig. 2.44.

Fig. 2.44 Schema de reglare pentru comanda motorului f r perii

Se m soar 2 curen i statorici - ia , ib utiliza i pentru calculul curentului


continuu echivalent - i pozi ia rotorului, în conformitate cu informa iile de la
senzorii Hall. Modul în care este comandat motorul sincron trifazat autopilotat este
similar unuia de c.c. Ambele regulatoare implementate software sunt de tipul PI
discret, numai c frecven a de e antionare a buclei interioare (de curent) este mai
ridicat . Blocul de comuta ie al tensiunilor realizeaz calculul referin elor de
tensiune pe faze, aplicate invertorului. Ie irile PWM cu comparare din DSP sunt
corelate cu aceste referin e. Din invertorul trifazat, practic, în modul DC sunt
utilizate numai 4 tranzistoare. Comuta ia acestora se face pentru fiecare sector de
60o sesizat de traductoarele Hall. În aplica ie, viteza se estimeaz ca increment de
pozi ie, deci din informa ia de la encoder – cale mai simpl decât evaluarea din
informa ia de la senzorii Hall.
Toate calculele matematice sunt realizate în format frac ionar Q15, cu 15
bi i (plus unul pentru semn), mai pu in o parte din rezultate intermediare tip produs
i valorile generatorului de referin e care folosesc formatul 31 + 1 bi i. Parametrii
de reglare pentru fiecare bucl sunt factorul de propor ionalitate, factorul integral i
perioada de e antionare: kP, kI, T. Formatul lor este de asemenea Q15.

2.4.3 REZULATE EXPERIMENTALE

Aplica ia a avut în vedere cazurile:


- tahogram dreptunghiular de 1 cadran cu durata de 300 ms, în gol i sarcin ;
- tahogram cu rampe i reversare, cu aceea i durat , în gol i sarcin .
Imaginea referin elor i a paginilor ecran asociate este redat de fig. 2.45.
84 SAAC

Fig. 2.45 Referin e de test pentru vitez

Fig. 2.46 con ine înregistr rile pentru varia ia m rimilor caracteristice în
cazul tahogramei dreptunghiulare la func ionare în gol (a.) i respectiv în sarcin
(b.). Fig. 2.47 red detalii pentru intervalele de pornire i respectiv oprire ale
aceleia i tahograme. * este reprezentat cu linie continu sub ire, cu linie
continu groas , i* cu linie întrerupt sub ire i i cu linie întrerupt groas .
Parametrii buclelor de reglare sunt:
Bucla de vitez : Bucla de curent:
KP = 975 KP = 0,233
KI = 138 KI = 0,18
T = 1 ms T = 0,1 ms
Marcajul valorilor de vitez se face pe ordonat în stânga, în pulsuri encoder
/ timp iar a celor pentru curent în dreapta. Marcajul timpului se face în milisecunde.
Diferen ele a. – b. nu sunt sesizabile pe palierul stabilizat al vitezei. La pornire,
sarcina atenueaz micile oscila ii dar la oprire efectul este aproape contrar datorit
iner iei mecanice asociate sarcinii. Înregistr rile de la fig. 2.47 se refer la
func ionarea în sarcin . Se poate evalua durata regimurilor respective: cca 20 ms.
Constanta mecanic proprie a motorului este de 8,6 ms.
Fig. 2.48 ilustreaz evolu ia sistemului la comanda dup a doua tahograma,
în gol (a.) i respectiv în sarcin (b).
În fig. 2.48 c. s-au modificat perioadele de e antionare la jum tate pentru
cazul tahogramei cu reversare, la aceea i parametri PI. Este evident comportarea
mai proast , de i e antion rile sunt cu frecven mai ridicat . Cauza este dat de
faptul c T se constituie ca un parametru de acordare suplimentar, valori (chiar
foarte mici) neadecvate putând duce i la instabilitate.
SAAC 85

Fig. 2.46 Evolu ia sistemului pentru tahograma dreptunghiular

Fig. 2.47 Detalii pentru pornire i oprire la tahograma dreptunghiular


86 SAAC

Fig. 2.48 Evolu ia sistemului în cazul revers rii de sens


SAAC 87

2.5.9 UN CONTROLER DE POZI IE ÎN LOGIC. FUZZY

Se prezint un model SIMULINK de reglare a pozi iei cu controler fuzzy,


pentru sistemul de ac ionare electric de la 2.1.5. O prim variant utilizeaz
blocul de dedicat din FUZZY TOOLBOX - [35], iar o a doua modeleaz
prelucr rile on-line pentru comanda cu microcontroler pe baza unei tabele de valori
(Look – Up – Table : LUT). În ambele cazuri se lucreaz cu variabilele normate:
- eroarea de pozi ie k (la momentul de e antionare k);
- varia ia erorii de pozi ie k care este tocmai viteza (cu semn
schimbat).
einând cont de rel. 2.192 (de altfel mai multe elemente de la strategia de
comand dup algoritmi standard referitoare la variabile i timing r mân acelea i,
diferind numai task-ul de reglare), normarea se face cu:

B 5n max
B 5n k = B 5 k (2.279)
N*

c vit 3B 5n max
3B 5n k = 3N k (2.280)
L max

Valorile normate maxime se iau de obicei 10. Fig. 2.59 prezint modelul
pentru bucla fuzzy de reglare a pozi iei pentru sistemul de ac ionare men ionat.

Fig. 2.59 Model SIMULINK cu regulator fuzzy pentru pozi ie


88 SAAC

Mul imile vagi utilizate pentru intr rile i ie irea regulatorului fuzzy sunt
prezentate în fig. 2.60. Ie irea se va furniza direct în unit i DAC -ului (convertorul
numeric-analogic) care formeaz referin a sursei de alimentare a motorului.
Modelul i simularea lui au în vedere un sistem i condi ii reale de lucru.
Semnifica ia nota iilor este:
- az: aproape zero; - medie;
- fmic : foarte mic ; - mare;
- mic ; - fmare: foarte mare.
- rmic : relativ mic ;

Fig. 2.60 Definirea mul imilor vagi

Prin normare, intr rile s-au încadrat în gamele standard [-10, +10].
Controlerul fuzzy este un bloc predefinit, configurat cu FUZZY din FUZZY
TOOLBOX - [35], func ionarea lui fiind deteminat de un fi ier asociat. S-a
anticipat algoritmul de conducere în timp real prin utilizarea acelea i perioade de
e antionare la blocul z-1, a parametrilor motorului din experimentul fizic i prin
suprimarea comenzii fuzzy la eroare de pozi ie nul . De asemenea, mul imile vagi
pentru comand s-au definit pe gama de numere întregi cu care urmeaz s lucreze
microcontrolerul, inând seama de caracteristicile sursei de tensiune comandat
numeric i particularit i ale montajului. O astfel de particularitate este, de ex.,
folosirea unui grup de diode în serie cu indusul motorului pentru c tensiunea
minim a sursei este de câ iva vol i iar pragul de sensibilitate la mi care din repaus
pentru motor este de câteva sute de milivol i. Tabela de reguli s-a stabilit inând
cont de semnifica ia fizic a variabilelor i cu ajutorul unor simul ri pe modele de
reglare continui. Aceste reguli sunt:
1. If (eroare is az) and (var.eroare is az) then (comanda is az)
2. If (eroare is az) and (var.eroare is fmica) then (comanda is az)
SAAC 89

3. If (eroare is az) and (var.eroare is mica) then (comanda is az)


4. If (eroare is az) and (var.eroare is rmica) then (comanda is az)
5. If (eroare is az) and (var.eroare is medie) then (comanda is az)
6. If (eroare is az) and (var.eroare is mare) then (comanda is az)
7. If (eroare is az) and (var.eroare is fmare) then (comanda is az)
8. If (eroare is fmica) and (var.eroare is az) then (comanda is az)
9. If (eroare is fmica) and (var.eroare is fmica) then (comanda is az)
10. If (eroare is fmica) and (var.eroare is mica) then (comanda is az)
11. If (eroare is fmica) and (var.eroare is rmica) then (comanda is az)
12. If (eroare is fmica) and (var.eroare is medie) then (comanda is az)
13. If (eroare is fmica) and (var.eroare is mare) then (comanda is az)
14. If (eroare is fmica) and (var.eroare is fmare) then (comanda is az)
15. If (eroare is mica) and (var.eroare is az) then (comanda is mica)
16. If (eroare is mica) and (var.eroare is fmica) then (comanda is mica)
17. If (eroare is mica) and (var.eroare is mica) then (comanda is mica)
18. If (eroare is mica) and (var.eroare is rmica) then (comanda is mica)
19. If (eroare is mica) and (var.eroare is medie) then (comanda is fmica)
20. If (eroare is mica) and (var.eroare is fmare) then (comanda is fmica)
21. If (eroare is rmica) and (var.eroare is az) then (comanda is medie)
22. If (eroare is rmica) and (var.eroare is fmica) then (comanda is medie)
23. If (eroare is rmica) and (var.eroare is mica) then (comanda is medie)
24. If (eroare is rmica) and (var.eroare is rmica) then (comanda is medie)
25. If (eroare is rmica) and (var.eroare is medie) then (comanda is medie)
26. If (eroare is rmica) and (var.eroare is mare) then (comanda is rmica)
27. If (eroare is rmica) and (var.eroare is fmare) then (comanda is rmica)
28. If (eroare is medie) and (var.eroare is az) then (comanda is fmare)
29. If (eroare is medie) and (var.eroare is fmica) then (comanda is fmare)
30. If (eroare is medie) and (var.eroare is mica) then (comanda is fmare)
31. If (eroare is medie) and (var.eroare is rmica) then (comanda is fmare)
32. If (eroare is medie) and (var.eroare is medie) then (comanda is fmare)
33. If (eroare is medie) and (var.eroare is mare) then (comanda is mare)
34. If (eroare is medie) and (var.eroare is fmare) then (comanda is mare)
35. If (eroare is mare) and (var.eroare is az) then (comanda is fmare)
36. If (eroare is mare) and (var.eroare is fmica) then (comanda is fmare)
37. If (eroare is mare) and (var.eroare is mica) then (comanda is fmare)
38. If (eroare is mare) and (var.eroare is rmica) then (comanda is fmare)
39. If (eroare is mare) and (var.eroare is medie) then (comanda is fmare)
40. If (eroare is mare) and (var.eroare is mare) then (comanda is fmare)
41. If (eroare is mare) and (var.eroare is fmare) then (comanda is fmare)
42. If (eroare is fmare) and (var.eroare is az) then (comanda is fmare)
43. If (eroare is fmare) and (var.eroare is fmica) then (comanda is fmare)
44. If (eroare is fmare) and (var.eroare is mica) then (comanda is fmare)
45. If (eroare is fmare) and (var.eroare is rmica) then (comanda is fmare)
46. If (eroare is fmare) and (var.eroare is medie) then (comanda is fmare)
47. If (eroare is fmare) and (var.eroare is mare) then (comanda is fmare)
48. If (eroare is fmare) and (var.eroare is fmare) then (comanda is fmare)
90 SAAC

49. If (eroare is mica) and (var.eroare is mare) then (comanda is fmica)


Imaginea sta ial a tabelei de reguli i totodat a tabelei de valori (LUT)
asociate este redat în fig. 2.61. S-a folosit metoda de inferen min-max.

Fig. 2.61 Imaginea ac iunii controlerului fuzzy

Rezulatele simul rii buclei fuzzy comparativ cu cele de la o bucl PI sunt


con inute în fig. 2.62, reie ind o bun concordan între cele 2 solu ii.

Fig. 2.62 Evolu ia sistemului cu regulator PI (a) i cu regulator fuzzy (b)

Simularea pe acest model a servit i pentru extragerea valorilor pentru


varianta cu simularea microcontrolerului operând cu LUT. Aceasta s-a f cut comod
folosind op iunea de vizualizare a tabelei de reguli sub forma unor diagrame care,
pentru fiecare set de intr ri selectate numeric sau grafic, precizeaz valoarea
comenzii – fig. 2.63. Ele mai permit vizualizarea regulilor active la un moment dat
i a mul imilor vagi rezultate prin inferen .
SAAC 91

Fig. 2.63 Extragerea valorilor pentru LUT

Modelul SIMULINK pentru varianta cu controler bazat pe LUT este


prezentat în fig. 2.64. Programul este mult mai complex, tocmai pentru c nu se
realizeaz inferen logic pentru determinarea comenzii. S-a avut în vedere faptul
c un asemenea task (cu toate componentele asociate implicate: fuzificare –
inferen - defuzificare) este inoperant pentru un microcontroler standard în cazul
sistemelor conduse de foarte mic iner ie. Deoarece toate calculele se fac cu
numere întregi (pentru o similitudine cât mai bun cu implementarea on-line cu
microcontroler pe numere întregi), varianta aceasta va fi referit cu numele de
reglare fuzzy discret . Tabela de valori con ine direct comenzile sub forma unor
numere pe 8 bi i. Referin a este specificat prin num rul de impulsuri encoder
(TIRO 2500).
Dac' indicii asocia;i valorilor instantanee pentru intr'rile în LUT x* >i y*
sunt j >i respectiv i, rezult':

x * xm y * ym
j = 1+ ; i = 1+ (2.281)
rx ry
xm, ym: valori minime pentru x i y;
rx, rz: cuantele de modificare ale intr rilor
Indec ii j i i definesc pozi ional în mod univoc comanda memorat în LUT.
92 SAAC

Calculul valorilor din acesta se face off-line.


Este preferabil corelarea incremen ilor cu plajele de valori i num rul de
coloane / linii din LUT (NC, NL), astfel încât i i j s fie numere întregi. Odat
identificat loca ia pentru comand , imediat aceasta este prelucrat în mai multe
etape i apoi este transferat rezultatul la portul de ie ire.

Fig. 2.64 Modelul pentru reglare fuzzy discret

C_LUT i L_LUT sunt blocurile de calcul pentru indec ii de coloan i


respectiv de linie pentru comand . Valoarea g sit în LUT este multiplicat cu un
factor de adaptare generat de blocul F LUT. Modulul de decizie este responsabil de
luarea în considerare a comenzii la pragul de sensibilitate al motorului astfel încât
pe por iunea final a cursei s se diminueze efectul iner iei. Controlerul de prag
determin comanda la limita de mi care, luând în considerare înc rcarea motorului
prin estimarea curentului. Blocul de satura ie limiteaz tensiunea maxim la
valoarea numinal .
Fig. 2.65 red rezultatele simul rii acestui model pentru o referin de 2
rota ii complete. Durata simul rii este de 1 sec. Se pot remarca:
- o comportare similar cu cea de la modelele continui, inclusiv o pozi ionare
de bun calitate;
- o imagine software a vitezei foarte bun prin varia ia erorii de pozi ie;
SAAC 93

- prezen a unui palier de vitez redus pentru pozi ionare precis , ob inut
printr-o component non-fuzzy datorat controlerului de prag. Înaintea
acestei zone, forma tensiunii de alimentare a motorului reproduce varia ia
comenzii preluate din LUT.
- o evolu ie corect a indec ilor de linie i coloan pentru LUT (între 1 i 11),
cu valori finale corespunz toare erorii de pozi ie nule i vitezei nule.
S-a adoptat valoarea T = 2,456 ms, ideal din motivele men ionate la 2.1.5.
Se mai men ioneaz faptul c acordarea buclei fuzzy s-a realizat în principal prin
modificarea regulilor vagi referitoare la segmentul final al pozi ion rii i mai pu in
prin ajustarea seturilor de mul imi vagi.

Fig. 2.65 Rezultatele simul rii buclei fuzzy discrete

Modele i simul rile lor au fost deosebit de utile pentru implement ri on line
– [18], [19] – sub aspectul optimiz rii calculelor i al acord rii buclelor de reglare.

Concluzia acestor experiment ri este aceea c logica fuzzy se poate constitui


ca un suport viabil pentru comanda unor sisteme preten ioase cum sunt cele de
pozi ionare, caracterizate prin iner ie redus i indici de calitate superiori (eroare
sta ionar , suprareglaj, durat a regimului tranzitoriu.) S-au ob inut erori de
pozi ionare de ordinul unui increment al traductorului numeric de pozi ie, adic la
limita minim decelabil . Numai instrumentul fuzzy în sine nu este îns o garan ie
a unor rezultate foarte bune. Ele se ob in prin optimiz ri de prelucrare i distribuire
temporal a task-urilor i, de multe ori, prin combinarea cu principii sau elemente
non – fuzzy.
94 SAAC

.
$/*25,0,1(&219(1ğ,21$/,

Capitolul 1 – Teoria sistemelor fuzzy ........................................................................................... 4


1.1. Noţiuni fundamentale .................................................................................................... 4
1.2. Tipuri de funcţii de apartenenţă ..................................................................................... 6
1.3. Restrictori ................................................................................................................... 10
1.4. Operaţii cu mulţimi fuzzy ............................................................................................ 11
1.5. Procesul de inferenţă fuzzy ......................................................................................... 13
1.5.1. Tipul de inferenţă Mamdani .......................................................................... 13
1.5.2. Tipul de inferenţă Takagi-Sugeno ................................................................. 15
1.6. Concluzii ...................................................................................................................... 17
Referinţe ............................................................................................................................. 17

Capitolul 2 – Reţele neuronale .................................................................................................... 19


2.1. Noţiuni fundamentale .................................................................................................. 19
2.2. Caracteristici ale reţelelor neuronale ........................................................................... 21
2.2.1. Modelul neuronului ....................................................................................... 22
2.2.2. Arhitectura reţelei .......................................................................................... 26
2.2.3. Algoritmi de antrenare ................................................................................... 28
2.2.3.1. Algoritmul back-propagation ......................................................... 28
2.2.3.2. Metode de accelerare a învăţării ..................................................... 29
2.2.3.3. Învăţarea cu întărire ........................................................................ 31
2.2.3.4. Învăţarea hebbiană .......................................................................... 32
2.2.3.5. Algoritmul Kohonen ....................................................................... 33
2.3. Concluzii ...................................................................................................................... 34
Referinţe ………................................................................................................................. 35

Capitolul 3 – Sisteme hibride neuro-fuzzy ................................................................................. 37


3.1. Soft Computing ........................................................................................................... 37
3.2. Utilitatea sistemelor hibride neuro-fuzzy .................................................................... 38
3.3. Tipuri de hibridizări neuro-fuzzy ................................................................................ 40
3.3.1. Reţele neuronale fuzzy .................................................................................. 40
3.3.2. Perceptronul fuzzy ......................................................................................... 41
3.3.3. Sisteme fuzzy neuronale ................................................................................ 43
3.3.4. Sisteme hibride neuro-fuzzy .......................................................................... 44
3.3.5. Adaptive-Network-Based Fuzzy Inference System (ANFIS) ....................... 46
3.4. Concluzii ...................................................................................................................... 47
Referinţe ............................................................................................................................. 48

Capitolul 4 - Algortimi genetici ....................................................................................................... 49


Capitolul 1

Teoria sistemelor fuzzy


1.1. Noţiuni fundamentale
1.2. Tipuri de funcţii de apartenenţă
1.3. Restrictori
1.4. Operaţii cu mulţimi fuzzy
1.5. Procesul de inferenţă fuzzy
1.5.1. Tipul de inferenţă Mamdani
1.5.2. Tipul de inferenţă Takagi-Sugeno
1.6. Concluzii

1.1. Noţiuni fundamentale


Logica clasică considera valoarea de adevăr a propoziţiilor în termeni de adevărat sau fals.
Legea terţului exclus a lui Aristotel făcea imposibilă o altă variantă. În viaţa de zi cu zi, ne
confruntăm totuşi cu foarte multe situaţii în care o astfel de abordare este nerealistă. Să
considerăm afirmaţia „cerul este albastru”. Uneori cerul este într-adevăr albastru, când afară
este senin. Dar dacă sunt nori? Dar noaptea? Este clar că o manieră strictă de evaluare a valorii
de adevăr a propoziţiilor nu coincide cu modul mult mai flexibil în care gândesc oamenii, în
condiţii de incompletitudine.
Incompletitudinea unei informaţii se exprimă pe două scări:

• scara incertitudinii se referă la încrederea care i se acordă informaţiei (dacă sursa de


informaţie, instrumentul de măsură sau expertul sunt complet siguri, demni de
încredere, informaţia este certă);
• scara impreciziei se referă la conţinutul informaţional (informaţia este precisă dacă
mulţimea valorilor specificate în enunţul corespunzător este single-ton, adică are o
valoare unică).

Un suport teoretic valoros care tratează incompletitudinea este teoria mulţimilor fuzzy.
Un tip incipient de logică fuzzy a apărut încă din 1920, propus de matematicianul
polonez Jan Łukasiewicz (inventatorul notaţiei poloneze). Sistemul său permitea extinderea
valorii de adevăr a unei propoziţii la toate numerele reale din intervalul [0,1]. Un număr din
acest interval era interpretat drept posibilitatea ca propoziţia considerată să fie adevărată sau
falsă. Aceste cercetări au dus la apariţia teoriei posibilităţii, o tehnică de raţionament în condiţii
de inexactitate.
În 1965, Lotfi Zadeh [15] a extins teoria posibilităţii într-un sistem formal de logică
matematică. De asemenea, a adus în discuţie modalităţile de lucru cu termeni nuanţaţi ai
limbajului natural. Aceast instrument de reprezentare şi manipulare a termenilor nuanţaţi se
numeşte logica fuzzy. Logica tradiţională consideră că un obiect poate aparţine sau nu unei
mulţimi. Logica fuzzy permite o interpretare mai flexibilă a noţiunii de apartenenţă. Astfel, mai
multe obiecte pot aparţine unei mulţimi în grade diferite. De exemplu, dacă avem în vedere
mulţimea oamenilor tineri. Un copil de 10 ani e cu siguranţă tânăr, în timp ce o persoană de 60
de ani cu siguranţă nu. Dar un om de 30 de ani? Sau de 40? În acest caz, putem afirma că
persoana de 30 de ani aparţine mulţimii respective într-o măsură mai mare decât cea de 40.

Florin Leon, florinleon@yahoo.com, http://eureka.cs.tuiasi.ro/~fleon


Fie X universul discursului, cu elemente notate x. O mulţime fuzzy A a universului de
discurs X este caracterizată de o funcţie de apartenenţă µ A (x) care asociază fiecărui element x
un grad de apartenenţă la mulţimea A:

µ A ( x) : X → [0,1] (1.1)

Pentru a reprezenta o mulţime fuzzy, trebuie să-i definim mai întâi funcţia de
apartenenţă. În acest caz, o mulţime fuzzy A este complet definită de mulţimea tuplelor:

A = {( x, µ A ( x)) | x ∈ X } (1.2)

Dacă X este o mulţime finită X = {x1, ... , xn}, atunci se foloseşte de multe ori notaţia:

n
A = µ1 / x1 + ... + µ n / xn = ∑ µi / xi (1.3)
i =1

Dacă universul X este continuu, atunci scriem:

A( x) = ∫ a / x (1.4)
x

Pe un univers de discurs pot fi definite mai multe submulţimi fuzzy. De exemplu,


pentru universul vârstelor unor persoane, putem defini submulţimile oamenilor tineri, bătrâni
sau de vârstă mijlocie. Aceste submulţimi se pot intersecta (este chiar recomandat acest fapt).
Aceeaşi persoană va aparţine submulţimii oamenilor tineri cu un grad de 70%, submulţimii
oamenilor de vârstă mijlocie cu un grad de 90% şi submulţimii oamenilor bătrâni cu un grad de
30%.

Fie A o submulţime fuzzy a universului de discurs X. Se numeşte suportul lui A


submulţimea lui X ale cărei elemente au grade de apartenenţă nenule în A:

supp(A) = {x ∈ X | µ A ( x) > 0} . (1.5)

Înălţimea lui A se defineşte drept cea mai mare valoare a funcţiei de apartenenţă:

h(A) = sup µ A ( x) . (1.6)


x∈X

O submulţime fuzzy A a lui X este normală dacă h(A) = 1, adică ∃x ∈ X astfel încât
µ A ( x) = 1 . În caz contrar, A este subnormală.

Se numeşte nucleul lui A submulţimea lui X ale cărei elemente au grade de apartenenţă
unitare în A:

n(A) = {x ∈ X | µ A ( x) = 1} . (1.7)

Florin Leon, florinleon@yahoo.com, http://eureka.cs.tuiasi.ro/~fleon


Fie A şi B submulţimi fuzzy ale lui X. Spunem că A este o submulţime a lui B dacă:

µ A ( x) ≤ µ B ( x), ∀x ∈ X . (1.8)

Figura 1.1. Submulţime fuzzy

Fie A şi B submulţimi fuzzy ale lui X. Spunem că A şi B sunt egale dacă A ⊂ B şi


B ⊂ A:

A = B ⇔ µ A ( x) = µ B ( x), ∀x ∈ X . (1.9)

Fie A o submulţime fuzzy a lui X şi α ∈ [0,1] . Se numeşte tăietură-α (engl. α-cut) a lui
µ A mulţimea:

[ µ ]α = {x ∈ X | µ A ≥ α } (1.10)

Figura 1.2. Tăietura α a funcţiei de apartenenţă

1.2. Tipuri de funcţii de apartenenţă


De multe ori, oamenii nu pot caracteriza precis informaţiile numerice, folosind formulări
precum „aproape 0”, „în jur de 100” etc. În teoria mulţimilor fuzzy, aceste numere pot fi
reprezentate ca submulţimi fuzzy ale mulţimii numerelor reale.
Un număr fuzzy este o mulţime fuzzy pe universul de discurs al mulţimii numerelor
reale, cu o funcţie de apartenenţă convexă şi continuă şi suport mărginit. Unii autori [3]
consideră că un număr fuzzy trebuie să îndeplinească următoarele condiţii:

• ∃ unic x0 ∈ ℜ astfel încât µ A ( x0 ) = 1 ;


• ∀x, y ∈ ℜ, x ≤ y, ∀z ∈ [ x, y ], µ A ( z ) ≥ min( µ A ( x), µ A ( y )) .

Florin Leon, florinleon@yahoo.com, http://eureka.cs.tuiasi.ro/~fleon


O mulţime fuzzy A se numeşte număr fuzzy triunghiular cu centrul c, lăţimea la stânga
α > 0 şi lăţimea la dreapta β > 0 dacă funcţia sa de apartenenţă are forma:

 c−x
 1− α , c −α ≤ x ≤ c
 x−c
µ A ( x, c, α , β ) =  1 − ,c< x≤c+β (1.11)
 β
 0, altfel


  c −α + x c + β − x  
µ A ( x, c,α , β ) = max min , , 0  (1.12)
  α β  

Figura 1.3. Funcţie de apartenenţă triunghiulară

Este evident că supp(A) = (c − α , c + β ) . Semnificaţia unui număr fuzzy triunghiular cu


centrul c este „x este aproximativ egal cu c”.

Un cvasi-număr fuzzy este o mulţime fuzzy A pe universul de discurs al mulţimii


numerelor reale, cu o funcţie de apartenenţă convexă şi continuă care satisface condiţia:
lim µ A ( x) = 0 .
x → ±∞

O mulţime fuzzy A este un cvasi-număr fuzzy gaussian cu centrul (media) c şi dispersia


σ dacă funcţia sa de apartenenţă are forma:
2
1  x −c 
−  
µ A ( x, c, σ ) = e 2 σ 
(1.13)

Figura 1.4. Funcţie de apartenenţă gaussiană

Florin Leon, florinleon@yahoo.com, http://eureka.cs.tuiasi.ro/~fleon


Generalizând conceptul de număr fuzzy, definim un interval fuzzy ca fiind o mulţime
fuzzy A pe universul de discurs al mulţimii numerelor reale, cu o funcţie de apartenenţă care
satisface condiţia:

• ∃ x0 , y0 ∈ ℜ, x0 < y0 astfel încât µ A ( x) = 1, ∀x ∈ [ x0 , y0 ] şi µ A ( x) < 1, ∀x ∉ [ x0 , y0 ] .

O mulţime fuzzy A se numeşte interval fuzzy trapezoidal cu intervalul de toleranţă


[c,d], lăţimea la stânga α > 0 şi lăţimea la dreapta β > 0 dacă funcţia sa de apartenenţă are
forma:

 c−x
 1 − , c −α ≤ x ≤ c
α
 1, c < x ≤ d
µ A ( x, c, d , α , β ) =  x−d (1.14)
 1− ,d <x≤d+β
 β
 0, altfel
  c −α + x d +β − x 
µ A ( x, c, d ,α , β ) = max min , 1, , 0  (1.15)
  α β  

Figura 1.5. Funcţie de apartenenţă trapezoidală

Aici supp(A) = (c − α , d + β ) . Semnificaţia unui interval fuzzy trapezoidal cu intervalul


de toleranţă [c,d] este „x este aproximativ între c şi d”.

O altă funcţie de apartenenţă foarte utilizată este funcţia Bell generalizată. Pentru un
cvasi-număr fuzzy A cu centrul c. Fie a = [ µ A ] 0,5 şi q ∈ X astfel încât µ A (q ) = 0,5 . Dacă panta
lui µ A în q este m = b 2a > 0 , atunci:

1
µ A ( x, c, a , b ) = 2b
(1.16)
x−c
1+
a

1
µ A ( x, c, a , m ) = 4 ma
(1.17)
x−c
1+
a

Florin Leon, florinleon@yahoo.com, http://eureka.cs.tuiasi.ro/~fleon


Figura 1.6. Funcţie de apartenenţă Bell generalizată

În general, „laturile” crescătoare şi descrescătoare ale unui (cvasi-)număr sau interval


fuzzy pot fi determinate de funcţii diferite. Fie L, R : [0, ∞) → ℜ două funcţii strict
descrescătoare, cu L(0) = R(0) = 1 . O mulţime fuzzy A pe universul de discurs al mulţimii
numerelor reale se numeşte interval fuzzy de tip L-R dacă ∃ M 1 , M 2 , l , r ∈ ℜ cu M 1 ≤ M 2 ,
l > 0 şi r > 0, astfel încât:

  M1 − x 
 L l , x ≤ M 1
  
  x − M2 
µ A =  R , x ≥ M 2 (1.18)
  r 

 1, M 1 < x < M 2

O funcţie de apartenenţă monoton crescătoare des întâlnită este cea sigmoidă. Fie
c ∈ X astfel încât µ A (c) = 0,5 şi panta lui µ A în c este m = a 4 . Atunci:

1
µ A ( x, c , a ) = −a( x −c)
(1.19)
1+ e

1
µ A ( x, c, m) = − 4m( x −c)
(1.20)
1+ e

Figura 1.7. Funcţie de apartenenţă sigmoidă

Florin Leon, florinleon@yahoo.com, http://eureka.cs.tuiasi.ro/~fleon


1.3. Restrictori

După cum am menţionat, mulţimile fuzzy pot reprezenta în mod cantitativ termeni lingvistici
vagi. În vorbirea curentă, oamenii folosesc o serie de adverbe pentru nuanţarea acestora,
precum „foarte”, „aproape”, „oarecum” etc. Teoria mulţimilor fuzzy face posibilă
reprezentarea lor cu ajutorul unor restrictori (engl. hedge, gard viu, restricţie în general), care
modifică matematic funcţia de apartenenţă a mulţimii fuzzy considerată.

Concentrarea („foarte”) are ca efect reducerea valorilor de apartenenţă ale elementelor


cu grad de apartenenţă mici: µ CON ( A) ( x) = ( µ A ( x)) 2 .

Figura 1.8. Concentrare

Puterea („foarte foarte”) este o extensie a concentraţiei: µCON ( A) ( x) = ( µ A ( x)) n .

Figura 1.9. Putere

Dilatarea („oarecum”) dilată elementele fuzzy prin mărirea valorilor de apartenenţă ale
elementelor cu grade de apartenenţă mici: µ DIL ( A) ( x) = µ A ( x) .

Figura 1.10. Dilatare

10

Florin Leon, florinleon@yahoo.com, http://eureka.cs.tuiasi.ro/~fleon


Intensificarea („într-adevăr”) are ca efect mărirea gradelor de apartenenţă de peste 0,5
2( µ A ( x)) 2 , µ A ( x) ≤ 0,5
şi micşorarea celor sub 0,5: µ INT ( A) =  .
1 − 2(1 − µ A ( x)) , µ A ( x) > 0,5
2

Figura 1.11. Intensificare

1.4. Operaţii cu mulţimi fuzzy


Operaţiile cu mulţimile fuzzy sunt o extindere a celor din logica clasică. Dacă mulţimile fuzzy
implicate au grade de apartenenţă 0 şi 1, semnificaţia operaţiilor este aceeaşi ca în teoria clasică
a mulţimilor, de aceea şi simbolurile utilizate sunt aceleaşi.

Fie A şi B submulţimi fuzzy ale universului de discurs X. Intersecţia lor se defineşte


astfel:

µ A∩ B ( x) = min(µ A ( x), µ B ( x)) = µ A ( x) ∧ µ B ( x), ∀x ∈ X (1.21)

Figura 1.12. Intersecţia a două mulţimi fuzzy

Fie A şi B submulţimi fuzzy ale universului de discurs X. Reuniunea lor se defineşte


astfel:

µ A∪ B ( x) = max(µ A ( x), µ B ( x)) = µ A ( x) ∨ µ B ( x), ∀x ∈ X (1.22)

Figura 1.13. Reuniunea a două mulţimi fuzzy

11

Florin Leon, florinleon@yahoo.com, http://eureka.cs.tuiasi.ro/~fleon


Fie A o submulţime fuzzy a universului de discurs X. Complementul lui A este:

µ A ( x) = 1 − µ A ( x), ∀x ∈ X
C (1.23)

În general, aceste operaţii pot fi definite cu ajutorul unor funcţii numite norme
triunghiulare sau t-norme.
O funcţie T : [0,1]2 → [0,1] se numeşte t-normă dacă respectă:

• x ≤ u , y ≤ v ⇒ T ( x, y ) ≤ T (u , v) (monotonia);
• T ( x, y ) = T ( y , x ) (comutativitatea);
• T (T ( x, y ), z ) = T ( x, T ( y, z )) (asociativitatea);
• T (0, 0) = 0, T ( x,1) = x (condiţiile de limită).

O funcţie S : [0,1]2 → [0,1] se numeşte t-conormă dacă şi numai dacă este comutativă,
asociativă, monoton nedescrescătoare în raport cu ambele argumente şi satisface condiţiile de
limită S ( x, 0) = x, S (1,1) = 1 .
Funcţia S ( x, y ) = 1 − T (1 − x, 1 − y ) se numeşte t-conorma duală a lui T.

Trebuie precizat că funcţiile T şi S satisfac extinderea în cazul mulţimilor fuzzy a


legilor lui De Morgan: A ∪ B = A ∩ B şi A ∩ B = A ∪ B , deoarece condiţiile impuse definesc
intersecţia, respectiv reuniunea mulţimilor fuzzy:

µ A∩ B ( x) = T ( µ A ( x), µ B ( x)), ∀x ∈ X
µ A∪ B ( x) = S ( µ A ( x), µ B ( x)), ∀x ∈ X . (1.24)
Funcţiile T şi S pot avea diverse forme, însă t-normele cele mai utilizate în aplicaţii sunt
următoarele:

Tmin ( x, y ) = min( x, y ) , S min ( x, y ) = max( x, y ) (1.25)


Tprodus ( x, y ) = x ⋅ y , S produs ( x, y ) = x + y − x ⋅ y (1.26)
T£ukasiewicz ( x, y ) = max(0, a + b − 1) , S£ukasiewicz ( x, y ) = min(a + b, 1) (1.27)

Se poate demonstra că aceste t-norme sunt membri ai familiei fundamentale de norme


Frank:

 (λx − 1)(λ y − 1) 
Tλ ( x, y ) = log λ 1 + , λ ∈ (0, ∞) − {1}
 λ −1 
Sλ ( x, y ) = 1 − Tλ (1 − x, 1 − y ) (1.28)

Particularizând, pentru λ = 0 se obţin t-normele min, pentru λ = 1 se obţin t-normele


produs iar pentru λ → ∞ se obţin t-normele Łukasiewicz.

12

Florin Leon, florinleon@yahoo.com, http://eureka.cs.tuiasi.ro/~fleon


O altă familie interesantă de norme este familia Weber:

 x + y − 1 + λxy 
Tλ ( x, y ) = max , 0 , λ ∈ (−1, ∞)
 1+ λ 
 λxy 
S λ ( x, y ) = min x + y − , 1 (1.29)
 1+ λ 

Particularizând, pentru λ = 0 se obţin t-normele Łukasiewicz, pentru λ → ∞ se obţin


t-normele produs iar pentru λ → −1 se obţin t-normele drastice (produs drastic, respectiv
sumă drastică):

 x, y = 1  x, y = 0
 
T−1 ( x, y ) =  y, x = 1 , S −1 ( x, y ) =  y, x = 0 (1.30)
0, altfel 1, altfel
 

1.5. Procesul de inferenţă fuzzy

1.5.1. Tipul de inferenţă Mamdani

În logica fuzzy şi raţionamentul aproximativ, cea mai importantă regulă de inferenţă este
Modus Ponens generalizat. În logica clasică, această regulă de inferenţă era de forma
( p ∧ ( p → q )) → q , adică:

premisă: dacă p, atunci q


fapt: p
consecinţă: q

În logica fuzzy, regula de inferenţă corespunzătoare sugerată de Mamdani [11] este


următoarea:

premisă: dacă x este A, atunci y este B


fapt: x este A'
consecinţă: y este B', unde B' = A'o( A → B) (1.31)

De exemplu: „Premisă: Dacă presiunea este mare, atunci volumul este mic. Fapt:
Presiunea este foarte mare. Consecinţă: Volumul este foarte mic.”. „Presiunea” şi „volumul”
sunt variabile lingvistice, iar „mare” şi „mic” sunt valori lingvistice, caracterizate de funcţii de
apartenenţă.
Dacă A' = A şi B' = B, regula se reduce la Modus Ponens clasic.
Matricea A → B deseori se notează cu M şi se numeşte memorie asociativă fuzzy [7].
Procesul de inferenţă fuzzy este văzut ca o mapare a unei mulţimi fuzzy într-o altă mulţime
fuzzy. M are semnificaţia unei matrici de posibilităţi condiţionate ale elementelor din A şi B:

13

Florin Leon, florinleon@yahoo.com, http://eureka.cs.tuiasi.ro/~fleon


a1 → b1 a1 → b2 ...
M = Π B| A = a2 → b1 ... (1.32)
...

Pentru operaţia de implicaţie pot fi utilizate diferite funcţii de evaluare:

• Łukasiewicz: µ A→ B = min(1 − µ A + µ B , 1) ;
• Kleene-Dienes: µ A→ B = max(1 − µ A , µ B ) ;
• Zadeh: µ A→ B = max(1 − µ A , min( µ A , µ B )) ;
1, µ ≤ µ B
• Gödel: µ A→ B =  A ;
µ B , µ A > µ B
1, µ A = 0
 µ
• Goguen: µ A→ B =  ;
min(1, B ), µ A ≠ 0
 µA
• Reichenbach: µ A→ B = 1 − µ A + µ A ⋅ µ B .

De cele mai multe ori, se preferă pentru implicaţie operatorul minim, adică:
mij = min(ai , b j ) sau produs: mij = ai ⋅ b j .
În primul caz, submulţimea indusă în B, B' se calculează astfel: b j = max(min(ai' , mij )) .
i
Avem de-a face aici cu regula max-min, din care rezultă o mulţime ce reprezintă o variantă
„retezată” a lui B, la înălţimea fixată de A'.

Figura 1.14. Inferenţă Mamdani prin regula max-min

În cel de-al doilea caz, regula max-produs, B' se calculează cu: b j = max(ai' ⋅ mij ) ,
i
rezultând o mulţime care este o variantă scalată a lui B.

Figura 1.15. Inferenţă Mamdani prin regula max-produs

14

Florin Leon, florinleon@yahoo.com, http://eureka.cs.tuiasi.ro/~fleon


De multe ori în practică apar situaţii în care o concluzie trebuie extrasă din premise
multiple, cum ar fi „Dacă A şi B, atunci C”. Dacă ştim A' şi B', mulţimile induse de acestea în
C se calculează mai întâi independent, prin max-min sau max-produs, şi apoi se combină:

C A' ' = A'o M AC


CB' ' = B'o M BC
C ' = C A' ' ∧ CB' ' (1.33)

După ce am determinat mulţimea fuzzy indusă de o regulă de inferenţă, în unele


aplicaţii trebuie obţinută o valoare singulară, strictă, pe baza acestei mulţimi. Procesul se
numeşte defuzzyficare. Cea mai utilizată tehnică de defuzzyficare este metoda centroidului:

∑ x ⋅ µ (x ) i A i
y= i
(1.34)
∑ µ (x )i
A i

Dacă universul de discurs este continuu, atunci:

y= ∫ x ⋅ µ ( x) dxA
(1.35)
∫ µ ( x) dx
A

Figura 1.16. Defuzzyficare

1.5.2. Tipul de inferenţă Takagi-Sugeno

O altă abordare a procesului de inferenţă fuzzy a fost concepută de Takagi şi Sugeno [15]. În
acest caz, regula generală de inferenţă are următoarea formă:

dacă x1 este A1 şi x2 este A2 şi ... şi xn este An atunci y = f r ( x1 , x2 ,..., xn ) ,


unde f r : X 1 × X 2 × ... × X n → Y sunt în general funcţii liniare:
f r ( x1 , x2 ,..., xn ) = a1( r ) ⋅ x1 + ... + an( r ) ⋅ xn + a ( r ) , r = 1,..., k (1.36)

Rezultatul inferenţei (ca valoare strictă) se obţine ca o medie ponderată a rezultatelor


parţiale ale regulilor considerate individual:

15

Florin Leon, florinleon@yahoo.com, http://eureka.cs.tuiasi.ro/~fleon


k

∑w r ⋅ f r ( x1 ,..., xn )
y= r =1
k
(1.37)
∑w
r =1
r

De exemplu, să considerăm o inferenţă pe baza a două reguli:

dacă x este A1 şi y este B1, atunci Z = p1 ⋅ x + q1 ⋅ y + r1 .


dacă x este A2 şi y este B2, atunci Z = p 2 ⋅ x + q2 ⋅ y + r2 . (1.38)

Figura 1.17. Inferenţă Takagi-Sugeno

Vom avea:

z1 = p1 ⋅ x + q1 ⋅ y + r1
z2 = p2 ⋅ x + q2 ⋅ y + r2 (1.39)

Rezultatul strict va fi:

w1 ⋅ z1 + w2 ⋅ z 2
z= . (1.40)
w1 + w2

16

Florin Leon, florinleon@yahoo.com, http://eureka.cs.tuiasi.ro/~fleon


1.6. Concluzii
Teoria mulţimilor fuzzy este cea mai generală teorie a incompletitudinii formulată până în
prezent. Logica fuzzy oferă posibilitatea de a reprezenta şi raţiona cu cunoştinţe comune,
formulate în mod obişnuit şi de aceea şi-a găsit aplicabilitatea în numeroase domenii. Termenii
şi regulile vagi pot fi reprezentate şi manipulate cu ajutorul calculatorului, caracteristică foarte
valoroasă în domeniul ingineriei bazelor de cunoştinţe, unde cunoştinţele experţilor sunt
formulate de obicei în limbaj obişnuit. Logica fuzzy are o valoare deosebită şi în aplicaţiile de
control automat unde este dificil sau imposibil de dezvoltat un sistem de control tradiţional.
În acest capitol, s-au prezentat cele mai importante mărimi care caracterizează
mulţimile fuzzy, diferite tipuri de funcţii de apartenenţă (triunghiulară, gaussiană, trapezoidală,
Bell generalizată, respectiv sigmoidă), a căror alegere depinde de aplicaţiile în care sunt
utilizate. S-au amintit câţiva restrictori, modificatori matematici ai funcţiilor de apartenenţă
pentru termeni lingvistici. S-au precizat operaţiile efectuabile asupra mulţimilor fuzzy,
insistându-se asupra conceptului de normă triunghiulară.
Comparând tipurile de inferenţă propuse de Mamdani şi Sugeno, se poate considera în
general că metoda Mamdani este mai intuitivă şi deci mai potrivită pentru aplicaţiile în care
oamenii trebuie să introducă date direct. Un alt avantaj al său constă în larga răspândire şi
acceptare de care se bucură. Pe de altă parte, metoda Sugeno este mai eficientă din punct de
vedere computaţional, se pretează la tehnicile adaptive şi de optimizare şi este deci mai
potrivită pentru analiza bazată pe tehnici matematice.

Referinţe

[1] A. Abraham: Beyond Neuro-Fuzzy Systems. Reviews, Prospects, Perspectives and


Directions, Monash University, Australia, http://www.bs.monash.edu.au/staff/
Abrahamp/mendel2001.ppt
[2] K. E. Årzén: Real-Time Systems, Lund Institute of Technology, Suedia,
http://www.control.lth.se/~kurstr/L9_01_slides8.pdf
[3] D. Dubois, H. Prade: Fuzzy numbers: An overview, în [12]
[4] D. Dumitrescu, H. Costin: Reţele neuronale, Teorie şi aplicaţii, Ed. Teora, Bucureşti,
1996
[5] IC Tech, Inc.: Fuzzy Control Methods and their Real System Applications,
http://www.ic-tech.com/Fuzzy%20Logic, 2000
[6] J. S. R. Jang: Slides for Fuzzy Sets, Ch. 2 of Neuro-Fuzzy and Soft Computing,
http://neural.cs.nthu.edu.tw/jang/book/slide/ch02.ppt
[7] B. Kosko: Neural Networks and Fuzzy Systems, Prentice Hall, Englewood Cliffs, NJ,
1992, în [16]
[8] R. Kruse, J. Gebhardt, F. Klawonn: Foundations of Fuzzy Systems, John Wiley & Sons,
Chichester, England, 1994
[9] M. Kwiesielewicz: ANFIS: Adaptive Network-Based Fuzzy Inference Systems,
http://www.ely.pg.gda.pl/~mkwies/dyd/sro/anfis_1.doc
[10] M. Kwiesielewicz: Metody sztucznej inteligencji w sterowaniu (strona w trakcie
tworzenia), http://www.ely.pg.gda.pl/~mkwies/dyd/sro, 1997

17

Florin Leon, florinleon@yahoo.com, http://eureka.cs.tuiasi.ro/~fleon


[11] E. H. Mamdani: Application of Fuzzy Logic to Approximate Reasoning Using
Linguistic Systems, IEEE Trans. on Computers, 26:1182-1191, 1977, în [8]
[12] M. Mareš: Computation Over Fuzzy Quantities, CRC Press, Boca Raton, 1994
[13] W. Pedrycz: Computational Intelligence: An Introduction, CRC Press, Boca Raton,
1997
[14] B. Qiu: Sugeno Type Fuzzy Inference, Monash University, Australia,
http://www.csse.monash.edu.au/~bq/teaching/cse5301/ch8.ppt
[15] H. Takagi, M. Sugeno: Fuzzy Identification of Systems and its Application to Modelling
and Control, IEEE Trans. on Systems, Man, and Cybernetics, 15:116-132, 1985, în [8]
[16] J. K. Wu: Neural Networks and Simulation Methods, Marcel Dekker, New York, 1994
[17] L. A. Zadeh: Fuzzy Sets, Information and Control, 8:338-353, 1965

18

Florin Leon, florinleon@yahoo.com, http://eureka.cs.tuiasi.ro/~fleon


Capitolul 2

Reţele neuronale
2.1. Noţiuni fundamentale
2.2. Caracteristici ale reţelelor neuronale
2.2.1. Modelul neuronului
2.2.2. Arhitectura reţelei
2.2.3. Algoritmi de antrenare
2.2.3.1. Algoritmul back-propagation
2.2.3.2. Metode de accelerare a învăţării
2.2.3.3. Învăţarea cu întărire
2.2.3.4. Învăţarea hebbiană
2.2.3.5. Algoritmul Kohonen
2.3. Concluzii

2.1. Noţiuni fundamentale


Preocuparea pentru reţelele neuronale artificiale, denumite în mod curent „reţele neuronale”, a
fost motivată de recunoaşterea faptului că modul în care calculează creierul fiinţelor vii este
complet diferit de cel al calculatoarelor numerice convenţionale. Spre deosebire de maşinile
von Neumann, unde există o unitate de procesare care execută instrucţiunile stocate în memorie
în mod serial, numai o instrucţiune la un moment dat, reţelele neuronale utilizează în mod
masiv paralelismul. Fiind modele simplificate ale creierului uman, ele deţin capacitatea de a
învăţa, spre deosebire de calculatoarele convenţionale, care rămân totuşi mai eficiente pentru
sarcinile bazate pe operaţii aritmetice precise şi rapide. Reţelele neuronale nu dispun de unităţi
de procesare puternice, dimpotrivă, acestea sunt caracterizate printr-o simplitate extremă, însă
interacţiunile lor pe ansamblu produc rezultate complexe datorită numărului mare de
conexiuni.
Pentru a înţelege mai bine această abordare, trebuie precizat modul de funcţionare al
sistemului nervos. Constituienţii structurali ai creierului sunt neuronii, conectaţi prin sinapse.
Se estimează că în cortexul uman există circa 10 miliarde de neuroni şi 60 de trilioane de
sinapse. Trebuie precizat însă că neuronii nu sunt cele mai numeroase celule din creier.
Celulele gliale sunt de 10 ori mai multe. În mod tradiţional, se considera că acestea au numai
funcţii de nutriţie şi protecţie, însă în ultimul timp au demarat cercetări privitoare la influenţa
lor potenţială asupra activităţii de procesare a neuronilor.
Neuronul constă în principal din trei componente: corpul celulei (soma), dendrite şi
axon. Dendritele (numite astfel datorită asemănării cu un copac – „dendron” în greacă) sunt
„intrările” neuronului, fibre scurte ramificate, de câţiva milimetri, care primesc impulsuri.
Axonul („axōn” – axă), „ieşirea”, este o fibră mai lungă, de câţiva centimetri, putând ajunge
însă la 1-1,5 metri. Fiecare neuron are un singur axon şi mai multe (10-20) de dendrite.
O schiţă a unui neuron este prezentată în figura următoare [2]:

19

Florin Leon, florinleon@yahoo.com, http://eureka.cs.tuiasi.ro/~fleon


Figura 2.1. Schiţa unui neuron biologic

Neuronii nu se ating în mod direct, ci sunt separaţi prin spaţii numite sinapse. Acestea
sunt unităţi structurale şi funcţionale elementare care mediază interacţiunile dintre neuroni.
Tipul cel mai răspândit de sinapsă este sinapsa chimică, ce operează astfel: un proces
presinaptic eliberează o substanţă transmiţătoare, care difuzează peste joncţiunea sinaptică
dintre neuroni şi apoi acţionează asupra unui proces postsinaptic. Astfel o sinapsă converteşte
un semnal electric presinaptic într-un semnal chimic (ioni de sodiu şi potasiu) şi apoi din nou
într-un semnal electric postsinaptic.
În descrierile tradiţionale ale organizării neuronale, se consideră că o sinapsă este o
conexiune simplă care poate impune excitare sau inhibare, dar nu ambele, neuronului receptor.
Ambele efecte sunt locale; ele se propagă pe o distanţă mică în corpul celulei şi sunt însumate
la nivelul axonului. Dacă suma potenţialelor de excitare depăşeşte un anumit prag, atunci
neuronul este activat şi transmite un impuls mai departe.
În mod analog funcţionează şi o reţea neuronală artificială. În cea mai general formă a
sa, o reţea neuronală este o maşină proiectată pentru a modela felul în care creierul rezolvă o
anumită problemă sau execută o funcţie cu un anumit scop; reţeaua este de obicei implementată
folosindu-se componente electronice sau simulată prin software pe un calculator digital.

Simon Haykin [8] consideră că o reţea neuronală este un procesor masiv paralel,
distribuit, care are o tendinţă naturală de a înmagazina cunoştinţe experimentale şi de a le face
disponibile pentru utilizare. Ea se aseamănă cu creierul în două privinţe:
• Cunoştinţele sunt căpătate de reţea printr-un proces de învăţare;
• Cunoştinţele sunt depozitate nu în unităţile de procesare (neuroni), ci în conexiunile
interneuronale, cunoscute drept ponderi sinaptice.

Procedura folosită pentru a executa procesul de învăţare se numeşte algoritm de


învăţare, funcţia căruia este de a modifica ponderile sinaptice ale reţelei într-un stil sistematic
pentru a atinge obiectivul dorit de proiectare. Printre numeroasele proprietaţi interesante ale
unei reţele neuronale, cea mai semnificativă este abilitatea acesteia de a învăţa prin intermediul
mediului înconjurător, şi prin aceasta să-şi îmbunătăţească performanţele; creşterea
performanţelor are loc în timp şi conform cu unele reguli prestabilite. O reţea neuronală îşi
învaţă mediul printr-un proces iterativ de ajustări aplicate conexiunilor şi pragurilor sale
sinaptice. În mod ideal, reţeaua devine mai inteligentă după fiecare iteraţie a procesului de
învăţare.

20

Florin Leon, florinleon@yahoo.com, http://eureka.cs.tuiasi.ro/~fleon


În contextul reţelelor neuronale vom defini astfel învăţarea: un proces prin care
parametrii variabili ai unei reţele neuronale se adaptează printr-un proces continuu de stimulare
din partea mediului în care este inclusă. Tipul de învăţare este determinat de modul în care au
loc schimbările parametrilor.
Definiţia învăţării implică următoarea secvenţă de evenimente:

• Reţeaua neuronală este stimulată de un mediu;


• Reţeaua neuronală suferă schimbări datorită acestor stimulări;
• Reţeaua neuronală răspunde în mod diferit mediului datorită schimbărilor care au
apărut în structura sa internă.

2.2. Caracteristici ale reţelelor neuronale


Cu toate că asemănarea între sistemul nervos biologic şi reţelele neuronale artificiale
este relativ mică, reţelele neuronale artificiale prezintă un număr surprinzător de caracteristici
ale creierului. De exemplu, acestea pot învăţa din experienţă, generaliza din anumite exemple
altele noi şi sintetiza caracteristicile esenţiale din intrări ce conţin si date irelevante. Un mare
avantaj al reţelelor neuronale este că pot descrie o problemă şi să o rezolve în acelaşi timp, prin
autoorganizarea lor şi nu prin program. Acest proces de auto-organizare are loc pe parcursul
unui proces de învăţare obţinut prin cooperarea unei topologii iniţiale, a unor reguli de învăţare
şi a unui număr mare de antrenamente. Caracteristicile cele mai importante ale reţelelor
neuronale sunt:

• Capacitatea de a învăţa: Reţelele neuronale artificiale nu necesită programe puternice,


ci sunt mai degrabă rezultatul unor antrenamente asupra unui set de date. Reţelele
neuronale artificiale au un algoritm de învăţare, după care ponderile conexiunilor sunt
ajustate pe baza unor modele prezentate. Cu alte cuvinte, reţelele neuronale învaţă din
exemple, precum copii învaţă să recunoască un obiect pe baza unor instanţe ale acelui
tip de obiect;
• Capacitatea de generalizare: Dacă au fost instruite corespunzător, reţelele sunt
capabile să dea răspunsuri corecte şi pentru intrări diferite faţă de cele cu care au fost
antrenate, atâta timp cât aceste intrări nu sunt foarte diferite;
• Capacitatea de sinteză: Reţelele neuronale artificiale pot lua decizii sau trage concluzii
când sunt confruntate cu informaţii afectate de zgomote sau cu informaţii irelevante sau
parţiale.

Datorită acestor trăsături ale prelucrării informaţiei reţelele neuronale pot rezolva
probleme complexe care sunt dificil de abordat prin metode clasice. Cu toate acestea,
cercetătorii recunosc că mai au un drum lung de parcurs până vor ajunge să construiască un
calculator care să imite creierul omenesc. „Inteligenţa” la care au ajuns în prezent cele mai
sofisticate reţele neuronale este sub nivelul unui copil de ciţiva ani. Cu toate acestea nu trebuie
minimizată sau ignorată importanţa reţelelor neuronale artificiale şi este posibil ca pe viitor, cu
ajutorul lor să ajungem la o cunoaştere mai aprofundată a fenomenelor ce au loc in creierul
uman. Ceea ce recomandă reţelele neuronale artificiale este raportul favorabil performanţă –
complexitate, aflat într-o continuă creştere şi care este mult mai mare decât cel al sistemelor de
inteligenţă artificială implementate prin alte tehnologii.
Din punct de vedere structural, reţelele neuronale se caracterizează prin trei elemente:
modelul neuronului, arhitectura reţelei şi algoritmul de antrenare folosit.

21

Florin Leon, florinleon@yahoo.com, http://eureka.cs.tuiasi.ro/~fleon


2.2.1. Modelul neuronului

Neuronul prezintă o structură foarte simplă, având:

• un nivel de activare (de regulă între –1 şi 1);


• o valoare de ieşire;
• o valoare reziduală;
• o funcţie de activare;
• o mulţime de conexiuni de intrare;
• o mulţime de conexiuni de ieşire.

Figura 2.2. Modelul unui neuron

Fiecărei conexiuni îi corespunde o valoare reală, numită pondere sinaptică, care


determină efectul intrării respective asupra nivelului de activare a neuronului. În figura
anterioară, xi reprezintă intrările, wi ponderile sinaptice, f funcţia de activare, θ valoarea prag
iar y ieşirea, care se calculează după formula:

 n 
y = f  ∑ wi xi − θ  (2.1)
 i =1 

Nu se restrânge generalitatea dacă se consideră θ = 0, deoarece acest lucru este


echivalent cu adăugarea unei noi conexiuni de intrare, cu valoare –1 şi pondere θ:

Figura 2.3. Modelul unui neuron cu valoare prag nulă

22

Florin Leon, florinleon@yahoo.com, http://eureka.cs.tuiasi.ro/~fleon


Primele încercări de calcul conexionist utilizau funcţii de activare liniare. Perceptronul
0, s < 0
lui Rosenblatt [18] folosea funcţia prag: f( s ) =  .
1, s ≥ 0

Figura 2.4. Funcţia de activare prag

Neuronul Adaline propus de Widrow şi Hoff [27] avea tot o funcţie de activare prag, cu
− 1, s < 0
valorile –1 şi 1: f( s ) =  .
1, s ≥ 0

Figura 2.5. Funcţia de activare prag a neuronului Adaline

În unele cazuri se utilizează funcţii liniare sau semiliniare: f( s ) = s

Figura 2.6. Funcţia de activare liniară

23

Florin Leon, florinleon@yahoo.com, http://eureka.cs.tuiasi.ro/~fleon


− 1, s < −1

sau f( s ) = s, | s |≤ 1 .
1, s > 1

Figura 2.7. Funcţia de activare semiliniară

Principala limitare a acestor funcţii de activare este faptul că prin intermediul lor nu se
pot rezolva decât probleme liniar separabile. Să presupunem că există două clase de obiecte şi
dorim ca reţeaua să ne indice corect apartenenţa unei anumite instanţe la una din clase:
{ } { }
C1 = x k | y k = 0 şi C 2 = x k | y k = 1 . Dacă există un vectori de ponderi potrivit, atunci:

s < 0, ∀x ∈ C1

s > 0, ∀x ∈ C 2

Un exemplu foarte simplu în acest sens este efectuarea unei operaţii binare elementare
(şi, sau):

Figura 2.8. Probleme liniar separabile: şi, sau

24

Florin Leon, florinleon@yahoo.com, http://eureka.cs.tuiasi.ro/~fleon


Minsky şi Papert [14] au demonstrat însă că modelul perceptronului are limitări
serioase în ceea ce priveşte problemele neseparabile liniar, cum ar fi operaţia xor:

Figura 2.9. Problemă liniar neseparabilă: xor

De aceea, tipurile de reţele utilizate în prezent dispun de mai multe straturi de neuroni
cu funcţii de activare neliniare, cum ar fi funcţiile sigmoide. Avem astfel funcţia sigmoidă
1
unipolară (funcţia logistică): f( s ) =
1 + e −s

Figura 2.10. Funcţia de activare sigmoidă unipolară

2 1 − e−s
sau funcţia sigmoidă bipolară (tangenta hiperbolică): f( s ) = −1 = .
1 + e −s 1 + e −s

Figura 2.11. Funcţia de activare sigmoidă bipolară

În aplicaţii mai sofisticate se folosesc şi modele variabile în timp, care iau în


consideraţie timpul necesar activării şi dezactivării neuronului.

25

Florin Leon, florinleon@yahoo.com, http://eureka.cs.tuiasi.ro/~fleon


2.2.2. Arhitectura reţelei

Din punct de vedere al arhitecturii, reţelele neuronale artificiale se clasifică în două mari grupe:

• Reţele feed-forward, unde semnalele se transmit în interiorul reţelei într-o singură


direcţie: de la intrare spre ieşire. Nu există bucle, ieşirea fiecărui neuron neafectând
neuronul respectiv. De obicei, sunt utilizate în recunoaşterea de imagini ;
• Reţele feed-back, în care impulsurile se pot transmite în ambele direcţii, introducând
conexiuni de reacţie în arhitectura reţelei. Aceste tipuri de reţele sunt foarte puternice şi
pot fi extrem de complicate. Sunt dinamice, starea lor schimbându-se permanent, până
când reţeaua ajunge la un punct de echilibru. Căutarea unui nou echilibru are loc la
fiecare schimbare a intrării. Aceste arhitecturi sunt deseori numite reţele recurente.

O reţea neuronală feed-forward simplă constă din aranjarea unui grup de neuroni
într-un singur strat:

Figura 2.12. Reţea neuronală feed-forward cu un strat

Aceasta are N intrări şi K ieşiri. Fiecare intrare se aplică tuturor celor K neuroni.
Vectorul de ieşire va rezulta din aplicarea funcţiei de activare produsului scalar al matricei
ponderilor W cu vectorul de intrare X:

S = W T ⋅ X ⇒ Y = f ( S ) = f (W T ⋅ X ) (2.2)

x1 w11 w21 ... wK 1


x w w22 ... wK 2
X= 2 W = 12 (2.3)
... ... ... ... ...
xN w1N w2 N ... wKN

Perceptronul cu 3 straturi este o reţea cu un strat de intrare, un strat de ieşire şi un strat


intermediar („ascuns”). În general, cele mai utilizate arhitecturi de reţele neuronale sunt cele
feed-forward multistrat:

26

Florin Leon, florinleon@yahoo.com, http://eureka.cs.tuiasi.ro/~fleon


Figura 2.13. Reţea neuronală feed-forward multistrat

Există câteva structuri de reţele neuronale artificiale consacrate şi foarte des utilizate,
deoarece au oferit rezultate încurajatoare în diverse aplicaţii :

• Reţele cu învăţare supervizată:


o feed-back
! Maşina Boltzmann;
! Learning Vector Quantization (LVQ);
o feed-forward
! Perceptron, Adaline, Madaline ;
• Reţele cu învăţare nesupervizată:
o feed-back
! Reţele Grossberg;
! Reţele Hopfield (discrete şi continue);
! Memorii asociative (bidirecţionale şi temporale);
! Reţele Kohonen cu auto-organizare;
o feed-forward
! Memorii asociative liniare, distribuite;
! Memorii asociative fuzzy.

Reţelele multistrat nu asigură o creştere a puterii de calcul în raport cu reţelele cu un


singur strat dacă nu e prezentă o funcţie de activare neliniară între strate. Funahashi a
demonstrat [6] că o reţea (posibil infinită) cu un singur strat ascuns este capabilă că aproximeze
orice funcţie continuă.
De asemenea, aplicând teorema Stone-Weierstrass în domeniul reţelelor neuronale, s-a
demonstrat că acestea pot calcula anumite expresii polinomiale: dacă există două reţele care
calculează exact două funcţii f1, respectiv f2, atunci există o reţea mai mare care calculează
exact o expresie polinomială de f1 şi f2.

27

Florin Leon, florinleon@yahoo.com, http://eureka.cs.tuiasi.ro/~fleon


2.2.3. Algoritmi de antrenare

Reţelele neuronale au capacitatea de a învăţa, însă modalitatea concretă în care se realizează


acest proces este dată de algoritmul folosit pentru antrenare. O reţea se consideră antrenată
dacă aplicarea unui vector de intrare conduce la obţinerea unei ieşiri dorite, sau foarte apropiate
de aceasta.
Antrenarea constă în aplicarea secvenţială a diferiţi vectori de intrare şi ajustarea
ponderilor din reţea în raport cu o procedură predeterminată. În acest timp, ponderile
conexiunilor converg gradual spre anumite valori pentru care fiecare vector de intrare produce
vectorul de ieşire dorit.
Există două tipuri importante de învăţare: supervizată şi nesupervizată. Învăţarea
supervizată presupune aplicarea unei perechi vector de intrare – vector de ieşire dorit. După
aplicarea unei intrări, se compară ieşirea calculată cu ieşirea dorită, după care diferenţa este
folosită pentru modificarea ponderilor cu scopul minimizării erorii la un nivel acceptabil.
Acest tip de antrenare dă rezultate bune, însă nu are corespondent în lumea vie, unde nu
există mecanism de instruire care să compare ieşirile dorite cu cele reale şi să propage
corecţiile în reţeaua de neuroni. Totuşi, s-a pus în evidenţă un proces de auto-organizare a
creierului. În învăţarea nesupervizată, mulţimea de instruire constă numai în vectori de intrare
iar scopul algoritmului este producerea de vectori de ieşire consistenţi, adică două semnale
foarte apropiate vor produce răspunsuri identice sau foarte asemănătoare. Astfel, vectorii
similari sunt grupaţi în clase, proces numit şi clusterizare.

2.2.3.1. Algoritmul back-propagation

Algoritmul back-propagation [26, 19] este cel mai cunoscut şi utilizat algoritm de învăţare
supervizată. Numit şi algoritmul delta generalizat, el se bazează pe minimizarea diferenţei
dintre ieşirea dorită şi ieşirea reală, prin metoda gradientului descendent.
Gradientul ne spune cum variază o funcţie în diferite direcţii. Ideea algoritmului este
găsirea minimului funcţiei de eroare în raport cu ponderile conexiunilor. În continuare se vor
prezenta paşii algoritmului, pentru o reţea cu un singur strat ascuns şi o singură unitate de
ieşire.

Figura 2.14. Reţea neuronală antrenată cu algoritmul back-propagation

28

Florin Leon, florinleon@yahoo.com, http://eureka.cs.tuiasi.ro/~fleon


Se consideră mulţimea de antrenare:

{(x , y ), ... , (x
1 1 K
)}
, yK ,

( )
unde x k = x1k , ..., x nk , y k ∈ şi k = 1, ... , K

• Pasul 1: Se aleg rata de învăţare η şi eroarea maximă acceptabilă Emax


• Pasul 2: Se iniţializează ponderile w cu valori aleatorii mici, k = 1, eroarea curentă E =
0
• Pasul 3: Începe procesul de antrenare. Se prezintă vectorul de intrare xk şi se calculează
1
ieşirea O: O = T
, unde ol este vectorul de ieşire al stratului ascuns:
1 + e −W ol
1
ol = T k
, l = 1, ... , L
1 + e − wl x
• Pasul 4: Se actualizează ponderile unităţii de ieşire: W = W + ηδ o , unde
δ = ( y k − O) O (1 − O)
• Pasul 5: Se actualizează ponderile unităţilor din stratul ascuns:
wl = wl + ηδ Wl ol (1 − ol ) x k
( y k − O) 2
• Pasul 6: Se actualizează eroarea cumulativă pe ciclu de antrenare: E = E +
2
• Pasul 7: Dacă k < K, atunci k = k + 1 şi se sare la Pasul 2, altfel se trece la Pasul 8
• Pasul 8: Ciclul de antrenare s-a încheiat. Dacă E < Emax se termină sesiunea de
antrenare. Dacă E > Emax, atunci E = 0, k = 1 şi se începe un nou ciclu de antrenare la
Pasul 3

Trebuie precizat că formulele amintite de actualizare a ponderilor se bazează pe o


funcţie de activare sigmoidă unipolară. În cazul altor funcţii, formulele se modifică.

2.2.3.2. Metode de accelerare a învăţării

În forma prezentată, algoritmul de propagare înapoi nu are întotdeauna o bună convergenţă.


Din această cauză, timpii de antrenament pot să fie foarte mari, mai ales pentru probleme mai
complicate, cu aplicabilitate în practică, nu doar teoretice. În continuare sunt prezentate câteva
metode de îmbunătăţire a algoritmului de propagare înapoi.

Metoda Momentum

Metoda Momentum a fost prezentată de către Rumelhart, Hinton şi Williams [20] şi propune
adăugarea unui termen la ajustarea ponderilor. Acest termen este proporţional cu ultima
modificare a ponderii. Adică valorile cu care se ajustează ponderile sunt memorate şi
influenţează în mod direct toate ajustările ulterioare.

29

Florin Leon, florinleon@yahoo.com, http://eureka.cs.tuiasi.ro/~fleon


w k = w k −1 + δw k (2.4)

δe
δw k = η ⋅ + α ⋅ δw k −1 , (2.5)
δw k

unde δw k este este valoarea gradienţilor cu care se ajustează ponderile w în pasul k al unei
epoci de antrenare, iar e este funcţia de eroare pătratică medie.
Experimental, valoarea constantei α s-a stabilit la valoarea 0,9. Tot experimental s-a
demonstrat că această metodă este benefică numai în unele probleme, pe cînd în altele
micşorează performanţele algoritmului de propagare înapoi.
O variaţie a metodei Momentum este următoarea:

w k = w k −1 + η ⋅ δw k (2.6)

δe
δw k = α ⋅ δw k −1 + (1 − α ) ⋅ , (2.7)
δw k

unde α este un coeficient de netezire, luând valori în domeniul [0,1].


Pentru α = 0, ajustarea ponderii se face numai în funcţie de noua valoare calculată, iar
pentru α = 1, ajustarea ponderii se face cu vechea valoare, aceeaşi de la pasul anterior,
ignorându-se noua valoare calculată la pasul respectiv. Bineînţeles că acestea sunt cazurile
extreme, iar pentru ca metoda să-şi facă efectul trebuie ca α să fie între 0 şi 1, dar nu 0 sau 1.
O îmbunătăţire interesantă a reţelelor care folosesc algoritmul de propagare înapoi
derivă din faptul că domeniul [0,1] nu este cel mai potrivit potrivit pentru ieşirile neuronilor,
pentru că δw, variaţia unei ponderi, este proporţională cu ieşirea neuronului din nivelul
anterior, şi în cazul cînd acesta este 0, nu se produce nici o modificare de ponderi. Deci, în
cazul vectorilor de intrare binari, ponderile conexiunilor intrărilor care sunt 0 nu vor fi ajustate.
 1 1
Prin urmare, îmbunătăţirea constă în schimbarea domeniului de intrare de la [0,1] la − , 
 2 2
şi folosirea unei funcţii de activare de forma:

1 1
F ( x) = − + (2.8)
2 1 + e−x

Folosirea unei rate de învăţare variabile

Această metodă este o tehnică simplă de accelerare a învăţării, propusă de Silva şi Almeida
[21, 22] şi constă în utilizarea unei rate de învăţare individuale pentru fiecare pondere şi
adaptarea acestor parametri în fiecare iteraţie, în funcţie de semnele succesive ale gradienţilor:

u ⋅η k −1 , sgn(δw k ) = sgn(δw k −1 )


ηk = 
d ⋅η , sgn(δw ) = − sgn(δw )
k −1 k k −1

Valori tipice care funcţionează bine în cele mai multe situaţii sunt: u = 1.2 şi d = 0.8.
În cadrul învăţării, se realizează de fapt determinarea cît mai fidelă a minimului funcţiei
de eroare pătratică medie, considerată ca o funcţie de mai multe variabile, adică de ponderi.

30

Florin Leon, florinleon@yahoo.com, http://eureka.cs.tuiasi.ro/~fleon


Dacă n este numărul de ponderi ajustabile, atunci funcţia de eroare pătratică medie determină
în spaţiul n+1 dimensional un hipercub. Iniţial se porneşte de la valori aleatoare ale ponderilor,
adică dintr-un punct oarecare al hipercubului, şi, pe măsură ce se derulează epocile de învăţare,
acest punct se deplasează pe hipercub în paşi discreţi, apropiindu-se de minimul global al
hipercubului. Rata de învăţare reglează tocmai mărimea paşilor de deplasare spre minimul
global. Prin urmare, rata de învăţare ar trebui să fie un parametru variabil, avînd în permanenţă
valoarea invers proporţională cu gradul de învăţare al reţelei. La un grad mic de învăţare, o
valoare mare a ratei de învăţare, iar la grad mare de învăţare, o valoare mică a ratei de învăţare.
Geometric, gradul de învăţare este o măsură a distanţei dintre punctul de hipercub care este
determinat de starea curentă a reţelei (valorile curente ale ponderilor) şi minimul global de
hipercub.
Interpretarea geometrică a unui proces de antrenare a unei reţele neuronale artificiale,
folosind o rată de învăţare variabilă, invers proporţională cu gradul de învăţare, poate fi
următoarea: deplasarea punctului stării curente pe hipercub spre minimul global, în paşi
proporţionali cu distanţa dintre punctul curent şi minimul global. Astfel, iniţial se asigură o
apropiere rapidă de soluţie, apoi, în paşi tot mai mici, existînd şansa ca la sfîrşitul procesului de
antrenament să se ajungă foarte aproape de minimul global.
În consecinţă, o rată de învăţare variabilă introduce două mari avantaje:

• Măreşte viteza de învăţare, reţeaua ajungînd să înveţe repede, într-un număr mic de
epoci;
• Măreşte gradul de învăţare, reţeaua ajungînd la performanţe bune (la terminarea
atenuării reţelei, punctul stării curente este aproape de cel corespunzător minimului
global).

O rată de învăţare constantă şi mare poate transforma algoritmul de învăţare convergent


într-unul oscilant. Geometric, pasul mare de deplasare al punctului curent împiedică apropierea
la o distanţă acceptabilă faţă de minimul global. Practic, procesul de învăţare poate să eşueze,
reţeaua nereuşind niciodată să înveţe. O rată de învăţare constantă şi mică măreşte foarte mult
numărul de iteraţii necesare învăţării reţelei, deci micşorează viteza de învăţare. În concluzie,
teoretic, o rată de învăţare variabilă este benefică pentru algoritmul de învăţare.

2.2.3.3. Învăţarea cu întărire

Învăţarea cu întărire este o clasă intermediară de învăţare, unde nu există un instructor, ca în


învăţarea supervizată, ci un critic, care indică nivelul de corectitudine al răspunsului (de multe
ori, el precizează doar dacă răspunsul e bun sau rău). Sistemul trebuie să înveţe ce trebuie să
facă pentru maximizarea acestui semnal de recompensă. Nu i se spune direct ce acţiune trebuie
să aleagă în pasul următor, ci trebuie să descopere singur ce acţiuni prezintă cel mai mare
beneficiu. În cele mai interesante cazuri, o acţiune nu afectează numai recompensa imediată, ci
şi situaţia următoare şi deci toate recompensele ulterioare. Aceste două caracteristici,
„încercare şi eroare” şi recompensa întârziată, sunt cele mai importante trăsături prin care se
distinge învăţarea cu întărire.
Acest tip de învăţare se deosebeşte de învăţarea supervizată, care foloseşte exemple
furnizate de un supervizor extern. Acest model nu este totuşi potrivit învăţării pe baza
interacţiunilor. Deseori, în probleme interactive sunt dificil de obţinut exemple de
comportament atât corecte cât şi reprezentative pentru toate situaţiile în care se poate găsi
sistemul. În situaţii de nedeterminare, acesta trebuie să înveţe din propria experienţă.

31

Florin Leon, florinleon@yahoo.com, http://eureka.cs.tuiasi.ro/~fleon


O altă trăsătură esenţială a învăţării cu întărire este faptul că se ia în considerare
problema în ansamblu. Aceasta constrastează cu multe abordări de tip „divide et impera” care
nu studiază şi modul în care subproblemele se încadrează în cadrul general.
O problemă specifică învăţării cu întărire este compromisul care trebuie stabilit între
explorare şi exploatare. Pentru a obţine o recompensă suficient de mare, sistemul poate prefera
alegerea unor acţiuni pe care le-a încercat anterior şi care s-au dovedit eficiente. Dar pentru
descoperirea unor asemenea acţiuni, el trebuie să aleagă şi acţiuni pe care nu le-a selectat în
trecut. Sistemul trebuie să „exploateze” ceea ce ştie deja pentru a obţine o recompensă, dar
trebuie în acelaşi timp să „exploreze” posibilitatea găsirii altor acţiuni potrivite pentru viitor.
Sistemul trebuie să încerce o varietate de acţiuni şi apoi să le aleagă pe acelea care par optime.
Una din cele mai cunoscute metode de învăţare cu întărire în medii dinamice este cea a
diferenţelor temporale. Algoritmii bazaţi pe această metodă s-au dovedit foarte eficienţi în
domeniul jocurilor pe calculator. Programele care învăţau astfel, jucând împotriva a diverşi
adversari umani sau chiar împotriva lor înseşi, au reuşit să atingă nivele expert de performanţă,
de exemplu, jocul de table TD-Gammon [24], jocul de şah NeuroChess [25] sau jocul de dame
NeuroDraughts [12].
Metoda diferenţelor temporale poate fi văzută ca o extindere a algoritmului back-
propagation. Regula de ajustare a ponderilor este în acest caz:

t
∂rk
∆wt = η (rt +1 − rt ) ∑ λt −k , (2.9)
k =1 ∂W

unde η este rata de învăţare, rt este recompensa estimată la momentul t, t reprezintă momentul
∂r
dinaintea unei mutări iar t + 1 momentul de după mutare, k este gradientul recompenselor
∂W
în spaţiul ponderilor iar W reprezintă vectorul tuturor ponderilor la momentul t.

2.2.3.4. Învăţarea hebbiană

După cum am amintit, învăţarea nesupervizată are ca scop clusterizarea datelor de intrare,
adică gruparea obiectelor similare şi separarea celor diferite, în lipsa unor informaţii a priori în
acest sens. De cele mai multe ori, reţelele neuronale care utilizează acestă paradigmă de
învăţare sunt foarte simple, cu un singur strat. Neexistând un instructor, reţeaua trebuie să se
auto-organizeze în conformitate cu unele reguli interne ca răspuns la stimulii din mediul extern.
Una din cele mai plauzibile legi de învăţare din punct de vedere biologic poartă numele
de învăţare hebbiană, după numele neurofiziologului Donald Hebb [9]. Ideea centrală este
modificarea ponderii unei conexiuni proporţional cu produsul intrării şi ieşirii conexiunii
respective:

∆wi = η y xi , (2.10)

unde η este rata de învăţare, y reprezintă ieşirea conexiunii iar xi este o intrare a acesteia.
Una din problemele învăţării hebbiene este faptul că ponderile pot creşte nelimitat dacă
intrarea nu este normalizată corespunzător, iar învăţarea nu se termină niciodată. O normalizare
foarte eficientă a regulii lui Hebb a fost propusă de E. Oja [17]:

∆wi = η y ( xi − y wi ) (2.11)

32

Florin Leon, florinleon@yahoo.com, http://eureka.cs.tuiasi.ro/~fleon


Regula lui Oja produce un sistem optim, care maximizează semnalele utile în raport cu
zgomotul şi care poate fi folosit pentru extragerea de trăsături. Reţeaua poate fi extinsă pentru
M unităţi de ieşire:

 
∆wij = η yi  x j − ∑ yi wkj  , (2.12)
 k 

unde:

yi = ∑ wij x j , i = 1, …, M (2.13)
j

2.2.3.5. Algoritmul Kohonen

O altă abordare a învăţării nesupervizate este aşa-numita învăţare competitivă. Să considerăm


pentru început reţeaua Kohonen [10], care clasifică vectorii de intrare într-una din m categorii,
{ }
pe baza mulţimii de antrenare x1 , ... , x K :

Figura 2.15. Reţea neuronală antrenată cu algoritmul Kohonen

Algoritmul tratează mulţimea celor m vectori ai ponderilor ca variabile care trebuie


învăţate. Este necesară normalizarea acestora. Acest tip de învăţare se mai numeşte şi
„învingătorul ia tot”, deoarece la un moment dat este actualizat numai vectorul ponderilor cel
mai similar cu o intrare. Este selectat vectorul wr pentru care x − wr = min x − wi . Indexul r
i =1,..., m

desemnează neuronul „învingător”, ale cărui ponderi sunt cele mai bune aproximări ale intrării
curente x.
Algoritmul poate fi sintetizat în următorii paşi:

• Pasul 1: wr = wr + η ( x − wr ) , unde rata de învăţare η se alege de obicei între 0,1 şi 0,7;


iar ieşirea or = 1
w
• Pasul 2: Se normalizează vectorii: wr = r
wr

33

Florin Leon, florinleon@yahoo.com, http://eureka.cs.tuiasi.ro/~fleon


• Pasul 3: Neuronii necâştigători rămân neschimbaţi: wi = wi, oi = 0, pentru ∀i ≠ r

La sfârşitul procesului, vectorii ponderilor indică centrele de greutate ale claselor


descoperite:

Figura 2.16. Clusterizare

Reţeaua poate fi antrenată numai dacă clasele sunt liniar separabile de hiperplane care
trec prin origine. Pentru a asigura separabilitatea acestora, învăţarea se poate face cu un număr
excesiv de mare de neuroni. În timpul antrenării, unii neuroni nu-şi vor dezvolta ponderile sau
acestea vor evolua în mod haotic. Ei nu vor fi luaţi în consideraţie la final. Ponderile celorlalţi
neuroni se vor stabiliza la valorile care indică clusterele.

2.3. Concluzii
Reţelele neuronale îşi dovedesc în principal utilitatea în rezolvarea unor probleme dificile, cum
sunt cele de estimare, identificare şi predicţie, sau de optimizare complexă. Datorită
independenţei efectuării operaţiilor din interiorul componentelor faţă de celelalte componente
din sistem, modelele conexioniste au un potenţial mare de paralelism.
Modul de memorare şi procesare a datelor diferenţiază reţelele neuronale artificiale de
programele clasice, care urmează instrucţiunile într-o ordine secvenţială predefinită, iar
informaţia este memorată în zone bine definite. Datorită capacităţii lor de a rezolva probleme
complexe pe baza unei mulţimi consistente de exemple, sistemele conexioniste au un spectru
larg de aplicabilitate: de la sisteme de recunoaştere de forme (caractere, semnături, etc.) sau de
semnale sonore, până la sisteme pentru controlul unor procese complexe, cum ar fi sistemele de
auto-reglare sau piloţii automaţi.
În acest capitol au fost prezentate caracteristicile principale ale unei reţele neuronale
artificiale. Mai întâi au fost precizate asemănările şi deosebirile dintre reţelele neuronale şi un
sistem nervos biologic, insistându-se asupra capacităţii unei reţele neuronale de a învăţa şi
înmagazina cunoştinţe, pe baza unui proces de ajustări ale ponderilor conexiunilor dintre
neuroni. Apoi au fost amintite diverse tipuri de neuroni, cu anumite funcţii de activare, precum
şi arhitecturile cele mai cunoscute de reţele. În continuare, au fost descrişi unii algoritmi de
antrenare pentru diverse tipuri de învăţare: învăţarea supervizată (algoritmul back-propagation,
cu variantele Momentum şi rată de învăţare variabilă), învăţarea cu întărire (metoda
diferenţelor temporale), învăţarea nesupervizată (învăţarea hebbiană şi algoritmul Kohonen).

34

Florin Leon, florinleon@yahoo.com, http://eureka.cs.tuiasi.ro/~fleon


Referinţe

[19] L. B. Almeida: Multilayer perceptrons în Handbook of Neural Computation, IOP


Publishing Ltd and Oxford University Press, 1997
[20] G. Ascoli: Physiological Psychology, http://www.krasnow.gmu.edu/ascoli/Teaching/
Psyc372_01/Cla1.html, 2001
[21] M. Bulea: Structuri şi algoritmi paraleli pentru prelucrarea imaginilor şi
recunoaşterea formelor, Teză de doctorat, Universitatea Tehnică „Gh. Asachi” Iaşi,
Facultatea de Automatică şi Calculatoare, 1997
[22] D. Dumitrescu: Principiile inteligenţei artificiale, Ed. Albastră, Cluj-Napoca, 1999
[23] D. Dumitrescu, H. Costin: Reţele neuronale, Teorie şi aplicaţii, Ed. Teora, Bucureşti,
1996
[24] K. Funahashi: On the approximate realization of continuous mappings by neural
networks, Neural Networks, 2:183-192, 1989
[25] I. Harvey: Untimed and Misrepresented: Connectionism and the Computer Metaphor,
http://citeseer.nj.nec.com/harvey92untimed.html, 1992
[26] S. Haykin: Neural Networks: A Comprehensive Foundation, Macmillan/IEEE Press,
1994
[27] D. O. Hebb: The Organization of Behavior, Wiley & Sons, New York, 1949
[28] T. Kohonen: Self-Organizing Maps, Springer Verlag, Berlin, 1995
[29] M. Kwiesielewicz: Metody sztucznej inteligencji w sterowaniu (strona w trakcie
tworzenia), http://www.ely.pg.gda.pl/~mkwies/dyd/sro, 1997
[30] D. A. Leca: Utilizarea reţelelor neuronale artificiale în recunoaşterea de caractere
optice, Lucrare de diplomă, Universitatea Tehnică „Gh. Asachi” Iaşi, Facultatea de
Automatică şi Calculatoare, 2001
[31] M. Lynch: NeuroDraughts, An Application of Temporal Difference Learning to
Draughts, http://www.ai.univie.ac.at/~juffi/lig/Papers/lynch-thesis.ps.gz
[32] M. Minsky, S. Papert: Perceptrons, MIT Press, Cambridge, 1969
[33] N. J. Nilsson: Introduction to Machine Learning, http://robotics.stanford.edu/people/
nilsson/mlbook.html, 2001
[34] NeuroDimensions Inc.: NeuroSolutions 4.20 Help, http://www.nd.com/public/help/
NeuroSolutionsHelpPDF.zip
[35] E. Oja: A simplified neuron model as a principal component analyzer, J. Math. Biol.,
15:267-273, 1982
[36] F. Rosenblatt, The perceptron: a probablistic model for information storage and
organization in the brain, în J. Andersen, E. Rosenfeld (eds.): Neurocomputing:
foundations of research, Bradford books, MIT Press, Cambridge, Mass., chapter 8,
1958
[37] D. E. Rumelhart, G. E. Hinton, R. J. Williams: Learning internal representations by
error propagation, în D. E. Rumelhart, J. L. McClelland (eds.): Parallel Distributed
Processing: Explorations in the Microstructure of Cognition, Volume 1, 318-362, The
MIT Press, Cambridge, MA, 1986
[38] D. E. Rumelhart, G. E. Hinton, R. J. Williams: Learning representations by back-
propagating errors, Nature 323, pp 533-536, 1986
[39] R. S. Sutton, A. G. Barto: Reinforcement Learning: An Introduction, MIT Press,
Cambridge, Massachusetts, 1998
[40] F. M. Silva, L. B. Almeida: Acceleration techniques for the backpropagation algorithm
în Neural Networks, eds. L. B. Almeida, C. J. Wellekens (Berlin: Springer), pp 110–19,
1990, în [1]

35

Florin Leon, florinleon@yahoo.com, http://eureka.cs.tuiasi.ro/~fleon


[41] F. M. Silva, L. B. Almeida: Speeding up backpropagation în Advanced Neural
Computers, ed. R. Eckmiller (Amsterdam: Elsevier), pp 151–60, 1990, în [1]
[42] G. Tesauro: Temporal Difference Learning and TD-Gammon, Communications of the
ACM, vol. 38, no. 3, 1995, http://www.research.ibm.com/massive/tdl.html
[43] S. Thrun: Learning to play the game of chess, http://satirist.org/learn-
game/systems/neurochess.html, 1995
[44] P. J. Werbos: The Roots of Backpropagation, John Wiley & Sons, New York, 1974
[45] B. Widrow, M. E. Hoff: Adaptive switching circuits, IRE WESCON Convention
Record, vol. 4, pp. 96-104, 1960
[46] J. K. Wu: Neural Networks and Simulation Methods, Marcel Dekker, New York, 1994

36

Florin Leon, florinleon@yahoo.com, http://eureka.cs.tuiasi.ro/~fleon


Capitolul 3

Sisteme hibride neuro-fuzzy


3.1. Soft Computing
3.2. Utilitatea sistemelor hibride neuro-fuzzy
3.3. Tipuri de hibridizări neuro-fuzzy
3.3.1. Reţele neuronale fuzzy
3.3.2. Perceptronul fuzzy
3.3.3. Sisteme fuzzy neuronale
3.3.4. Sisteme hibride neuro-fuzzy
3.3.5. Adaptive-Network-Based Fuzzy Inference System (ANFIS)
3.4. Concluzii

3.1. Soft Computing

Termenul Soft Computing a fost introdus de Lotfi Zadeh, cu scopul de a „exploata toleranţa la
imprecizie, incertitudine şi adevăr parţial pentru a dobândi flexibilitate, robusteţe, costuri
scăzute ale soluţiilor şi o legătură mai bună cu realitatea” [16].
Această caracteristică îl face să difere fundamental de computing-ul convenţional
(hard), caracterizat tocmai de lipsa impreciziei şi a adevărurilor parţiale. Ţinta finală ar fi de
fapt egalarea şi chiar depăşirea performanţelor minţii umane.
Soft computing-ul se caracterizează printr-un parteneriat al mai multor domenii, dintre
care cele mai importante sunt reţelele neuronale, algoritmii genetici, logica fuzzy şi
raţionamentele probabilistice. Relaţiile dintre aceste componente sunt prezentate în figura 3.1.

Figura 3.1. Domeniul Soft Computing

Având la bază modelul gândirii umane, soft computing-ul grupează aceste domenii,
aflate nu într-o relaţie de tip concurenţial ci una de complementaritate, în care fiecare partener
contribuie cu avantajele şi tehnicile proprii la soluţionarea unor probleme imposibil de rezolvat
în alt mod. Astfel, reţelele neuronale au capacitatea de a învăţa şi de a se adapta, logica fuzzy
oferă posibilitatea aproximării, în timp ce algoritmii genetici pot realiza o căutare sistematizată
a soluţiei optime.

37

Florin Leon, florinleon@yahoo.com, http://eureka.cs.tuiasi.ro/~fleon


Situat între sistemele de inteligenţă artificială şi computing-ul convenţional, soft
computing-ul reprezintă problema de rezolvat de o aşa manieră încât starea curentă a
sistemului poate fi măsurată şi comparată cu starea ce se doreşte a fi obţinută. Starea sistemului
stă la baza adaptării parametrilor, care încetul cu încetul converg către soluţia optimă.

3.2. Utilitatea sistemelor hibride neuro-fuzzy

Fiecare tehnică inteligentă are unele proprietăţi computaţionale tipice (de exemplu, capacitatea
de a învăţa, explicarea deciziilor) care îi conferă aplicabilitatea pentru anumite probleme şi
prezintă dezavantaje în rezolvarea altora. De exemplu, reţelele neuronale au avantajul
recunoaşterii modelelor, însă nu pot explica satisfăcător modul în care au ajuns la o concluzie.
Dimpotrivă, sistemele fuzzy pot raţiona cu informaţii imprecise şi îşi pot explica raţionamentul,
dar nu pot achiziţiona automat regulile pe care le utilizează pentru luarea deciziilor.
Aceste limitări au fost principalul motiv pentru care s-a încercat crearea de sisteme
inteligente hibride, în care două sau mai multe tehnici pot fi combinate pentru a depăşi
dezavantajele tehnicilor individuale.
Modelarea cu reguli fuzzy, de tip dacă-atunci, este în general potrivită pentru
modelarea calitativă. Totuşi, în multe situaţii, datorită incompletitudinii cunoaşterii, inerente
unor situaţii reale, această abordare se dovedeşte insuficientă. De aceea se face apel la unele
metode conexioniste, cum ar fi reţelele neuronale. Sistemele neuro-fuzzy sunt astfel capabile să
înveţe din exemple, să generalizeze pe baza cunoştinţelor acumulate şi, pe baza datelor primite,
să sintetizeze cunoştinţe în forma regulilor fuzzy.
În ultimii ani, sistemele neuronale hibride au suscitat un deosebit interes. Această
abordare s-a dovedit încununată de succes în diferite domenii, precum diagnoza
echipamentelor industriale, robotica sau controlul proceselor dinamice. Motivul principal al
studierii sistemelor neuronale hibride este crearea de sisteme de reprezentare subsimbolică, în
special a reţelelor neuro-fuzzy. Din punctul de vedere al ştiinţelor cognitive, reprezentarea
neuronală oferă avantajul omogenităţii, a capacităţii de învăţare prin exemple şi a generalizării,
precum şi efectuarea de sarcini distribuite, în medii cu date incomplete sau afectate de
zgomote. Din punctul de vedere al sistemelor bazate pe cunoştinţe, reprezentările simbolice au
avantajul interpretării umane, al controlului explicit şi al abstractizării cunoaşterii.
În inteligenţa artificială, procedeul tradiţional este prelucrarea simbolică. În modelele
conexioniste însă, accentul cade pe posibilităţile de învăţare. Combinarea celor două abordări
este subiectul de cercetare în sistemele hibride, cum ar fi sistemele neuro-fuzzy. Modelele
conexioniste sunt instrumente puternice de prelucrare a cunoştinţelor, eficiente mai ales în
situaţii în care percepţia şi reacţia sunt fundamentale şi unde regulile explicite nu pot fi aplicate
în mod natural sau direct. Totuşi, învăţarea prin exemple nu este o soluţie generală, în multe
situaţii entităţile inteligente se bazează pe reguli formulate anterior de experţi.
Cele două abordări pot fi utilizate în mod complementar. Aceasta este premisa creării
de sisteme hibride inteligente, care combină trăsături conexioniste (neuronale) şi simbolice
(fuzzy). În astfel de sisteme, mai întâi se introduc informaţii simbolice în reţeaua neuronală,
apoi se folosesc exemplele de instruire pentru rafinarea cunoştinţelor iniţiale. În final, se
procesează rezultatul pentru un set de intrări şi, prin metode specifice, se extrag informaţii
simbolice din reţeaua antrenată.
Din momentul în care sistemele fuzzy au fost puse în practică în aplicaţiile industriale,
proiectanţii şi-au dat seama de dificultăţile care surveneau în mod inerent. Problema găsirii
funcţiilor membre potrivite este de multe ori o chestiune de generare de valori şi îndepărtarea
celor eronate. Aceste soluţii sunt greu de găsit, mai ales într-un proces industrial dinamic. De
aceea s-a ivit ideea aplicării algoritmilor de învăţare sistemelor fuzzy, ceea ce a determinat
apariţia controllerelor fuzzy adaptabile sau cu auto-organizare.

38

Florin Leon, florinleon@yahoo.com, http://eureka.cs.tuiasi.ro/~fleon


Sarcinile de lucru complexe pot da naştere la minime locale, de aceea paradigma
învăţării prin exemple se poate folosi mai mult pentru probleme simple. O rezolvare este
împărţirea problemei în subprobleme, rezolvate de diferite module neuro-fuzzy. În timp ce
logica fuzzy asigură mecanismele de inferenţă în cazul incertitudinii cognitive, reţelele
neuronale oferă avantajele învăţării, adaptabilităţii, toleranţei la defecte, paralelismului şi
generalizării.
Sistemele neuro-fuzzy moderne au caracteristici care le fac adecvate controlului unor
procese industriale: sunt sisteme fuzzy instruite printr-un algoritm de învăţare euristic, derivat
în general din reţele neuronale, pot fi reprezentate printr-o arhitectură de reţea neuronală
feed-forward multistrat şi pot fi interpretate în termeni de reguli dacă-atunci. Totuşi, într-un
sistem real, pot exista zeci de semnale de intrare. Un număr excesiv de intrări poate deteriora
transparenţa modelului considerat şi creşte complexitatea calculelor. De aceea, este necesară
selectarea intrărilor relevante şi considerarea de priorităţi.
Din punct de vedere teoretic, sistemele fuzzy şi reţelele neuronale sunt echivalente,
deoarece sunt inter-convertibile. Hayashi şi Buckley [3] au demonstrat că:

• orice sistem fuzzy bazat pe reguli poate fi aproximat de o reţea neuronală;


• orice reţea neuronală (feed-forward multistrat) poate fi aproximată de un sistem fuzzy
bazat pe reguli.

În practică însă, fiecare are avantajele şi dezavantajele sale [1, 14]:

Sisteme fuzzy Reţele neuronale


avantaje
• Încorporează cunoştinţe predefinite bazate • Pot învăţa fără nici o informaţie iniţială
pe reguli • Există mai multe paradigme de învăţare,
• Sunt interpretabile (reguli dacă-atunci) potrivite diverselor situaţii
• Oferă o implementare simplă • Există o multitudine de algoritmi de
• Cunoştinţele sunt disponibile în orice învăţare disponibili în literatura de
moment specialitate
dezavantaje
• Nu pot învăţa • Sunt „cutii negre” sub-simbolice
• Trebuie să dispună de reguli stabilite a- • Nu pot utiliza cunoştinţe a-priori
priori • Necesită algoritmi de învăţare complecşi
• Nu există metode formale pentru ajustarea • Nu există garanţia că învăţarea converge
regulilor spre soluţie
• Prezintă dificultăţi în extragerea
cunoştinţelor structurale

Tabelul 3.1. Comparaţie între sistemele fuzzy şi reţelele neuronale

Sistemele fuzzy prezintă în principal avantajul explicării comportamentului pe baza


unor reguli şi deci performanţele lor pot fi ajustate prin modificarea acestora. Totuşi,
achiziţionarea cunoştinţelor este dificilă iar universul de discurs al fiecărei variabile de intrare
trebuie divizat în mai multe intervale şi de aceea, aplicaţiile sistemelor fuzzy sunt restrânse la
domeniile în care sunt disponibile cunoştinţele experţilor iar numărul variabilelor de intrare
este relativ mic.
Pentru reţelele neuronale, cunoştinţele sunt achiziţionate automat printr-un algoritm (de
exemplu, back-propagation), dar procesul de învăţare este relativ lent iar analiza reţelei
antrenate este dificilă (o reţea neuronală este deseori considerată o „cutie neagră”, în care avem

39

Florin Leon, florinleon@yahoo.com, http://eureka.cs.tuiasi.ro/~fleon


acces numai la intrări şi la ieşiri, fără a şti precis ce se întâmplă în interior). Nu este posibilă
nici extragerea cunoştinţelor structurale (reguli) din reţeaua antrenată, nici integrarea de
informaţii speciale despre problemă, pentru a simplifica procedura de învăţare.
Utilizarea sistemelor hibride neuro-fuzzy minimizează dezavantajele şi maximizează
avantajele celor două tehnici. Reţelele neuronale sunt folosite pentru adaptarea funcţiilor de
apartenenţă ale sistemelor fuzzy în aplicaţiile de control automat al proceselor dinamice. Deşi
logica fuzzy permite codarea cunoştinţelor de tip expert prin termeni lingvistici, de obicei
proiectarea şi reglarea funcţiilor de apartenenţă care definesc cantitativ aceşti termeni este un
demers greoi. Tehnicile de învăţare ale reţelelor neuronale pot automatiza procesul şi deci pot
reduce substanţial costul şi timpul de dezvoltare a aplicaţiilor, conducând şi la creşterea
performanţelor. Pentru a depăşi problema achiziţiei cunoştinţelor, reţelele neuronale pot fi
proiectate să extragă automat reguli fuzzy din date numerice. Alte abordări presupun folosirea
reţelelor neuronale pentru optimizarea unor anumiţi parametri ai sistemelor fuzzy sau pentru
preprocesarea datelor de intrare în sistemele fuzzy [7].

3.3. Tipuri de hibridizări neuro-fuzzy

În funcţie de modul de combinare a modulului simbolic fuzzy cu modulul conexionist


subsimbolic, există mai multe tipuri de hibridizări, care vor fi detaliate în continuare.

3.3.1. Reţele neuronale fuzzy

O reţea neuronală fuzzy (engl. „fuzzy neural network”, FNN) reprezintă o reţea neuronală care
dispune de capacitatea de a prelucra informaţii fuzzy.
Într-o astfel de reţea, semnalele de intrare şi/sau ponderile conexiunilor şi/sau ieşirile
sunt submulţimi fuzzy sau mulţimi de valori de apartenenţă la mulţimi fuzzy. De obicei, se
utilizează ca modele termeni lingvistici precum „mic”, „mediu”, „mare”, numere sau intervale
fuzzy [10]. Structura acestui tip de sistem este următoarea [9]:

Figura 3.2. Reţea neuronală fuzzy

Se observă că modulele conexioniste implementează aici funcţiile unui sistem fuzzy. O


reţea efectuează fuzzyficarea datelor stricte de intrare, regulile fuzzy sunt realizate pe baza unei
alte reţele, iar operaţia de defuzzyficare este îndeplinită de o a treia reţea, pentru a furniza
datele stricte de ieşire [2].
Reţelele neuronale cu neuroni fuzzy intră de asemenea în această categorie deoarece
sunt capabile să prelucreze informaţii fuzzy.
Aceste tipuri de reţele sunt utile în aplicaţii de regresie fuzzy (descoperirea de relaţii
funcţionale între date fuzzy), control, rezolvarea ecuaţiilor matriceale fuzzy (folosite în
economie) sau clasificare fuzzy.

40

Florin Leon, florinleon@yahoo.com, http://eureka.cs.tuiasi.ro/~fleon


3.3.2. Perceptronul fuzzy

În literatura de specialitate există o multitudine de abordări cu privire la implementarea unei


reţele neuronale fuzzy, chiar într-o formă foarte simplă, cea a perceptronului multistrat. Detlef
Nauck [13] a încercat o sistematizare a acestor propuneri, rezultând o arhitectură generică de
perceptron fuzzy, pe care apoi a utilizat-o în sistemul NEFCON (NEural Fuzzy CONtrol).
Ideea centrală este identificarea unui model care poate fi iniţializat pe baza unor cunoştinţe a-
priori şi care poate fi antrenat cu metode specifice reţelelor neuronale.
Perceptronul fuzzy are arhitectura unui perceptron multistrat obişnuit, însă ponderile
sunt modelate sub forma unor mulţimi fuzzy. Funcţiile de activare, ieşire şi propagare sunt
modificate în consecinţă.
Astfel, perceptronul fuzzy cu 3 straturi este definit ca o reţea neuronală feed-forward cu
3 straturi (U, W, NET, A, O, ex) cu următoarele specificaţii:

• U= UU i este o mulţime nevidă de unităţi. U i ≠ φ , ∀i, j ∈{1,2,3} şi U i I U j = φ


i∈{1, 2 , 3}

pentru i ≠ j . U 1 se numeşte strat de intrare, U 2 – strat de reguli (ascuns) iar U 3 – strat


de ieşire;
• Structura reţelei (conexiunile) este definită ca: W : U × U → F (ℜ) , astfel încât există
numai conexiuni W (u , v) cu u ∈U i şi v ∈U i +1 (i ∈{1,2}) . F (ℜ) este mulţimea tuturor
submulţimilor fuzzy din ℜ ;
• A defineşte o funcţie de activare Au pentru fiecare u ∈U :
o pentru unităţile de intrare şi ascunse: u ∈U 1 U U 2 , Au : ℜ → ℜ , au = Au (netu )
o pentru unităţile de ieşire: u ∈U 3 , Au : F (ℜ) → F (ℜ) , au = Au (netu ) ;
• O defineşte o funcţie de ieşire Ou pentru fiecare u ∈U :
o pentru unităţile de intrare şi ascunse: u ∈U 1 U U 2 , Ou : ℜ → ℜ , ou = Ou (au )
o pentru unităţile de ieşire: u ∈U 3 , Ou : F (ℜ) → ℜ, ou = Ou (au ) = DEFUZZ u (au ) ,
unde DEFUZZ u este o funcţie potrivită de defuzzyficare;
• NET defineşte o funcţie de propagare NETu pentru fiecare u ∈U , care calculează
net input-ul netu :
o pentru unităţile de intrare: u ∈U 1 , NETu : ℜ → ℜ , netu = exu
o pentru unităţile ascunse: u ∈U 2 , NETu : (ℜ × F (ℜ))U1 → [0,1],
netu = T (W (u ' , u ), ou ' ) , unde T este o t-normă
u '∈U1

o pentru unităţile de ieşire: u ∈ U 3 , NETu : ([0,1] × F (ℜ))U 2 → F (ℜ),


netu ( x) = S (T (ou ' , W (u ' , u )), x) , unde S este o t-conormă;
u '∈U 2

• ex : U1 → ℜ defineşte pentru fiecare unitate de intrare u ∈ U1 ieşirea externă


ex(u ) = exu .

Scopul perceptronului fuzzy nu este fuzzyficarea integrală a unei reţele neuronale de tip
perceptron şi nici modelarea unui sistem de inferenţă bazat pe logica fuzzy. Se observă că
numai ponderile, net input-urile şi funcţiile de activare ale unităţilor de ieşire sunt reprezentate
ca mulţimi fuzzy. Perceptronul fuzzy prezentat mai sus este asemănător cu perceptronul clasic,
utilizat pentru aproximări de funcţii. Avantajul său este posibilitatea de a asocia termeni

41

Florin Leon, florinleon@yahoo.com, http://eureka.cs.tuiasi.ro/~fleon


lingvistici cu ponderile sale fuzzy şi astfel, reţeaua poate fi creată parţial sau integral pe baza
unor reguli fuzzy de tip dacă-atunci.
Găsirea unui algoritm de antrenare (supervizată) pentru perceptronul fuzzy este mai
dificilă decât în cazul perceptronului clasic neuronal deoarece funcţiile de activare ale unităţilor
sunt definite sub forma unor t-norme şi t-conorme care în general nu sunt diferenţiabile şi deci
metoda gradientului descendent nu poate fi utilizată.
D. Nauck [13] propune următorul algoritm de retro-propagare fuzzy a erorii (fuzzy
back-propagation). Presupunem că ponderile antecedente (dintre stratul de intrare şi cel
ascuns) µi , j = W (ui , u j ), ui ∈ U1 , u j ∈ U 2 şi ponderile concluzive (dintre stratul ascuns şi cel de
ieşire) ν j , k = W (u j , uk ), u j ∈ U 2 , uk ∈ U 3 sunt modelate sub forma unor numere fuzzy
triunghiulare (conform relaţiei 1.11). Setul de antrenare conţine modele de forma
p = (i ( p ) , t ( p ) ) ∈ [0,1]n × [0,1]m , unde i desemnează intrările în reţeaua neuronală fuzzy iar t –
ieşirile dorite. Se iniţializează eroarea E = 0.

• Pasul 1: Se alege un model p din setul de antrenare care nu a mai fost ales în cadrul
epocii curente de antrenare. Se propagă vectorul de intrare i ( p ) ;
• Pasul 2: Se calculează diferenţele δ u pentru toate unităţile u ∈U 2 U U 3 :

sgn(t u( p ) − ou( p ) ) ⋅ Eu( p ) , u ∈U 3



δ ( p)
=  a ( p ) ⋅ δ ( p ) , u ∈U
u

v∈U 3 u v 2

2
 
 t u( p ) − ou( p ) 
γ 
 max o ( p ) − min ou( p ) 
 u u
Eroarea fuzzy Eu( p ) = 1 − e u 
, unde γ este un factor de scalare.

Se actualizează eroarea totală: E = ∑ ∑ Eu( p ) ;


p u∈U 3

• Pasul 3: Se determină parametrii care vor fi ajustaţi pentru ponderile fuzzy. Să


presupunem că ponderile antecedente sunt definite de funcţii de apartenenţă cu centrul
c, limita la stânga l = c − α şi limita la dreapta r = c + β . Dacă aceşti parametri pot fi
modificaţi cu rate de învăţare diferite: σ l ,σ c ,σ r ∈ ℜ pentru ν j, k şi cu ηl ,ηc ,η r ∈ ℜ
pentru µi, j , atunci:

∆( p )l j ,k = σ l ⋅ δ uk ⋅ (c j ,k − l j ,k )
∆( p )c j ,k = σ c ⋅ δ uk ⋅ (rj ,k − l j ,k )
∆( p ) rj ,k = σ r ⋅ δ uk ⋅ (rj ,k − c j ,k )

∆( p )li , j = −ηl ⋅ δ u j ⋅ (c j ,k − li , j )
∆( p )ci , j = ηc ⋅ δ u j ⋅ (aui − ci , j )
∆( p ) ri , j = η r ⋅ δ u j ⋅ (ri , j − c j ,k )

• Pasul 4: Dacă E > E MAX , E = 0 şi se începe o nouă epocă de antrenare la Pasul 1.

42

Florin Leon, florinleon@yahoo.com, http://eureka.cs.tuiasi.ro/~fleon


Ideea care stă la baza algoritmului este reglarea parametrilor care definesc mulţimile
fuzzy corespunzătoare ponderilor. În unele cazuri, suportul unei mulţimi trebuie deplasat la
dreapta sau la stânga pentru ca centrul să aproximeze mai bine o anumită valoare, în altele
suportul trebuie mărit pentru a include cât mai multe valori.
Ratele de învăţare diferite permit schimbări de mărimi diferite ale parametrilor. De
exemplu, acestea pot fi utilizate dacă se doresc numai deplasări mici ale suportului unei
mulţimi faţă de poziţia sa iniţială, iar învăţarea trebuie să se facă în principal prin lărgirea sau
strâmtarea suportului.
Această arhitectură poate fi folosită pentru aproximaţii funcţionale pe baza unor
eşantioane de date, iar sistemul antrenat poate servi pentru probleme de clasificare, control, etc.

3.3.3. Sisteme fuzzy neuronale

Un sistem fuzzy neuronal (engl. „neural fuzzy system”, NFS) este un sistem fuzzy prevăzut cu
o reţea neuronală pentru dezvoltarea unor caracteristici precum flexibilitate, viteză şi
adaptabilitate.
Schema bloc funcţională a unui astfel de sistem este prezentată în figura 3.3.

Figura 3.3. Sistem fuzzy neuronal

Cunoaşterea de tip expert este convertită mai întâi într-o formă simbolică (1) şi apoi
utilizată pentru iniţializarea reţelei neuronale (2). În continuare, reţeaua este antrenată pe baza
intrărilor şi ieşirilor unui sistem real (3). Cunoştinţele obţinute din reţeaua neuronală (4) sunt
prelucrate apoi într-o manieră fuzzy pentru determinarea unor reguli de inferenţă fuzzy,
comunicate în final expertului (5).
Pentru a înţelege mai bine funcţionarea sa, vom considera un exemplu. Sistemul poate
fi văzut ca un doctor căruia i se predau mai întâi noţiuni medicale teoretice în sala de curs. El
va folosi aceste cunoştinţe generale pentru a înţelege mai apoi ce se întâmplă când i se prezintă
cazuri şi operaţii reale. În final, va fi el însuşi capabil să pună în practică cele învăţate.
Aceste sisteme sunt potrivite în special pentru achiziţia de cunoştinţe şi învăţare. Ele
pot realiza procesul de inferenţă fuzzy cu ajutorul ponderilor conexiunilor reţelei care
corespund parametrilor raţionamentului. Folosind algoritmi de învăţare cum ar fi
back-propagation, aceste sisteme pot identifica reguli fuzzy, pentru ca apoi să înveţe funcţiile
de apartenenţă ale inferenţelor. Un sistem fuzzy neuronal ar trebui, teoretic, să poată învăţa şi
reguli lingvistice sau să optimizeze regulile deja existente. Există aici trei posibilităţi [11]:

43

Florin Leon, florinleon@yahoo.com, http://eureka.cs.tuiasi.ro/~fleon


• Sistemul nu dispune iniţial de nici o regulă. El trebui să creeze noi reguli până când
problema de învăţare este rezolvată. Crearea unei reguli noi este determinată de un
model de antrenare care nu este acoperit suficient de baza curentă de reguli;
• Sistemul porneşte cu toate regulile care pot fi create prin partiţionarea variabilelor. Pe
parcursul antrenării, el elimină regulile inutile din baza de reguli prin evaluarea
perfomanţelor acestora;
• Sistemul are iniţial un număr fix de reguli. În timpul învăţării, acestea sunt modificate
sau înlocuite printr-un proces de optimizare.

3.3.4. Sisteme hibride neuro-fuzzy

Acestea sunt cele mai studiate sisteme hibride la ora actuală. Sistemele hibride neuro-fuzzy sunt
o combinaţie de reţele neuronale şi logică fuzzy în care ambele tehnici joacă un rol cheie:
logica fuzzy asigură structura în care poate fi exploatată capacitatea de învăţare a reţelelor
neuronale.
Unii autori consideră că un sistem neuro-fuzzy este definit de următoarele caracteristici
[12]:

• este un sistem fuzzy antrenat printr-un algoritm de învăţare (euristic), derivat din
tehnicile specifice reţelelor neuronale;
• poate fi reprezentat printr-o arhitectură de reţea neuronală feed-forward;
• poate fi oricând interpretat în termenii regulilor fuzzy dacă-atunci;
• procedura de antrenare ia în calcul semantica modelului fuzzy pentru a conserva
interpretabilitatea sa lingvistică;
• poate realiza (cazuri speciale) de aproximare funcţională.

În acest domeniu au fost propuse mai multe modalităţi de combinare a celor două
tehnici [2]. În primul rând, reţelele neuronale pot fi utilizate pentru generarea şi reglarea
funcţiilor de apartenenţă a sistemului fuzzy:

Figura 3.4. Reglarea neuronală a funcţiilor de apartenenţă a unui sistem fuzzy

Sistemele neuro-fuzzy pot avea arhitecturi de tip serie sau paralel. În figura 3.5 se
prezintă un sistem neuro-fuzzy în care reţeaua neuronală joacă rolul de preprocesare.

44

Florin Leon, florinleon@yahoo.com, http://eureka.cs.tuiasi.ro/~fleon


Figura 3.5. Arhitectură de sistem neuro-fuzzy de tip serie

Utilitatea acestui tip de sistem se evidenţiază în situaţiile în care intrarea în sistemul


fuzzy nu poate fi legată direct la o ieşire a unui senzor. Apare deci necesitatea ca ieşirea
senzorului să fie preprocesată de reţeaua neuronală şi apoi ieşirea reţelei să constituie intrarea
pentru sistemul fuzzy. Există de asemenea şi sisteme de postprocesare, atunci când ieşirea
sistemului fuzzy nu poate fi conectată direct cu echipamente externe. În acest caz, reţeaua
neuronală se constituie într-o interfaţă care realizează o mapare care ar fi mai greu realizabilă
prin tehnici analitice.
În figura următoare este schiţat un sistem neuro-fuzzy cu o arhitectură de tip paralel, cu
scopul ajustării ieşirii:

Figura 3.6. Arhitectură de sistem neuro-fuzzy de tip paralel

Reţeaua neuronală reglează ieşirea sistemului fuzzy pe baza a ceea ce a învăţat despre
preferinţele personale ale utilizatorului din ajustările anterioare pe care acesta le-a efectuat.
Sistemele neuro-fuzzy se bucură de apreciere în mai multe domenii. Un exemplu
notabil este cel al controlului automat, în special aplicaţiile aeronautice şi aerospaţiale, în care
pilotul automat trebuie să simuleze capacitatea umană de a raţiona în diverse situaţii [15]. Alt
exemplu este cel al recunoaşterii trăsăturilor faciale [8]. Trăsăturile sunt identificate şi
fuzzyficate pentru a le scădea sensibilitatea faţă de variaţiile inerente care apar chiar în cazul
aceleiaşi persoane. Aceste caracteristici fuzzyficate sunt apoi introduse într-o reţea neuronală
care implementează procesul propriu-zis de recunoaştere.

45

Florin Leon, florinleon@yahoo.com, http://eureka.cs.tuiasi.ro/~fleon


3.3.5. Adaptive-Network-Based Fuzzy Inference System (ANFIS)

Sistemul de Inferenţă Fuzzy bazat pe Reţele Adaptive, realizat de J.S.R. Jang [6],
implementează un sistem de inferenţă fuzzy bazat pe modelul Takagi-Sugeno, prezentat în
paragraful 1.5.2. Arhitectura ANFIS este structurată pe 5 straturi:

Figura 3.7. Arhitectura ANFIS

Primul strat realizează fuzzyficarea datelor de intrare, adică converteşte intrările stricte
x şi y în valori ale funcţiilor de apartenenţă fuzzy corespunzătoare nodurilor. De exemplu,
ieşirea nodului A1 va fi: O1A1 = µ A1 ( x) . Analog, ieşirea nodului B2 va fi: OB1 2 = µ B2 ( x) . Pentru
acest model se folosesc în general funcţii de apartenenţă Bell generalizate (relaţia 1.16) sau
gaussiene (relaţia 1.13), care au avantajul că sunt continue şi diferenţiabile.
În al doilea strat (stratul de reguli), se multiplică semnalele de intrare:
Oi = wi = µ Ai ( x) ⋅ µ Bi ( y ), i = 1,2. La ieşire se poate aplica şi o t-normă asupra produsului.
2

Ieşirile nodurilor din acest strat semnifică puterile de aprindere (engl. „firing strengths”) ale
regulilor corespunzătoare.
În al treilea strat se face normalizarea puterilor de aprindere, astfel încât suma acestora
să fie 1. Normalizarea este foarte simplă, fiecare semnal de intrare se divide cu suma totală a
w1
intrărilor: Oi3 = wi = . Ieşirile se numesc puteri de aprindere normalizate ale regulilor.
w1 + w2
Al patrulea strat este un strat de defuzzyficare. Aici se aplică modelul Takagi-Sugeno,
se calculează un polinom de ordin întâi (o funcţie liniară) de variabilele de intrare şi apoi
rezultatul este ponderat cu puterile de aprindere normalizate calculate anterior:
Oi4 = w1 ⋅ f1 = w1 ⋅ ( pi ⋅ x + qi ⋅ y + ri ). Constantele pi, qi şi ri sunt parametrii concluzivi ai
sistemului de inferenţă.
Ultimul strat este format dintr-un singur neuron sumator, care calculează suma ieşirilor
din straturile de defuzzyficare şi produce ieşirea din sistemul ANFIS: O = O 5 = ∑ Oi4 .
i
Învăţarea într-un sistem ANFIS se bazează pe o schemă hibridă. Mai întâi, utilizatorul
decide numărul de reguli şi modul lor de interacţiune, construind astfel cunoştinţele integrate
a-priori despre structura soluţiei. Funcţiile de apartenenţă trebuie iniţializate astfel încât să
împartă cât mai egal universul discursului şi să aibă suficiente suprapuneri. În pasul „înainte”
al antrenării, se calculează ieşirile neuronilor până în stratul 4 iar parametrii concluzivi
(coeficienţii funcţiei liniare) sunt calculaţi prin metoda celor mai mici pătrate. În pasul

46

Florin Leon, florinleon@yahoo.com, http://eureka.cs.tuiasi.ro/~fleon


„înapoi”, semnalele de eroare sunt retro-propagate şi se actualizează parametrii antecedenţi (ai
funcţiilor de apartenenţă) prin metoda gradientului descendent.
Baza de reguli trebuie cunoscută a-priori, deoarece ANFIS nu poate decât să ajusteze
funcţiile de apartenenţă ale parametrilor antecedenţi şi concluzivi. Deoarece este uşor de
implementat, acest sistem este atractiv pentru aplicaţii. Totuşi, algoritmul de învăţare necesită
mari resurse de calcul, iar modelul are dificultăţi în privinţa problemelor de mari dimensiuni,
care implică un mare număr de partiţii, reguli şi deci parametri concluzivi, mai ales că fiecărui
termen lingvistic îi corespunde o singură mulţime fuzzy [10].

3.4. Concluzii
Sistemele fuzzy şi reţelele neuronale sunt estimatori numerici şi în acelaşi timp sisteme
dinamice, care prezintă capacitatea de a dezvolta inteligenţa agenţilor care acţionează în medii
nesigure, imprecise şi afectate de zgomot. Este şi dezideratul domeniului soft computing-ului,
care încearcă simularea performanţelor minţii umane prin combinarea unor tehnici precum
reţelele neuronale, sistemele fuzzy şi algoritmii genetici.
Relaţia dintre reţelele neuronale şi cunoştinţele lingvistice este bidirecţională. De aceea,
sistemele de clasificare bazate pe reţele neuronale pot fi antrenate cu date numerice şi
cunoştinţe lingvistice, iar sistemele de clasificare fuzzy bazate pe reguli pot fi proiectate cu
ajutorul cunoştinţelor lingvistice şi a regulilor fuzzy extrase din reţele neuronale.
Logica fuzzy şi modelele conexioniste au necesităţi contrastante din punctul de vedere
al aplicaţiilor practice. Sistemele fuzzy sunt potrivite atunci când există suficientă cunoaştere
de tip expert. Reţelele neuronale sunt adecvate dacă există există suficiente date disponibile sau
măsurabile. Sistemele fuzzy conduc la o abordare calitativ-simbolică, pe când reţelele
neuronale se pretează mai ales la o abordare cantitativ-numerică.
Combinarea sistemelor fuzzy cu reţelele neuronale conduce la reducerea şi chiar
eliminarea dezavantajelor individuale ale celor două tehnici. În acelaşi tip, prin diverse
modalităţi de hibridizare, se pot pune în valoare avantajele incontestabile ale acestora:
capacitatea de învăţare a reţelelor neuronale şi reprezentarea explicită, simbolică a
cunoştinţelor prin intermediul sistemelor fuzzy.
Reţelele neuronale fuzzy menţin proprietăţile de bază ale reţelelor neuronale, la care se
adaugă fuzzyficarea unora din elementele lor caracteristice pentru a putea prelucra informaţii
fuzzy. Pentru concretizare, au fost descrise structura şi algoritmul de învăţare ale unui
perceptron fuzzy.
Sistemele fuzzy neuronale încearcă ajustarea regulilor din sistemul fuzzy prin metode
tipice reţelelor neuronale, fără a-şi pierde caracteristicile esenţiale (fuzzyficarea,
defuzzyficarea, motorul de inferenţă şi fundamentul logicii fuzzy).
În abordarea hibridă neuro-fuzzy, atât tehnicile fuzzy cât şi cele conexioniste joacă un
rol cheie, fiecare îndeplinind funcţii diferite în sistem, potrivite naturii sale. În această categorie
intră Sistemul de Inferenţă Fuzzy bazat pe Reţele Adaptive (ANFIS).

47

Florin Leon, florinleon@yahoo.com, http://eureka.cs.tuiasi.ro/~fleon


Referinţe

[47] A. Abraham: Beyond Neuro-Fuzzy Systems: Reviews, Prospects, Perspectives and


Directions, Monash University, Australia, http://www.cs.okstate.edu/~aa/
mendel2001.ppt, 2001
[48] B. Azvine, N. Azarmi, K. C. Tsui: Soft computing - a tool for building intelligent
systems, BT Technology Journal, vol. 14, no.4, 1996, în [9]
[49] Y. Hayashi, J. J. Buckley: Approximations between fuzzy expert systems and neural
networks, Int. J. Approx. Reas., vol. 10, pp. 63–73, 1994
[50] M. Holecy: Application of Neural-Fuzzy Systems in Financial Management, Technical
University of Košice, Department of Cybernetics and Artificial Intelligence,
http://neuron-ai.tuke.sk/cig/source/publications/thesis/master_thesis/1997/holecy/html,
1997
[51] H. Ishibuchi, M. Nii, I. B. Turksen: Bidirectional bridge between neural networks and
linguistic knowledge: Linguistic rule extraction and learning from linguistic rules, in
Proc. IEEE Int. Conf. Fuzzy Syst. FUZZ-IEEE’98, Anchorage, AK, USA, pp. 1112–
1117, 1998
[52] J. S. R. Jang: ANFIS: Adaptive-network-based fuzzy inference system, IEEE Trans.
Syst., Man, Cybern., vol. 23, no. 3, pp. 665–685, 1993
[53] M. Kwiesielewicz: Metody sztucznej inteligencji w sterowaniu (strona w trakcie
tworzenia), http://www.ely.pg.gda.pl/~mkwies/dyd/sro, 1997
[54] S. Y. Lee, Y. K. Ham, P. H. Park: Recognition of human front faces using knowledge-
based feature extraction and neuro-fuzzy algorithm, Pattern Recognition, vol. 29,
no. 11, 1996
[55] M. MacRae, M. Pickering: Surprise '98 report on Soft Negotiation,
http://www.iis.ee.ic.ac.uk/~frank/surp98/report/mgm1, 1998
[56] S. Mitra, Y. Hayashi: Neuro–Fuzzy Rule Generation: Survey in Soft Computing
Framework, IEEE Transactions on Neural Networks, vol. 11, no. 3,
http://icat.snu.ac.kr/review_paper/22.pdf, 2000
[57] D. Nauck, F. Klawonn, R. Kruse, Foundations of Neuro–Fuzzy Systems, Chichester,
U.K., Wiley, 1997, în [10]
[58] D. Nauck, R. Kruse: NEFCLASS-X: A Soft Computing Tool to build Readable Fuzzy
Classifiers, BT Technology Journal, vol. 16, no. 3, Martelsham Heath, Ipswich, 1998
[59] D. Nauck: A Fuzzy Perceptron as a Generic Model for Neuro-Fuzzy Approaches,
Technical University of Braunschweig, Department of Computer Science,
http://citeseer.nj.nec.com/nauck94fuzzy.html, 1994
[60] U. Nauck: Konzeption und Implementierung eines Neuro-Fuzzy-Datenanalysetools in
Java, Technische Universität Braunschweig, Institut für Betriebssysteme und
Rechnerverbund, http://www.gsi.dit.upm.es/~lssii/soft/papr/nefclass/nefclassj-doc.pdf,
1999
[61] A. K. Noor: A hard look at soft computing, Aerospace America, 1996, în [9]
[62] L. Zadeh: Foreword to the inaugural issue of Intelligent Automation and Soft
Computing în [9]

48

Florin Leon, florinleon@yahoo.com, http://eureka.cs.tuiasi.ro/~fleon


Algoritmi genetici

Cap. 4 Algoritmi genetici

4.1 Generalităţi

Algoritmii genetici fac parte din categoria algoritmilor de calcul evoluţionist şi sunt inspiraţi de teoria
lui Darwin asupra evoluţiei. Idea calculului evoluţionist a fost introdusă în 1960 de I. Rechenberg în
lucrarea intitulată “Evolution strategies”.

Algoritmii genetici au fost aplicaţi cu succes într-o varietate de aplicaţii care necesită optimizarea
globală a soluţiei. Ei se referă la un model introdus şi analizat de J. Holland în 1975 şi sunt proceduri
adaptive care găsesc soluţia problemei pe baza unui mecanism de selecţie naturală şi evoluţie genetică.
Algoritmul este des folosit pentru probleme în care găsirea soluţiei optime nu este uşoară sau cel
puţin ineficientă datorită caracteristicilor căutării probabilistice. Algoritmii genetici codifică o
soluţie posibilă la o problemă specifică într-o singură structură de date numită „cromozom” şi
aplică operatori genetici la aceste structuri astfel încât să menţină informaţiile critice.

Algoritmii genetici pornesc de la o mulţime iniţială de soluţii (de obicei aleasă aleator) numită în
literatură „populaţie”. În această populaţie fiecare individ este numit „cromozom” şi reprezintă o
soluţie posibilă a problemei. În aproape toate cazurile cromozomul este un şir de simboluri (de obicei
reprezentat ca un şir de biţi). Aceşti cromozomi evoluează pe durata iteraţiilor succesive numite
generaţii. În fiecare generaţie, cromozomii sunt evaluaţi utilizând unele măsuri de adecvare /potrivire
(fitness).
Pentru crearea următoarei populaţii cei mai buni cromozomi din generaţia (populaţia) curentă sunt
selectaţi iar noii cromozomi sunt formaţi folosind unul dintre cei trei operatori genetici esenţiali:
selecţia, crossover (încrucişare) şi mutaţia.

Selecţia asigură că anumiţi cromozomi din generaţia curentă sunt copiaţi în acord cu valoarea funcţiei
lor de potrivire în noua generaţie ceea ce înseamnă că cromozomii cu o importanţă mare au o
probabilitate mare să contribuie la formarea noii generaţii. Crossover este un alt operator genetic care
reprezintă procesul prin care pe baza a doi cromozomi din populaţia curentă sunt formaţi doi
cromozomi pentru populaţia următoare. Mutaţia este procesul prin care un cromozom din populaţia
curentă este modificat şi salvat în noua populaţie.

49
Algoritmi genetici

4.2 Codificarea cromozomilor şi problema de optimizare

Algoritmii genetici au două componente principale care depind de problema abordată: codificarea
problemei şi funcţia de evaluare (de fitness). Cromozomii care reprezintă codificarea problemei
trebuie într-o oarecare măsură să conţină informaţiile despre soluţia problemei şi depind foarte mult
de problemă. Există mai multe codificări, care au fost utilizate cu succes cum ar fi codificarea binară
(cromozomul este format din şiruri de 0 sau 1 care reprezintă binar soluţia problemei) sau codificarea
prin valoare (cromozomul este format dintr-un şir de valori vector întregi sau reale care pe ansamblu
reprezintă soluţia problemei). De exemplu un cromozom poate avea următoare formă (reprezentat
prin valoare):

Cromozom 1 -0.23 0 0 0.89 0 0.52 0 0 0 0 -0.04 … 0.03


Cromozom 2 0 0 0.08 -0.67 -0.01 0 0 0 0 0.01 0 … 0.01

Funcţia de evaluare numită şi funcţia de „fitness” (potrivire) este funcţia care ne permite să dăm o
încredere la fiecare cromozom din populaţie. Această funcţie este de obicei funcţia care reprezintă
descrierea problemei.
Când trebuie să rezolvăm o problemă, de obicei ne uităm după anumite soluţii care sunt mai bune
decât alte soluţii obţinute anterior. Spaţiul tuturor soluţiilor fezabile este numit spaţiul de căutare sau
spaţiul stărilor. Problemele abordate folosind algoritmi genetici sunt de obicei probleme pentru care
căutarea în spaţiul soluţiilor este o problemă complicată sau chiar (NP-completă) - ( NP = clasa
problemelor care pot fi rezolvate de algoritmi NEdeterministi in timp polinomial). De obicei nu ştim
unde să ne uităm după soluţie şi de unde să începem. Soluţiile obţinute folosind algoritmi genetici
sunt de obicei considerate ca soluţii bune deoarece nu este întotdeauna posibil să cunoaştem care este
optimul real.

4.3 Metode de selecţie a cromozomilor


Un alt pas important în algoritmul genetic este cum selectăm părinţii din populaţia curentă care vor
alcătui noua populaţie. Aceasta poate fi făcută în mai multe feluri, dar ideea de bază este de a selecta
cei mai buni părinţi (în speranţa că aceştia vor produce cei mai buni copii). În acest pas poate apărea
o problemă: făcând noua populaţie doar pe baza noilor copii obţinuţi poate duce la pierderea celui
mai bun cromozom obţinut până la acel pas. De obicei această problemă este rezolvată prin utilizarea
aşa numitei metode de „elitism”. Adică cel puţin un cromozom care produce cea mai bună soluţie
conform cu funcţia de fitness este copiat fără nici o modificare în noua populaţie, astfel cea mai bună

50
Algoritmi genetici

soluţie obţinută până la acel moment să nu se piardă.


Ca si metode de selecţie a cromozomilor propunem două metode, fiecare dintre ele cu avantajele şi
dezavantajele ei:

4.3.1 Metoda „Roulette Wheel” (ruleta)

În această metodă fiecare individ din populaţia curentă este reprezentat printr-un spaţiu proporţional
cu valoarea funcţiei lui de evaluare. Prin eşantionări aleatoare succesive din acest spaţiu de
reprezentare a cromozomilor se asigură că cei mai buni cromozomi au şanse mai mari decât cei cu mai
slabi să fie selectaţi la un anumit pas. Această metodă de selecţie va avea probleme în momentul în
care valoarea funcţiei de evaluare diferă foarte mult de la un cromozom la altul. De exemplu dacă cel
mai bun cromozom are valoare funcţiei de evaluare mare (care va ocupa 90% din spaţiul de
reprezentare) iar restul cromozomilor au valori ale funcţiilor de evaluare foarte mici această metodă
va selecta de foarte multe ori cromozomul cel mai bun ducând în final la degenerarea populaţiei.

4.3.2 Selecţia utilizând metoda lui Gauss

Paşii propuşi pentru această metodă sunt:

1. Se alege un cromozom din populaţie curentă.


2. Utilizând formula lui Gauss calculăm probabilitatea ca acel cromozom să fie un cromozom
bun (acela care obţine valoarea funcţie de evaluare maximă).

( M − fitness ( ci )) 2

P(ci ) = e 2σ 2

unde P(.) reprezintă probabilitatea calculată pentru cromozomul ci, M reprezintă media, care aici
este valoarea maximă care poate fi obţinută de către funcţia de evaluare, σ reprezintă
dispersia sau panta cu care scade probabilitatea, iar fitness(ci) reprezintă valoarea funcţiei de
evaluare pentru acel cromozom. De exemplu dacă valoare maximă a funcţiei de evaluare este 1,
M va fi 1 iar pentru dispersie propunem o valoare între 0.3-0.5.

3. În al treilea pas această probabilitate calculată este comparată cu o probabilitate aleasă aleator
în domeniul [0,1] (Probabilitatea lui Gauss întoarce valori în acest domeniu).
4. Se verifică dacă probabilitatea lui Gauss calculată pentru cromozomul ales este mai mare
decât probabilitatea aleasă aleator:

51
Algoritmi genetici

a. Dacă da cromozomul ales aleator se ia în considerare pentru a forma noua populaţie.


b. Dacă nu se trece din nou la pasul 1.

Această metodă asigură posibilitatea luării în considerare şi a cromozomilor care nu au obţinut valori
mari pentru funcţia de evaluare (oferă şanse mai mari de evoluţie şi cromozomilor mai slabi).

4.4 Operatorii genetici

4.4.1 Selecţia

Pentru acest operator genetic de obicei se selectează doar un singur cromozom din populaţie. Acest
cromozom este copiat în noua populaţie fără nici o modificare. Această metodă se mai foloseşte şi
pentru a nu pierde cromozomul care a obţinut cea mai bună valoare la funcţia de evaluare (elitism) în
populaţia curentă. De asemenea, operatorul se aplică şi pentru alţi cromozomi selectaţi pe baza
metodelor de selecţie propuse dar de obicei acest operator apare de un număr mic de ori la generarea
noii populaţii.

4.4.2 Mutaţia

Mutaţia este un alt operator genetic important şi reprezintă un proces prin care cromozomul curent îşi
modifică ocazional una sau mai multe valori într-un singur pas. Mutaţia depinde de asemenea de
codificarea cromozomului. Mutaţia alege doar un singur candidat şi aleator modifică unele valori ale
acestuia (modificând doar semnul acelei valori sau uneori se modifică şi valoarea – în cazul
reprezentării prin valoare, sau se schimbă doar valoarea în cazul reprezentării binare). Mutaţia
funcţionează prin alegerea aleatoare a numărului de valori care vor fi schimbate şi a modului de
modificare a acestora. Prezentăm un exemplu de modificare a 2 cromozomi, primul având trei puncte
de modificare iar al doilea doar două puncte de modificare. În funcţie de dimensiunea cromozomului
se alege numărul de puncte pentru care se aplică mutaţia.

Original 1 -0.23 0 0 0.89 0 0.52 0 0 0 0 -0.04 … 0.03


Original 2 0 0 0.08 -0.67 -0.01 0 0 0 0 0.01 0 … 0.01
Urmaş modificat 1 0.23 0 0 0.89 0 0.52 0 0 -1.0 0 -0.04 … -0.03
Urmaş modificat 2 1.0 0 0.08 -0.67 -0.01 0 0 0 0 0.1 0 … 0.01

52
Algoritmi genetici

4.4.3 Crossover

Crossover poate fi asociat cu crearea următoarei populaţii folosind populaţia curenta. Acest operator
depinde foarte mult de tipul de codificare al cromozomilor. Metoda de crossover este aplicată la o
pereche de părinţi aleşi folosind una din metodele prezentate. Cu o probabilitate pc părinţii sunt
recombinaţi pentru a forma doi noi copii care vor fi introduşi în noua populaţie. De exemplu luăm 2
părinţi din populaţia curentă, împărţim şi încrucişăm componentele astfel încât să se producă 2 noi
candidaţi. Aceşti candidaţi în urma încrucişării trebuie să reprezente o soluţie posibilă pentru
parametrii problemei noastre de optimizare; de aceea de obicei se interschimbă valori de pe aceleaşi
poziţii. Utilizând un punct de recombinare putem crea noii candidaţi prin combinarea primei părţi din
primul părinte cu a doua parte din al doilea părinte. După recombinare se poate face aleator o mutaţie
pe noii candidaţi obţinuţi. Dacă dimensiunea cromozomului este mare, se pot alege mai multe puncte
de recombinare. Prezentăm un exemplu cu două puncte de recombinare:

Cromozom 1 -0.23 0 0 0.89 0 0.52 0 0 0 0 -0.04 … 0.03


Cromozom 2 0 0 0.08 -0.67 -0.01 0 0 0 0 0.01 0 … 0.01
Urmaş1 -0.23 0 0 0.89 -0.01 0 0 0 0 0.01 0 … 0.03
Urmaş 2 0 0 0.08 -0.67 0 0.52 0 0 0 0 -0.04 … 0.01

4.5 Paşii algoritmului genetic:

1. Se codifică datele problemei într-un cromozom.


2. Se generează aleator o populaţie. Se recomandă ca populaţia să aibă un număr suficient de
mare de cromozomi (50 -100 cromozomi – soluţii aleatoare la problemă). Fiecare valoare din
cromozom este iniţializată cu o valoare aleatoare mică.
3. Pentru fiecare cromozom se calculează încrederea acestuia cu funcţia de evaluare (fitness).
4. Dacă s-a găsit un cromozom pentru care se obţine valoarea dorită se termină algoritmul iar
acel cromozom reprezintă soluţia problemei (în cazul în care se ştie unde dorim să ajungem).
O altă condiţie de terminare a algoritmului ar putea fi cazul în care după un număr specificat
de paşi nu s-au mai obţinut îmbunătăţiri (când nu ştim exact valoarea unde vom ajunge).
5. Folosind rezultatele funcţiei de evaluare se generează următoare populaţie astfel:
a. Se vor selecta primii cei mai buni 50% din cromozomi din prima populaţie şi se vor
copia în noua populaţie;

53
Algoritmi genetici

b. Pentru restul de 50% din noua populaţie se vor folosi operatorii de mutaţie şi
crossover astfel:
i. Se selectează aleator folosind una din metodele prezentate unul sau doi
cromozomi din prima jumătate a noii populaţii.
ii. Dacă s-a selectat doar un cromozom se aplică acestuia operatorul de mutaţie.
iii. Dacă s-au selectat 2 cromozomi se aplică operatorul de crossover.
6. Se revine la pasul 3.

([GHSroblema. Să se implementeze un algoritm genetic pentru calcul minimului următoarei funcţii:

f ( x) = sinh (cos( x) * cos( x) + 1), pentru x ∈ [0,5] , x număr real

Obs.

ª Pentru această problemă un cromozom va fi format din reprezentarea binară a numărului x.


ª Se va folosi o populaţie de 100 de cromozomi.
ª Funcţia de fitness pentru această problemă va fi de fapt funcţia f(x) prezentată mai sus.
ª Pentru a respecta teoria evoluţiei se recomandă ca operatorii de mutaţie şi selecţie să se
folosească de un număr considerabil redus de ori în comparaţie cu operatorul crossover pentru
generarea unei noi populaţii.

Ex. de algoritm genetic: http://www.obitko.com/tutorials/genetic-algorithms/example-function-minimum.php

54

S-ar putea să vă placă și