Está en la página 1de 8

UNIVERSIDAD NACIONAL DE INGENIERIA

FACULTAD DE INGENIERIA ELECTRICA Y


ELECTRONICA

Tarea N 1
Simulacin en MatLab Parbola segn
inferencia Sugeno
CURSO: Lgica Difusa
ALUMNO: ORTIZ CASTIGLIONI, Denis Maglorio
DOCENTE: RODRIGUEZ BUSTINZA, Ricardo
Fecha: 04 de setiembre del 2014
Lima Per

Tarea N 01: Simulacin en MatLab Parbola segn inferencia Sugeno


Se define la forma de la parbola segn la siguiente frmula:

Donde x [-1; 1] a partir de esto podemos definir la siguiente tabla (definiendo pasos de
0.5):
X
-1
-0.5
0
0.5
1

Y
1
0.25
0
0.25
1

Para este caso planteamos la base de reglas, segn la inferencia de Sugeno:

De la base de reglas se observa que para se tienen 5 entradas y 3 salidas segn:

Para generar el cdigo en MatLab haremos uso de la funcin newfis, para ello
generamos el archivo parabola_s.m:
clear all; close all; clc
fis=newfis('parabola2','sugeno','min','max','min','max','wtaver');
% Variable linguistica de entrada
fis=addvar(fis,'input','input1',...
[-1 1]);
% Etiqueta Linguistica de entrada
fis=addmf(fis,'input',1,'A1',...
'trimf', [-1 -1 -0.5]);
fis=addmf(fis,'input',1,'A2',...
'trimf', [-1 -0.5 0]);
fis=addmf(fis,'input',1,'A3',...
'trimf', [-0.5 0 0.5]);
fis=addmf(fis,'input',1,'A4',...
'trimf', [0 0.5 1]);
fis=addmf(fis,'input',1,'A5',...
'trimf', [0.5 1 1]);
% Variable linguistica de salida

fis=addvar(fis,'output','output1',...
[0 1]);
% Etiqueta Linguistica de salida
fis=addmf(fis,'output',1,'B1',...
'constant', 0);
fis=addmf(fis,'output',1,'B2',...
'constant', 0.25);
fis=addmf(fis,'output',1,'B3',...
'constant', 1);
figure
plotmf(fis,'input',1)
% Base de Reglas
BR=[1 3 1 1;2 2 1 1;3 1 1 1;4 2 1 1;5 3 1 1];
fis=addrule(fis,BR);
% Write FIS
fis=writefis(fis,'parabolas');
% Evaluacion del FIS
dx=0.23;
a=readfis('parabolas');
out=evalfis(dx,a);
disp('Salida Crisp')
disp(out)
ruleview(a)

En el programa se ven definidas las 5 variables de entradas as como tambin las 3


variables de salida, se aadi una parte de evaluacin de nuestra funcin para un valor de
x=0.23, ejecutando el cdigo obtenemos lo siguiente:

A1

A2

A3

A4

A5

Degree of membership

0.8

0.6

0.4

0.2

-1

-0.8

-0.6

-0.4

-0.2

0
input1

0.2

0.4

0.6

0.8

Se observa que la aproximacin de nuestra parbola esta prxima al valor deseado ya que
para x=0.23 se obtuvo y=0.1150 esto difiere de su valor real y=0.0529.
Para mejorar la grafica de la parbola agregaremos ms puntos de iteracin bajo la
siguiente tabla:

X
-1
-0.75
-0.5
-0.25
0
0.25
0.5
0.75
1

Y
1
0.5625
0.25
0.0625
0
0.0625
0.25
0.5625
1

Para este caso planteamos la base de reglas, segn la inferencia de Sugeno:

De la base de reglas se observa que para se tienen 9 entradas y 5 salidas segn:

Para generar el cdigo en MatLab haremos uso de la funcin newfis, para ello
generamos el archivo parabola_su.m:
clear all; close all; clc
fis=newfis('parabola','sugeno','min','max','min','max','wtaver');
% Variable linguistica de entrada
fis=addvar(fis,'input','input1',...
[-1 1]);
% Etiqueta Linguistica de entrada
fis=addmf(fis,'input',1,'A1',...
'trimf', [-1 -1 -0.75]);
fis=addmf(fis,'input',1,'A2',...
'trimf', [-1 -0.75 -0.5]);
fis=addmf(fis,'input',1,'A3',...
'trimf', [-0.75 -0.5 -0.25]);
fis=addmf(fis,'input',1,'A4',...
'trimf', [-0.5 -0.25 0]);
fis=addmf(fis,'input',1,'A5',...
'trimf', [-0.25 0 0.25]);
fis=addmf(fis,'input',1,'A6',...
'trimf', [0 0.25 0.5]);
fis=addmf(fis,'input',1,'A7',...
'trimf', [0.25 0.5 0.75]);
fis=addmf(fis,'input',1,'A8',...
'trimf', [0.5 0.75 1]);
fis=addmf(fis,'input',1,'A9',...
'trimf', [0.75 1 1]);
% Variable linguistica de salida
fis=addvar(fis,'output','output1',...
[0 1]);
% Etiqueta Linguistica de salida
fis=addmf(fis,'output',1,'B1',...
'constant', 0);
fis=addmf(fis,'output',1,'B2',...
'constant', 0.0625);
fis=addmf(fis,'output',1,'B3',...
'constant', 0.25);
fis=addmf(fis,'output',1,'B4',...
'constant', 0.5625);
fis=addmf(fis,'output',1,'B5',...
'constant', 1);
figure
plotmf(fis,'input',1)
% Base de Reglas
BR=[1 5 1 1;2 4 1 1;3 3 1 1;4 2 1 1;5 1 1 1;6 2 1 1;7 3 1 1;8 4 1 1;9 5 1
1];
fis=addrule(fis,BR);
% Write FIS
fis=writefis(fis,'parabola_su');
% Evaluacion del FIS
dx=0.23;
a=readfis('parabola_su');
out=evalfis(dx,a);
disp('Salida Crisp')
disp(out)
ruleview(a)

En el programa se ven definidas las 9 variables de entradas as como tambin las 5


variables de salida, se aadi una parte de evaluacin de nuestra funcin para un valor de
x=0.23, ejecutando el cdigo obtenemos lo siguiente:

A1

A2

A3

A4

A5

A6

A7

A8

A9

Degree of membership

0.8

0.6

0.4

0.2

-1

-0.8

-0.6

-0.4

-0.2

0
input1

0.2

0.4

0.6

0.8

Se observa que el valor de nuestra parbola con mas condiciones para la inferencia
Sugeno posee mejor aproximacin respecto de la anterior ya que para x=0.23 se obtuvo
y=0.0575 que no difiere mucho de su valor real y=0.0529. Ademas que la forma de la
parbola se aproxima mejor a la realidad.

También podría gustarte