Apéndice B APENDICE B MODELO DE CLASES DEL SISTEMA DE PREDICCIÓN DE SEÑALES CAÓTICAS (S.P.S.C.) 1. Descripción de clases El Sistema de Predicción de Señales Caóticas (S.P.S.C.) está formado por quince clases, cada una de estas clases realiza una tarea en específico dentro del sistema. Este proyecto fue programado en java, debido a que es parte de un Shell Neuronal llamado Annsyd, orientado al reconocimiento de letra manuscrita de Porfirio Díaz. Entonces en este sistema se utilizo el paradigma de programación orientado a objetos. a).- Clase Acerca_De.java Acerca De.java + Font : letras_negras; + Font : mensaje; + Button : Ok; + public void : Acerca_De ( Frame f ) + public void : paint ( Graphics g ) + public boolean : hand Event ( Event e ) + public boolean : action ( Event e, Object o ) Descripción: Esta clase es emplea para proporcionar información a cerca de quien desarrolló el Sistema de Predicción de Señales Caóticas (S.P.S.C.) y en que universidad se llevó a cabo la investigación. 94 Apéndice B b).- Clase AlgoritmoBPTT.java AlgoritmoBPTT.java + Prediccion : gen; + Parametros : dg; + double : W[ ] [ ], Y[ ] [ ], Salida_Deseada[ ] [ ], X[ ] [ ]; + double : error[ ] [ ], Z[ ] [ ], SalidaReal[ ] [ ], Serie_Tiempo[ ] [ ]; + double : Tc[ ] [ ]; + TextField : Texbarr; + Label : Labbarr, texto2; + Integer : barr; + int : bar; + BufferedReader : leer; + BufferdWrite : escribir; + public static double : aux, errortotal = 0.0, error_t = 0.0; + public static int : Barridas; + public static double : pastError, smallestError, smallestEpoch, tolerancia; + public static double : EntExte = 0.0; + Button : Ok, cancel; + public : AlgoritmoBPTT ( ) + public boolean : handleEvent ( Event e ) + public boolean : action ( Event e, Object o ) + public void : Retro_Propagacion ( ) + public void : Salida_Nodos ( ) + public double : Error ( ) + public void : Actualizar_Pesos ( ) + public double : Sigmoide ( double fx ) + public double : Sigmoide_Prima ( double pfx ) + public void : Datos_Entrenados ( ) + public void : Leer_Pesos ( ) + public void : Leer_Y ( ) +public void : Leer_Serie_Tiempo ( ) + public void : Leer_Salida_Deseada ( ) + public void : Inicia_Tc ( ) + public void : Inicia_X ( ) + public void : Inicia_Error ( ) + public void : Inicia_Z ( ) + public void : Salida_Real ( ) + public void : Guardar_Pesos ( ) + public void : Guardar_SalidaReal ( ) + public static void : main ( String arg[ ] ); Descripción: Esta es la clase en donde se encuentra el algoritmo de Retro-Propagación a Través del Tiempo. En esta parte del sistema se realiza el entrenamiento de la Red Neuronal Artificial, con una señal caótica. Después de obtener un entrenamiento eficiente de la red, el siguiente paso es llevar a cabo la predicción de señales. 95 Apéndice B c).- Clase Archivo_Parametros.java Archivo Parametros.java + Mensaje_Error : error_m; + FileDialog : FD; + public static : ParameDir, ParameArchi; + public static String : LabInfo1, LabInfo2, LabInfo3; + Label : LabTiempo, LabNodo, LabDelta, LabI, Labcoef; + Label : Labalfa, LabBarrida, LabGuarda, LabSerieT; + Label : LabPesoEnt, LabConIni, LabPesoSali; + Label : LabPredecir, LabInfo; + TextField : TexTiempo, TexNodo, TexDelta, TexI, Texcoef; + TextField : Texalfa, TexBarrida, TexGuarda, TexSerieT; + TextField : TexPesoEnt, TexConIni, TexPesoSali; + TextField : TexPredecir, TexInfo; + Button : Ok, cancel; + Integer : valTiempo, valN, ValBarrida, valGuarda; + Double : valDeltaT, valI, valcoef, valalfa; + String : valSerieT, valPesoEnt, valConIni, valPesoSali; + String : valPredecir, valInfo; + public static int : Tiempo, N, I, Barrida, Guarda; + public static double : DeltaT, coeficiente, alfa; + public String : SerieT, PesoEnt, ConIni, PesoSali, Predecir, Info; + public boolean : handleEvent ( Event e ) + public boolean : action ( Event e, Object o ) + public void : Nombre_Parametros ( ) + public void : Archivo_Parametros ( ) + public static void : main ( String arg[ ] ) Descripción: Con esta clase el usuario tiene la oportunidad de crear el archivo de datos, que contiene los parámetros necesarios para llevar a cabo el entrenamiento de la Red Neuronal Artificial, por medio del Algoritmo de Retro-Propagación a Través del Tiempo. En este archivo la información será almacenada en un orden establecido por el Sistema, el usuario se concreta a teclear la información en un grupo de ventanas de texto. 96 Apéndice B d).- Clase Ayuda.java Ayuda.java - private List: ListaDato; - private TextArea : textoI; - private Font : fontI; - private Color: colorI; + Prediccion : predimagen; + CargarImagen : cargimag; + public : Ayuda ( ); + public boolean : handleEvent (Event e); + public boolean : action ( Event e, Object o) Descripción: Esta clase tiene como principal función proporcionar al usuario una explicación de como funcionan las diferentes opciones, que forman parte del Sistema de Predicción de Señales Caóticas, utilizando algunas graficas para hacer más entendible la explicación. e).- Clase CargaImagen CargarImagen + private Imagen : Imprimagen, vecimagen; + private int : pintaimag = 0; + public void : paint (Graphics g); + public void : update (Graphics g); + public void : delay (int wait); Descripción: Esta clase es empleada para cargar las imágenes al sistema, permitiendo que este proporcione al usuario una explicación grafica y más fácil a cerca del funcionamiento de las diferentes opciones que forman parte del sistema (S.P.S.C.). 97 Apéndice B f).- Clase Datos_Aleatorio.java Datos Aleatorio.Java + Prediccion : pre; + Pesos : alepesos; + Iniciales: aleinicio; + Mensaje_Error : errorm; + public static String : ParametrosDir, ParametroArchi; - Private TextArea : texto; + Button : pesos, inicial, cancel; + public static int : Tiempo, N, I, Barrida, Guarda; + public statinc double : DeltaT, coeficiente, alfa; + public static String : SerieT, PesoEnt, ConIni, PesosSal ; + public static String : Predecir, Info, Letrero; + Public : Datos_Aleatorio ( ); + public boolean : handleEvent ( Event e ); + public boolean : action ( Event e, Object o ); + public void : Parametros_Nombre ( ); + public void : Parametros_Archivo ( ); Descripción: En esta clase el usuario debe de proporciona al sistema el nombre del archivo que contiene los parámetros necesarios para poder realizar el entrenamiento de la red neuronal. Aquí el usuario puede generar aleatoriamente los pesos y/ó las condiciones iniciales de la Señal Caótica, la información tiene el siguiente orden: 1.- Número de nodos de la red 2.- # de nodos con entradas externas 3.- Coeficiente de función sigmoide 4.- Incremento en el tiempo 5.- Archivo de la Serie de tiempos 6.- Tamaño de la trayectoria 7.- Archivo Resultado del entrenamiento 8.- Número de puntos a predecir 9.- Archivo de Pesos entrenados 10.- Archivo de Condiciones Iniciales 98 Apéndice B g).- Clase Datos_Entrenados.java Datos Entrenados.java + FieleDialog : FD; + public static String : EntrenadoDir, EntrenadoArchi; - private TextArea : Texto; + Button : Ok, cancel; + public static int : Tiempo, N, I, Trayectoria, Barridas, Guarda; + public static double : DeltaT, coeficiente, alfa; + public static String : SerieT, PesoEnt, ConIni, PesoSali, Predecir; + public static String : Info, Predi, Predecir, Letrero; + public : Datos_Entrenados ( ) + public boolean : handleEvent ( Event e ) + public boolean : action ( Event e, Object o ) + public void : Entrenado_Nombre ( ) + public void : Entrenado_Archivo ( ) Descripción: En esta clase el usuario puede leer los datos para realizar la etapa de predicción en el SPSC. El sistema después de obtener un entrenamiento eficiente genera automaticamente un archivo llamado entrenado.out, este contiene los datos entrenados para poder ejecutar la predicción de señales caóticas, el archivo debe tener el siguiente orden de información: 1.- Número de nodos de la red 2.- # de nodos con entradas externas 3.- Coeficiente de función sigmoide 4.- Incremento en el tiempo 5.- Archivo de la Serie de tiempos 6.- Tamaño de la trayectoria 7.- Archivo Resultado del entrenamiento 8.- Número de puntos a predecir 9.- Archivo de Pesos entrenados 10.- Archivo de Condiciones Iniciales 99 Apéndice B h).- Clase Datos_Grafica.java Datos Grafica.java + public static : GrafiDir, GrafiArchi; + FileDialog : FDgraf; - private TextArea : texto; + Button : Ok, cancel; + public static : Tiempog; + public static : Trayectoriag; + public static String : grafiSerieT; + public static String : grafiPredecir; + public sattic String : grafiEntrena; + public : Datos_Grafica ( ); + public boolean : handleEvent (Event e); + public boolean : action (Event e, Object o) + public void : Grafi_Nombre ( ); + public void : Grafi_Archivo ( ); Descripción: Con la clase Datos_Grafica se puede leer el archivo de datos para graficar las señales. El usuario debe primero leer el archivo (graficar.out), generado en el proceso de predicción, ya que este contiene el nombre de los archivos en donde se almacena los valores del resultado de la Predicción de la señal, la Serie de Tiempo utilizados en el entrenamiento, y el resultado del entrenamiento de la Red Neuronal. Este archivo tiene el siguiente orden: 1.- Archivo de la Predicción de la Señal 2.- Archivo de la Serie de Tiempo empleados en el proceso de entrenamiento 3.- Archivo Resultado del Entrenamiento 100 Apéndice B i).- Clase Iniciales.java Iniciales.java + double : Y[ ] [ ]; + TextField : Texinicioinf, Texiniciosup, Texnodo; + Label : Labinicioinf, Labiniciosup, Labnodo; + Button : Ok, cancel; + Integer : numnodo; + Double : iniinf, inisup; + FileDialog : FD; + public static int : Nodos; + public static double : iniciosup, inicioinf; + public Static String : iniciogDir, iniciogArchi; + Mensaje_Error : error_m; + public : Iniciales ( ) + public boolean : handleEvent ( Event e ) + public boolean : action ( Event e, Object o ) + public void : Nombre_ArchivoY ( ) + public void : AleatorioY ( ) + public void : Guardar_InicioY ( ) + public String : strip_stars (String s); Descripción: Con esta clase el usuario puede generar aleatoriamente las condiciones iniciales de una señal caótica en un determinado rango de valores, definido por el usuario. Estas condiciones iniciales son de gran importancia para llevar acabo el entrenamiento de la Red Neuronal. El número de condiciones iniciales a generar, depende del número de nodos que tiene la Red Neuronal Artificial. 101 Apéndice B j).- Clase Lienzo.java Lienzo.java + Prediccion : ven; + Vector : vec; - private int : pinta=0; - private double : vector1[ ], vector2[ ], vector3[ ]; - Image : ImprLogo; - private int : x1, y1, x2, y2, x3, y3, x4, y4; + Image : ImprLogo; + public void : paint (Graphics g); + public void : update (Graphics g); + public void : Graficar_Señal (Graphics g, double vector[ ], int tiempos); + public double [ ] : Leer_Vector (double LeerVector[ ], String grafiPre, int tiempo1); + public double [ ] : Valor_Escalar (double EscalarVec[ ], int tiempos3); + public void : enlace_graficar (int x); Descripción: Esta clase permite al usuario graficar las diferentes señales utilizadas y/ó generadas en el sistema. El usuario podrá graficar principalmente tres señales que estarán almacenadas en el archivo (graficar.out) generado automaticamente después de ejecutar la opción Predicción. El primer archivo contendrá la información obtenida como resultado de la predicción de la señal caótica, el segundo archivo es la Serie de Tiempo utilizados en el proceso de entrenamiento de la Red Neuronal, y el tercer archivo contiene el resultado del entrenamiento. 102 Apéndice B k).- Clase Mensajes_Error.java Mensaje Error.java + Font : letras_negras; + Font : mensaje; + String : letreros; + Button : Ok; + public : Mensaje_Error ( Frame f, String args ) + public void : paint ( Graphics g ) + public boolean : handleEvent ( Event e ) + public boolean : action ( Event e, Object o ) Descripción: La clase Mensaje_Error.java se utiliza principalmente para que el sistema informe al usuario de que algún parámetro o dato dentro de una opción es incorrecta. Y de esta manera el usuario tenga la oportunidad de corregir antes de realizar cualquier tarea. l).- Clase Parámetros.java Parametros.java + FileDialog : FD; + public static String : ParametroDir, ParametroArchi; - private TextArea : texto; + Button : Ok, cancel; + public static int : Tiempo, N, Barrida, Guarda; + public static double : DeltaT, I, coeficiente, alfa; + public static String : SerieT, PesoEnt, ConIni, PesoSali, Predecir; + public static String : Info, letrero; + Prediccion : pre; + Mensaje_Error : errorm; + public : Parametros ( ) + public boolean : handleEvent ( Event e ) + public boolean : action ( Event e, Object o ) + public void : Parametros_Nombre ( ) + public void : Parametros_Archivo ( ) 103 Apéndice B Descripción: En la clase Parametros.java el usuario proporciona al sistema el nombre del archivo que contiene los parámetros necesarios para poder realizar el entrenamiento de la red neuronal; los datos deben almacenarse en el siguiente orden: 1.- Numero de nodos de la red 2.- # de nodos con entradas externas 3.- Coeficiente de aprendizaje 4.- Coeficiente de función sigmoide 5.- Incremento en el tiempo 6.- Tamaño de la trayectoria 7.- Total de barridas (épocas) 8.- Intervalo para salvar pesos 9.- Archivo de la Serie de tiempo 10.- Archivo de Pesos de entrenamiento 11.- Archivo de Condiciones iniciales 12.- Archivo de Pesos entrenados 13.- Archivo de la Predicción 14.- Archivo de Información del proceso de entrenamiento. 104 Apéndice B m).- Clase Pesos.java Pesos.java + double : W[ ] [ ]; + TextField : TexPesoinf, TexPesosup, TexNodo; + Label : LabPesoinf, LabPesosup, LabNodo; + double : aux; + Button : Ok, cancel; + Integer : numnodo; + Double : pinf, psup; + FileDialog : FD; + public static int : NODOS; + public static double : pesosup, pesoinf; + public static String : pesogDir, pesogArchi; + Mensaje_Error : error_m; + public : Pesos ( ) + public boolean : handleEvent ( Event e ) + public boolean : action ( Event e, Object o ) + public void : Nombre_Archivo ( ) + public void : Aleatorio ( ) + public void : Guardar_Pesos ( ) Descripción: La clase Pesos.java se encarga de generar aleatoriamente los pesos que se necesitan para realizar el entrenamiento de la Red Neuronal. Se le recomienda al usuario que genere los pesos en un rango muy pequeño [0.1-0.9]. El número de pesos a generar es de acuerdo al número de nodos totales de la Red Neuronal Artificial. 105 Apéndice B n).- Clase Predecir.java Predecir.java + + + + + + + + + + + + + + Prediccion : gen; Datos_Entrenados : de; double : W[ ] [ ], Y[ ] [ ], Salida_Deseada[ ] [ ], X[ ] [ ]; double : error[ ] [ ], Z[ ] [ ], SalidaReal[ ] [ ], Serie_Tiempo [ ] [ ]; double : Tc[ ]; TextField : Texbarr; Label : Labbarr; Integer : barr; int : bar; BufferReader : Leer; BufferedWrite : escribir; public static double : aux, errototal = 0.0, error_t = 0.0; public static int : Barridas; Button : Ok, cancel; + + + + + + + + + + + + + + + + + + public public public public public public public public public public public public public public public public public public : Predecir ( ) : handleEvent ( Event e ) boolean : action ( Event e, Object o ) void : Predecir_Serie_Tiempo ( ) void : Salida_Nodos ( ) double : Error ( ) : Sigmoide ( double fx ) double : Sigmoide_Prima ( double pfx ) void : Resultado_Prediccion ( ) void : Leer_Pesos ( ) void : Leer_Y ( ) void : Leer_Serie_Tiempo ( ) : Leer_Salida_Deseada ( ) void : Inicia_Tc ( ) void : Inicia_X ( ) void : Inicia_Error ( ) void : Salida_Real ( ) void : Guardar_SalidaReal ( ) Descripción: Esta es la clase que se encarga de realizar la predicción de la señal caótica después de obtener un entrenamiento eficiente de la Red Neuronal Artificial. Antes de llevar acabo la predicción de la señal, el usuario debe de leer el archivo entrenado.out ya que este contiene la información necesaria para realizar la predicción. 106 Apéndice B ñ).- Clase Prediccion.java Prediccion.java + Acerca_DE : acerca; + AlgoritmoBPTT : redrec; + Archivo_Parametro : creararchi; + Ayuda : ayudimagen; + Datos_Entrenados : datospredecir; + Datos_Grafica : vec; + Iniciales : datosinicia; + Lienzo : lien; + Parametros : informacion; + Predecir : predred; + Pesos : pesoalea; + Rango : acotarvalor; - private TextArea : t; - private Font : f; + private Color : c; + FileDialog : FD; + static public String: yDir, xDir, zDir, eDir, sRealDir, resulRealDir, pesoDir; + static public String : pesoArchi, yArchi, xArchi, zArchi, eArchi; + static public String : sRealArchi, resulRealArchi, pesoEArchi; + static public String : infoDir, infoArchi; + public static final int : M AXNODOS=40, M AXTIEM PO=510; + public static final int : IM PRIM E = 100; + public static final int : M AXNODOSALI=1, M AXNODOENT=6, M AXDIM EN=7; + public static final int : LINEAL = 1, tao = 1, dimen = 1; + + + + + public public public public public : Predeccion ( ) boolean : handleEvent ( Event e ) boolean : action ( Event e, Object o ) String : Strip_Stars ( String s ) static void: main ( String args [ ] ) Descripción: Esta es la clase principal encargada de llamar a las demás clases que forman parte del sistema. Esta clase proporciona la iterfaz grafica para que el usuario pueda escoger la acción que desea ejecutar en este Sistema de Predicción de Señales Caóticas (SPSC). 107 Apéndice B o).- Clase Rango.java Rango.java + Prediccion : acotar; - private double : RangoDato[ ]; - TexField : Texrango; - private Label : texto1, texto2; - private Integer : Rangonum; + FileDialog : FD; + public static String : RangoDir, RangoArchi, RangAr; + public static : Rang; + Button : Ok, cancel; + public : Rango ( ); + public boolean : handleEvent (Event e); + public boolean : action (Event e, Objact o); + public void : Rango_Nombre ( ); + public void : Leer_ Serie ( ); + public void : Acotar_Valores ( ); + public void : Nombre_Acotado ( ); + public void : Guardar_Valores_Acotados ( ); Descripción: Con esta clase el usuario puede acotar los valores positivos o negativos en un rango de [0.1-0.9], cuando los valores de la señal sean demasiados grandes o pequeños, para que el Algoritmo de Retro-Propagació a Través del Tiempo funcione de una manera eficiente. 108 Apéndice B ESTRUCTURA DE LOS OBJETOS DEL SISTEMA DE PREDICCIÓN DE SEÑALES CAÓTICAS (S.P.S.C.) Prediccion Acerca_De Ayuda Rango Prediccion Acerca_De Ayuda Rango 109 Apéndice B Prediccion Datos_Grafica Pesos Iniciales Parametros Datos_Entrenados Lienzo Error_Mensaje 110