Sei sulla pagina 1di 63

Elektrotehniki fakultet univerziteta u Beogradu

PRIMENA MATLAB-a U PROJEKTOVANJU FUZZY


SISTEMA I NEURALNIH MREA
Seminarski rad
Student

Profesor

Uvod
MATLAB...
Fuzzy

Logic Toolbox i Neural Network


Toolbox...
Demonstracioni primeri...

Elektrotehniki fakult

Fuzzy logic toolbox_primer1


Ekspertski sistem za odabir posla
Komande koje se koriste pri projektovanju sistema:

newfis :
addvar :
addmf :
addrule :
plotfis :
evalfis :
setfis :
plotmf :

Kreirati novi FIS;


Dodati variablu u FIS;
Dodati funkciju pripadnosti u FIS;
Dodati pravilo u FIS;
Iscrtati FIS I/O diagram;
Izvriti fuzzy izraunavanje;
Postaviti karakteristike fuzzy sistema;
Iscrtati sve funkcije pripadnosti za datu varijablu;

Elektrotehniki fakult

Pokretanje Fuzzy Logic Toolbox GUI-a iz MATLAB


komandnog prozora

Elektrotehniki fakult

Dodavanje ulazne varijable u FIS

Elektrotehniki fakult

Izgled sistema sa dva ulaza i jednim izlazom

Elektrotehniki fakult

Izgled polja GUI-a u koje se unosi ime prethodno


selektovane varijable

Ulazne varijable: Visina_plate_[din] i Tip_ponuenog_posla;


Izlazna varijabla: Izbor_posla;

Elektrotehniki fakult

Pokretanje prozora za generisanje funkcija pripadnosti.


Generisane funkcije pripadnosti se automatski pridruuju
selektovanoj varijabli

Elektrotehniki fakult

Brisanje prethodno generisanih funkcija pripadnosti


pridruenih selektovanoj varijabli

Elektrotehniki fakult

Polja za unos parametara vezanih za selektovanu


varijablu (Visina_plate_[din.])

Elektrotehniki fakult

10

Dodavanje eljene funkcije pripadnosti u dijagram

Elektrotehniki fakult

11

Izgled prozora za odabir tipa i unos parametara eljene


funkcije pripadnosti

Elektrotehniki fakult

12

Izgled dijagrama funkcija pripadnosti nakon unoenja eljenih f-ja


pridruenih ulaznoj varijabli Visina_plate_[din.]

Elektrotehniki fakult

13

Izgled dijagrama funkcija pripadnosti nakon unoenja eljenih f-ja


pridruenih ulaznoj varijabli Tip_ponudjenog_posla

Elektrotehniki fakult

14

Izgled dijagrama funkcija pripadnosti nakon unoenja eljenih f-ja


pridruenih izlaznoj varijabli Izbor_posla

Elektrotehniki fakult

15

Pokretanje prozora za generisanje pravila fuzzy


zakljuivanja

Elektrotehniki fakult

16

Izgled prozora za generisanje pravila fuzzy zakljuivanja


FIS-a

Elektrotehniki fakult

17

Izgled polja za izbor veze izmeu f-ja pripadnosti prilikom formiranja


pravila i polje za specificiranje teine ili vanosti datog pravila

Elektrotehniki fakult

18

Izgled prozora za generisanje pravila u ijoj se listi pravila nalazi 6


generisanih pravila fuzzy zakljuivanja

Elektrotehniki fakult

19

Pokretanje prozora za praenje rada projektovanog


ekspertskog sistema putem grafikog prikaza

Elektrotehniki fakult

20

Za zadate vrednosti ulaza ekspertski sistem proraunava


vrednost izlaza i grafiki je prikazuje

Elektrotehniki fakult

21

Za zadate vrednosti ulaza ekspertski sistem proraunava


vrednost izlaza i grafiki je prikazuje

Elektrotehniki fakult

22

Za zadate vrednosti ulaza ekspertski sistem proraunava


vrednost izlaza i grafiki je prikazuje

Elektrotehniki fakult

23

Pokretanje prozora u kom je 3D prikazom prikazan rad


ekspertskog sistema

Elektrotehniki fakult

24

3D prikaz rada ekspertskog sistema za odabir posla

Elektrotehniki fakult

25

Fuzzy logic toolbox_primer2


Kontrola temperature vode u kadi pomou fuzzy kontrolera

Sistem koji treba da bude kontrolisan je opisan


jednainom:

y ( k 1) a (Ts ) y (k )

Gde je:

Parametri kontrolisanog sistema:

= 1.00151*10-4
= 8.67973*10-3
gama = 40
Y0 = 25C

b(Ts )
u (k ) [1 a (Ts )]Y 0,
1 e 0.5 y ( k )

a (Ts ) e Ts

b(Ts ) ( )(1 e Ts )

Elektrotehniki fakult

26

Kontrola temperature vode u kadi pomou fuzzy


kontrolera

Ulaz kontrolisanog sistema:

Period uzorkovanja:

0V u(k) 5V

Ts = 25s (sekundi)

Fuzzy kontroler treba da kontrolie temperaturu vode u kadi tako da ona prati referentnu konturu
(signal), iji je oblik definisan na sledei nain:

35C , 0 t 40 minuta
50C , 40 t 80 minuta
65C , 80 t 120 minuta
80C , 120 t 180 minuta

Elektrotehniki fakult

27

Kontrola temperature vode u kadi pomou fuzzy


kontrolera

Izabrane ulazne varijable fuzzy kontrolera su:

1.

e(t) - Izvrna greka (predstavlja razliku izmeu eljene temperature vode i stvarne izmerene
temperature);

2.

c(t) - Promena izvrne greke (Izvod izvrne greke);

Izlazna varijabla fuzzy kontrolera:

1.

u(t) Napon grejaa (0V u(t) 5V);

Za svaku varijablu je definisano po 7 Gausovih funkcija pripadnosti, ija su imena: NL, NM, NS,
ZE, PS, PM ,PL;

Matrica fuzzy pravila sadri 25 od moguih 49 pravila;

Elektrotehniki fakult

28

Tabela fuzzy pravila formulisanih za sistem za kontrolu


temperature vode u kadi

Elektrotehniki fakult

29

Formiranje ulaznih i izlaznih funkcija pripadnosti i fuzzy


pravila

fis=newfis('fyappr1'); % Create a new FIS with filename "fyappr1.fis.".


% Build the I/O membership functions and fuzzy rules.
% Define membership functions for the input variable "ERROR".
fis=addvar(fis, 'input', 'ERROR', [-1 1]);
fis=addmf(fis,'input', 1, 'NL', 'gaussmf', [0.1 -1]);
fis=addmf(fis,'input', 1, 'NM', 'gaussmf', [0.1 -0.6]);
fis=addmf(fis,'input', 1, 'NS', 'gaussmf', [0.1 -0.3]);
fis=addmf(fis,'input', 1, 'ZE', 'gaussmf', [0.1 0]);
fis=addmf(fis,'input', 1, 'PS', 'gaussmf', [0.1 0.3]);
fis=addmf(fis,'input', 1, 'PM', 'gaussmf', [0.1 0.6]);
fis=addmf(fis,'input', 1, 'PL', 'gaussmf', [0.1 1]);
plotmf(fis,'input',1);
figure
% Define membership functions for the input variable "CERROR".
fis=addvar(fis, 'input', 'CERROR', [-1 1]);
fis=addmf(fis,'input', 2, 'NL', 'gaussmf', [0.1 -1]);
fis=addmf(fis,'input', 2, 'NM', 'gaussmf', [0.1 -0.6]);
fis=addmf(fis,'input', 2, 'NS', 'gaussmf', [0.1 -0.3]);
fis=addmf(fis,'input', 2, 'ZE', 'gaussmf', [0.1 0]);
fis=addmf(fis,'input', 2, 'PS', 'gaussmf', [0.1 0.3]);
fis=addmf(fis,'input', 2, 'PM', 'gaussmf', [0.1 0.6]);
fis=addmf(fis,'input', 2, 'PL', 'gaussmf', [0.1 1]);
plotmf(fis,'input',2);
figure
% Define membership functions for the output variable "MENU".
fis=addvar(fis,'output','MENU', [-1 1]);
fis=addmf(fis,'output', 1, 'NL', 'gaussmf', [0.1 -1]);
fis=addmf(fis,'output', 1, 'NM', 'gaussmf', [0.1 -0.6]);
fis=addmf(fis,'output', 1, 'NS', 'gaussmf', [0.1 -0.3]);
fis=addmf(fis,'output', 1, 'ZE', 'gaussmf', [0.1 0]);
fis=addmf(fis,'output', 1, 'PS', 'gaussmf', [0.1 0.3]);
fis=addmf(fis,'output', 1, 'PM', 'gaussmf', [0.1 0.6]);

fis=addmf(fis,'output', 1, 'PL', 'gaussmf', [0.1 1]);


plotmf(fis,'output',1);
% Define fuzzy rules.
rule=[
14111
24211
35511
34311
33311
47711
46611
45511
44411
43311
42211
41111
57711
56611
55511
54511
53311
67711
66611
65611
64611
77711
76711
75711
7 4 7 1 1];
fis=addrule(fis, rule);
writefis(fis, 'fyappr1'); % Save FIS to disk.

Elektrotehniki fakult

30

Grafiki prikaz funkcija pripadnosti pridruenih ulaznim varijablama


ERROR, CERROR, i izlaznoj varijabli MENU

Elektrotehniki fakult

31

Test program

fis=readfis('fyapprl'); % Read the file


"fyappr1.fis.".
% Define plant parameters.
Ts=25; p=1.00151*10^(-4); q=8.67973*10^(-3);
r=40; yo=25; y(1)=yo; a=exp(-p*Ts); b=(q/p)*(1exp(-p*Ts));
% Define the reference output.
for k =1 : 180
if (k <= 40) ref(k)=35;
elseif (k > 40 & k <= 80) ref(k)=50;
elseif (k > 80 & k <= 120) ref(k)=65;
elseif (k > 120) ref(k)=80;
end;
end;
GE=1/15; GC=1/15; GU=450; % Define gain
constants.
pause % Hit any key to test this fuzzy controller.
for k =1 : 179
e(k)=(ref(k)-y(k)); ee(k)=e(k)*GE;
if k == 1 ce(k)=0;
else ce(k)=e(k)-e(k - 1);

end;
cee(k)=ce(k)*GC;
mu(k)=evalfis([ee(k) cee(k)],fis);
u(k)=mu(k)*GU;
if (u(k)>=5) u(k)=5;
elseif (u(k)<=0) u(k)=0;
else u(k)=u(k);
end;
y(k + 1)=a*y(k)+b/(1+exp(0.5*y(k)-r))*u(k)+(1a)*yo;
end;
hold on; grid; % Plot plant input/output and
reference output.
plot(y(1:180), '.y'); plot(ref(1:180),'--r');
plot(u(1:179),'g');
xlabel('Sampling Time Step kT T = 25 seconds');
ylabel('Temperature(degree)');
title('Reference Signal "- -" Actual Output "."
Control Signal "---"');
pause % Hit any key to calculate the
performance index AES.
AES=sum(abs(ref-y));

Elektrotehniki fakult

32

Rezultati simulacije za aplikaciju kontrole temperature


vode u kadi korienjem isprojektovanog fuzzy kontrolera

Elektrotehniki fakult

33

Rezultati simulacije

Moe se videti da isprojektovani fuzzy


kontroler ima dobru sposobnost praenja
temperature, ali kontrolni signal u(k) odlikuje
velika varijacija u opsegu visoke temperature.

Indeks uinka (kvantifikacija sposobnosti


praenja referentne konture):

AES k 1| ref (k ) y (k ) |

U sliaju fuzzy kontrolera AES = 426.80;

U sluaju neural fuzzy kontrolera AES = 374;

Elektrotehniki fakult

34

Izgled fuzzy kontrolera za kontrolu temperature vode u kadi.


Kontroler ima dve ulazne varijable (ERROR i CERROR) i jednu
izlaznu varijablu (MENU)

Elektrotehniki fakult

35

Grafiki prikaz funkcija pripadnosti pridruenih ulaznim varijablama


ERROR, CERROR, i izlaznoj varijabli MENU

Elektrotehniki fakult

36

Izgled prozora za generisanje fuzzy pravila sa generisanih 25 pravila


fuzzy kontrolera za kontrolu temperature vode u kadi

Elektrotehniki fakult

37

Grafiki prikaz fuzzy zakljuivanja projektovanog


kontrolera

Elektrotehniki fakult

38

3D prikaz fuzzy zakljuivanja projektovanog kontrolera

Elektrotehniki fakult

39

Neural network toolbox_primer3


Primena neuralnih mrea u modeliranju nelinearnih statikih funkcija

Korienjem neuralne mree treba


aproksimirati funkciju:

y ( x) e

x
2

cos(2 x)

Na intervalu:

x [0,3]

Elektrotehniki fakult

40

Izgled funkcije y(x) na intervalu [0,3]

Elektrotehniki fakult

41

Formiranje obuavajueg skupa, neuralne mree i


obuavanje

Kreiranje nove N-slojne feedforward neuralne mree:

net = newff(PR,[S1 S2...SNl],{TF1 TF2...TFNl},BTF,BLF,PF)

Argumenti koje funkcija uzima:

PR
R x 2 matrica minimalnih i maksimalnih vrednosti za R ulaza;
Si
Veliina i-tog sloja, za Nl slojeva;
TFi
Transfer funkcija i-tog sloja (default = 'tansig'). (logsig, purelin);
BTF Backpropagation network training function (default = 'trainlm').(trainbfg, trainrp,
traingd);
BLF Backpropagation weight/bias learning function (default = 'learngdm'). (learngd);
PF
Performance function (default = 'mse'). (msereg);

Elektrotehniki fakult

42

Formiranje obuavajueg skupa, neuralne mree i


obuavanje

% Formiranje obuavajueg skupa.


x=0:0.01:3;
y=exp(-0.5*x).*cos(2*x);
% Dodavanje aditivnog uma.
yn=y+randn(size(y))*0.08;
figure(1);
plot(x,y);
figure(2);
plot(x,yn);
% Inicijalno formiranje neuralne mree.
net=newff([0 3], [2 1],{'tansig','purelin','trainlm'});
% Parametri obuavanja neuralne mree.
net.trainParam.epochs=1000;
net.trainParam.goal=0.000001;
% Obuavanje neuralne mree.
net=train(net,x,yn);
% Simulacija rada neuralne mree.
ym=sim(net,x);
% Prikazivanje rezultata.
figure(3);
plot(x,y,x,yn,x,ym);

Elektrotehniki fakult

43

Izgled funkcije yn(x) na intervalu [0,3]


Funkcija yn(x) je jednaka zbiru funkcije y(x) i dodatog aditivnog uma

Elektrotehniki fakult

44

Prikaz rezultata simulacije obuene neuralne mree


Izlaz neuralne mree je prikazan crvenom linijom

Elektrotehniki fakult

45

Prikaz toka obuavanja neuralne mree

Elektrotehniki fakult

46

Promena intervala ulaznog signala

% Formiranje obuavajueg skupa.


x=0:0.01:4;
y=exp(-0.5*x).*cos(2*x);
% Dodavanje aditivnog uma.
yn=y+randn(size(y))*0.08;
% figure(1); plot(x,y);
% figure(2); plot(x,yn);
% Inicijalno formiranje neuralne mree.
net=newff([0 3], [2 1],{'tansig','purelin','trainlm'});
% Parametri obuavanja neuralne mree.
net.trainParam.epochs=1000;
net.trainParam.goal=0.000001;
% Obuavanje neuralne mree.
net=train(net,x,yn);
% Simulacija rada neuralne mree.
ym=sim(net,x);
% Prikazivanje rezultata.
figure(3); plot(x,y,x,ym);

Elektrotehniki fakult

47

Prikaz rezultata simulacije neuralne mree na skupu koji


je razliit od obuavajueg skupa (zelena linija na grafiku)

Elektrotehniki fakult

48

Preobuavanje neuralne mree (overtraining)

% Formiranje obuavajueg skupa.


x=0:0.01:3;
y=exp(-0.5*x).*cos(2*x);
% Dodavanje aditivnog uma.
yn=y+randn(size(y))*0.08;
% figure(1);
% plot(x,y);
% figure(2);
% plot(x,yn);
% Inicijalno formiranje neuralne mree.
net=newff([0 3], [20 1],{'tansig','purelin','trainlm'});
% Parametri obuavanja neuralne mree.
net.trainParam.epochs=2000;
net.trainParam.goal=0.000001;
% Obuavanje neuralne mree.
net=train(net,x,yn);
% Simulacija rada neuralne mree.
ym=sim(net,x);
% Prikazivanje rezultata.
figure(3);
plot(x,y,x,yn,x,ym);

Elektrotehniki fakult

49

Prikaz toka obuavanja neuralne mree u sluaju


preobuavanja iste

Elektrotehniki fakult

50

Prikaz rezultata simulacije preobuene neuralne mree


Izlaz neuralne mree je prikazan crvenom linijom

Elektrotehniki fakult

51

Izbor poetnih parametara mree

x=0:0.01:3;
y=exp(-0.5*x).*cos(2*x);
yn=y+randn(size(y))*0.08;
net=newff([0 3],[2 1],{'tansig', 'purelin'});
net.trainParam.epochs=25;
net.trainParam.goal=0.000001;
[net,tr]=train(net,x,yn);
err=min(tr.perf);
for i=1:100
net1=newff([0 3],[2 1],{'tansig','purelin'});
net1.trainParam.epochs=25;
net1.trainParam.goal=0.000001;
[net1,tr1]=train(net1,x,yn);
err1=min(tr1.perf);
if err1<err
net=net1;
err=err1;
end
end
net.trainParam.epochs=2000;
net.trainParam.goal=0.000001;
[net,tr]=train(net,x,yn);

Elektrotehniki fakult

52

Neural network toolbox_primer4


Primena neuralnih mrea u modeliranju nelinearnih statikih funkcija

Korienjem neuralne mree treba


aproksimirati funkciju:

y ( x) tan 3 (sin( x)) ln( x)

Na intervalu:

x [9,19]

Elektrotehniki fakult

53

Izgled funkcije y(x)=tan3(sin(x))+ln(x) na intervalu [9,19]

Elektrotehniki fakult

54

Formiranje obuavajueg skupa, neuralne mree i


obuavanje

% Formiranje obuavajueg skupa.


x=[9:0.03:19];
y=tan(sin(x)).^3+log(x);
% Dodavanje aditivnog uma.
yn=y+randn(size(y))*0.5;
figure(1);
plot(x,y);
figure(2);
plot(x,yn);
% Inicijalno formiranje neuralne mree.
net=newff([9 19], [10 1],{'tansig','purelin','trainlm'});
% Parametri obuavanja neuralne mree.
net.trainParam.epochs=1000;
net.trainParam.goal=0.000001;
% Obuavanje neuralne mree.
net=train(net,x,yn);
% Simulacija rada neuralne mree.
ym=sim(net,x);
% Prikazivanje rezultata.
figure(3);
plot(x,y,x,yn,x,ym);

Elektrotehniki fakult

55

Izgled funkcije yn(x) na intervalu [9,19]


Funkcija yn(x) je jednaka zbiru funkcije y(x) i dodatog aditivnog uma

Elektrotehniki fakult

56

Prikaz rezultata simulacije obuene neuralne mree


Izlaz neuralne mree je prikazan crvenom linijom

Elektrotehniki fakult

57

Prikaz toka obuavanja neuralne mree

Elektrotehniki fakult

58

Promena intervala ulaznog signala

% Formiranje obuavajueg skupa.


x=[8:0.03:21];
y=tan(sin(x)).^3+log(x);
% Dodavanje aditivnog uma.
yn=y+randn(size(y))*0.5;
% figure(1); plot(x,y);
% figure(2); plot(x,yn);
% Inicijalno formiranje neuralne mree.
net=newff([9 19], [10 1],{'tansig','purelin','trainlm'});
% Parametri obuavanja neuralne mree.
net.trainParam.epochs=1000;
net.trainParam.goal=0.000001;
% Obuavanje neuralne mree.
net=train(net,x,yn);
% Simulacija rada neuralne mree.
ym=sim(net,x);
% Prikazivanje rezultata.
figure(3); plot(x,y,x,ym);

Elektrotehniki fakult

59

Prikaz rezultata simulacije neuralne mree na skupu koji je razliit od


obuavajueg skupa (zelena linija na grafiku)

Elektrotehniki fakult

60

Preobuavanje neuralne mree (overtraining)

% Formiranje obuavajueg skupa.


x=[9:0.03:19];
y=tan(sin(x)).^3+log(x);
% Dodavanje aditivnog uma.
yn=y+randn(size(y))*0.5;
% figure(1);
% plot(x,y);
% figure(2);
% plot(x,yn);
% Inicijalno formiranje neuralne mree.
net=newff([9 19], [50 1],{'tansig','purelin','trainlm'});
% Parametri obuavanja neuralne mree.
net.trainParam.epochs=1000;
net.trainParam.goal=0.000001;
% Obuavanje neuralne mree.
net=train(net,x,yn);
% Simulacija rada neuralne mree.
ym=sim(net,x);
% Prikazivanje rezultata.
figure(3);
plot(x,y,x,yn,x,ym);

Elektrotehniki fakult

61

Prikaz toka obuavanja neuralne mree u sluaju


preobuavanja iste

Elektrotehniki fakult

62

Prikaz rezultata simulacije preobuene neuralne mree


Izlaz neuralne mree je prikazan crvenom linijom

Elektrotehniki fakult

63

Potrebbero piacerti anche