Você está na página 1de 7

Captulo de Sistemas de Control

IEEE-UNAC

2012-A

FUZZY SYSTEM DESIGNER DE 25 REGLAS EN CDIGO PURO EN MATLAB


Para contrastar estas salidas singleton con algunas tringulo, y antes de
implementar el cdigo puro de 9 reglas en la plataforma Labview, se ha elaborado
una base de 25 reglas para observar resultados en caso el usuario desee realizar
algn tipo de aplicacin con este sistema fuzzyficador.
Existen tambin 2 entradas (x1 y x2) representadas cada una por 5 MFs (3
tringulos y 2 trapecios) y un salida (u) representada por 5 MFs tringulo. La
diferencia notoria en este caso es que emplearemos posiciones dentro de un
universo de discurso para determinar los valores de las entradas. Para fines de
simulacin empleamos un x1(k) = 10 y un x2(m) = 69.
clear all ; close all ; clc
% -------------------------------------------------% ENTRADA 1
% -------------------------------------------------puntos_n = 101;
x1=linspace(-1,1, puntos_n);
param_in_1 = [ -2.00 -1.00 -0.50 -0.25
-0.50 -0.25 0.00 0.00
-0.25 0.00 0.25 0.00
0.00 0.25 0.50 0.00
0.25 0.50 1.00 2.00 ];
mf_in_1=zeros(5,puntos_n);
mf_in_1(1,:)=trap_mf(x1,param_in_1(1,:));
mf_in_1(2,:)=trian_mf(x1,param_in_1(2,:));
mf_in_1(3,:)=trian_mf(x1,param_in_1(3,:));
mf_in_1(4,:)=trian_mf(x1,param_in_1(4,:));
mf_in_1(5,:)=trap_mf(x1,param_in_1(5,:));
% -------------------------------------------------% ENTRADA 2
% -------------------------------------------------x2=linspace(-1,1, puntos_n);
param_in_2 = [ -2.00 -1.00 -0.50 -0.25
-0.50 -0.25 0.00 0.00
-0.25 0.00 0.25 0.00
0.00 0.25 0.50 0.00
0.25 0.50 1.00 2.00 ];
mf_in_2=zeros(5,puntos_n);
mf_in_2(1,:)=trap_mf(x2,param_in_2(1,:));
mf_in_2(2,:)=trian_mf(x2,param_in_2(2,:));
mf_in_2(3,:)=trian_mf(x2,param_in_2(3,:));
mf_in_2(4,:)=trian_mf(x2,param_in_2(4,:));
mf_in_2(5,:)=trap_mf(x2,param_in_2(5,:));

Est. Edwing I. Flores Bustinza irwing_1988_@hotmail.com

Captulo de Sistemas de Control

IEEE-UNAC

2012-A

% -------------------------------------------------% SALIDA
% -------------------------------------------------y=linspace(-1,1, puntos_n);
param_out = [ -0.75 -0.50 -0.25
-0.50 -0.25 0.00
-0.25 0.00 0.25
0.00 0.25 0.50
0.25 0.50 0.75 ];
mf_out=zeros(5,puntos_n);
mf_out(1,:)=trian_mf(y,param_out(1,:));
mf_out(2,:)=trian_mf(y,param_out(2,:));
mf_out(3,:)=trian_mf(y,param_out(3,:));
mf_out(4,:)=trian_mf(y,param_out(4,:));
mf_out(5,:)=trian_mf(y,param_out(5,:));
% -------------------------------------------------% PLOTEOS DE ENTRADA Y SALIDA
% -------------------------------------------------figure(1)
subplot(3,1,1)
plot(x1,mf_in_1(1,:),'r','LineWidth',2),hold
plot(x1,mf_in_1(2,:),'g','LineWidth',2)
plot(x1,mf_in_1(3,:),'b','LineWidth',2)
plot(x1,mf_in_1(4,:),'k','LineWidth',2)
plot(x1,mf_in_1(5,:),'m','LineWidth',2)
grid
legend('NG','NP','Z','PP','PG')
title('\fontsize{14} \color{blue} EROR')
xlabel('\fontsize{5}\color{blue} UNIVERSO DE DISCURSO')
ylabel('\fontsize{5}\color{blue} GRADO DE PERTENENCIA')
axis([-1 1 0 1])
subplot(3,1,2)
plot(x2,mf_in_2(1,:),'r','LineWidth',2),hold
plot(x2,mf_in_2(2,:),'g','LineWidth',2)
plot(x2,mf_in_2(3,:),'b','LineWidth',2)
plot(x2,mf_in_2(4,:),'k','LineWidth',2)
plot(x2,mf_in_2(5,:),'m','LineWidth',2)
grid
legend('NG','NP','Z','PP','PG')
title('\fontsize{14} \color{blue} DERIVADA DEL ERROR')
xlabel('\fontsize{5}\color{blue} UNIVERSO DE DISCURSO')
ylabel('\fontsize{5}\color{blue} GRADO DE PERTENENCIA')
axis([-1 1 0 1])
subplot(3,1,3)
plot(y,mf_out(1,:),'r','LineWidth',2),hold
plot(y,mf_out(2,:),'g','LineWidth',2)
plot(y,mf_out(3,:),'b','LineWidth',2)
plot(y,mf_out(4,:),'k','LineWidth',2)
plot(y,mf_out(5,:),'m','LineWidth',2)
grid
legend('NG','NP','Z','PP','PG')
Est. Edwing I. Flores Bustinza irwing_1988_@hotmail.com

Captulo de Sistemas de Control

IEEE-UNAC

2012-A

title('\fontsize{14} \color{blue} SALIDA')


xlabel('\fontsize{5}\color{blue} UNIVERSO DE DISCURSO')
ylabel('\fontsize{5}\color{blue} GRADO DE PERTENENCIA')
axis([-1 1 0 1])
% -------------------------------------------------% ALGORITMO
% -------------------------------------------------salida= zeros(size(x1),size(x2));
mf_calificada = zeros(5,puntos_n);
conjunto_out = zeros(puntos_n,puntos_n);
conjunto_salida = zeros(puntos_n,puntos_n,puntos_n);
for i = 1:puntos_n,
w1_1
w2_1
w3_1
w4_1
w5_1

=
=
=
=
=

trap_mf(x1(i), param_in_1(1,:));
trian_mf(x1(i), param_in_1(2,:));
trian_mf(x1(i), param_in_1(3,:));
trian_mf(x1(i), param_in_1(4,:));
trap_mf(x1(i), param_in_1(5,:));

for j= 1:puntos_n,
w1_2
w2_2
w3_2
w4_2
w5_2

=
=
=
=
=

trap_mf(x2(j), param_in_2(1,:));
trian_mf(x2(j), param_in_2(2,:));
trian_mf(x2(j), param_in_2(3,:));
trian_mf(x2(j), param_in_2(4,:));
trap_mf(x2(j), param_in_2(5,:));

comp_1 = min(w1_1,w1_2);
mf_calificada(1,:)=min(comp_1,mf_out(1,:));
comp_2 = min(w2_1,w1_2);
mf_calificada(2,:)=min(comp_1,mf_out(1,:));
comp_3 = min(w3_1,w1_2);
mf_calificada(3,:)=min(comp_3,mf_out(2,:));
comp_4 = min(w4_1,w1_2);
mf_calificada(4,:)=min(comp_4,mf_out(2,:));
comp_5 = min(w5_1,w1_2);
mf_calificada(5,:)=min(comp_5,mf_out(3,:));
comp_6 = min(w1_1,w2_2);
mf_calificada(6,:)=min(comp_6,mf_out(1,:));
comp_7 = min(w2_1,w2_2);
mf_calificada(7,:)=min(comp_7,mf_out(2,:));
comp_8 = min(w3_1,w2_2);
mf_calificada(8,:)=min(comp_8,mf_out(2,:));
Est. Edwing I. Flores Bustinza irwing_1988_@hotmail.com

Captulo de Sistemas de Control

IEEE-UNAC

2012-A

comp_9 = min(w4_1,w2_2);
mf_calificada(9,:)=min(comp_9,mf_out(3,:));
comp_10 = min(w5_1,w2_2);
mf_calificada(10,:)=min(comp_10,mf_out(4,:));
comp_11 = min(w1_1,w3_2);
mf_calificada(11,:)=min(comp_11,mf_out(2,:));
comp_12 = min(w2_1,w3_2);
mf_calificada(12,:)=min(comp_12,mf_out(2,:));
comp_13 = min(w3_1,w3_2);
mf_calificada(13,:)=min(comp_13,mf_out(3,:));
comp_14 = min(w4_1,w3_2);
mf_calificada(14,:)=min(comp_14,mf_out(4,:));
comp_15 = min(w5_1,w3_2);
mf_calificada(15,:)=min(comp_15,mf_out(4,:));
comp_16 = min(w1_1,w4_2);
mf_calificada(16,:)=min(comp_16,mf_out(2,:));
comp_17 = min(w2_1,w4_2);
mf_calificada(17,:)=min(comp_17,mf_out(3,:));
comp_18 = min(w3_1,w4_2);
mf_calificada(18,:)=min(comp_18,mf_out(4,:));
comp_19 = min(w4_1,w4_2);
mf_calificada(19,:)=min(comp_19,mf_out(4,:));
comp_20 = min(w5_1,w4_2);
mf_calificada(20,:)=min(comp_20,mf_out(5,:));
comp_21 = min(w1_1,w5_2);
mf_calificada(21,:)=min(comp_21,mf_out(3,:));
comp_22 = min(w2_1,w5_2);
mf_calificada(22,:)=min(comp_22,mf_out(4,:));
comp_23 = min(w3_1,w5_2);
mf_calificada(23,:)=min(comp_23,mf_out(4,:));
comp_24 = min(w4_1,w5_2);
mf_calificada(24,:)=min(comp_24,mf_out(5,:));
comp_25 = min(w5_1,w5_2);
mf_calificada(25,:)=min(comp_25,mf_out(5,:));
conjunto_out_mf = max (mf_calificada);
conjunto_out(j,:)=max (mf_calificada);

% para ploteos

Est. Edwing I. Flores Bustinza irwing_1988_@hotmail.com

Captulo de Sistemas de Control

IEEE-UNAC

2012-A

conjunto_salida(:,:,i)=conjunto_out;
% para ploteos
salida(i,j)=defuzzy(y,conjunto_out_mf,1);
end
end
k=input('Ingresa la posicin del valor de la entrada 1 --> x1(k):');
disp(' ')
m=input('Ingresa la posicin del valor de la entrada 1 --> x2(m):');
disp(' ')
disp('Valor de entrada 1 y 2:')
disp([x1(k) x2(m)])
disp('Valor de salida:')
disp(salida(k,m))
%%
figure(2)
subplot(2,1,1)
plot(y,mf_out(1,:),'.m','LineWidth',1),hold
plot(y,mf_out(2,:),'.g','LineWidth',1)
plot(y,mf_out(3,:),'.b','LineWidth',1)
plot(y,mf_out(4,:),'.k','LineWidth',1)
plot(y,mf_out(5,:),'.y','LineWidth',1)
plot([salida(k,m) salida(k,m)],[0 1],'r','LineWidth',5)
title('\fontsize{14} \color{blue} SALIDA DEFUZZY 25 REGLAS')
xlabel('\fontsize{7}\color{blue} UNIVERSO DE DISCURSO')
ylabel('\fontsize{7}\color{blue} GRADO DE PERTENENCIA')
grid
axis([-1 1 0 1])
subplot(2,1,2)
plot([salida(k,m) salida(k,m)],[0 1],'r','LineWidth',5),hold
plot(y,conjunto_salida(m,:,k),'k','LineWidth',3)
title('\fontsize{14} \color{blue} AREA RESULTANTE + CENTROIDE ')
xlabel('\fontsize{7}\color{blue} UNIVERSO DE DISCURSO')
ylabel('\fontsize{7}\color{blue} GRADO DE PERTENENCIA')
grid
axis([-1 1 0 1])
figure(3)
[X,Y]=meshgrid(linspace(-100,100, puntos_n));
surfc(X,Y,salida)
colormap hsv
xlabel('\color{blue} Error (E)')
ylabel('\color{blue} Derivada del Error (CE)')
zlabel('\color{blue} Seal de Control (U)')
title(['\fontsize{14} \color{blue} SUPERFICIE: E, CE, U'])

Entonces obtenemos los siguientes resultados luego de la simulacin:

Est. Edwing I. Flores Bustinza irwing_1988_@hotmail.com

Captulo de Sistemas de Control

IEEE-UNAC

2012-A

Ingresa la posicin del valor de la entrada 1 --> x1(k):10


Ingresa la posicin del valor de la entrada 1 --> x2(m):69
Valor de entrada 1 y 2:
-0.8200 0.3600
Valor de salida:
-0.1368

EROR
GRADO DE PERTENENCIA

1
NG
NP
Z
PP
PG

0.5

0
-1

-0.8

-0.6

-0.4

-0.2

0.2

0.4

0.6

0.8

UNIVERSO DE DISCURSO

DERIVADA DEL ERROR


GRADO DE PERTENENCIA

1
NG
NP
Z
PP
PG

0.5

0
-1

-0.8

-0.6

-0.4

-0.2

0.2

0.4

0.6

0.8

UNIVERSO DE DISCURSO

SALIDA
GRADO DE PERTENENCIA

1
NG
NP
Z
PP
PG

0.5

0
-1

-0.8

-0.6

-0.4

-0.2

0.2

0.4

0.6

0.8

UNIVERSO DE DISCURSO

Figura N 1.- Entradas y Salida del fuzzyficador y defuzzificador de 25 Reglas

SALIDA DEFUZZY 25 REGLAS


1

GRADO DE PERTENENCIA

0.8

0.6

0.4

0.2

0
-1

-0.8

-0.6

-0.4

-0.2

0.2

0.4

0.6

0.8

0.4

0.6

0.8

UNIVERSO DE DISCURSO

AREA RESULTANTE + CENTROIDE


1

GRADO DE PERTENENCIA

0.8

0.6

0.4

0.2

0
-1

-0.8

-0.6

-0.4

-0.2

0.2

UNIVERSO DE DISCURSO

Figura N 2.- Respuesta Final del defuzzyficador

Est. Edwing I. Flores Bustinza irwing_1988_@hotmail.com

Captulo de Sistemas de Control

IEEE-UNAC

2012-A

SUPERFICIE: E, CE, U

0.6
0.4

Seal de Control (U)

0.2
0
-0.2
-0.4
-0.6
-0.8
-1
100
80
60
40
20
0
-20
-40
-60
-80
-100
Derivada del Error (CE)

-100

-80

-60

-40

-20

20

40

60

80

100

Error (E)

Figura N 3.- Superficie del E, CE y salida

Est. Edwing I. Flores Bustinza irwing_1988_@hotmail.com

Você também pode gostar