Matlab - Problema sistema Experto Matlab

   
Vista:

Problema sistema Experto Matlab

Publicado por Samuel isalfatec@gmail.com (2 intervenciones) el 26/07/2013 01:21:11
Hola amigos, escribo porque tengo el siguiente problema con un programa en matlab.

Les pegare la programación, espero no se molesten. El archivo es .m en y esta desarrolado en matlab. Ojalá alguien pueda ayudarme ya que estoy estancado:

Si ustedes pegan eso en un archivo .m en Matlab podrán comprobar los errores, solo pido mucha ayuda.

Saludos y que muuuuy atento a sus comentarios.

El error que lanza es:

??? Error using ==> TRABAJO_FINAL_CEXPERTO_001>inicializa at 73
Error using ==> vertcat
CAT arguments dimensions are not consistent.

Error in ==> TRABAJO_FINAL_CEXPERTO_001 at 5
[regla, d, p, pantalla, esp1, esp2, esp3] = inicializa;


La programación es:

% Sistema experto para la deteccion de falla en circuitos electricos
% --------------------------------------------------------------------

function result = TRABAJO_FINAL_CEXPERTO_001
p = adq_datos;
[regla, d, p, pantalla, esp1, esp2, esp3] = inicializa;


% DEFINICION DE REGLAS
regla(1) = p(1);
regla(2) = and(and(p*(1), p*(5)), p(3));
regla(3) = and(regla*(2), p(6));
regla(4) = and(regla*(2), not(p(6)));
regla(5) = and(and(p*(1), not(p(5))), p(3));
regla(6) = and(and(p*(1), p(7)), p(4));
regla(7) = and(regla*(6), p(6));
regla(8) = and(regla*(6), not(p(8)));
regla(9) = and(and(p*(1), not(p(7))), p(4));
regla(10) = not(p*(1));
regla(11) = and(not(p*(1)), p(9));
regla(12) = and(regla*(11), p(10));
regla(13) = and(regla*(11), not(p(10)));
regla(14) = and(not(p*(1)), not(p(9)));
regla(15) = p*(3);
regla(16) = p*(4);

%INFERENCIAS
if regla(1), d(1) = 1; end;
if regla(2), d(2) = 1; end;
if regla(3), d(3) = 1; end;
if regla(4), d(4) = 1; end;
if regla(5), d(5) = 1; end;
if regla(6), d(6) = 1; end;
if regla(7), d(7) = 1; end;
if regla(8), d(8) = 1; end;
if regla(9), d(9) = 1; end;
if regla(10), d(10) = 1; end;
if regla(11), d(11) = 1; end;
if regla(12), d(12) = 1; end;
if regla(13), d(13) = 1; end;
if regla(14), d(14) = 1; end;
if regla(15), d(15) = 1; end;
if regla(16), d(16) =1 ; end;
if or(or(or(or(or(or(or(d(2), d(3)), d(4)), d(5)), d(6)), d(7)), d(8)), d(9))
d(1) = 0;
end;

if or (d(3), d(4))
d(2) = 0;
end;
if or (d(7), d(8))
d(6) = 0;
end;
if or(or(or(d(11), d(12)), d(13)), d(14)),
d(10) = 0;
end;
if or (d(12), d(13))
d(11) = 0;
end;

resultado(d)

function [reg, dat, pro, pantalla1, especial1, especial2, especial3] = inicializa
%Funcion que sirve para inicializar los valores de los arreglos a ocupar
%para reglas, datos, proposiciones
%Por defecto tienen el valor 0 (falso)
for i = 1:14
reg(i) = 0;
dat(i) = 0;
pro(i) = 0;

end

pantalla1 = ['especial1';


'especial2 ';
'Revise tarjetas SIMADYN ';
'Reemplace tiristores defectuosos ';
'especial3 ';
'Revise rectificador SIMOVERT D ';
'Revise tarjetas de disparo exitatris SIMADYN D ';
'Revise banco de tiristores ';
'Reaprete los pernos de sujecicon de las escobillas ';
'Revise las protecciones pueden estar dañadas ';
'Revise tarjetas disparadoras SAV 22 ';
'Revise SIMADYN D, tarjetas de monitoreo y reconfigure ';
'Reemplace las protecciones dañadas o reconfigurelas ';
'Reemplace las protecciones dañadas o reconfigurelas '];
especial1 = ['Revise las protecciones diferenciales de corriente ';
'Revise las protecciones diferenciales de corriente '];
especial2 = ['Revise bando de tiristores ';
'Revise tarjetas de SAV 22 ';
'Revise FO y optodisparadores '];
especial3 = ['Revise SwitchGear ';
'Revise transformador '];

%FIN DE LA FUNCION INICIALIZA

% INTERFAZ DE ADQUISICION DE DATOS
function datos = p
display('Bienvenido al sistema de deteccion de falla')
display(' ')
display('Se le realizara una serie de preguntas para estableces cual es la falla')
display('Responda:')
display(' 1 si la respuesta es afirmativa')
display(' 0 si la respuesta es negativa')
input('Presione la tecla enter para comenzar...')
display(' ')
datos(1) = input('tripp real?? ');
display(' ')
datos(2) = input('¿Las proteccion sobrecorrientes accionadas han sido revisadas? ');
display(' ')
datos(3) = input('¿NO1, NO2 y NO3 estan accionadas? ');
display(' ')
datos(4) = input('¿N21 esta accionada? ');
display(' ')
datos(5) = input('¿Las protecciones diferenciales han sido revisadas? ');
display(' ')
datos(6) = input('¿El bando de tiristores, SAV 22, FO y Optodisparadores han sido revisados? ');
display(' ')
datos(7) = input('¿Las escobillas de alimentacion han sido revisadas? ');
display(' ')
datos(8) = input('¿El rectificador SIMOVERT D ha sido revisado ');
display(' ')
datos(9) = input('¿Las protecciones han sido revisadas? ');
display(' ')
datos(10) = input('¿Las tarjetas disparadoras han sido revisadas? ');
end %FIN DE FUNCION adq_datos

function a = resultado(resul)
temp = 0; %SE UTILIZA ESTA VARIABLE PARA COMPROBAR QUE EXISTEN VALORES VERDADEROS
display(' ')
display(' ')
display(' Resultad: ')
for i = 14:-1:1
if resul(i)
temp = 1;
%DISPLAY (i)
if or(or(i == 1, i == 2, i == 5))
if i == 1
display(esp1(1,1:50))
display(esp1(2,1:50))
end
if i == 5
display(esp2(1,1:28))
display(esp2(2,1:28))
display(esp2(3,1:28))
end
if i == 5
display(esp3(1,1:20))
display(esp3(2,1:20))
end

else
display(pantalla(i,1:53));
end
end;
end
if temp == 0 % SI ESTA AQUI ENTONCES SIGNIFICA QUE NO HUBIERON PROPOSICIONES EVALUADAS VERDADERAS
display('La causa no se encuentra en nuestra base de conocmientos')
end;

end
end %FIN FUNCION RESULTADOS

end %FIN FUNCION EXPERT
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

Problema sistema Experto Matlab

Publicado por JOSE JEREMIAS CABALLERO jjcc94@hotmail.com (3433 intervenciones) el 26/07/2013 15:29:41
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
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
%  Sistema experto para la deteccion de falla en circuitos electricos
function TRABAJO_FINAL_CEXPERTO_002
clc
global pantalla esp1 esp2 esp3
[regla, d, p,  pantalla, esp1, esp2, esp3] = inicializa
p=adq_datos;
% DEFINICION DE REGLAS
regla(1) = p(1);
regla(2) = and(and(p(1), p(5)), p(3));
regla(3) = and(regla(2), p(6));
regla(4) = and(regla(2), not(p(6)));
regla(5) = and(and(p(1), not(p(5))), p(3));
regla(6) = and(and(p(1), p(7)), p(4));
regla(7) = and(regla(6), p(6));
regla(8) = and(regla(6), not(p(8)));
regla(9) = and(and(p(1), not(p(7))), p(4));
regla(10) = not(p(1));
regla(11) = and(not(p(1)), p(9));
regla(12) = and(regla(11), p(10));
regla(13) = and(regla(11), not(p(10)));
regla(14) = and(not(p(1)), not(p(9)));
regla(15) = p(3);
regla(16) = p(4);
 
%INFERENCIAS
for i=1:16
    if regla(i), d(i)=1; end
end
if or(or(or(or(or(or(or(d(2), d(3)), d(4)), d(5)), d(6)), d(7)), d(8)), d(9))
    d(1) = 0;
end
 
if or (d(3), d(4)); d(2) = 0; end
if or (d(7), d(8)); d(6) = 0; end
if or(or(or(d(11), d(12)), d(13)), d(14)); d(10) = 0; end
if or (d(12), d(13)); d(11) = 0; end
resultado(d);
end
 
function [reg, dat, pro, pantalla1, especial1, especial2, especial3] = inicializa
    %Funcion que sirve para inicializar los valores de los arreglos a ocupar
    %para reglas, datos, proposiciones
    %Por defecto tienen el valor 0 (falso)
     reg(1:14) = 0;
     dat(1:14) = 0;
     pro(1:14) = 0;
    pantalla1=...
   ['especial1                                             ';
    'especial2                                             ';
    'Revise tarjetas SIMADYN                               ';
    'Reemplace tiristores defectuosos                      ';
    'especial3                                             ';
    'Revise rectificador SIMOVERT D                        ';
    'Revise tarjetas de disparo exitatris SIMADYN D        ';
    'Revise banco de tiristores                            ';
    'Reaprete los pernos de sujecicon de las escobillas    ';
    'Revise las protecciones pueden estar dañadas          ';
    'Revise tarjetas disparadoras SAV 22                   ';
    'Revise SIMADYN D, tarjetas de monitoreo y reconfigure ';
    'Reemplace las protecciones dañadas o reconfigurelas   ';
    'Reemplace las protecciones dañadas o reconfigurelas   '];
especial1=...
   ['Revise las protecciones diferenciales de corriente    ';
    'Revise las protecciones diferenciales de corriente    '];
especial2=...
   ['Revise bando de tiristores                            ';
    'Revise tarjetas de SAV 22                             ';
    'Revise FO y optodisparadores                          '];
especial3=...
    ['Revise SwitchGear                                     ';
     'Revise transformador                                  '];
 
end %FIN DE LA FUNCION INICIALIZA
 
 
% INTERFAZ DE ADQUISICION DE DATOS
function datos = adq_datos
        fprintf('Bienvenido al sistema de deteccion de falla\n\n')
        display('Se le realizara una serie de preguntas para estableces cual es la falla')
        display('Responda:')
        display('    1 si la respuesta es afirmativa')
        display('    0 si la respuesta es negativa')
        input('Presione la tecla enter para comenzar...')
        datos(1) = input('\ntripp real??  ');
        datos(2) = input('\n¿Las proteccion sobrecorrientes accionadas han sido revisadas?  ');
        datos(3) = input('\n¿NO1, NO2 y NO3 estan accionadas?  ');
        datos(4) = input('\n¿N21 esta accionada?  ');
        datos(5) = input('\n¿Las protecciones diferenciales han sido revisadas?  ');
        datos(6) = input('\n¿El bando de tiristores, SAV 22, FO y Optodisparadores han sido revisados?  ');
        datos(7) = input('\n¿Las escobillas de alimentacion han sido revisadas?  ');
        datos(8) = input('\n¿El rectificador SIMOVERT D ha sido revisado  ');
        datos(9) = input('\n¿Las protecciones han sido revisadas?  ');
        datos(10) = input('\n¿Las tarjetas disparadoras han sido revisadas?  ');
end %FIN DE FUNCION adq_datos
 
 
function resultado(resul)
global pantalla esp1 esp2 esp3
        temp = 0; %SE UTILIZA ESTA VARIABLE PARA COMPROBAR QUE EXISTEN VALORES VERDADEROS
        fprintf('\n\n Resultad\n    ')
        for i = 14:-1:1
            if resul(i)
                temp = 1;
                %display(i)
                if or(or(i == 1, i == 2),i == 5)
                    if i == 1
                        display(esp1(1,:))
                        display(esp1(2,:))
                    end
                    if i == 5
                        display(esp2(1,:))
                        display(esp2(2,:))
                        display(esp2(3,:))
                    end
                    if i == 5
                        display(esp3(1,:))
                        display(esp3(2,:))
                    end
 
                else
                    display(pantalla(i,:))
                end
            end
        end
        if temp == 0 % SI ESTA AQUI ENTONCES SIGNIFICA QUE NO HUBIERON PROPOSICIONES EVALUADAS VERDADERAS
            display('La causa no se encuentra en nuestra base de conocmientos')
        end
 
end %FIN FUNCION RESULTADOS


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
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
>> TRABAJO_FINAL_CEXPERTO_002
 
regla =
 
     0     0     0     0     0     0     0     0     0     0     0     0     0     0
 
 
d =
 
     0     0     0     0     0     0     0     0     0     0     0     0     0     0
 
 
p =
 
     0     0     0     0     0     0     0     0     0     0     0     0     0     0
 
 
pantalla =
 
especial1
especial2
Revise tarjetas SIMADYN
Reemplace tiristores defectuosos
especial3
Revise rectificador SIMOVERT D
Revise tarjetas de disparo exitatris SIMADYN D
Revise banco de tiristores
Reaprete los pernos de sujecicon de las escobillas
Revise las protecciones pueden estar dañadas
Revise tarjetas disparadoras SAV 22
Revise SIMADYN D, tarjetas de monitoreo y reconfigure
Reemplace las protecciones dañadas o reconfigurelas
Reemplace las protecciones dañadas o reconfigurelas
 
 
esp1 =
 
Revise las protecciones diferenciales de corriente
Revise las protecciones diferenciales de corriente
 
 
esp2 =
 
Revise bando de tiristores
Revise tarjetas de SAV 22
Revise FO y optodisparadores
 
 
esp3 =
 
Revise SwitchGear
Revise transformador
 
Bienvenido al sistema de deteccion de falla
 
Se le realizara una serie de preguntas para estableces cual es la falla
Responda:
    1 si la respuesta es afirmativa
    0 si la respuesta es negativa
Presione la tecla enter para comenzar...
 
tripp real??  1
 
¿Las proteccion sobrecorrientes accionadas han sido revisadas?  0
 
¿NO1, NO2 y NO3 estan accionadas?  0
 
¿N21 esta accionada?  1
 
¿Las protecciones diferenciales han sido revisadas?  1
 
¿El bando de tiristores, SAV 22, FO y Optodisparadores han sido revisados?  0
 
¿Las escobillas de alimentacion han sido revisadas?  1
 
¿El rectificador SIMOVERT D ha sido revisado  0
 
¿Las protecciones han sido revisadas?  1
 
¿Las tarjetas disparadoras han sido revisadas?  0
 
 
 Resultad
    Revise banco de tiristores



A todo los usuarios del foro de Matlab, le comento, hagan sus preguntas vía foro. Escribiéndome a mi correo no siempre van obtener una respuesta rápida o agregándome al Facebook, eso no siempre sucede, pues hay veces estoy ocupado en mi trabajo, o no estoy en linea. Luego no se sientan mal, cuando no les contesto sus correos.

El correo es mayormente para aseorias online para quienes deciden tomar mis servicios de programacion en Matlab y tiene un costo, ademas para ese servicio se acuerda un dia para brindarles mi asesoria, no siempre es el mismo dia en que se contactan conmigo.




Saludos.
JOSE JEREMÍAS CABALLERO
Asesorías en Matlab
programador en matlab
Servicios de programación matlab
jjcc94@hotmail.com

http://matlabcaballero.blogspot.com

http://www.lawebdelprogramador.com/foros/Matlab/1371532-FORMA_DE_APRENDER_MATLAB.html
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

Problema sistema Experto Matlab

Publicado por Samuel isalfatec@gmail.com (2 intervenciones) el 02/08/2013 17:38:27
Que puedo decir al respecto... Un verdadero maestro de Matlab.

Muy agradecido por su respuesta.

Saludos.
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

Problema sistema Experto Matlab

Publicado por Jorge Lazaro jgmartinez@india.com (1 intervención) el 24/02/2016 04:36:54
Hola, le escribo porque recien comienzo un proyecto en el cual necesito programar un sistema experto en Matlab. Pienso crear una interfaz en GUIDE pero aun no se como o donde me seria mas facil crear la base de conocimiento. El SE lo hare basado en reglas. Si le es posible le agradeceria mucho alguna sugerencia.
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