Sunteți pe pagina 1din 8

Sisteme de conducere fuzzy (UPT, 2011)

LUCRAREA DE LABORATOR NR. 2



FUNCII UTILIZATE PENTRU DEFINIREA BAZEI DE REGULI. FUNCIA UTILIZAT
PENTRU OPERAIA DE DEFUZZIFICARE

A. OBIECTIVELE LUCRRII:
1. nsuirea funciilor Matlab utilizate pentru definirea bazei de reguli.
2. nsuirea funciei Matlab utilizate pentru operaia de defuzzificare.

B. CONSIDERAII PREGTITOARE:
1. Funcii Matlab utilizate pentru definirea bazei de reguli.
FLT-Matlab admite trei funcii pentru definirea bazei de reguli a unui RG-F, i anume [1]:
a) funcia addrule;
b) funcia showrule;
c) funcia parsrule.
Se precizeaz c este vorba despre RG-F de tip Mamdani [2], [3], iar ca inferen este
acceptat implicit metoda MAX-MIN a lui Mamdani.
a) Funcia addrule. Sintaxa acestei funcii este:
fis2 = addrule(fis1, regLista). (14.4.1)
Prin apelarea funciei addrule se adaug / completeaz regulile lingvistice definite n
parametrul regLista a regulatorului fuzzy cu structura definit n prealabil de variabila fis1 din
spaiul de lucru Matlab. Ca rezultat se obine RG-F cu structura din variabila fis2.
Parametrul regLista poate fi o list de una sau mai multe linii, fiecare linie reprezentnd
cte o regul lingvistic.
Formatul parametrului regLista este specific regulatorului pentru care se definesc aceste
reguli. Dac RG-F are m intrri i n ieiri, atunci regLista trebuie s aib (m+n+2) coloane;
primele m coloane se refer la cele m intrri, urmtoarele n coloane se refer la cele n ieiri, coloana
(n+m+1) se refer la importana fiecrei reguli, care poate fi 0 sau 1, valoarea 0 semnific regul fr
nici o importan, iar valoarea 1 semnific regul important (n general, pentru regulile definite se
va utiliza valoarea 1); coloana (n+m+2) conine valorile 1 sau 2 dup cum operatorul pentru evaluarea
fiecrei reguli este de tip I, respectiv SAU; cum n evaluarea regulii de tipul DAC (...) ATUNCI
(...) se utilizeaz operatorul I, n aceast ultim coloan se va introduce valoarea 1.
n acest format, 'indexed', n primele (m+n) coloane se introduc indexurile TL de intrare
i ieire conform modulului de fuzzificare i bazei de reguli.
Exemplul 14.4.1: Se consider un RG-F cu dou VL de intrare {i
1
,i
2
} (TL afereni sunt notai
cu TL
j
, j=1,2,) i o VL de ieire, u (TL afereni sunt notai cu TL
k
, k=1,2,). Se accept c baza de
reguli este exprimat astfel:
R
1
: DAC i
1
=TL
1
I i
2
=TL
1
ATUNCI u=TL
3

SAU
R
2
: DAC i
1
=TL
1
I i
2
=TL
2
ATUNCI u=TL
4

SAU
R
3
: DAC i
1
=TL
2
I i
2
=TL
1
ATUNCI u=TL
2

SAU
R
4
: DAC i
1
=TL
2
I i
2
=TL
2
ATUNCI u=TL
1
.
O astfel de baz se reguli se poate introduce n format 'indexed' conform urmtoarei
secvene de program:
RegLista = [1 1 3 1 1
1 2 4 1 1
2 1 2 1 1
2 2 1 1 1];
fis1=addrule(fis1,regLista)
b) Funcia showrule. Sintaxa funciei este dat de relaia (14.4.2):
showrule(fis1, regIndex, regFormat, limba), (14.4.2)
Sisteme de conducere fuzzy (UPT, 2011)
iar efectul apelrii sale const n afiarea regulilor din baza de reguli (definit prin addrule) cu indexul
regIndex aferent regulatorului fuzzy cu structura definit anterior (n spaiul de lucru Matlab) de
variabila fis1.
Parametrul regFormat reprezint formatul n care se dorete afiarea regulilor. Valorile
posibile pentru parametrul regFormat sunt:
- 'verbose' prin care se afieaz regulile n limbaj natural n englez (de exemplu, IF (...)
THEN (...)),
- 'indexed' prin care se afieaz regulile n format indexat (ntructva asemntor unei
tabele de adevr) i
- 'symbolic' prin care se afieaz regulile n format simbolic (de exemplu, (x
1
=P) &
(x
2
=P) ==> u = PB (1))
(a se vedea exemplul 14.4.2).
Observaie: La utilizarea formatului 'verbose' trebuie utilizat acelai numr de caractere
ntre paranteze pentru toate regulile. n caz contrar apar erori.
Parametrul limba se refer la limba n care se dorete afiarea regulilor englez, francez
sau german n cazul utilizrii limbajului natural i poate lua valorile 'english', 'francais',
respectiv 'deutsch'. Cuvintele-cheie pentru limba = 'english' sunt urmtoarele: IF, THEN, IS,
AND, OR i NOT.
c) Funcia parsrule. Sintaxa funciei parsrule este de forma:
fis2 = parsrule(fis1, regLista, regFormat, limba). (14.4.3)
Funcia parsrule adug variabilei fis1 (n care este descris structura RG-F sau sistemului
de inferen fuzzy) baza de reguli dat n regLista n formatul specificat de regFormat i n
limba specificat de limba. Prin urmare funcia parsrule este o variant flexibil a funciei
addrule.
n cazul n care fis2 = fis1, rezult aceeai variabil fis1 care, fa de cea existent
nainte de apelarea funciei parsrule, conine i noua baz de reguli.
O apelare de forma (14.4.4):
fis2 = parsrule(fis1, regLista) (14.4.4)
analizeaz regulile date n formatul 'verbose' prin regLista.
Exemplul 14.4.2: Pentru exemplificarea utlizrii funciilor addrule, showrule i parsrule se
continu exemplul 14.3.1 referitor la un RG-F de tip Mamdani destinat reglrii temperaturii (admite o
VL de intrare, Temperatura,T). Pentru aceasta, se consider VL de ieire comanda u, cu cei 5 TL
denumii {CVS, CS, CM, CB, CVB} i avnd f.d.ap conform fig.14.4.1.
CVS
CS CM CB CVB
0
0,5
1

u 0,1 0,3 0,4 0,6 0,9



Fig.14.4.1.

Pentru inferen este utilizat metoda MAX-MIN a lui Mamdani asistat de tabelul de decizie
din tabelul 14.4.1 (baza de reguli este format din 5 reguli).

Tabelul 14.4.1
T TFJ TJ TM TI TFI
U CVB CB CM CS CVS
Sisteme de conducere fuzzy (UPT, 2011)

Programul surs Matlab care permite definirea modulelor de fuzzificare, inferen i a bazei de
reguli este urmtorul:
b=newfis(fuzzif&inf&br);
% introducerea VL de intrare (f.d.ap. ale TL):
b=addvar(b,input,Temperatura,[0 30]);
b=addmf(b,input,1,TFJ,trapmf,[0 0 3 9]);
b=addmf(b,input,1,TJ,trimf,[3 9 15]);
b=addmf(b,input,1,TM,trimf,[9 15 21]);
b=addmf(b,input,1,TI,trimf,[15 21 27]);
b=addmf(b,input,1,TFI,trapmf,[21 27 30 30]);
% afiare f.d.ap. ale TL afereni VL de intrare:
plotmf(b,input,1)
pause
% introducerea VL de ieire (f.d.ap. ale TL):
b=addvar(b,output,comanda,[0 1]);
b=addmf(b,output,1,CVS,trapmf,[0 0 0.1 0.3]);
b=addmf(b, output,1,CS,trimf,[0.1 0.3 0.5]);
b=addmf(b,output,1,CM,trimf,[0.3 0.5 0.7]);
b=addmf(b,output ,1,CB,trimf,[0.5 0.7 0.9]);
b=addmf(b,output,1,CVB,trapmf,[0.7 0.9 1 1]);
% afiare f.d.ap. ale TL afereni VL de ieire:
plotmf(b,output,1)
pause
% introducerea primelor 4 reguli din baza de reguli (n format
% indexed):
regLista=[1 5 1 1
2 4 1 1
3 3 1 1
4 2 1 1];
b=addrule(b,regLista);
% afiarea primelor 4 reguli n diverse formate:
regIndex=1:1:4;
showrule(b,regIndex,indexed,english)
pause
showrule(b,regIndex,verbose,english)
pause
showrule(b,regIndex,symbolic,english)
pause
% introducerea regulii a 5-a (n acelai format):
reg5=[5 1 1 1];
b=addrule(b,reg5);
% afiarea ntregii baze de reguli:
regIndex=1:1:5;
showrule(b,regIndex,indexed,english)
pause
showrule(b,regIndex,verbose,english)
pause
showrule(b,regIndex,symbolic,english)
pause
% salvarea variabilei curente din spaiul de lucru Matlab pe
% harddisk:
writefis(b,fuzzif&inf&br);
Exemplul 14.4.3: Pentru exemplificarea utilizrii funciilor pn aici introduse, va fi definit
RG-F care conduce sistemul pendul invers descris n [2], [3] i prezentat n cele ce urmeaz.
Sisteme de conducere fuzzy (UPT, 2011)
ntr-o variant simplificat, modelul matematic intrare-ieire (MM-II) aferent procesului
condus pendul invers este dat de urmtoarea ecuaie:
m l
2
+ m l g sin = , (14.10.1)
n care:
m masa pendulului;
l lungimea pendulului;
g acceleraia gravitaional;
poziia fa de vertical a pendulului / unghiul de deviaie fa de vertical al pendulului
(msurat n sens trigonometric); are rolul de ieire reglat (y);
= u momentul (torque) aplicat pendulului n vederea meninerii lui n poziia vertical;
are rol de mrime de comand (execuie) (u).
Schema de principiu a sistemului pendulul invers (n repaos) este prezentat n fig.14.10.1-
a. n fig.14.10.1-b este redat o reprezentare simplificat a sistemului, reprezentare utilizat i ulterior.

mg
a

mg
b

l
Fig.14.10.1


Relaia (14.10.1) reprezint o particularizare a MM-II general al pendulului invers, care va fi
prezentat n lucrarea nr. 6. n aceeai lucrare vor fi dezvoltate i implementate regulatoare fuzzy
destinate conducerii sistemului n timp real pe o instalaie de laborator.
Alegnd ca variabile de stare poziia unghiular x
1
= i viteza unghiular x
2
=, se obine
urmtorul MM-ISI neliniar aferent procesului:
x
1
= x
2
, (14.10.2)
g 1
x
2
= sin x
1
u, (14.10.3)
l m l
2

y = x
1
. (14.10.4)
Acceptnd ipoteza deviaiei mici a poziiei curente a pendulului de la poziia nominal
(vertical) caracterizat de
0
= 0 (|| 3
0
), se poate scrie:
sin x
1
x
1
(x
1
= ), (14.10.5)
i, n consecin, rezult urmtoarele ecuaii de stare liniarizate aferente procesului:
x
1
= x
2
, (14.10.6)
g 1
x
2
= x
1
u, (14.10.7)
l m l
2

n continuare, se consider c x
1
este msurat n grade (
0
) i, corespunztor, x
2
este msurat
n grade pe secund (
0
/sec); n ipoteza c dimensiunile "mecanice" ale pendulului se iau conform
relaiei (14.10.8):
180
l = g, m = , (14.10.8)
g
2

se obin ecuaiile de stare (14.10.9) i (14.10.10):
x
1
= x
2
, (14.10.9)
x
2
= x
1
u. (14.10.10)
Observaie: Alegerea dimensiunilor conform relaiei (14.10.8) are doar menirea de a
simplifica scrierea n continuare a MM-ISI prin omiterea unor coeficieni neunitari.
Sisteme de conducere fuzzy (UPT, 2011)
n continuare, MM-ISI cu timp discret corespunztor MM-ISI cu timp continuu (14.10.9) i
(14.10.10), obinut prin discretizare prin metoda dreptunghiurilor ntrziate cu o perioad de
eantionare T
e
= 1 sec, obine forma:
x
1,k+1
= x
1,k
+ x
2,k
, (14.10.11)
x
2,k+1
= x
1,k
+ x
2,k
- u
k
, (14.10.12)
y
k
= x
1,k
; (14.10.13)
cu k N se contorizeaz momentul de timp curent t
k
= kT
e
.
RG-F destinat conducerii procesului astfel modelat (relaiile (14.10.11) ... (14.10.13)) are dou
VL de intrare (poziia unghiular x
1
i viteza unghiular x
2
) i o VL de ieire (comanda u).
Pentru poziia x
1
se definesc trei TL (N, Z, P), cu reprezentarea grafic a f.d.ap. dat n
fig.14.10.3; domeniul de baz / universul discursului pentru intrarea x
1
= este [3;3]
0
.
0
-2 3 2 - 3
N P Z

x1
x
1
Fi g .

14.10.3.

Pentru viteza unghiular x
2
se definesc de asemenea trei TL (N, Z, P), cu f.d.ap. conform
fig.14.10.4; domeniul de baz / universul discursului pentru intrarea x
2
= se accept intervalul [6;6]
0
/sec.
0
-4 6 4 -6
N P Z

x2
x
2
Fig.

14.10.4.

Variabilei lingvistice de ieire, comanda u, i se asociaz apte TL (NVB, NB, N, Z, P, PB,
PVB); formele f.d.ap. i domeniul de baz / universul discursului sunt prezentate n fig.14.10.5.
0
-10 20 10 -20
N P Z

u
u
Fig.
PB PVB NB NVB

14.10.5.

Semnificaia termenilor lingvistici prezentai anterior este cea frecvent utilizat.
Baza de reguli pentru RG-F va fi alctuit din 9 reguli prezentate sintetic n tabelul 14.10.1.

Tabelul 14.10.1
x
1
\ x
2
P Z N
Cod
reg.
P PB P Z R
1+
Sisteme de conducere fuzzy (UPT, 2011)
Z P Z N R
2+
N Z N NB R
3+
Cod
reg. R
-1
R
-2
R
-3


Remarc: Se observ c baza de reguli nu apeleaz sub nici o form TL PVB i NVB. Aceti
termeni lingvistici au fost introdui doar pentru a elimina problemele de capt care ar apare la
defuzzificare prin metoda centrului de greutate [2].
Revenind la subiectul acestei lucrri, n cele ce urmeaz va fi prezentat modalitatea de
definire a bazei de reguli n toate formatele menionate. Sistemul are dou intrri x
1
= poziia
pendulului i x
2
= viteza unghiular, o ieire u = comanda i o baz de reguli compus din 9
reguli.
Programul aferent este prezentat n continuare; pentru parametrul regFormat s-a utilizat
reprezentarea 'verbose', iar limba utilizat este engleza ('english').
a=newfis('Pendul');
a=addvar(a,'input','x1',[-3 3]);
a=addmf(a,'input',1,'N','trapmf',[-3 -3 -2 0]);
a=addmf(a,'input',1,'Z','trimf',[-2 0 2]);
a=addmf(a,'input',1,'P','trapmf',[0 2 3 3]);
a=addvar(a,'input','x2',[-6 6]);
a=addmf(a,'input',2,'N','trapmf',[-6 -6 -5 0]);
a=addmf(a,'input',2,'Z','trimf',[-5 0 5]);
a=addmf(a,'input',2,'P','trapmf',[0 5 6 6]);
a=addvar(a,'output','u',[-25 25]);
a=addmf(a,'output',1,'NVB','trapmf',[-25 -25 -24 -16]);
a=addmf(a,'output',1,'NB','trimf',[-20 -16 -8]);
a=addmf(a,'output',1,'N','trimf',[-16 -8 0]);
a=addmf(a,'output',1,'Z','trimf',[-8 0 8]);
a=addmf(a,'output',1,'P','trimf',[0 8 16]);
a=addmf(a,'output',1,'PB','trimf',[8 16 20]);
a=addmf(a,'output',1,'PVB','trapmf',[16 24 25 25]);
regLista=['If(x1 is P)and(x2 is P)then(u is PB)';
'If(x1 is P)and(x2 is Z)then(u is P)';
'If(x1 is P)and(x2 is N)then(u is Z)';
'If(x1 is Z)and(x2 is P)then(u is P)';
'If(x1 is Z)and(x2 is Z)then(u is Z)';
'If(x1 is Z)and(x2 is N)then(u is N)';
'If(x1 is N)and(x2 is P)then(u is Z)';
'If(x1 is N)and(x2 is Z)then(u is N)';
'If(x1 is N)and(x2 is N)then(u is NB)'];
a=addrule(a,regLista);
writefis(a,'Pendul');
Dac se utilizeaz reprezentarea n forma indexat a bazei de reguli, se execut:
regIndex=1:1:9;
showrule(a,regIndex,indexed,english)
i se obine:
3 3, 6 (1) : 1
3 2, 5 (1) : 1
3 1, 4 (1) : 1
2 3, 5 (1) : 1
2 2, 4 (1) : 1
2 1, 3 (1) : 1
1 3, 4 (1) : 1
1 2, 3 (1) : 1
Sisteme de conducere fuzzy (UPT, 2011)
1 1, 2 (1) : 1
Primele dou coloane ale listei de mai sus sunt asociate celor dou intrri ale sistemului, a
treia coloan este asociat ieirii, urmtoarea coloan indic gradul de importan a fiecrei reguli (cu
valoarea implicit 1), iar ultima coloan d tipul operatorului cu care se evalueaz fiecare regul (n
acest caz este vorba despre operatorul I corespunztor metodei de inferen MAX-MIN utilizate).
Dac se utilizeaz forma simbolic de reprezentare a aceleiai baze de reguli (varianta
'symbolic'), se execut:
regIndex=1:1:9;
showrule(a,regIndex,symbolic,english)
i se obine:
(x1==P) & (x2==P) (u=PB) (1)
(x1==P) & (x2==Z) (u=P) (1)
(x1==P) & (x2==N) (u=Z) (1)
(x1==Z) & (x2==P) (u=P) (1)
(x1==Z) & (x2==Z) (u=Z) (1)
(x1==Z) & (x2==N) (u=N) (1)
(x1==N) & (x2==P) (u=Z) (1)
(x1==N) & (x2==Z) (u=N) (1)
(x1==N) & (x2==N) (u=NB) (1)

2. Funcia Matlab utilizat pentru operaia de defuzzificare.
Pentru operaia de defuzzificare din cadrul unui RG-F n Fuzzy Logic Toolbox din cadrul
Matlab se dispune de funcia defuzz cu urmtoarea sintax:
y = defuzz(x,fdap, tip), (14.5.1)
n care:
x vectorul coloan al variabilei independente pe care este definit variabila lingvistic (de
ieire);
y valoarea ferm (scalar) obinut n urma defuzzificrii;
fdap vectorul coloan al valorilor f.d.ap. aferente variabilei lingvistice supuse defuzzificrii
(comanda / ieirea);
tip parametru prin care se specific metoda de defuzzificare aleas (a se vedea partea I a
lucrrii).
Parametrul tip poate lua valorile:
- 'centroid' la utilizarea metodei centrului de greutate;
- 'mom' la utilizarea metodei maximelor mediate;
- 'som' la utilizarea metodei eantionului minim;
- 'lom' la utilizarea metodei eantionului maxim.
Parametrul tip poate lua i alte valori definite de utilizator; valoarea sa va indica numele
funciei care efectueaz operaia de defuzzificare.

C. TEMATICA LUCRRII:
1. Pentru exemplele 14.3.1 14.3.3 se execut secvenele de program Matlab prezentate. Se
studiaz i modificrile bazelor de reguli prin modificrile corespunztoare n programe.
2. Se execut urmtoarea secven de program Matlab pentru calculul comenzii ferme
elaborate de RG-F presupunnd c
x=0:0.1:1;
fdap1=trapmf(x,[0 0 10 30]);
y1=defuzz(x,fdap1,centroid)
fdap2=trimf(x,[10 30 50]);
y2=defuzz(x,fdap2,centroid)
3. Pentru punctul anterior se studiaz efectul modificrii metodei de defuzzificare asupra
valorii rezultatului (comenzii ferme). Spre exemplu, se execut urmtoarea secven de program
Sisteme de conducere fuzzy (UPT, 2011)
referitoare la selectarea altei metode de defuzzificare aferente RG-F avnd structura salvat n fiierul
fisier.fis:
c=readfis(fisier.fis)
c=setfis(c,defuzzMethod,mom);
writefis(c,fisier.fis);
getfis(c)
Procednd mai simplu, un efect similar se obine nlocuind a treia linie de program cu:
c.defuzzMethod=mom;
Important: Se poate proceda similar ultimelor linii de program Matlab i n cazul
modificrii oricrei alte proprieti a RG-F (sistemului de inferen fuzzy), cu diferene inerente de
la o versiune a mediului Matlab la alta. n lucrarea urmtoare vor fi prezentate funciile legate de
variabilele de tip fis, prin intermediul crora pot fi modificate proprietile menionate.
Sunt create i alte secvene de program care s permit studiul tuturor metodelor de
defuzzificare cunoscute.

D. BIBLIOGRAFIE:
[1] Matlab: Fuzzy Logic Toolbox, MathWorks Inc., Natick, MA, 1998.
[2] Preitl, St. i R.-E. Precup: Introducere n conducerea FUZZY a proceselor, Editura Tehnic,
Bucureti, 1997.
[3] Precup, R.-E. i St. Preitl: Fuzzy Controllers, Editura Orizonturi Universitare, Timioara, 1999.
[4] Precup, R.-E.: Matematici asistate de calculator. Algoritmuri, Editura Orizonturi Universitare,
Timioara, 2007.

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