en otra ventana

Anuncio
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
Descargar