anfis ex bosanski

Upload: mia-lesic

Post on 14-Apr-2018

237 views

Category:

Documents


0 download

TRANSCRIPT

  • 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