Documente Academic
Documente Profesional
Documente Cultură
0,
( x ) /( ),
F ( x) =
1,
( x) /( ),
0,
dac
dac
dac
dac
dac
x<
x [, ]
x [, ] , x R, < < , (10.7)
x [ , ]
x>
1, dac
F ( x) =
0, n rest
x=
, xR ,
(10.8)
F ( x) = e ( x x )
/ 22
, xR ,
(10.9)
F ( x) = 1 /(1+ | ( x x ) / a | 2b ), x R ,
(10.10)
(10.56)
n care:
(10.57)
(10.58)
n care:
param = [ ].
(10.59)
(10.60)
n care:
param = [ x ].
(10.61)
x=(0:0.1:10) ';
y=gaussmf(x,[1 5]);
plot(x, y)
n fig. 10.10 este prezentat graficul f.d.ap. generate.
( x a1 ) 2
e 2b12 ,
x a1
( x) = 1,
x (a1 , a 2 ]
,
( x a2 ) 2
2b 2
2
e
,
x > a 2 , b1 , b2 > 0
cazul 2: a1 a2:
(10.62)
( x a1 ) 2
e 2b12 ,
( x ) =
2
( x a22 )
e 2b2 ,
xc
(10.63)
x>c
unde parametrul c (a1, a2) este obinut din condiia de continuitate a funciei
din (10.63):
(c a1 ) 2 b22 = (c a 2 ) 2 b12 .
(10.64)
F.d.ap. obinut n acest al doilea caz este subnormal. Sintaxa unei f.d.ap. de tip
curb Gauss asimetric este:
y = gauss2mf(x, param),
(10.65)
n care:
param = [b1 a1 b2 a2].
(10.66)
(10.67)
n care:
param = [a b x ].
(10.68)
( x ) =
1
1+ e
a ( x c )
(10.69)
care pentru a > 0 asigur o f.d.ap. este deschis ctre dreapta, iar pentru a < 0 ctre
stnga. Sintaxa funciei Matlab aferente este:
y = sigmf(x, param),
(10.70)
n care:
param = [a c].
(10.71)
(10.72)
(10.73)
(10.76)
10
(10.77)
(10.78)
iar efectul apelrii sale const n afiarea regulilor din baza de reguli (definit prin
addrule) cu indexul regIndex aferent regulatorului fuzzy definit anterior (n spaiul
de lucru Matlab) de variabila fis1. Parametrul regFormat reprezint formatul
n care se dorete afiarea regulilor; valorile posibile pentru acest parametru 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), acesta fiind formatul implicit,
- 'symbolic' prin care se afieaz regulile n format simbolic (de
exemplu, (x1=P) & (x2=P) ==> u = PB (1)).
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.
12
Funcia parsrule adug la variabila fis1 (care este un SIF, n particular RG-F)
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 cel existent nainte de apelarea funciei parsrule, conine i noua baz de reguli.
O apelare de forma (10.80):
fis2 = parsrule(fis1, regLista)
(10.80)
TFJ
TJ
TM
TI
TFI
CVB
CB
CM
CS
CVS
pause
showrule(b,regIndex,'symbolic','english')
pause
% introducerea regulii a 5-a (in acelasi format):
reg5=[5 1 1 1];
b=addrule(b,reg5);
% afisarea intregii 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
showrule(b,regIndex,'verbose','deutsch')
pause
showrule(b,regIndex,'verbose','francais')
pause
% salvarea variabilei curente din spatiul
% de lucru Matlab pe harddisk,
% in fisierul fuzzif&inf&br.fis:
writefis(b,'fuzzif&inf&br');
Exemplul 10.10: Pentru exemplificarea utilizrii funciilor pn aici
introduse, va fi implementat n Matlab SIF sub forma unui RG-F care conduce
sistemul pendul invers descris n variant simplificat n [P4] i [P6]. SIF are
dou VL de intrare, poziia unghiular x1 i viteza unghiular x2, i o VL de ieire,
comanda u. Pentru poziia x1 se definesc trei TL (N, Z, P), cu reprezentarea grafic
a f.d.ap. dat n fig. 10.16; domeniul de baz / universul discursului pentru intrarea
x1 este [3;3]. Pentru viteza unghiular x2 se definesc de asemenea trei TL (N, Z,
P), cu f.d.ap. conform fig. 10.17; domeniul de baz / universul discursului pentru
intrarea x2 se accept sub forma intervalului [6;6]. 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. 10.18.
15
16
PB
R1+
R2+
N
Cod
regul
NB
R3+
R-1
R-2
R-3
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=[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
1 1 2 1 1];
a=addrule(a,regLista);
writefis(a,'Pendul');
Prin urmare, a fost utilizat reprezentarea n forma indexat a bazei de
reguli, reprezentarea implicit. 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 utilizat n concluzionare (n
acest caz este vorba despre operatorul I corespunztor mecanismului de inferen
MAX-MIN utilizat n cadrul exemplului).
Dac se dorete 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)
18
(x1==P)
(x1==Z)
(x1==Z)
(x1==Z)
(x1==N)
(x1==N)
(x1==N)
&
&
&
&
&
&
&
(x2==N)
(x2==P)
(x2==Z)
(x2==N)
(x2==P)
(x2==Z)
(x2==N)
(u=Z) (1)
(u=P) (1)
(u=Z) (1)
(u=N) (1)
(u=Z) (1)
(u=N) (1)
(u=NB) (1)
(10.81)
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 (ieirea);
tip parametru prin care se specific metoda de defuzzificare aleas;
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.
5. Funcii Matlab referitoare la variabilele de tip fis. Variabilele de tip
fis i fiierele de tip fis (cu extensia fis) au menirea de a caracteriza complet /
modifica proprietile sistemelor de inferen fuzzy. Pentru aceste fiiere sunt
disponibile apte funcii Matlab: getfis, newfis, plotfis, readfis, setfis, writefis.
a) Funcia getfis. Sintaxa funciei este urmtoarea:
out = getfis(fis),
(10.82)
iar efectul const n returnarea unei liste a proprietilor SIF definit prin varaibila
fis. O apelare de forma:
out = getfis(fis,'fisProp'),
(10.83)
(10.84)
(10.85)
(10.86)
atunci se creeaz o variabil fis corespunztoare unui SIF de tipul specificat prin
parametrul fisTip; acesta poate lua valorile 'Mamdani' respectiv 'Sugeno'
i va fi selectat n funcie de tipul SIF implementat.
c) Funcia plotfis. Are menirea de a reprezenta grafic caracteristica static a SIF
(n particular, RG-F). Apelarea funciei n forma:
(10.87)
plotfis(fismat)
(10.88)
(10.89)
'fisPropNume', nouPropVal)
(10.90)
genereaz o variabil fis2 care este identic variabilei iniiale fis1 cu excepia
proprietii cu numele 'varPopNume', care va lua valoarea nouPropVal
pentru variabila lingvistic specificat prin numele 'varTip' i indexul
varIndex.
O alt apelare a funciei setfis este de forma:
fis2=setfis(fis1,'varTip',varIndex,'fdap',fdapIndex,...
(10.91)
'fdapPropNume',nouPropVa),
i realizeaz doar modificarea proprietilor unui termen lingvistic specificat prin
numele 'fdap' i indexul fdapIndex, TL fiind asociat variabilei lingvistice de
tip 'varTip' i index varIndex.
f) Funcia showfis. Sintaxa acestei funcii este:
showfis(fismat).
(10.92)
Prin (10.92) se asigur afiarea unei versiuni text pentru SIF asociat varabilei
fismat.
g) Funcia writefis. Funcia se apeleaz sub forma:
(10.93)
writefis(fismat, 'fisNume')
(10.94)
pause
b=readfis('fuzzif&inf&br');
iesire1=evalfis([15],b)
iesire2=evalfis([25],b)
S se efectueze calcule ale ieirilor ferme i pentru alte valori ferme ale intrrii /
intrrilor.
10. S se vizualizeze CS aferente SIF definite n exemplelele 10.9 i 10.10.
S se efectueze studiul efectelor modificrii parametrilor din:
modulul de fuzzificare,
modulul de inferen,
modulul de defuzzificare,
asupra CS aferente SIF. n acest sens se recomand utilizarea funciei gensurf.
10.3. Bibliografie
[G6] Galichet, S. i L. Foulloy: Fuzzy Controllers: Synthesis and Equivalences,
IEEE Transactions on Fuzzy Systems, vol. 3, no. 3, pp. 140-148, 1995.
[M1] MathWorks: Matlab the Language of Technical Computing, Using Matlab,
Version 5, The MathWorks Inc., Natick, MA, 1998.
[M6] MathWorks: Matlab Fuzzy Logic Toolbox, MathWorks Inc., Natick, MA,
1998.
[M7] MathWorks: Simulink Dynamic System Simulation for Matlab, Using
Simulink, Version 4, The MathWorks Inc., Natick, MA, 2000.
[P4] Preitl, St. i R.-E. Precup: Introducere n conducerea FUZZY a proceselor,
Editura Tehnic, Bucureti, 1997.
[P6] Precup, R.-E. i St. Preitl: Fuzzy Controllers, Editura Orizonturi Universitare,
Timioara, 1999.
24