Académique Documents
Professionnel Documents
Culture Documents
ALUMNOS:
2016
SENSA TERMICO
Considerando variable lingstica para la temperatura:
frio
fresco
clido
caliente
bajo
suave
alto
severa
fuerte
soportable
leve
imperceptible
Solucin:
I. FUNCIN TRAPEZOIDAL
a = params(1);
b = params(2);
c = params(3);
d = params(4);
b_minus_a = b - a;
d_minus_c = d - c;
y_val = @(x_val) max (0, min (min (1, (x_val - a) / b_minus_a), ...
(d - x_val) / d_minus_c));
y = arrayfun (y_val, x);
end
1
II. FUNCION TRIANGULAR
function y = tri_mf(x,param)
a=param(1);
b=param(2);
c=param(3);
y=max(min((x-a)/(b-a),(c-x)/(c-b)),0);
end
III. PROGRAMACION
%---------------------------ENTRADAS----------------------------------
--
% CREANDO UN NEWFIS PARA LA VARIABLE LINGUISTICA "TEMPERATURA"
a=newfis('sensa_termico','mamdani');
%distancia (entrada)
a=addvar(a,'input','TEMPERATURA[C]',[-5,35]);
a=addmf(a,'input',1,'Fria','trapmf',[-5 -5 0 10]);
a=addmf(a,'input',1,'Fresca','trimf',[0 10 20]);
a=addmf(a,'input',1,'calida','trimf',[10 20 30]);
a=addmf(a,'input',1,'Caliente','trapmf',[20 30 35 35]);
%---------------------------------------------------------------------
---
%---------------------------SALIDA------------------------------------
---
a=addvar(a,'output','SENSACINTRMICA[C]',[-40,50]);
a=addmf(a,'output',1,'SEVERA','trimf',[-40 -25 -10]);
a=addmf(a,'output',1,'FUERTE','trimf',[-25 -10 5]);
a=addmf(a,'output',1,'SOPORTABLE','trimf',[-10 5 20]);
a=addmf(a,'output',1,'LEVE','trimf',[5 20 35]);
a=addmf(a,'output',1,'IMPERCEPTIBLE','trimf',[20 35 50]);
%---------------------------------------------------------------------
---
%----------------SIMULACION PARA LA ENTRADA TEMPERATURA---------------
---
figure(1)
subplot(221),plotmf(a,'input',1) % ploteo de entrada(1) NEWFIS
"TEMPERATURA"
axis([-5 35 0 1.5]) % Actica rango de muestreo
ylabel('u[ T ]') % titulo en el eje Y
2
title(' CONJUNTO DIFUSO ENTRADA(1):"TEMPERATURA"') % Titulo del
grafico
gridON% activa la grilla
%---------------------------------------------------------------------
---
%------------------------SIMULACIN PARA LA ENTRADA VELOCIDAD VIENTO -
---
subplot(222),plotmf(a,'input',2) % Ploteo entrada(2) NEWFIS VELOCIDAD
VIENTO
title('CONJUNTO DIFUSO ENTRADA(2) VELOCIDAD VIENTO'); % titulo del
grfico
gridON% activa grilla
axis([0 30 0 1.5]) % Rango de muestreo
ylabel('u[ W ]') % Titulo del eje Y
%---------------------------------------------------------------------
%-------------------SIMULACION PARA LA SALIDA SENSACION TERMICA------
subplot(224),plotmf(a,'output',1) % Ploteo entrada(2) NEWFIS
VELOCIDAD VIENTO
title('CONJUNTO DIFUSO SALIDA(1) SENSACIN TRMICA'); % titulo del
grfico
gridON% activa grilla
axis([-40 50 0 1.2]) % Rango de muestreo
ylabel('u[ VT ]') % Titulo del eje Y
% --------------------------------------------------------------------
% ------------------- REGLA BASE-------------------------------------
% 1.- IF temperatura IS fra AND velocidad viento IS baja THEN
sensacin
% trmica IS soportable.
% 2.- IF temperatura IS fra AND velocidad viento IS suave THEN
sensacin
% rmica IS fuerte.
% 3.- IF temperatura IS fra AND velocidad viento IS alta THEN
sensacin
% trmica IS servero.
% 4.- IF temperatura IS fresca AND velocidad viento IS baja THEN
sensacin
% trmica IS leve.
% 5.- IF temperatura IS fresca AND velocidad viento IS suave THEN
sensacin
% trmica IS soportable.
% 6.- IF temperatura IS fresca AND velocidad viento IS alta THEN
sensacin
% trmica IS fuerte.
% 7.- IF temperatura IS clida AND velocidad viento IS baja THEN
sensacin
% trmica IS imperceptible.
% 8.- IF temperatura IS clida AND velocidad viento IS suave THEN
sensacin
% trmica IS leve.
3
% 12.- IF temperatura IS caliente AND velocidad viento IS suave THEN
sensacin
% trmica IS leve.
Q=[1 1 3 1 1
1 2 2 1 1
1 3 1 1 1
2 1 4 1 1
2 2 3 1 1
2 3 2 1 1
3 1 5 1 1
3 2 4 1 1
3 3 3 1 1
4 1 5 1 1
4 2 5 1 1
4 3 4 1 1];
%---------------------------------------------------------------------
a=addrule(a,Q); % agregando a Rule
%almacenando el FIS
a=writefis(a,'sensa_termico');
%---------------------------------------------------------------------
%-------------PARA FUSIFICACION Y DEFUSIFICACION---------------------
%----------------------TEMPERATURA ENTRADA 1--------------------------
puntos_n=500;
x1=linspace(-5,35,puntos_n); %universo
param_in1=[-5 0 10
0 10 20
10 20 30
20 30 35];
mf_in1(1,:)=trap_mf(x1,[-5 param_in1(1,:)]);
mf_in1(2,:)=tri_mf(x1,param_in1(2,:));
mf_in1(3,:)=tri_mf(x1,param_in1(3,:));
mf_in1(4,:)=trap_mf(x1,[param_in1(4,:) 35]);
%---------------------------------------------------------------------
---
% ------------VELOCIDAD DEL VIENTO ENTRADA 2--------------------------
---
x2=linspace(0,30,puntos_n); %universo
param_in2=[0 5 17.5
2.5 15 27.5
12.5 25 30];
mf_in2(1,:)=trap_mf(x2,[0 param_in2(1,:)]);
mf_in2(2,:)=tri_mf(x2,param_in2(2,:));
mf_in2(3,:)=trap_mf(x2,[param_in2(3,:) 30]);
%---------------------------------------------------------------------
% ---------------SENSACION TERMICA SALIDA----------------------------
y=linspace(-40,50,puntos_n); %universo
param_out=[-40 -25 -10
-25 -10 5
-10 5 20
5 20 35
20 35 50];
mf_out(1,:)=tri_mf(y,param_out(1,:));
mf_out(2,:)=tri_mf(y,param_out(2,:));
mf_out(3,:)=tri_mf(y,param_out(3,:));
mf_out(4,:)=tri_mf(y,param_out(4,:));
mf_out(5,:)=tri_mf(y,param_out(5,:));
4
% ----------------FUZZIFICADOR----------------------------------------
% valores numericos de cada conjunto difuso para T=7
% u_fria=0.3; u_fresca=0.7; u_calida=0; u_caliente=0;
u_A=[0.3 0.7 0 0];
% valores numericos de cada conjunto difuso para Nudos=22
% u_bajo=0; u_suave=0.44; u_alta=0.76;
u_B=[0 0.44 0.76];
% --------------------------OPERACION DIFUSA--------------------------
----
k=1; % indice de los grados
for i=1:4 % temperaturas
for j=1:3 % velocidad del viento
s(k)=min(u_A(i),u_B(j)); %grados para cada regla
k=k+1;
end
end
%---------------------------------------------------------------------
% --------------------------IMPLICACION DIFUSA------------------------
y=linspace(-40,50,puntos_n); % universo
for k=1:12 % grados para el disparo de las reglas
for m=1:puntos_n % universo
% k da el numero de regla
% R(k,3) da el conjunto difuso
D(k,m)=min(s(k),mf_out(Q(k,3),m)); %consecuentedifuso
end
end
% ---------------------------AGREGACION-------------------------------
for k=1:12
C_agg(k)=0; % inicia con un valor 0
for m=1:puntos_n
% implicacion del consecuente
% se obtiene hallando el area del trapecio
% en este caso se usa una suma de riemman
C_agg(k)=C_agg(k)+(90/puntos_n)*D(k,m);
end
end
figure(2)
plot(y,D),'linewidth',2, hold
axis([-50 50 0 1])
gridon
title('FUSIFICACION')
% -----------------------DEFUZZIFICACION------------------------------
z0=0; % salida crisp inicia en 0
% se obtiene usando el metodo del Centroide
for k=1:12
z0=z0+param_out(Q(k,3),2)*C_agg(k);
end
z0=z0/sum(C_agg);
disp('La sensacin trmica correspondiente a 7C y una velocidad del
viento de 22 nudos es')
disp(z0)
figure(3)
plot(y,D), hold
plot([z0 z0],[0 0.7],'r','linewidth',3)
axis([-50 50 0 1])
gridon
title('DEFUSIFICACION Zo = -8.9887')
xlabel('SENSACIN TRMICA [C]')
ylabel('u')
5
IV. SENSA-TERMICO.FIS
[System]
Name='sensa_termico'
Type='mamdani'
Version=2.0
NumInputs=2
NumOutputs=1
NumRules=12
AndMethod='min'
OrMethod='max'
ImpMethod='min'
AggMethod='max'
DefuzzMethod='centroid'
[Input1]
Name='TEMPERATURA[C]'
Range=[-5 35]
NumMFs=4
MF1='Fria':'trapmf',[-5 -5 0 10]
MF2='Fresca':'trimf',[0 10 20]
MF3='calida':'trimf',[10 20 30]
MF4='Caliente':'trapmf',[20 30 35 35]
[Input2]
Name='Velocidad Viento [Nudos]'
Range=[0 30]
NumMFs=3
MF1='BAJO':'trapmf',[0 0 5 17.5]
MF2='SUAVE':'trimf',[2.5 15 27.5]
MF3='ALTA':'trapmf',[12.5 25 30 30]
[Output1]
Name='SENSACIN TRMICA[C]'
Range=[-40 50]
NumMFs=5
MF1='SEVERA':'trimf',[-40 -25 -10]
MF2='FUERTE':'trimf',[-25 -10 5]
MF3='SOPORTABLE':'trimf',[-10 5 20]
MF4='LEVE':'trimf',[5 20 35]
MF5='IMPERCEPTIBLE':'trimf',[20 35 50]
[Rules]
1 1, 3 (1) : 1
1 2, 2 (1) : 1
1 3, 1 (1) : 1
2 1, 4 (1) : 1
2 2, 3 (1) : 1
2 3, 2 (1) : 1
3 1, 5 (1) : 1
3 2, 4 (1) : 1
3 3, 3 (1) : 1
4 1, 5 (1) : 1
4 2, 5 (1) : 1
4 3, 4 (1) : 1
6
V. RESULTADOS
7
Sensacin VELOCIDAD DEL VIENTO
Trmica Bajo Suave Alta
Temperatura Fra Soportable Fuerte Severa
Fresca Leve Soportable Fuerte
clida Imperceptible Leve Soportable
Caliente Imperceptible Imperceptible Leve
Visualizacin de la REGLA
8
SURFACE
9
Resultado final despus de fusificacion (figura 2) defusificacion
(figura 3)
Figura 2
FUSIFICACION
1
0.9
0.8
0.7
0.6
0.5
0.4
0.3
0.2
0.1
0
-50 -40 -30 -20 -10 0 10 20 30 40 50
Figura 3
DEFUSIFICACION Zo = -8.9887
1
0.9
0.8
0.7
0.6
0.5
u
0.4
0.3
0.2
0.1
0
-50 -40 -30 -20 -10 0 10 20 30 40 50
SENSACIN TRMICA [C]
10