Matlab - Sistema de Inferencia Difusa

 
Vista:

Sistema de Inferencia Difusa

Publicado por Jorge Rodriguez (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
Val: 6.975
Oro
Ha mantenido su posición en Matlab (en relación al último mes)
Gráfica de Matlab

Sistema de Inferencia Difusa

Publicado por JOSE JEREMIAS CABALLERO (5917 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
[email protected]

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 (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
Val: 6.975
Oro
Ha mantenido su posición en Matlab (en relación al último mes)
Gráfica de Matlab

Sistema de Inferencia Difusa

Publicado por JOSE JEREMIAS CABALLERO (5917 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
[email protected]

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 (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 [email protected]
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