Download - ANFIS Ex Bosanski
-
7/30/2019 ANFIS Ex Bosanski
1/29
1
ANFIS
(Adaptive Neuro-Fuzzy Inference System)
Adaptivni Neuro Fazi Sistem Zakljuivanja
Vjebe
Verzija 2.0
Tatjana Konjic
-
7/30/2019 ANFIS Ex Bosanski
2/29
2
Vjebe - ANFIS struktura u MATLAB-u
Radi lakeg praenja vjebe podsjetimo se jo jednom strukture fuzzy sistema Sugeno tipa.
Neka su data dva pravila fazi sistema Takagi-Sugeno tipa:
1. Ako (If)xjeA1iyjeB1, onda je(Then) ypxppf 1211101 ++=
2. Ako (If)xjeA2iyjeB2, onda je(Then) ypxppf2
2
2
1
2
0
2++=
Neka su funkcije pripadnosti fazi skupovaAi, Bi, i=1,2, oznaene sa Ai i Bi, respektivno.
Za predstavljanje pravila, izabran jeproizvodza T-normu (logika I operacija).
1. Uzroni dio pravila mogue je predstaviti kao:
( ) ( )21,i,yx
ii BA
i==
2. Izlaz sistema, uzimajui u obzir posljedini dio pravila je:( )
( ) ( ) ( ) ( )( ) ( )y,xy,x
y,xfy,xy,xfy,xy,xf
21
2211
+
+= ,
ili, izostavljajui argumente:
21
2211
+
+
=
ff
f .
Normirani stepen zadovoljenja nekog pravila i definisan je kao:
21+
=
ii .
Funkcija izlazafmoe se zapisati kao:
2211fff += .
Mehanizam zakljuivanja Takagi-Sugeno fazi modela prvog reda sa skupom od dva If-Then pravila,dva ulaza (x iy) i jednim izlaznomf, prikazan je na slici 1.
-
7/30/2019 ANFIS Ex Bosanski
3/29
3
f
x
A1
A2
B1
B2
x
y
y
f1
f2
2
1
1
2
1
2
x
y
N
N
Slika 1 Sugeno fazi struktura sa dva pravila
Osnovni dijagram toka odreivanja strukture ANFIS-a u Matlabu prikazan je na slici 2.
Inicijalizacija fazi sistema
komande: genfis1 ili genfis2
Zadavanje parametara obuavanja
Vani su:
broj iteracija (epoha)
tolerancija (greka)
Pokretanje procesa obuavanja
komanda:anfis
zaustaviti proces kada je postignuta
zadata tolerancija
Potvrda modela na nezavisnim
podacima
komanda: evalfis
Slike 2. Formiranje ANFIS-a
-
7/30/2019 ANFIS Ex Bosanski
4/29
4
Primjer 1.Razmotrimo podeavanje fuzzy sistema nelinearnoj funkciji y u oblasti definisanosti [-1,1].
Nelinearna funkcija predstvlja sumu tri sinusne funkcije:
)x5sin(2.0)x3sin(4.0)xsin(8.0y ++= .
Rjeenje
Problem se rjeava koritenjem Fuzzy Logic Toolbox-a u MATLAB-u.
Kako podaci nisu obezbjeeni, potrebno je prvo generisati ulazno-izlazni skup podataka. U tusvrhu koristi se m-file (sinF.m), koji je:
%Broj ulaznih taaka jenumPts = 51, a ulazni skup podataka je x
numPts=51;x=linspace(-1,1,numPts)';
% Izlaz y
y=0.8*sin(pi*x)+0.4*sin(3*pi*x)+0.2*sin(5*pi*x);
% Pohrani podatke u matricu nazvana data; dio podataka je za fazu treniranja, a dio za fazu
provjere
data=[x y]; % ukupni skup podataka
trndata = data(1:2:numPts,:); %skup podataka za treniranje
chkdata = data(2:2:numPts,:); % skup podataka za provjeru
% Nacrtaj podatke za treniranje (o) i podatke za provjeru (x)
plot (trndata(:,1),trndata(:,2), 'o',chkdata(:,1),chkdata(:,2),'rx')
grid
title('Training data (x) and checking data (o)')
xlabel('x');
ylabel('Measured data for y');
Ako se pokrene m-file sinF, odgovor je:
-
7/30/2019 ANFIS Ex Bosanski
5/29
-
7/30/2019 ANFIS Ex Bosanski
6/29
6
Ako se pokrene m-file sinFgen1, odgovor je:
Slika 4. Poetne funkcije pripadnosti
Slika 5. Struktura Anfis-a; 1 ulaz, 1 izlaz i 5 pravila
Zadavanje drugih parametara za uenje i poetak procesa uenja
-
7/30/2019 ANFIS Ex Bosanski
7/29
7
U Fuzzy Control Toolbox-u postoji korisna komanda nazvana anfis. Ovom komandom je
obezbjeena optimizaciona ema kojom se odreuju parametri fuzzy sistema koji najbolje
odgovaraju skupu ulazno-izlaznih podataka.
Zaponimo optimizacionu proceduru pozivanjem sinFanfis.m:
% odredi brij iteracijanumepochs = 40;
%zaponi optimizaciju[fismat1, trnerr, ss, fismat2, chkerr]=anfis(trndata, fismat, numepochs, NaN, chkdata);
% ili umjestoprethodna dva reda mogue je zapisati komandu i u jednom redu %[fismat1, trnerr, ss, fismat2, chkerr]=anfis(trndata, fismat, [40 NaN NaN NaN NaN], [1 1 1
1], chkdata, 1);
% ukoliko elimo znati mimimalnu greku trenitanjaminimal_taining_RMSE = min(trnerr)
minimal_checking_RMSE = min(chkerr)
% prikai greku na podacima za treniranjefigure(4)
plot (trnerr)
xlabel('Epochs')
ylabel('Trn. error')
% prikai greku na podacima za provjerufigure(5)
plot (chkerr)
xlabel('Epochs')ylabel('Chk. error')
% prikai podeene funkcije pripadnostifigure(6)
plotmf(fismat1,'input',1)
Na monitoru raunara e se pojaviti slijedei odgovor:
ANFIS info:
Number of nodes: 24
Number of linear parameters: 10
Number of nonlinear parameters: 15
Total number of parameters: 25
Number of training data pairs: 26
Number of checking data pairs: 25
Number of fuzzy rules: 5
Start training ANFIS ...
-
7/30/2019 ANFIS Ex Bosanski
8/29
8
1 0.122403 0.11919
2 0.118275 0.115235
3 0.114078 0.111197
4 0.109758 0.107021
5 0.105274 0.102662Step size increases to 0.011000 after epoch 5.
6 0.100593 0.0980892
Step size decreases to 0.008645 after epoch 39.
40 0.0323769 0.0348307
Designated epoch number reached --> ANFIS training completed at epoch 40.
minimal_taining_RMSE = 0.0314
minimal_checking_RMSE = 0.0330
Slika 6. Greka na podacima za treniranje
-
7/30/2019 ANFIS Ex Bosanski
9/29
9
Slika 7. Greka na podacima za provjeru
Slika 8. Podeene funkcije pripadnosti
-
7/30/2019 ANFIS Ex Bosanski
10/29
10
Testiranje modela
Da bi se testirao model na podacima koji se nisu koristili u proceduri treninga koristi se komandaevelfis.
Prikai na istom dijagramu krivu koja predstavlja odziv fuzzy sistema i krivu stvarnih podatakaza provjeru.
U ovu svrhu formiran je m-file sinFevalfis.m), koji je:
% Odredi izlaz anfis-a (out) koristei komandu 'evalfis'out=evalfis(chkdata(:,1),fismat1);
% Prikai izlaz yfigure(7)
hold;
plot(chkdata(:,1),out); % Prikai izlaz iz anfis-a (out) u funkciji podataka za provjeru (25podataka)plot(chkdata(:,1),chkdata(:,2),'g') % Prikai stvarni izlaz y u funkciji podataka za provjeru (25
podataka)plot(x,y,'r') % Prikai stvarni izlaz y u funkciji svih ulaznih podataka x (51 podatak) legend('y - anfis', 'y - chkdata', 'y - all data',2)
xlabel('x')
ylabel('function y')
grid
Odgovor Matlab-a je:
-
7/30/2019 ANFIS Ex Bosanski
11/29
11
Slika 9. Izlaz anfis-a, nelinearna funkcija f
Neke korisne informacije koje mogue dobiti o sistemu
MATLAB funkcija showfisprikazuje karakteristike fuzzy sistema.
>> showfis(fismat1)
1. Name anfis
2. Type sugeno3. Inputs/Outputs [1 1]
4. NumInputMFs 5
5. NumOutputMFs 56. NumRules 5
7. AndMethod prod
8. OrMethod max
9. ImpMethod prod
10. AggMethod max11. DefuzzMethod wtaver
12. InLabels input113. OutLabels output
14. InRange [-1 1]
15. OutRange [-0.9022 0.9022]16. InMFLabels in1mf1
17. in1mf2
-
7/30/2019 ANFIS Ex Bosanski
12/29
12
18. in1mf3
19. in1mf4
20. in1mf5
21. OutMFLabels out1mf122. out1mf2
23. out1mf324. out1mf425. out1mf5
26. InMFTypes gbellmf
27. gbellmf28. gbellmf
29. gbellmf
30. gbellmf
31. OutMFTypes linear32. linear
33. linear
34. linear35. linear
36. InMFParams [0.173 2 -1.067 0]
37. [0.2812 2.004 -0.497 0]38. [0.1358 1.999 2.376e-011 0]
39. [0.2812 2.004 0.497 0]
40. [0.173 2 1.067 0]41. OutMFParams [-9.404 -9.362 0 0]
42. [-0.07385 -0.522 0 0]
43. [9.108 3.493e-011 0 0]
44. [-0.07385 0.522 0 0]45. [-9.404 9.362 0 0]
MATLAB funkcija showruleprikazuje formirana pravila fuzzy sistema.
>> showrule(fismat1)
ans =1. If (input1 is in1mf1) then (output is out1mf1) (1)
2. If (input1 is in1mf2) then (output is out1mf2) (1)
3. If (input1 is in1mf3) then (output is out1mf3) (1)4. If (input1 is in1mf4) then (output is out1mf4) (1)
5. If (input1 is in1mf5) then (output is out1mf5) (1)
Na osnovu informacije o parametrima ulaznih funkcija pripadnosti i informacije o izlaznim
parametrima Sugeno fuzzy sistema prvog reda (linearnog) mogue je zapisati funkciju
pripadnosti, te izlaznu sistemaNa primjer, iz prethodne liste moe se zakljuiti da:
in1mf1 je [0.173 2 -1.067 0].
-
7/30/2019 ANFIS Ex Bosanski
13/29
13
Za model je izabrana generalized bell funkcija pripadnosti:
tako da je na osnovu parametara funkcija pripadnosti oblika :
Izlaz (polinom prvog reda), oznaen kao out1mf1, ima slijedee parametre
[-9.404 -9.362 0 0].
To znai da je izlaz prvog pravila:
x362.9404.9xppy 111
0
1=+=
MATLAB funkcija ruleviewprikazuje grafiki pravila, u svakom momentu fuzzy procesa
zakljuivanja od ulaza do izlaza. Svaki red na dijagramu odgovara jednom pravilu, a svakakolona dijagrama odgovara ulaznoj varijabli (uta, na lijevoj strani) ili izlazlaznoj varijabli
(plava, na desnoj strani). Mogue je promjeniti ulaz u system ili ukucavanjem tane vrijednosti u
ulazni prozor (Input window) ili pomjeranjem duge crvene linije.
>> ruleview(fismat1)
b2
a
cx1
1)c,b,a;x(gbellmf
+
=
22
173.0
)067.1(x1
1)c,b,a;x(1mf1in
+
=
-
7/30/2019 ANFIS Ex Bosanski
14/29
14
Slika 10. Grafiki prikaz pravila
Takoe je mogue dobiti i strukturu ANFIS modela, pozivanjem funkcije:
>> anfisedit(fismat1)
Slika 11. ANFIS editor
-
7/30/2019 ANFIS Ex Bosanski
15/29
15
a potom izborom desnog dugmeta Structure dobija se:
Slika 12. ANFIS struktura
Zadaa 1:
1a) Koristei istu nelinearnu funkciju iz primjera 1 izabrati razliit broj funkcija pripadnosti, te
razliite tipove funkcija pripadnosti. Analizirati sliaj ako bi se u skup podataka dodao um.
1b) Izabrati proizvoljno drugu funkciju i ponoviti proceduru kao i u 1a).
Primjer 2.Primjeniti ANFIS za predikciju vremenske serije koristei postojee podatke u Matlabu iz
tsdata.dat.
Napomena: Vremenska serija je generisana pomou slijedee Mackey-Glass (MG) diferencijalne
jednaine:
Ova vremenska serija je haotina tako da ne postoji jasno definisn period. Serija nee
konvergirati ili divergirati, a trajektorija je veoma osjetljiva na poetne uslove. Ovo je ''reper''
problem za istraivae u oblasti neuronskih mrea i fuzzy modelovanja.
-
7/30/2019 ANFIS Ex Bosanski
16/29
16
Za dobijanje vrijednosti vremenske serije, primjenjen je Runge-Kutta metod etvrtog reda koji
daje numeriko rjeenje prethodne MG diferencijalne jednaine. Rezultat je pohranjen u file
tsdata.dat. U dokumentu postoji 1201 podatak.
Rjeenje
Originalna vremenska serija prikazana je na slici 13.
Slika 13. Originalna vremenska serija
Prilikom predikcije vremenske serije, potrebno je znati vrijednosti vremenske serije do neke
take u vremenu, na primjert, kako bi se dobile vrijednosti u nekoj taki u budunosti, na primjert+P. Standardni metod za ovu vrstu predikcije je kreiranje mapiranja iz D ulaznih taaka,
uzorkovanih svake jedinice u vremenu (x(t-(D-1)),..., x(t-), x(t)), za predikciju budue
vrijednosti x(t+P). Koristei konvencionalno postavljenje za predikciju MG vremenske serije
izabrano jeD=4 i = P = 6.
Formirana je matrica data sa 5 kolona:
data(t)=[x(t-18) x(t-12) x(t-6) x(t) x(t+6)].
Prve etiri kolone matrice data predstavljaju ulaze, a posljednja kolona izlaz. Ukupan brojulazno/izlaznih parova je 1000.
Prvih 500 vrijednosti podataka predstavlja skup podataka za trening anfis sistema, dok se ostali
podaci koriste kao podaci za provjeru na osnovu kojih se provjerava validnost identifikovanogfuzzy modela. Ovo rezultira sa dvije strukture podataka od po 500 taaka: trndata and chkdata.
-
7/30/2019 ANFIS Ex Bosanski
17/29
17
Da bi zapoelo treniranje, potrebna je najprije formirati inicijalnu FIS struktura. Funkcija genfis1
postavlja poetni parametri FIS-a. Ukupno je postavljenjo osam funkcija pripadnosti, po dvije
'generalized bell' funkcije za svaki od etiri ulaza (Slika 14).
Slika 14. Poetne funkcije pripadnosti za etiri ulaza FIS
Generisana FIS struktura sadri 16 fuzzy pravila sa 104 (24 nelinearna i 80 linearnih) parametara.Da bi se postigli to bolji rezultati vano je imati broj paraova za treniranje nekoliko puta vei od
broja parametara koji se estimiraju. U ovom primjeru odnos izmedju podataka i parametara je 5(500/104).
Da bi zapoeo trening potrebno je iskoristiti funkciju anfis. Za opcije treniranja i prikaza
vrijednosti treniranja na ekranu su prihvaene vrijednosti po postavljenju u Matlab-u. Potrebno je
oko minute na PC-Pentium za 10 epoha treniranja. Podeene funkcije pripadnosti su:
-
7/30/2019 ANFIS Ex Bosanski
18/29
18
Slika 15. Podeene funkcije pripadnosti za etiri ulaza FIS
Da bi se potvrdila FIS struktura formirana funkcijom anfis (fismat) koristi se funkcija evalfis
primjenjena na podatke za provjetu. Razlika izmedju originalne mG vremenske serije i
vrijednosti dobivene anfis-om su veoma male. Na prvom dijagramu slike 16 crvene take
predstavljaju izlaz iz anfis-a, dok plava linija predstavlja originalni izlaz iz podataka za provjeru.
Greka predikcije prikazana je na drugom dijagramu slike 16.
-
7/30/2019 ANFIS Ex Bosanski
19/29
19
Slika 16. Vremenska serija originalna (plava linija) i anfis (crvene takice); Greka predikcije (donji dijagram)
U predstavljenom primjeru rezultati su dobiveni nakon samo 10 epoha treniranja. Za boljepreformanse sistema potrebno je primjeniti intenzivnije treniranje.
Napisan je slijedi kod u svrhu dobijanja poterbnih rezultata (file: TSpred.m):
load tsdata.dat % uitati podatke iz tsdata.dat
t=tsdata(:,1); % definisati parametar t
x=tsdata(:,2); % definisati parametar x
% prikai podatkefigure(1)plot(t,x)
xlabel('t(sec)')ylabel('time series')
% formirati matricu sa 1000 podataka% prve 4 kolone oredstavljaju 4 ulaza a posljednja kolona je izlaz
for t=118:1117
data(t-117,:)=[x(t-18) x(t-12) x(t-6) x(t) x(t+6)];end
% definisati podatke za trening i provjerutrndata=data(1:500,:);
-
7/30/2019 ANFIS Ex Bosanski
20/29
20
chkdata=data(501:end,:);
% inicijalizirati Fistsfismat=genfis1(trndata);
% prikazati Mfsfigure(2)subplot(2,2,1)
plotmf(tsfismat, 'input', 1)
subplot(2,2,2)plotmf(tsfismat, 'input', 2)
subplot(2,2,3)
plotmf(tsfismat, 'input', 3)
subplot(2,2,4)plotmf(tsfismat, 'input', 4)
% poetak prosesa uenja[fismat1,error1,ss,fismat2,error2] = anfis(trndata,tsfismat,[],[],chkdata);
mintrnerr=min(error1) %min training RMSE
minchkerr=min(error2) %min chacking RMSE
% adaptirane MF-je u proceduri uenjafigure(3)subplot(2,2,1)
plotmf(fismat2, 'input', 1)
subplot(2,2,2)
plotmf(fismat2, 'input', 2)subplot(2,2,3)
plotmf(fismat2, 'input', 3)
subplot(2,2,4)plotmf(fismat2, 'input', 4)
% potvrda sistemaout=evalfis(chkdata(:,1:4),fismat2);
error=chkdata(:,5)-out % razlika izmedju stvarnog i anfis izlaza
% prikai stvarni izlaz iz chkdata i izlaz iz anfis-afigure(4)
subplot (2,1,1), plot(chkdata(:,5))
holdplot(out,'r.')
xlabel('x')
ylabel('time series')legend('time series - chkdata','time series - anfis')
subplot (2,1,2), plot(err)
xlabel('x')ylabel('prediction error')
-
7/30/2019 ANFIS Ex Bosanski
21/29
21
Za dobijalje vie informacija o strukturi Anfisa-a, pravilima, te svim karakteristikama FIS-a
koriste se funkcije:
- anfisedit,
- showrule i- showfis, respektivno. Slijedi odziv na navedene funkcije.
>> anfisedit(fismat2)
Slika 17. Struktura ANFIS modela
>> showrule(fismat1)
ans =
1. If (input1 is in1mf1) and (input2 is in2mf1) and (input3 is in3mf1) and (input4 is in4mf1) then(output is out1mf1) (1)
2. If (input1 is in1mf1) and (input2 is in2mf1) and (input3 is in3mf1) and (input4 is in4mf2) then
(output is out1mf2) (1)
3. If (input1 is in1mf1) and (input2 is in2mf1) and (input3 is in3mf2) and (input4 is in4mf1) then(output is out1mf3) (1)
4. If (input1 is in1mf1) and (input2 is in2mf1) and (input3 is in3mf2) and (input4 is in4mf2) then(output is out1mf4) (1)5. If (input1 is in1mf1) and (input2 is in2mf2) and (input3 is in3mf1) and (input4 is in4mf1) then
(output is out1mf5) (1)
6. If (input1 is in1mf1) and (input2 is in2mf2) and (input3 is in3mf1) and (input4 is in4mf2) then(output is out1mf6) (1)
7. If (input1 is in1mf1) and (input2 is in2mf2) and (input3 is in3mf2) and (input4 is in4mf1) then
(output is out1mf7) (1)
-
7/30/2019 ANFIS Ex Bosanski
22/29
22
8. If (input1 is in1mf1) and (input2 is in2mf2) and (input3 is in3mf2) and (input4 is in4mf2) then
(output is out1mf8) (1)
9. If (input1 is in1mf2) and (input2 is in2mf1) and (input3 is in3mf1) and (input4 is in4mf1) then
(output is out1mf9) (1)10. If (input1 is in1mf2) and (input2 is in2mf1) and (input3 is in3mf1) and (input4 is in4mf2)
then (output is out1mf10) (1)11. If (input1 is in1mf2) and (input2 is in2mf1) and (input3 is in3mf2) and (input4 is in4mf1)then (output is out1mf11) (1)
12. If (input1 is in1mf2) and (input2 is in2mf1) and (input3 is in3mf2) and (input4 is in4mf2)
then (output is out1mf12) (1)13. If (input1 is in1mf2) and (input2 is in2mf2) and (input3 is in3mf1) and (input4 is in4mf1)
then (output is out1mf13) (1)
14. If (input1 is in1mf2) and (input2 is in2mf2) and (input3 is in3mf1) and (input4 is in4mf2)
then (output is out1mf14) (1)15. If (input1 is in1mf2) and (input2 is in2mf2) and (input3 is in3mf2) and (input4 is in4mf1)
then (output is out1mf15) (1)
16. If (input1 is in1mf2) and (input2 is in2mf2) and (input3 is in3mf2) and (input4 is in4mf2)then (output is out1mf16) (1)
>> showfis(fismat1)
1. Name anfis
2. Type sugeno
3. Inputs/Outputs [4 1]4. NumInputMFs [2 2 2 2]
5. NumOutputMFs 16
6. NumRules 16
7. AndMethod prod8. OrMethod max
9. ImpMethod prod
10. AggMethod max11. DefuzzMethod wtaver
12. InLabels input1
13. input214. input3
15. input4
16. OutLabels output
17. InRange [0.4256 1.314]
18. [0.4256 1.314]19. [0.4256 1.314]
20. [0.4256 1.314]21. OutRange [0.4256 1.314]
22. InMFLabels in1mf123. in1mf224. in2mf1
25. in2mf2
-
7/30/2019 ANFIS Ex Bosanski
23/29
23
26. in3mf1
27. in3mf2
28. in4mf1
29. in4mf230. OutMFLabels out1mf1
31. out1mf232. out1mf333. out1mf4
34. out1mf5
35. out1mf636. out1mf7
37. out1mf8
38. out1mf9
39. out1mf1040. out1mf11
41. out1mf12
42. out1mf1343. out1mf14
44. out1mf15
45. out1mf1646. InMFTypes gbellmf
47. gbellmf
48. gbellmf49. gbellmf
50. gbellmf
51. gbellmf
52. gbellmf53. gbellmf
54. OutMFTypes linear
55. linear56. linear
57. linear
58. linear59. linear
60. linear
61. linear
62. linear63. linear
64. linear
65. linear66. linear
67. linear
68. linear69. linear
70. InMFParams [0.4652 2.001 0.4488 0]
71. [0.4125 1.998 1.349 0]72. [0.484 2 0.4611 0]
-
7/30/2019 ANFIS Ex Bosanski
24/29
24
73. [0.4546 1.995 1.33 0]
74. [0.4735 2 0.4533 0]
75. [0.4434 1.999 1.322 0]76. [0.4607 2 0.4411 0]
77. [0.439 2 1.32 0]
78. OutMFParams [0.5719 -0.05799 0.4558 1.491 -0.7082]79. [-1.241 1.259 -0.626 1.988 -0.6549]80. [-0.08713 0.1479 3.99 -0.9461 -2.163]
81. [-0.8831 0.7941 -2.327 2.261 0.7133]
82. [-0.8007 3.257 -0.05279 -2.119 0.9689]83. [6.419 -4.356 0.5138 -6.042 5.88]
84. [1.301 1.908 0.3286 1.113 -2.022]
85. [0.4515 -2.886 0.5285 0.01784 3.464]86. [-1.009 0.7231 -0.2955 0.665 1.366]
87. [-0.499 -1.185 -1.001 2.359 0.8618]
88. [-1.235 -0.7923 0.2703 -0.05824 4.193]89. [-3.364 1.418 0.7603 -0.1448 2.978]
90. [-0.7685 -0.5275 1.09 -1.229 1.59]
91. [-0.3496 -6.224 2.431 -0.05331 4.497]
92. [2.105 0.3808 -1.205 2.183 -3.241]93. [0.004138 0.2479 -0.007847 0.5703 -0.3867]
Zadaa 2.
2a) Koristei podatke iz primjera 2 izabrati razliit broj funkcija pripadnosti, razliite tipove
funkcija pripadnosti, razliit broj epoha i razliite metode uenja.
2b) Napraviti prognozu za zadatu vremensku seriju.
-
7/30/2019 ANFIS Ex Bosanski
25/29
25
APPENDIX
To generate the initial FIS matrix use genfis1.
Type help genfis1 in MATLAB to see the following.
GENFIS1 Generates an initial Sugeno-type FIS for ANFIS training using a gridpartition.
FIS = GENFIS1(DATA) generates a single-output Sugeno-type fuzzy inferencesystem (FIS) using a grid partition on the data (no clustering). FIS is
used to provide initial conditions for ANFIS training. DATA is a matrix with
N+1 columns where the first N columns contain data for each FIS input, and
the last column contains the output data. By default, GENFIS1 uses two'gbellmf' type membership functions for each input. Each rule generated by
GENFIS1 has one output membership function, which is of type 'linear' by
default.
FIS = GENFIS1(DATA, [NUMMFS], 'INPUTMF', 'OUTPUTMF') explicitly specifies:
* NUMMFS number of membership functions per input. A scalar value,specifies the same number for all inputs and a vector value
specifies the number for each input individually.
* INPUTMF type of membership function for each input. A single stringspecifies the same type for all inputs, a string array
specifies the type for each input individually.
* OUTPUTMF output membership function type, either 'linear' or 'constant'
Example
data = [rand(10,1) 10*rand(10,1)-5 rand(10,1)];
fis = genfis1(data,[3 7],char('pimf','trimf'));[x,mf] = plotmf(fis,'input',1);
subplot(2,1,1), plot(x,mf);
xlabel('input 1 (pimf)');[x,mf] = plotmf(fis,'input',2);
subplot(2,1,2), plot(x,mf);
xlabel('input 2 (trimf)');
See also GENFIS2, ANFIS.
The example generates the response
-
7/30/2019 ANFIS Ex Bosanski
26/29
26
To determine the best FIS system useanfis.
ANFIS Adaptive Neuro-Fuzzy training of Sugeno-type FIS.
ANFIS uses a hybrid learning algorithm to identify the membership function
parameters of single-output, Sugeno type fuzzy inference systems (FIS). Acombination of least-squares and backpropagation gradient descent methods
are used for training FIS membership function parameters to model a given
set of input/output data.
[FIS,ERROR] = ANFIS(TRNDATA) tunes the FIS parameters using the
input/output training data stored in TRNDATA. For an FIS with N inputs,TRNDATA is a matrix with N+1 columns where the first N columns contain data
for each FIS input and the last column contains the output data. ERROR is
the array of root mean square training errors (difference between the FISoutput and the training data output) at each epoch. ANFIS uses GENFIS1 to
create a default FIS that is used as the starting point for ANFIS training.
[FIS,ERROR] = ANFIS(TRNDATA,INITFIS) uses the FIS structure, INITFIS as thestarting point for ANFIS training.
[FIS,ERROR,STEPSIZE]=ANFIS(TRNDATA,INITFIS,[TRNOPT],[DISPOPT],OPTMETHOD)
uses the vector TRNOPT to specify training options:
-
7/30/2019 ANFIS Ex Bosanski
27/29
27
TRNOPT(1): training epoch number (default: 10)
TRNOPT(2): training error goal (default: 0)
TRNOPT(3): initial step size (default: 0.01)
TRNOPT(4): step size decrease rate (default: 0.9)TRNOPT(5): step size increase rate (default: 1.1)
The training process stops whenever the designated epoch number is reachedor the training error goal is achieved. STEPSIZE is an array of step sizes.The step size is increased or decreased by multiplying it by the step size
increase or decrease rate as specified in the training options. Entering NaN
for any option will select the default value.
Use the DISPOPT vector to specify display options during training. Select 1
to display, or 0 to hide information:
DISPOPT(1): general ANFIS information (default: 1)DISPOPT(2): error (default: 1)
DISPOPT(3): step size at each parameter update (default: 1)
DISPOPT(4): final results (default: 1)
OPTMETHOD selects the optimization method used in training. Select 1 to use
the default hybrid method, which combines least squares estimation withbackpropagation. Select 0 to use the backpropagation method.
[FIS,ERROR,STEPSIZE,CHKFIS,CHKERROR] = ...ANFIS(TRNDATA,INITFIS,[TRNOPT],[DISPOPT],CHKDATA)uses the checking (validation) data CHKDATA to prevent overfitting of the training data set.
CHKDATA has the same format as TRNDATA. Overfitting can be detected when the
checking error (difference between the output from CHKFIS and the checking dat output) startsincreasing while the training error is still decreasing. CHKFIS is the snapshot FIS taken when the
checking data error reaches a minimum. CHKERROR is the array of the root mean squared,
checking data errors at each epoch.
Example
x = (0:0.1:10)';y = sin(2*x)./exp(x/5);
epoch_n = 20;
in_fis = genfis1([x y],5,'gbellmf');
out_fis = anfis([x y],in_fis,epoch_n);plot(x,y,x,evalfis(x,out_fis));
legend('Training Data','ANFIS Output');
See also GENFIS1, ANFISEDIT.
The example generates the response
ANFIS info:
Number of nodes: 24Number of linear parameters: 10
-
7/30/2019 ANFIS Ex Bosanski
28/29
28
Number of nonlinear parameters: 15
Total number of parameters: 25
Number of training data pairs: 101
Number of checking data pairs: 0Number of fuzzy rules: 5
Start training ANFIS ...
1 0.06940862 0.0680259
3 0.066663
4 0.0653198
5 0.0639961Step size increases to 0.011000 after epoch 5.
6 0.0626917...20 0.0423184
Designated epoch number reached --> ANFIS training completed at epoch 20.
-
7/30/2019 ANFIS Ex Bosanski
29/29
To determine the output of the FIS system for given input use evalfis.
EVALFIS Perform fuzzy inference calculations.
Y = EVALFIS(U,FIS) simulates the Fuzzy Inference System FIS for theinput data U and returns the output data Y. For a system with Ninput variables and L output variables,
* U is a M-by-N matrix, each row being a particular input vector
* Y (name of output) is M-by-L matrix, each row being a particular output vector.
Y = EVALFIS(U,FIS,NPts) further specifies number of sample points
on which to evaluate the membership functions over the input or output
range. If this argument is not used, the default value is 101 points.
[Y,IRR,ORR,ARR] = EVALFIS(U,FIS) also returns the following range
variables when U is a row vector (only one set of inputs is applied):* IRR: the result of evaluating the input values through the membership
functions. This is a matrix of size Nr-by-N, where Nr is the number
of rules, and N is the number of input variables.* ORR: the result of evaluating the output values through the membership
functions. This is a matrix of size NPts-by-Nr*L. The first Nr
columns of this matrix correspond to the first output, the next Nrcolumns correspond to the second output, and so forth.
* ARR: the NPts-by-L matrix of the aggregate values sampled at NPts
along the output range for each output.
Example:
fis = readfis('tipper');
out = evalfis([2 1; 4 9],fis)
See also READFIS, RULEVIEW, GENSURF.
The example generates the response
out =7.0169
19.6810