Matlab - Sistema de Inferencia Difusa

   
Vista:

Sistema de Inferencia Difusa

Publicado por Jorge Rodriguez jrodriguezm12@ucentral.edu.co (15 intervenciones) el 06/12/2012 22:06:25
Buenas tardes,

Estoy desarrollando un código basado en el toolbox de Logica Difusa en Matlab. El siguiente es un resumen del codigo guardado en un archivo .m :

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
function out=Presion_de_inyeccion(BB,w)
 
a = newfis('Presion_de_inyeccion');
a.input(1).name = 'Rechupes';
a.input(1).range = [0 10];
a.input(1).mf(1).name = 'ligero bajo';
a.input(1).mf(1).type = 'rechupes02';
a.input(1).mf(1).params = [0.031 0.195 0.355 0.51 0.661 0.806 0.947 1.083 1.214 1.341 1.463 1.579 1.692 1.799 1.902 2];
a.input(1).mf(2).name = 'ligero medio';
a.input(1).mf(2).type = 'rechupes13';
a.input(1).mf(2).params = [1.031 1.195 1.355 1.51 1.661 1.806 1.947 2.083 2.214 2.341 2.463 2.579 2.692 2.799 2.902 3];
a.input(1).mf(3).name = 'ligero alto';
a.input(1).mf(3).type = 'rechupes24';
a.input(1).mf(3).params = [2.031 2.195 2.355 2.51 2.661 2.806 2.947 3.083 3.214 3.341 3.463 3.579 3.692 3.799 3.902 4];
 
a.output(1).name = 'Presion_de_inyeccion';
a.output(1).range = [BB(3,1) BB(4,15)];
a.output(1).mf(1).name = 'disminuyebajo2';
a.output(1).mf(1).type = 'PIdisminuyebajo2';
a.output(1).mf(1).params = [BB(3,1)+0.01 BB(3,2) BB(3,3) BB(3,4) BB(3,5) BB(3,6) BB(3,7) BB(3,8) BB(3,9) BB(3,10) BB(3,11) BB(3,12) BB(3,13) BB(3,14) BB(3,15)];
a.output(1).mf(2).name = 'disminuyemedio2';
a.output(1).mf(2).type = 'PIdisminuyemedio2';
a.output(1).mf(2).params = [BB(2,1) BB(2,2) BB(2,3) BB(2,4) BB(2,5) BB(2,6) BB(2,7) BB(2,8) BB(2,9) BB(2,10) BB(2,11) BB(2,12) BB(2,13) BB(2,14) BB(2,15)];
a.output(1).mf(3).name = 'disminuyealto2';
a.output(1).mf(3).type = 'PIdisminuyealto2';
a.output(1).mf(3).params = [BB(1,1) BB(1,2) BB(1,3) BB(1,4) BB(1,5) BB(1,6) BB(1,7) BB(1,8) BB(1,9) BB(1,10) BB(1,11) BB(1,12) BB(1,13) BB(1,14) BB(1,15)];
 
a.rule(1).antecedent = [1 0 0 0 0 0 0];
a.rule(1).consequent = 4;
a.rule(1).weight = 0.9;
a.rule(1).connection = 1;
a.rule(2).antecedent = [2 0 0 0 0 0 0];
a.rule(2).consequent = 4;
a.rule(2).weight = 0.9;
a.rule(2).connection = 1;
a.rule(3).antecedent = [3 0 0 0 0 0 0];
a.rule(3).consequent = 4;
a.rule(3).weight = 0.9;
a.rule(3).connection = 1;
 
a = readfis('Presion_de_inyeccion');
out = evalfis(w,a)


Según lo leído, entiendo que este mismo archivo debe guardarse con la extensión .fis para que pueda ser leído y evaluado. La variable BB que aparece en el código es una matriz generada en otro Script y guardada en el workspace, donde los valores de la matriz varían de acuerdo a un valor arbitrario que ingresa el usuario. El problema que tengo es que el programa no me actualiza los valores de los outputs referentes a las posiciones de la matriz. Me pueden ayudar?
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de JOSE JEREMIAS CABALLERO

Sistema de Inferencia Difusa

Publicado por JOSE JEREMIAS CABALLERO jjcc94@hotmail.com (3440 intervenciones) el 07/12/2012 16:40:53
1
2
3
a = newfis('Presion_de_inyeccion')
a(1).name = 'Rechupes';
a


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
>> Presion_de_inyeccion
 
a =
 
            name: 'Presion_de_inyeccion'
            type: 'mamdani'
       andMethod: 'min'
        orMethod: 'max'
    defuzzMethod: 'centroid'
       impMethod: 'min'
       aggMethod: 'max'
           input: []
          output: []
            rule: []
 
 
a =
 
            name: 'Rechupes'
            type: 'mamdani'
       andMethod: 'min'
        orMethod: 'max'
    defuzzMethod: 'centroid'
       impMethod: 'min'
       aggMethod: 'max'
           input: []
          output: []
            rule: []



Saludos.
JOSE JEREMIAS CABALLERO
Asesor de Proyectos con Matlab
programador en matlab
Servicios de programacion matlab
jjcc94@hotmail.com

http://matlabcaballero.blogspot.com
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Sistema de Inferencia Difusa

Publicado por Jorge Rodriguez jrodriguezm12@ucentral.edu.co (15 intervenciones) el 08/12/2012 00:03:10
Hola José,

No entiendo muy bien tú solución, podrías por favor darme una breve explicación?
Veo que lo que planteas me genera dos estructuras, Cual de las dos guardo como archivo .fis?
Muchas Gracias.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de JOSE JEREMIAS  CABALLERO

Sistema de Inferencia Difusa

Publicado por JOSE JEREMIAS CABALLERO jjcc94@hotmail.com (3440 intervenciones) el 08/12/2012 00:58:56
Veo que tu conocimientos de matlab es básico. Pensé que sabias matlab, ya que trabajabas con estructuras.
Solo te estoy mostrado la forma de modificar una estructura, ya que lo que quieres hacer es eso en tu programa que haz copiado anteriormente.
Sugerencia: estudiar estructuras en matlab



Saludos.
JOSE JEREMIAS CABALLERO
Asesor de Proyectos con Matlab
programador en matlab
Servicios de programación matlab
jjcc94@hotmail.com

http://matlabcaballero.blogspot.com
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Sistema de Inferencia Difusa

Publicado por Jorge Rodriguez jrodriguezm12@ucentral.edu.co (15 intervenciones) el 08/12/2012 17:18:16
Gracias José,

En realidad lo que pretendo hacer es que las salidas del FIS sean modificadas automáticamente. Generalmente, se trabajan los FIS, tanto los inputs como los outputs, con valores numéricos fijos, valores que no se modificarán. Lo que yo quiero hacer es establecer los parámetros de los outpus como variables, para que así cada vez que yo ejecute el programa, los parámetros de salida cambien automáticamente tomando el valor que se establezca para estas variables que representan los parámetros de salida.

Quedo Atento,
Gracias.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de lincol jarly

Sistema de Inferencia Difusa

Publicado por lincol jarly (1 intervención) el 07/12/2015 01:45:21
hola muy bueno el trabajo me podrias pasar el codigo lincol_m_15@hotmail.com
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Dave

Sistema de Inferencia Difusa

Publicado por Dave correa.dave30@gmail.com (934 intervenciones) el 13/12/2012 22:44:14
Hola Jorge;

Tu consulta no es muy clara.

Saludos
Dave Correa
correa.dave30@gmail.com
Servicios de Programación Matlab
http://fismatlab.blogspot.com/
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar