Escolar Documentos
Profissional Documentos
Cultura Documentos
Redes Neuronales
Juli
an Esteban Guti
errez Posada
Ingeniero de Sistemas / Especialista en Inform
atica Educativa
Adscrito al
Programa de Ingeniera de Sistemas y Computaci
on
Facultad de Ingeniera
Universidad del Quindo
ii
Presentacion
El trabajo que tiene en sus manos, ha sido el resultado de muchas horas
de trabajo duro durante mi tiempo libre, tiempo que se ha invertido juiciosamente para producir un texto y un software Laboratorio Virtual de Redes
Neuronales que estoy seguro podran ayudar a los estudiantes y docentes
que se encuentren involucrados con las redes neuronales o con el desarrollo
de software.
No considero que sea un trabajo libre de mejoras o totalmente finalizado,
por el contrario, es un trabajo que abre un mundo nuevo de posibilidades,
tanto en el dise
no de soluciones con redes neuronales, como en la didactica
en el aula de clase.
El presente documento pretende no solo mostrar el analisis, el dise
no,
la implementacion, las pruebas del software y las guas de laboratorio, sino
que pretende servir de modelo para el desarrollo de software utilizando el
proceso de desarrollo ICONIX (explicado mas adelante).
Por otro lado, no veo el software desarrollado como un software educativo, sino mas bien, como una herramienta de apoyo a la proceso de ense
nanza
/ aprendizaje de redes neuronales. En ella, los estudiantes podran manipular neuronas y conectarlas entre s, para construir cualquier topologa o
arquitectura que deseen y finalmente implementar los algoritmos de aprendizaje.
El laboratorio virtual no tiene creadas las diferentes redes neuronales,
sino que brinda un entorno para que el estudiante construya estas redes por
medio del software.
Antes de terminar la presentaci
on, me gustara decir que los laboratorios planteados pueden ser usados como modelos para que los docentes
involucrados puedan crear sus propios laboratorios, o como actividades de
exploracion inicial antes de resolver otros mas complejos.
iv
Indice general
EL PROYECTO
1. INTRODUCCION
2. ANALISIS
DE REQUERIMIENTOS
5
9
12
13
13
14
15
15
. . . . . . . . . . . . . . . . . . . . . . .
15
18
40
42
INDICE GENERAL
vi
PRELIMINAR
3. ANALISIS
Y DISENO
45
45
46
49
. . . . . . . . . . . . .
60
80
4. DISENO
185
INDICE GENERAL
vii
5. IMPLEMENTACION
5.1. Comentarios cortos . . . . . . . . . . . . . . . . . .
5.2. Particularidades de la implementaci
on . . . . . . .
5.2.1. Definir nuevo monitor a neurona de entrada
5.2.2. Crear monitor a neurona de entrada . . . .
5.3. Plantillas para generar codigo . . . . . . . . . . . .
5.3.1. Aplicacion . . . . . . . . . . . . . . . . . . .
5.3.2. Funcion Base . . . . . . . . . . . . . . . . .
5.3.3. Funcion de activaci
on . . . . . . . . . . . .
5.3.4. Funcion de transferencia . . . . . . . . . . .
5.3.5. Manifest . . . . . . . . . . . . . . . . . . . .
5.3.6. Monitor a neurona de entrada . . . . . . . .
5.3.7. Monitor a neurona de proceso . . . . . . . .
5.3.8. Monitor a neurona de retardo . . . . . . . .
5.3.9. Neurona de retardo (Valor Futuro) . . . . .
5.3.10. Red Neuronal . . . . . . . . . . . . . . . . .
6. PRUEBAS
6.1. Listado de los casos de prueba . . . . . . . . .
6.2. Pruebas en DiscoLaboratorioVirtualRNATest
6.3. Pruebas en DiscoTest . . . . . . . . . . . . . .
6.4. Pruebas en ListaDeNeuronasTest . . . . . . .
6.5. Pruebas en ListaDeRedesNeuronalesTest . .
6.6. Pruebas en ListaDeVariablesTest . . . . . .
6.7. Pruebas en FuncionEscalonBipolarTest . . .
6.8. Pruebas en FuncionEscalonUnipolarTest . .
6.9. Pruebas en FuncionIdentidadTest . . . . . .
6.10. Pruebas en FuncionLinealMixtaBipolarTest
6.11. Pruebas en FuncionLinealMixtaUnipolarTest
6.12. Pruebas en FuncionSigmoidalBipolarTest . .
6.13. Pruebas en FuncionSigmoidalUnipolarTest .
6.14. Pruebas en FuncionBaseLinealTest . . . . . .
6.15. Pruebas en FuncionBaseRadicalTest . . . . .
6.16. Pruebas en FuncionDeActivacionTest . . . .
6.17. Pruebas en FuncionDeTransferenciaTest . .
6.18. Pruebas en NeuronaDeEntradaTest . . . . . .
6.19. Pruebas en NeuronaDeProcesoTest . . . . . .
6.20. Pruebas en NeuronaDeRetardoTest . . . . . .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
291
. 292
. 293
. 293
. 294
. 296
. 296
. 297
. 298
. 299
. 299
. 300
. 301
. 302
. 303
. 304
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
305
. 307
. 310
. 325
. 329
. 331
. 332
. 342
. 343
. 344
. 346
. 347
. 348
. 350
. 351
. 353
. 355
. 361
. 366
. 368
. 383
INDICE GENERAL
viii
II
LABORATORIOS
393
395
. . . . . . . . . . . . . . . 397
431
. . . . . . . . . . . . . . . 433
467
Parte I
EL PROYECTO
INTRODUCCION
La idea fundamental de este trabajo es crear un software que sirva como material de apoyo a el curso Inteligencia Artificial del programa de
Ingeniera de Sistemas y Computacion de la Universidad del Quindo u otro
curso similar en esta u otra universidad.
Como en todo desarrollo de un software, primero se parte de una serie
de requerimientos, los cuales no son mas que una vista muy abstracta de lo
que el software hace y el fin es llevar estos requerimientos a un codigo fuente
en un lenguaje de programacion determinado. Este codigo fuente no es mas
que la vista con el menor grado de abstraccion del proyecto, en la cual debe
quedar muy claro el como se satisfacen todos los requerimientos planteados.
En esta parte El proyecto, el proposito fundamental es mostrar como
partiendo de los requerimientos se llega un codigo fuente acorde con ellos.
Para hacer esto, es necesario seguir un proceso de desarrollo de software, el
cual ayude a pasar suavemente entre los diferentes niveles de abstraccion del
proyecto, ver Figura 1.1.
CAPITULO 1. INTRODUCCION
1.1.
Entre las caractersticas mas importantes de ICONIX [17] y [16] se encuentran: el permitir pasar de los requerimientos a codigo fuente de una
manera rapida y eficiente; usar diagramas de UML3 ; permitir el seguimiento de los requerimientos por todas las etapas del proceso; poseer un ciclo
de vida iterativo e incremental; y tener en cuenta todos los requerimientos
funcionales en el dise
no.
ICONIX se divide en las etapas de: analisis de requerimientos, analisis
y dise
no preliminar, dise
no, e implementaci
on y pruebas.
La etapa de analisis de requerimientos, cubre los numerales del uno
al seis que se muestran en la Figura 1.3. Estos numerales son: realizacion
del documento de requerimientos, tecnica para identificar las clases y/o los
objetos candidatos, construccion del modelo del dominio, bosquejo de todas
las interfaces graficas de usuario (GUI4 ), construccion del diagrama de casos
de uso, y finalmente una revision de requerimientos.
2
www.iconixsw.com
Unified Modeling Language - Lenguaje Unificado de Modelamiento
4
Graphical User Interface
3
CAPITULO 1. INTRODUCCION
CAPITULO 1. INTRODUCCION
ANALISIS
DE REQUERIMIENTOS
2.1.
Documento de requerimientos
10
CAPITULO 2. ANALISIS
DE REQUERIMIENTOS
Funci
on base lineal
T =
n
X
e i wi
i=0
Funci
on base radical
v
u n
uX
T =t
(ei wi )2
i=0
Funci
on identidad
11
f (x) = x
(
1
0
si x 0
si x < 0
Funci
on escal
on unipolar
f (x) =
Funci
on escal
on bipolar
f (x) =
1
1
Funci
on sigmoidal unipolar
f (x) =
1
1 + ex
Funci
on sigmoidal bipolar
f (x) =
Funci
on lineal mixta unipolar
Funci
on lineal mixta bipolar
si x 0
si x < 0
ex ex
ex + ex
si x > 1
1
0
si x < 1
f (x) =
si x > 1
1
1 si x < 1
f (x) =
x
en otro caso
f (x) = g(x)
12
CAPITULO 2. ANALISIS
DE REQUERIMIENTOS
Sobre las neurona de entrada: Crear neurona, obtener nombre,
obtener valor de salida, asignar valor de salida, crear monitor, asignar
monitor, desasignar monitor, definir nuevo monitor o cargarlo.
Sobre las neurona de retardo: Crear neurona, obtener nombre,
obtener valor de salida, asignar valor de salida, actualizar valor presente, obtener valor futuro, actualizar valor futuro, definir nuevo valor
futuro o cargarlo, enlazar neurona, desenlazar neurona, obtener estado
enlace, obtener con quien se relaciona, obtener nombre de la neurona
enlazada, crear monitor, asignar monitor, desasignar monitor, definir
nuevo monitor o cargarlo.
Sobre las neurona de proceso: Crear neurona, obtener nombre,
obtener n
umero de entradas, enlazar neurona, desenlazar neurona, obtener estado de un enlace, obtener con quien se relaciona, obtener
nombre de la neurona enlazada, obtener peso enlace, cambiar peso
enlace, obtener funcion base, cambiar funcion base, definir nueva funcion base o cargarla, obtener funcion de activaci
on, cambiar funcion
de activacion, definir nueva funcion de activaci
on o cargarla, obtener
funcion de transferencia, cambiar funcion de transferencia, definir nueva funcion de transferencia o cargarla, obtener umbral de activaci
on,
cambiar umbral de activaci
on, obtener potencial de activaci
on, obtener valor de activacion , obtener valor de salida, crear monitor, asignar
monitor, desasignar monitor, definir nuevo monitor o cargarlo.
Sobre la red neuronal: Crear red, obtener nombre, definir nueva
red neuronal o cargarla, ejecutar red, generar aplicacion.
2.2.
T
ecnica de identificaci
on
2.2. TECNICA
DE IDENTIFICACION
13
2.2.1.
2.2.2.
Eliminaci
on de algunas clases candidatas
CAPITULO 2. ANALISIS
DE REQUERIMIENTOS
14
SUSTANTIVO
agrupaci
on de neuronas
entradas
salida
factor
peso
potencial de activaci
on
usuario
valor de activaci
on
valor de salida
se
nal
valor de entrada
forma de conexi
on
topologa
algoritmos de entrenamiento
conexiones
criterio predefinido
umbral de activaci
on
por
por
por
por
por
por
por
por
por
por
por
por
por
por
por
por
por
ser
ser
ser
ser
ser
ser
ser
ser
ser
ser
ser
ser
ser
ser
ser
ser
ser
DE ELIMINACION
RAZON
sin
onimo de red neuronal
un posible atributo
un posible atributo
un posible atributo
sin
onimo de factor
un posible atributo
un posible actor
un posible atributo
un posible atributo
irrelevante
un posible atributo
sin
onimo de topologa
irrelevante
irrelevante
un posible atributo
irrelevante
un posible atributo
2.2.3.
2.2.4.
15
2.2.5.
Lista de verbos
2.3.
16
CAPITULO 2. ANALISIS
DE REQUERIMIENTOS
CLASES
un laboratorio virtual
un laboratorio virtual
una red neuronal
una neurona de procesamiento
una neurona de retardo
una neurona de entrada
una neurona de proceso
una neurona de proceso
una neurona de proceso
una neurona
una f. base lineal
una f. base radical
una f. de activaci
on
una f. de transferencia
una f. sigmoidal unipolar
una f. sigmoidal bipolar
una f. lineal mixta unipolar
una f. lineal mixta bipolar
una f. escal
on unipolar
una f. escal
on bipolar
una f. identidad
un monitor de n. de proceso
un monitor de n. de retardo
un monitor de n. de entrada
un monitor de n. de proceso
un monitor de n. de retardo
un monitor de n. de entrada
una red perceptron
una red perceptron multinivel
una red adaline
una red madaline
una red hopfield
una red backpropagation
RELACION
tiene
tiene
tiene
es una
es una
es una
tiene
tiene
tiene
se relaciona
es una
es una
es una
es una
es una
es una
es una
es una
es una
es una
es una
es un
es un
es un
monitorea
monitorea
monitorea
es una
es una
es una
es una
es una
es una
CLASES
neuronas de . . .
monitor de n. de . . .
neuronas
neurona
neurona
neurona
una f. base
una f. de activaci
on
una f. de transferencia
con otra neurona
funci
on base
funci
on base
funci
on matem
atica
funci
on matem
atica
funci
on matem
atica
funci
on matem
atica
funci
on matem
atica
funci
on matem
atica
funci
on matem
atica
funci
on matem
atica
funci
on matem
atica
monitor
monitor
monitor
una neurona de proceso
una neurona de retardo
una neurona de entrada
red neuronal
red neuronal
red neuronal
red neuronal
red neuronal
red neuronal
17
18
2.4.
CAPITULO 2. ANALISIS
DE REQUERIMIENTOS
En la Figura 2.5, se puede observar el prototipo de la Ventana Principal en la cual el usuario debe elegir que accion desea hacer en el sistema,
tal y como se explicara mas adelante. Inicialmente todas las opciones del
men
u principal permanecen desactivadas, salvo las opciones de Archivo y
Acerca de.
2.4. PROTOTIPO DE LAS INTERFACES GRAFICAS
19
En la Figura 2.7, se observa el prototipo de la Ventana Nuevo Laboratorio, la cual se muestra cuando el usuario selecciona la alternativa Iniciar
laboratorio de la opcion Archivo en la Ventana Principal.
20
CAPITULO 2. ANALISIS
DE REQUERIMIENTOS
En la Figura 2.9, se observa el prototipo del dialogo de Guardar laboratorio, el cual se muestra cuando el usuario selecciona la alternativa de
igual nombre de la opcion Archivo en la Ventana Principal.
Figura 2.9: Di
alogo de Guardar como
En la Figura 2.10, se observan las alternativas de la opcion Neurona de
Entrada de la Ventana Principal. Por defecto solo las alternativas Crear
neurona, Crear monitor y Definir nuevo monitor se encuentran activas.
2.4. PROTOTIPO DE LAS INTERFACES GRAFICAS
21
En la Figura 2.11, se observa el prototipo de la Ventana Crear Neurona, la cual se muestra cuando el usuario selecciona la alternativa de igual
nombre de la opcion Neurona de entrada en la Ventana Principal.
22
CAPITULO 2. ANALISIS
DE REQUERIMIENTOS
2.4. PROTOTIPO DE LAS INTERFACES GRAFICAS
23
24
CAPITULO 2. ANALISIS
DE REQUERIMIENTOS
Figura 2.19: Ventana Principal opcion -Neurona de RetardoEn la Figura 2.20, se observa el prototipo de la Ventana Crear Neurona
de Retardo, la cual se muestra cuando el usuario selecciona la alternativa de
igual nombre de la opcion Neurona de retardo en la Ventana Principal.
2.4. PROTOTIPO DE LAS INTERFACES GRAFICAS
25
26
CAPITULO 2. ANALISIS
DE REQUERIMIENTOS
2.4. PROTOTIPO DE LAS INTERFACES GRAFICAS
27
28
CAPITULO 2. ANALISIS
DE REQUERIMIENTOS
2.4. PROTOTIPO DE LAS INTERFACES GRAFICAS
29
30
CAPITULO 2. ANALISIS
DE REQUERIMIENTOS
2.4. PROTOTIPO DE LAS INTERFACES GRAFICAS
31
32
CAPITULO 2. ANALISIS
DE REQUERIMIENTOS
2.4. PROTOTIPO DE LAS INTERFACES GRAFICAS
33
34
CAPITULO 2. ANALISIS
DE REQUERIMIENTOS
2.4. PROTOTIPO DE LAS INTERFACES GRAFICAS
35
36
CAPITULO 2. ANALISIS
DE REQUERIMIENTOS
En la Figura 2.52, se observan las alternativas de la opcion Red Neuronal de la Ventana Principal. Por defecto solo las alternativas Crear
red y Definir nueva red neuronal, se encuentran activas.
Figura 2.52: Ventana Principal opcion -Red NeuronalEn la Figura 2.53, se observa el prototipo de la Ventana Crear una Red
Neuronal, la cual se muestra cuando el usuario selecciona la alternativa de
igual nombre de la opcion Red Neuronal en la Ventana Principal.
2.4. PROTOTIPO DE LAS INTERFACES GRAFICAS
37
38
CAPITULO 2. ANALISIS
DE REQUERIMIENTOS
2.4. PROTOTIPO DE LAS INTERFACES GRAFICAS
39
Las Figuras 2.59, 2.60, 2.61, 2.62, son los prototipos de los dialogos de:
Di
alogo de Error, Di
alogo de Informaci
on, Di
alogo de Advertencia y
Di
alogo de Pregunta respectivamente.
Figura 2.59: Di
alogo de Error
Figura 2.60: Di
alogo de Informaci
on
Figura 2.61: Di
alogo de Advertencia
Figura 2.62: Di
alogo de Pregunta
CAPITULO 2. ANALISIS
DE REQUERIMIENTOS
40
N
ACLARACIO
2.5.
41
La Figura 2.65 muestra los casos de uso del paquete neurona de retardo.
42
CAPITULO 2. ANALISIS
DE REQUERIMIENTOS
La Figura 2.67 muestra los casos de uso del paquete neurona de proceso.
2.6.
Revisi
on de requerimientos (RR)
DE REQUERIMIENTOS (RR)
2.6. REVISION
43
Involucre representantes de los clientes y del equipo de desarrollo, buscando un acuerdo sobre todo lo hecho hasta ahora.
Identifique: Cuales son los objetos del mundo real que necesitamos
modelar y como se relacionan entre ellos?
Desarrolladores y usuarios construyen un prototipo (GUI) que muestre
la prueba de concepto.
No construya el prototipo en codigo, use lapiz y papel o herramientas
de dibujo.
Para este proyecto, toda la revision es satisfactoria.
44
CAPITULO 2. ANALISIS
DE REQUERIMIENTOS
PRELIMINAR
ANALISIS
Y DISENO
3.1.
Descripci
on de los casos de uso
El texto explicativo de los casos de uso, debe estar escrito en voz activa
y debe dejar claro el que y no el como. Esta descripcion debe tener al
menos dos partes: un curso basico y un curso alterno.
El curso basico debe describir la interacci
on del usuario con el sistema
y las respectivas respuestas. Debe dejar claro Quien hace que?, usando
que elementos de la interfaz grafica? y que hace el sistema como respuesta
a ello?. Para poder describir la interacci
on, deben hacerse referencias a las
diferentes ventanas, dialogos y elementos que se utilicen de la interfaz grafica
de usuario.
Por otro lado, el curso alterno debe describir todas las eventualidades,
fallos o errores que pueden pasar mientras se ejecuta el curso basico. De
nuevo deben existir referencias a la interfaz grafica de usuario.
Hay que recordar que es menos costoso los cambios en este punto del
proyecto que posteriormente, ya que por ahora son solo descripciones.
Hay que tener presente que cuando el n
umero de los casos de uso es
grande, se pueden agrupar en paquetes para su mejor comprension, tal y
PRELIMINAR
CAPITULO 3. ANALISIS
Y DISENO
46
3.1.1.
Paquete archivo
Iniciar laboratorio
Curso b
asico
El sistema muestra el mensaje Todos los datos no guardados se
perder
an si contin
ua! en un Di
alogo de Advertencia (ver Figura
2.61), el usuario presiona el boton Aceptar de dicho dialogo, el sistema cierra el dialogo y abre la ventana Nuevo Laboratorio (ver
Figura 2.7).
El usuario escribe el nombre del autor o autores en la ventana Nuevo
Laboratorio y presiona el boton Aceptar de dicha ventana.
El sistema verifica que se hayan ingresado datos (se espera uno o varios
nombres de personas), luego el sistema cierra la ventana Nuevo Laboratorio y almacena estos datos como los nombre de los autores del
laboratorio, posteriormente borra la zona del reporte de actividades
de la Ventana Principal (ver Figura 2.5) y muestra en dicha zona el
mensaje:
/*
L A B O R A T O R I O V I R T U A L
Autores: listadoDeAutores
Fecha: fechaActual
*/
D E
R E D E S
47
N E U R O N A L E S
48
PRELIMINAR
CAPITULO 3. ANALISIS
Y DISENO
El usuario en el dialogo Cargar archivos selecciona la ubicacion y el
nombre del archivo que desea y presiona el boton Cargar de dicho
dialogo.
El sistema cierra el dialogo, carga la informacion del laboratorio almacenado (autores, listas de las neuronas de entrada, neurona de retardo, neurona de proceso, redes neuronas y actividades realizadas);
luego el sistema activa la alternativa Guardar laboratorio de la opcion Archivo de la Ventana Principal (ver Figura 2.6), as como
tambien activa las opciones Neurona de entrada, Neurona de retardo, Neurona de proceso y la opcion Red Neuronal de la Ventana
Principal (ver Figura 2.5). Posteriormente el sistema actualiza la zona
de reporte de actividades de la Ventana Principal con las actividades
realizadas en el laboratorio cargado, y adiciona el siguiente mensaje:
/*
Cargado de: nombreCompletoDelArchivo
En la fecha: fechaYHoraActual
*/
(nombreCompletoDelArchivo y fechaYHoraActual corresponden respectivamente al nombre del archivo (includa la ruta) que contiene el
laboratorio cargado y la fecha actual).
Curso alterno
Si el usuario presiona el boton Cancelar en el Di
alogo de Advertencia, el sistema cierra el dialogo quedando en la Ventana Principal.
Si el usuario presiona el boton de Cancelar en el dialogo Cargar
archivos, el sistema cierra el dialogo quedando en la Ventana Principal.
Si falla la carga de la informacion, el sistema muestra el mensaje Error
al cargar el laboratorio almacenado, en un Di
alogo de Error (ver
Figura 2.59), el usuario presiona el boton Aceptar de dicho dialogo,
el sistema cierra el dialogo de error quedando en el dialogo Ventana
Principal.
Guardar laboratorio
Curso b
asico
El usuario en la dialogo Guardar como (ver Figura 2.9) selecciona la ubicacion y escribe el nombre del archivo y presiona el boton
Guardar de dicho dialogo.
49
(nombreCompletoDelArchivo y fechaYHoraActual corresponden respectivamente a la nombre del archivo (incluido la ruta) que contiene
lo realizado en el laboratorio hasta el momento y la fecha actual).
Curso alterno
Si falla el proceso de guardar la informacion, el sistema muestra el
mensaje Error al guardar el laboratorio, en un Di
alogo de Error
(ver Figura 2.59), el usuario presiona el boton Aceptar de dicho
dialogo, el sistema cierra el dialogo quedando en la ventana Ventana
Principal (ver Figura 2.5).
Si el usuario presiona el boton de Cancelar en la ventana Guardar
como, el sistema cierra el dialogo quedando en la Ventana Principal.
3.1.2.
Crear neurona
Curso b
asico
El usuario en la ventana Crear Neurona (ver Figura 2.11) escribe
el nombre de la variable a la que se le asignara la nueva neurona
de entrada, luego escribe el nombre que desea para dicha neurona, y
finalmente presiona el boton Aceptar que se encuentra en la misma
ventana.
El sistema verifica que se hayan ingresado los datos (se espera el nombre de la variable y el de la neurona), verifica que los nombres tengan
el formato de un identificador valido, busca en la lista de variables otra
variable con el mismo nombre, busca en la lista de neuronas de entrada otra neurona con el mismo nombre, crea una neurona de entrada
50
PRELIMINAR
CAPITULO 3. ANALISIS
Y DISENO
(asignandole el nombre especificado), la adiciona a la lista de neuronas
de entrada, luego adiciona una nueva entrada a la lista de variables
(indicando el nombre, el tipo de variable -neurona de entrada- y una
referencia a la nueva neurona), posteriormente muestra en la zona de
reporte de actividades de la Ventana Principal (ver Figura 2.5) el
mensaje:
NeuronaDeEntrada nombreVariable;
nombreVariable = new NeuronaDeEntrada ( nombreNeurona );
51
nombreVariable.obtenerNombre ( );
// El nombre es: nombreNeurona
52
PRELIMINAR
CAPITULO 3. ANALISIS
Y DISENO
(nombreVariable y nombreNeurona corresponden respectivamente al
nombre de la variable que referencia la neurona de entrada y el nombre
de dicha neurona de entrada).
Finalmente el sistema cierra la ventana Obtener Nombre.
Curso alterno
Si el usuario presiona el boton Cancelar en la ventana Obtener
Nombre, el sistema cierra dicha ventana quedando en la Ventana
Principal.
Obtener valor de salida
Curso b
asico
El sistema obtiene de la lista de variables, el listado de todas las variables que hagan referencia a una neurona de entrada. Luego actualiza
el listado que aparece en la ventana Obtener Valor de Salida (ver
Figura 2.13).
El usuario en la ventana Obtener Valor de Salida selecciona el nombre de la variable que referencia la neurona a la cual se le desea obtener
el valor de salida.
El sistema obtiene el valor de salida de la neurona de entrada que se
encuentra referenciada por la variable seleccionada y lo muestra en la
misma ventana Obtener Valor de Salida.
El usuario presiona el boton Aceptar que se encuentra en la misma
ventana.
El sistema muestra en la zona de reporte de actividades de la Ventana
Principal (ver Figura 2.5) el mensaje:
nombreVariable.obtenerValorDeSalida ( );
// El valor de salida es: valorSalida.
(nombreVariable y valorSalida corresponden respectivamente al nombre de la variable que referencia la neurona de entrada y al valor de
salida de dicha neurona de entrada).
Finalmente el sistema cierra la ventana Obtener Valor de Salida.
Curso alterno
Si el usuario presiona el boton Cancelar en la ventana Obtener Valor de Salida, el sistema cierra dicha ventana quedando en la Ventana
Principal.
53
nombreVariable.asignarValorDeSalida ( valorSalida );
(nombreVariable y valorSalida corresponden respectivamente al nombre de la variable que referencia la neurona de entrada y al nuevo valor
de salida de dicha neurona de entrada).
Finalmente el sistema cierra la ventana Asignar Valor de Salida
quedando en la Ventana Principal.
Curso alterno
Si el usuario presiona el boton Cancelar en la ventana Asignar Valor de Salida, el sistema cierra dicha ventana quedando en la Ventana
Principal.
Si no se han ingresado datos, el sistema muestra el mensaje Ingrese
el nuevo valor de salida para la neurona , en un Di
alogo de Informaci
on (ver Figura 2.60), el usuario presiona el boton Aceptar de
dicho dialogo y el sistema cierra el dialogo quedando en la ventana
Asignar Valor de Salida.
Si el formato del valor de salida no es correcto, el sistema muestra
el mensaje El formato no corresponde al de un valor numerico, en
un Di
alogo de Error (ver Figura 2.59), el usuario presiona el boton
54
PRELIMINAR
CAPITULO 3. ANALISIS
Y DISENO
Aceptar de dicho dialogo y el sistema cierra el dialogo quedando en
la ventana Asignar Valor de Salida.
Crear monitor
Curso b
asico
El sistema obtiene del disco, el listado de todos los tipos de monitores
para neuronas de entrada, y actualiza el listado que aparece en la
ventana Crear Monitor (ver Figura 2.15).
El usuario en la ventana Crear Monitor selecciona el tipo de monitor
para neuronas de entrada, y escribe el nombre para la variable a la que
se le asignara este monitor, posteriormente presiona el boton Aceptar
que se encuentra en la misma ventana.
El sistema verifica que se hayan ingresado datos (se espera el nombre
de la variable), verifica que el nombre tengan el formato de un identificador valido, busca en la lista de variables otra variable con el mismo
nombre, crea un monitor de este tipo, luego adiciona una nueva entrada a la lista de variables (indicando el nombre, el tipo de variable
-monitor de neurona de entrada- y una referencia al nuevo monitor),
posteriormente muestra en la zona de reporte de actividades de la
Ventana Principal (ver Figura 2.5) el mensaje:
TipoMonitorNeuronaEntrada nombreVariableMonitor;
nombreVariableMonitor = new TipoMonitorNeuronaEntrada ( );
55
56
PRELIMINAR
CAPITULO 3. ANALISIS
Y DISENO
referencia al monitor (valor de la variable nombreVariableMonitor) a
la neurona seleccionada nombreVariableNeuronaEntrada.
Posteriormente el sistema muestra en la zona de reporte de actividades
de la Ventana Principal (ver Figura 2.5) el mensaje:
nombreVariableNeurona.asignarMonitor ( nombreVariableMonitor );
57
nombreVariableNeurona.desasignarMonitor ( nombreVariableMonitor );
58
PRELIMINAR
CAPITULO 3. ANALISIS
Y DISENO
(nombreTipoMonitor y fragmentosDeCodigoJava corresponde respectivamente al nombre del nuevo tipo de monitor y a los fragmentos
dados por el usuario. Finalmente el sistema cierra la ventana Definir
Nuevo Monitor quedando en la Ventana Principal.
Curso alterno
Si el usuario presiona el boton Cancelar en la ventana Definir Nuevo Monitor, el sistema cierra dicha ventana quedando en la Ventana
Principal.
Si no se han ingresado datos, el sistema muestra el mensaje Ingrese
el nombre del nuevo tipo de monitor y el c
odigo Java requerido, en
un Di
alogo de Informaci
on (ver Figura 2.60), el usuario presiona el
boton Aceptar de dicho dialogo y el sistema cierra el dialogo quedando en la ventana Definir Nuevo Monitor.
Si el formato del nombre del nuevo tipo de monitor no es correcto, el
sistema muestra el mensaje El formato del nombre no corresponde al
de un identificador v
alido, en un Di
alogo de Error (ver Figura 2.59),
el usuario presiona el boton Aceptar de dicho dialogo y el sistema
cierra el dialogo quedando en la ventana Definir Nuevo Monitor.
Si no se puede buscar en el disco el nuevo tipo de monitor, el sistema
muestra el mensaje Error al buscar el nuevo tipo de monitor en el disco, en un Di
alogo de Error, el usuario presiona el boton Aceptar
de dicho dialogo y el sistema cierra el dialogo y regresa a la ventana
Definir Nuevo Monitor.
Si ya existe otro tipo de monitor con ese nombre, el sistema muestra el mensaje Ya existe un tipo de monitor con ese nombre, en
un Di
alogo de Advertencia (ver Figura 2.61), el usuario presiona el
boton Aceptar de dicho dialogo y el sistema cierra el dialogo y contin
ua el proceso normal. Si el usuario presiona el boton Cancelar
del dialogo, el sistema cierra el dialogo y regresa a la ventana Definir
Nuevo Monitor sin continuar con el proceso normal.
Si no se puede guardar en el disco el codigo fuente de la clase definida,
el sistema muestra el mensaje Error al almacenar la clase del nuevo
tipo de monitor en el disco, en un Di
alogo de Error, el usuario
presiona el boton Aceptar de dicho dialogo y el sistema cierra el
dialogo y regresa a la ventana Definir Nuevo Monitor.
Si no se puede llamar al compilador de Java, el sistema muestra el
mensaje Error al ejecutar el compilador de Java, en un Di
alogo
de Error, el usuario presiona el boton Aceptar de dicho dialogo
59
PRELIMINAR
CAPITULO 3. ANALISIS
Y DISENO
60
3.1.3.
Crear neurona
Curso b
asico
El sistema obtiene del disco, el listado de todos los tipos de neuronas
de retardo, y actualiza el listado que aparece en la ventana Crear
Neurona de Retardo (ver Figura 2.20), con este listado mas el tipo
estandar (Z 1 ) de neurona de retardo.
El usuario en la ventana Crear Neurona de Retardo selecciona el tipo
de neurona, escribe el nombre de la variable a la que se le asignara la
nueva neurona de retardo, luego escribe el nombre que desea para dicha
neurona, y finalmente presiona el boton Aceptar que se encuentra
en la misma ventana.
El sistema verifica que se hayan ingresado los datos (se espera el nombre de la variable y el de la neurona), verifica que los nombres tengan
el formato de un identificador valido, busca en la lista de variables otra
variable con el mismo nombre, busca en la lista de neuronas de retardo otra neurona con el mismo nombre, crea una neurona de retardo
(asignandole el nombre especificado), la adiciona a la lista de neuronas
de retardo, luego adiciona una nueva entrada a la lista de variables
(indicando el nombre, el tipo de variable -neurona de retardo- y una
referencia a la nueva neurona), posteriormente muestra en la zona de
reporte de actividades de la Ventana Principal (ver Figura 2.5) el
mensaje:
TipoNeuronaDeRetardo nombreVariable;
nombreVariable = new TipoNeuronaDeRetardo ( nombreNeurona );
61
62
PRELIMINAR
CAPITULO 3. ANALISIS
Y DISENO
sistema cierra el dialogo quedando en la ventana Crear Neurona de
Retardo.
Si falla la adicion de la nueva neurona a la lista de neuronas, el sistema
muestra el mensaje Error al almacenar la nueva neurona, en un
Di
alogo de Error, el usuario presiona el boton Aceptar de dicho
dialogo y el sistema cierra el dialogo quedando en la ventana Crear
Neurona de Retardo.
Si falla la adicion de la nueva entrada en la lista de variables, el sistema
elimina la nueva neurona de la lista de neuronas y muestra el mensaje
Error al almacenar la nueva variable, en un Di
alogo de Error,
el usuario presiona el boton Aceptar de dicho dialogo y el sistema
cierra el dialogo quedando en la ventana Crear Neurona de Retardo.
Obtener nombre
Curso b
asico
El sistema obtiene de la lista de variables, el listado de todas las variables que hagan referencia a una neurona de retardo. Luego actualiza
el listado que aparece en la ventana Obtener Nombre (ver Figura
2.12).
El usuario en la ventana Obtener Nombre selecciona el nombre de
la variable que referencia la neurona a la cual se le desea obtener el
nombre.
El sistema obtiene el nombre de la neurona de retardo que se encuentra
referenciada por la variable seleccionada y lo muestra en la misma
ventana Obtener Nombre.
El usuario presiona el boton Aceptar que se encuentra en la misma
ventana.
El sistema muestra en la zona de reporte de actividades de la Ventana
Principal (ver Figura 2.5) el mensaje:
nombreVariable.obtenerNombreDeLaNeurona ( );
// El nombre es: nombreNeurona.
63
Curso alterno
Si el usuario presiona el boton Cancelar en la ventana Obtener
Nombre, el sistema cierra dicha ventana quedando en la Ventana
Principal.
Obtener valor de salida
Curso b
asico
El sistema obtiene de la lista de variables, el listado de todas las variables que hagan referencia a una neurona de retardo. Luego actualiza
el listado que aparece en la ventana Obtener Valor de Salida (ver
Figura 2.13).
El usuario en la ventana Obtener Valor de Salida selecciona el nombre de la variable que referencia la neurona a la cual se le desea obtener
el valor de salida.
El sistema obtiene el valor de salida de la neurona de retardo que se
encuentra referenciada por la variable seleccionada y lo muestra en la
misma ventana Obtener Valor de Salida.
El usuario presiona el boton Aceptar que se encuentra en la misma
ventana.
El sistema muestra en la zona de reporte de actividades de la Ventana
Principal (ver Figura 2.5) el mensaje:
nombreVariable.obtenerValorDeSalida ( );
// El valor de salida es: valorSalida.
(nombreVariable y valorSalida corresponden respectivamente al nombre de la variable que referencia a la neurona deseada y al valor de
salida de dicha neurona de retardo).
Finalmente el sistema cierra la ventana Obtener Valor de Salida.
Curso alterno
Si el usuario presiona el boton Cancelar en la ventana Obtener Valor de Salida, el sistema cierra dicha ventana quedando en la Ventana
Principal.
Asignar valor de salida
Curso b
asico
El sistema obtiene de la lista de variables, el listado de todas las variables que hagan referencia a una neurona de retardo. Luego actualiza
64
PRELIMINAR
CAPITULO 3. ANALISIS
Y DISENO
el listado que aparece en la ventana Asignar Valor de Salida (ver
Figura 2.14).
El usuario en la ventana Asignar Valor de Salida selecciona el nombre de la variable que referencia la neurona a la cual se le desea asignar
el valor de salida, escribe el valor a asignar y presiona el boton Aceptar que se encuentra en la misma ventana.
El sistema verifica que se hayan ingresado los datos (se espera el nuevo
valor de salida de la neurona de retardo), verifica el formato del valor de
salida y actualiza dicho valor en la neurona de retardo que se encuentra
referenciada por la variable seleccionada (ella notifica del cambio a sus
monitores, si los tiene). Tambien muestra en la zona de reporte de
actividades de la Ventana Principal (ver Figura 2.5) el mensaje:
nombreVariable.asignarValorDeSalida ( valorSalida );
(nombreVariable y valorSalida corresponden respectivamente al nombre de la variable que referencia a la neurona deseada y al valor de
salida de dicha neurona de retardo).
Finalmente el sistema cierra la ventana Asignar Valor de Salida
quedando en la Ventana Principal.
Curso alterno
Si el usuario presiona el boton Cancelar en la ventana Asignar Valor de Salida, el sistema cierra dicha ventana quedando en la Ventana
Principal.
Si no se han ingresado datos, el sistema muestra el mensaje Ingrese
el nuevo valor de salida para la neurona , en un Di
alogo de Informaci
on (ver Figura 2.60), el usuario presiona el boton Aceptar de
dicho dialogo y el sistema cierra el dialogo quedando en la ventana
Asignar Valor de Salida.
Si el formato del valor de salida no es correcto, el sistema muestra
el mensaje El formato no corresponde al de un valor numerico, en
un Di
alogo de Error (ver Figura 2.59), el usuario presiona el boton
Aceptar de dicho dialogo y el sistema cierra el dialogo quedando en
la ventana Asignar Valor de Salida.
Actualizar valor presente
Curso b
asico
El sistema obtiene de la lista de variables, el listado de todas las variables que hagan referencia a una neurona de retardo. Luego actualiza
65
nombreVariable.actualizarValorPresente ( );
// El nuevo valor presente es: valorPresente.
66
PRELIMINAR
CAPITULO 3. ANALISIS
Y DISENO
la neurona referenciada por su entrada y cuidando de no olverse a
preguntar recursivamente o ejecutando algun procedimiento definido
por el usuario) y lo muestra en la misma ventana Obtener Valor
Futuro.
El usuario presiona el boton Aceptar que se encuentra en la misma
ventana.
El sistema muestra en la zona de reporte de actividades de la Ventana
Principal (ver Figura 2.5) el mensaje:
nombreVariable.obtenerValorFuturo ( );
// El valor futuro es: valorFuturo.
(nombreVariable y valorFuturo corresponden respectivamente al nombre de la variable que referencia a la neurona deseada y al valor futuro
de dicha neurona de retardo).
Finalmente el sistema cierra la ventana Obtener Valor Futuro.
Curso alterno
Si el usuario presiona el boton Cancelar en la ventana Obtener Valor Futuro, el sistema cierra dicha ventana quedando en la Ventana
Principal.
Actualizar valor futuro
Curso b
asico
El sistema obtiene de la lista de variables, el listado de todas las variables que hagan referencia a una neurona de retardo. Luego actualiza
el listado que aparece en la ventana Actualizar Valor Futuro (ver
Figura 2.23).
El usuario en la ventana Actualizar Valor Futuro selecciona el nombre de la variable que referencia la neurona a la cual se le desea actualizar el valor futuro,
El sistema obtiene el valor futuro de la neurona de retardo que se
encuentra referenciada por la variable seleccionada (preguntando a la
neurona referenciada por su entrada o ejecutando algun procedimiento
definido por el usuario) y lo muestra en la misma ventana Actualizar
Valor Futuro.
El usuario presiona el boton Aceptar que se encuentra en la misma
ventana.
67
El sistema actualiza dicho valor en la neurona de retardo que se encuentra referenciada por la variable seleccionada (ella notifica del cambio
a sus monitores, si los tiene). Tambien muestra en la zona de reporte
de actividades de la Ventana Principal (ver Figura 2.5) el mensaje:
(nombreVariable y valorFuturo corresponden respectivamente al nombre de la variable que referencia a la neurona deseada y al nuevo valor
futuro de dicha neurona de retardo).
Finalmente el sistema cierra la ventana Actualizar Valor Futuro
quedando en la Ventana Principal.
Curso alterno
Si el usuario presiona el boton Cancelar en la ventana Actualizar
Valor Futuro, el sistema cierra dicha ventana quedando en la Ventana Principal.
Si no hay una neurona enlazada entonces, el sistema retorna el valor
de cero punto cero (0.0).
Definir nuevo valor futuro
Curso b
asico
El usuario en la ventana Definir Nuevo Valor Futuro (ver Figura
2.24) escribe el nombre del nuevo tipo de neurona de retardo, posteriormente escribe los fragmentos de codigo en Java seg
un sea el caso,
luego el usuario presiona el boton Aceptar de dicha ventana.
El sistema verifica que se hayan ingresado datos (se espera el nombre
del nuevo tipo de neurona de retardo y los fragmentos de codigo Java), verifica que el nombre tenga el formato de un identificador valido,
busca en el disco un tipo que tenga el mismo nombre, construye una
clase valida en Java (uniendo los fragmentos dados por el usuario con
partes fijas de codigo predeterminado, y guardandolo en el disco con el
nombre de la clase especificada), posteriormente le solicita a Java que
compile la nueva clase. Luego el sistema determina si el compilador
detecto errores de sintaxis en el codigo dado por el usuario, posteriormente el sistema almacena los fragmentos del nuevo tipo de valor
futuro en el disco y elimina el codigo fuente de la clase compilada.
Luego muestra en la zona de reporte de actividades de la Ventana
Principal (ver Figura 2.5) el mensaje:
68
PRELIMINAR
CAPITULO 3. ANALISIS
Y DISENO
(nombreTipoDeNeuronaDeRetardo y fragmentosDeCodigoJava corresponde respectivamente al nombre del nuevo tipo de neurona de retardo
y los fragmentos dados por el usuario). Finalmente el sistema cierra
la ventana Definir Nuevo Valor Futuro quedando en la Ventana
Principal.
Curso alterno
Si el usuario presiona el boton Cancelar en la ventana Definir Nuevo Valor Futuro, el sistema cierra dicha ventana quedando en la Ventana Principal.
Si no se han ingresado datos, el sistema muestra el mensaje Ingrese el
nombre del nuevo tipo de neurona de retardo y el c
odigo Java requerido, en un Di
alogo de Informaci
on (ver Figura 2.60), el usuario
presiona el boton Aceptar de dicho dialogo y el sistema cierra el
dialogo quedando en la ventana Definir Nuevo Valor Futuro.
Si el formato del nombre del nuevo tipo de neurona no es correcto,
el sistema muestra el mensaje El formato del nombre no corresponde
al de un identificador v
alido, en un Di
alogo de Error (ver Figura
2.59), el usuario presiona el boton Aceptar de dicho dialogo y el
sistema cierra el dialogo quedando en la ventana Definir Nuevo Valor
Futuro.
Si no se puede buscar en el disco el nuevo tipo de valor futuro, el
sistema muestra el mensaje Error al buscar el nuevo tipo de valor
futuro en el disco, en un Di
alogo de Error, el usuario presiona el
boton Aceptar de dicho dialogo y el sistema cierra el dialogo y regresa
a la ventana Definir Nuevo Valor Futuro.
Si ya existe otro tipo de neurona de retardo con ese nombre, el sistema muestra el mensaje Ya existe un tipo de neurona de retardo
con ese nombre, en un Di
alogo de Advertencia (ver Figura 2.61),
el usuario presiona el boton Aceptar de dicho dialogo y el sistema
cierra el dialogo y contin
ua el proceso normal. Si el usuario presiona el
boton Cancelar del dialogo, el sistema cierra el dialogo y regresa a
la ventana Definir Nuevo Valor Futuro sin continuar con el proceso
normal.
Si no se puede guardar en el disco el codigo fuente de la clase definida,
el sistema muestra el mensaje Error al almacenar la clase del nuevo
69
70
PRELIMINAR
CAPITULO 3. ANALISIS
Y DISENO
Si falla la carga de la informacion del nuevo tipo de neurona de retardo,
el sistema muestra el mensaje Error al cargar los datos del valor
futuro para una neurona de retardo, en un Di
alogo de Error (ver
Figura 2.59), el usuario presiona el boton Aceptar de dicho dialogo,
el sistema cierra el dialogo de error quedando en el dialogo Cargar
archivos.
Enlazar neurona
Curso b
asico
El sistema obtiene de la lista de variables, el listado de todas las
variables que hagan referencia a neuronas de retardo y las que hagan referencia a cualquier tipo de neurona (incluyendo las neuronas
de retardo). Luego actualiza los listados que aparecen en la ventana
Enlazar Neurona (ver Figura 2.25).
El usuario en la ventana Enlazar Neurona selecciona el nombre de la
variable que referencia a una neurona de retardo y selecciona el nombre
de la variable que referencia a otra neurona, posteriormente el usuario
presiona el boton Aceptar de dicha ventana, el sistema enlaza la otra
neurona a la neurona de retardo seleccionada (ella notifica del cambio
a sus monitores, si los tiene).
Posteriormente el sistema muestra en la zona de reporte de actividades
de la Ventana Principal (ver Figura 2.5) el mensaje:
nombreVariableNR.enlazarNeurona ( nombreVariableNeurona );
71
variables que hagan referencia a neuronas de retardo y que esten enlazadas con otras neuronas. Luego actualiza el listado que aparecen en
la ventana Desenlazar Neurona (ver Figura 2.26).
El usuario en la ventana Desenlazar Neurona selecciona el nombre de
la variable que referencia a una neurona de retardo y posteriormente
el usuario presiona el boton Aceptar de dicha ventana, el sistema
desenlaza la neurona referenciada por la neurona de retardo que referencia la variable seleccionada nombreVariableNeuronaDeRetardo
(ella notifica del cambio a sus monitores, si los tiene).
Posteriormente el sistema muestra en la zona de reporte de actividades
de la Ventana Principal (ver Figura 2.5) el mensaje:
nombreVariableNeuronaDeRetardo.desenlazarNeurona ( );
72
PRELIMINAR
CAPITULO 3. ANALISIS
Y DISENO
El usuario presiona el boton Aceptar que se encuentra en la misma
ventana.
El sistema muestra en la zona de reporte de actividades de la Ventana
Principal (ver Figura 2.5) el mensaje:
nombreVariable.obtenerEstadoDelEnlace ( );
// El estado del enlace: estadoDelEnlace.
nombreVariable.obtenerConQuienSeRelaciona ( );
/* Se relacionada con: listaDeNeuronasRelacionadas */
73
(nombreVariable y listaDeNeuronasRelacionadas corresponden respectivamente al nombre de la variable que referencia a la neurona deseada y al listado de las neuronas con las cuales se relaciona la neurona
de retardo).
Finalmente el sistema cierra la ventana Obtener con quien se Relaciona.
Curso alterno
Si el usuario presiona el boton Cancelar en la ventana Obtener con
quien se Relaciona, el sistema cierra dicha ventana quedando en la
Ventana Principal.
Obtener nombre de la neurona enlazada
Curso b
asico
El sistema obtiene de la lista de variables, el listado de todas las variables que hagan referencia a una neurona de retardo. Luego actualiza
el listado que aparece en la ventana Obtener Nombre de la Neurona
Enlazada (ver Figura 2.29).
El usuario en la ventana Obtener Nombre de la Neurona Enlazada
selecciona el nombre de la variable que referencia la neurona a la cual
se le desea obtener el nombre de la neurona enlazada.
El sistema obtiene el nombre de la neurona enlazada, o <Libre> si
no hay ninguna enlazada, de la neurona de retardo que se encuentra
referenciada por la variable seleccionada y lo muestra en la misma
ventana Obtener Nombre de la Neurona Enlazada.
El usuario presiona el boton Aceptar que se encuentra en la misma
ventana.
El sistema muestra en la zona de reporte de actividades de la Ventana
Principal (ver Figura 2.5) el mensaje:
nombreVariable.obtenerNombreNeuronaEnlazada ( );
// El nombre de la neurona enlazada es: nombreNeuronaEnlazada.
(nombreVariable y nombreNeuronaEnlazada corresponden respectivamente al nombre de la variable que referencia la neurona deseada y
al nombre de la neurona enlazada o <Libre>).
Finalmente el sistema cierra la ventana Obtener Nombre de la Neurona Enlazada.
74
PRELIMINAR
CAPITULO 3. ANALISIS
Y DISENO
Curso alterno
Si el usuario presiona el boton Cancelar en la ventana Obtener
Nombre de la Neurona Enlazada, el sistema cierra dicha ventana
quedando en la Ventana Principal.
Crear monitor
Curso b
asico
El sistema obtiene del disco, el listado de todos los tipos de monitores
para neuronas de retardo, y actualiza el listado que aparece en la
ventana Crear Monitor (ver Figura 2.15).
El usuario en la ventana Crear Monitor selecciona el tipo de monitor
para neuronas de retardo, y escribe el nombre para la variable a la que
se le asignara este monitor, posteriormente presiona el boton Aceptar
que se encuentra en la misma ventana.
El sistema verifica que se hayan ingresado datos (se espera el nombre de la variable), verifica que el nombre tengan el formato de un
identificador valido, busca en la lista de variables otra variable con
el mismo nombre, crea un monitor de este tipo, luego adiciona una
nueva entrada a la lista de variables (indicando el nombre, el tipo de
variable -monitor de neurona de retardo- y una referencia al nuevo monitor), posteriormente muestra en la zona de reporte de actividades de
la Ventana Principal (ver Figura 2.5) el mensaje:
TipoMonitorNeuronaRetardo nombreVariableMonitor;
nombreVariableMonitor = new TipoMonitorNeuronaRetardo ( );
75
un Di
alogo de Error (ver Figura 2.59), el usuario presiona el boton
Aceptar de dicho dialogo y el sistema cierra el dialogo quedando en
la ventana Ventana Principal.
Si en el disco no se encuentran monitores para neuronas de retardo, el
sistema cierra la ventana Crear Monitor, y muestra el mensaje No
hay monitores disponibles para neuronas de retardo, en un Di
alogo de
Informaci
on (ver Figura 2.60), el usuario presiona el boton Aceptar
de dicho dialogo y el sistema cierra el dialogo quedando en la Ventana
Principal.
Si no se han ingresado datos, el sistema muestra el mensaje Ingrese
el nombre de la variable, en un Di
alogo de Informaci
on, el usuario
presiona el boton Aceptar de dicho dialogo y el sistema cierra el
dialogo quedando en la ventana Crear Monitor.
Si el formato del nombre del monitor no es correcto, el sistema muestra
el mensaje El formato no corresponde al de un identificador v
alido,
en un Di
alogo de Error, el usuario presiona el boton Aceptar de
dicho dialogo y el sistema cierra el dialogo quedando en la ventana
Crear Monitor.
Si en la lista de variables ya existe otra con el mismo nombre, el sistema
muestra el mensaje Ya existe una variable con el mismo nombre, en
un Di
alogo de Informaci
on, el usuario presiona el boton Aceptar
de dicho dialogo y el sistema cierra el dialogo quedando en la ventana
Crear Monitor.
Si falla la adicion de la nueva entrada en la lista de variables, el sistema
muestra el mensaje Error al almacenar la nueva variable, en un
Di
alogo de Error, el usuario presiona el boton Aceptar de dicho
dialogo y el sistema cierra el dialogo quedando en la ventana Crear
Monitor.
Asignar monitor
Curso b
asico
El sistema obtiene de la lista de variables, el listado de todas las
variables que hagan referencia a monitores de neurona de retardo y
las que hagan referencia a neuronas de retardo. Luego actualiza los
listados que aparecen en la ventana Asignar Monitor (ver Figura
2.16).
El usuario en la ventana Asignar Monitor selecciona el nombre de
la variable que referencia a un monitor y selecciona el nombre de la
variable que referencia a una neurona de retardo, posteriormente el
76
PRELIMINAR
CAPITULO 3. ANALISIS
Y DISENO
usuario presiona el boton Aceptar de dicha ventana, el sistema le
adiciona la referencia del monitor a la neurona de retardo seleccionada.
Posteriormente el sistema muestra en la zona de reporte de actividades
de la Ventana Principal (ver Figura 2.5) el mensaje:
nombreVariableNeurona.asignarMonitor ( nombreVariableMonitor );
77
nombreVariableNeurona.desasignarMonitor ( nombreVariableMonitor );
78
PRELIMINAR
CAPITULO 3. ANALISIS
Y DISENO
(nombreTipoMonitor y fragmentosDeCodigoJava corresponde respectivamente al nombre del nuevo tipo de monitor y a los fragmentos dados por el usuario). Finalmente el sistema cierra la ventana Definir
Nuevo Monitor quedando en la Ventana Principal.
Curso alterno
Si el usuario presiona el boton Cancelar en la ventana Definir Nuevo Monitor, el sistema cierra dicha ventana quedando en la Ventana
Principal.
Si no se han ingresado datos, el sistema muestra el mensaje Ingrese
el nombre del nuevo tipo de monitor y el c
odigo Java requerido, en
un Di
alogo de Informaci
on (ver Figura 2.60), el usuario presiona el
boton Aceptar de dicho dialogo y el sistema cierra el dialogo quedando en la ventana Definir Nuevo Monitor.
Si el formato del nombre del nuevo tipo de monitor no es correcto, el
sistema muestra el mensaje El formato del nombre no corresponde al
de un identificador v
alido, en un Di
alogo de Error (ver Figura 2.59),
el usuario presiona el boton Aceptar de dicho dialogo y el sistema
cierra el dialogo quedando en la ventana Definir Nuevo Monitor.
Si no se puede buscar en el disco el nuevo tipo de monitor, el sistema
muestra el mensaje Error al buscar el nuevo tipo de monitor en el disco, en un Di
alogo de Error, el usuario presiona el boton Aceptar
de dicho dialogo y el sistema cierra el dialogo y regresa a la ventana
Definir Nuevo Monitor.
Si ya existe otro tipo de monitor con ese nombre, el sistema muestra el mensaje Ya existe un tipo de monitor con ese nombre, en
un Di
alogo de Advertencia (ver Figura 2.61), el usuario presiona el
boton Aceptar de dicho dialogo y el sistema cierra el dialogo y contin
ua el proceso normal. Si el usuario presiona el boton Cancelar
del dialogo, el sistema cierra el dialogo y regresa a la ventana Definir
Nuevo Monitor sin continuar con el proceso normal.
Si no se puede guardar en el disco el codigo fuente de la clase definida,
el sistema muestra el mensaje Error al almacenar la clase del nuevo
tipo de monitor en el disco, en un Di
alogo de Error, el usuario
presiona el boton Aceptar de dicho dialogo y el sistema cierra el
dialogo y regresa a la ventana Definir Nuevo Monitor.
Si no se puede llamar al compilador de Java, el sistema muestra el
mensaje Error al ejecutar el compilador de Java, en un Di
alogo
de Error, el usuario presiona el boton Aceptar de dicho dialogo
79
PRELIMINAR
CAPITULO 3. ANALISIS
Y DISENO
80
3.1.4.
Crear neurona
Curso b
asico
El usuario en la ventana Crear Neurona de Proceso (ver Figura
2.31) escribe el nombre de la variable a la que se le asignara la nueva
neurona de proceso, el nombre para dicha neurona, y la cantidad de
entradas que desea. Finalmente presiona el boton Aceptar que se
encuentra en la misma ventana.
El sistema verifica que se hayan ingresado los datos (se espera el nombre de la variable, el de la neurona y el n
umero de entradas), verifica
que los nombres tengan el formato de un identificador valido, al igual
que verifica el formato del n
umero de entradas, busca en la lista de
variables otra variable con el mismo nombre, busca en la lista de neuronas de proceso otra neurona con el mismo nombre, crea una neurona
de proceso (asignandole el nombre, funcion base lineal, funcion de activacion/transferencia identidad, umbral en cero y creando el n
umero
de entradas especificadas), la adiciona a la lista de neuronas de proceso, luego adiciona una nueva entrada a la lista de variables (indicando
el nombre, el tipo de variable -neurona de proceso- y una referencia a
la nueva neurona), posteriormente muestra en la zona de reporte de
actividades de la Ventana Principal (ver Figura 2.5) el mensaje:
NeuronaDeProceso nombreVariable;
nombreVariable = new NeuronaDeProceso ( nombreNeurona, numeroDeEntradas );
(nombreVariable , nombreNeurona y numeroDeEntradas corresponden respectivamente al nombre de la variable que referencia la neurona
de proceso, el nombre y el n
umero de entradas para dicha neurona de
proceso).
activa las alternativas
Obtener Nombre, Obtener N
umero de Entradas, Enlazar Neurona, Obtener Estado de una Entrada, Obtener con quien se Relaciona, Obtener Nombre de una Neurona Enlazada, Obtener Peso de un Enlace, Cambiar Peso de un Enlace, Obtener Funci
on
Base, Cambiar Funci
on Base, Definir Nueva Funci
on Base, Obtener Funci
on de Activaci
on, Cambiar Funci
on de Activaci
on, Definir Nueva Funci
on de Activaci
on, Obtener Funci
on de Transferencia, Cambiar Funci
on de Transferencia, Definir Nueva Funci
on
81
82
PRELIMINAR
CAPITULO 3. ANALISIS
Y DISENO
sistema cierra el dialogo quedando en la ventana Crear Neurona de
Proceso.
Si falla la adicion de la nueva neurona a la lista de neuronas, el sistema
muestra el mensaje Error al almacenar la nueva neurona, en un
Di
alogo de Error, el usuario presiona el boton Aceptar de dicho
dialogo y el sistema cierra el dialogo quedando en la ventana Crear
Neurona de Proceso.
Si falla la adicion de la nueva entrada en la lista de variables, el sistema
elimina la nueva neurona de la lista de neuronas y muestra el mensaje
Error al almacenar la nueva variable, en un Di
alogo de Error,
el usuario presiona el boton Aceptar de dicho dialogo y el sistema
cierra el dialogo quedando en la ventana Crear Neurona de Proceso.
Obtener nombre
Curso b
asico
El sistema obtiene de la lista de variables, el listado de todas las variables que hagan referencia a una neurona de proceso. Luego actualiza
el listado que aparece en la ventana Obtener Nombre (ver Figura
2.12).
El usuario en la ventana Obtener Nombre selecciona el nombre de
la variable que referencia la neurona a la cual se le desea obtener el
nombre.
El sistema obtiene el nombre de la neurona de proceso que se encuentra
referenciada por la variable seleccionada y lo muestra en la misma
ventana Obtener Nombre.
El usuario presiona el boton Aceptar que se encuentra en la misma
ventana.
El sistema muestra en la zona de reporte de actividades de la Ventana
Principal (ver Figura 2.5) el mensaje:
nombreVariable.obtenerNombreDeLaNeurona ( );
// El nombre es: nombreNeurona.
83
nombreVariable.obtenerNumeroDeEntradas ( );
// El n
umero de entradas es: numeroDeEntradas.
84
PRELIMINAR
CAPITULO 3. ANALISIS
Y DISENO
referencia a cualquier tipo de neurona (incluyendo las neuronas de proceso). Tambien obtiene el n
umero de entradas de la primera neurona
de proceso que se encuentra en la lista. Luego actualiza los listados
que aparecen en la ventana Enlazar Neurona en una Entrada (ver
Figura 2.33), para el caso del n
umero de la entrada a enlazar, sera un
listado desde uno hasta el n
umero de entradas de esa neurona.
El usuario en la ventana Enlazar Neurona en una Entrada selecciona
el nombre de la variable que referencia a una neurona de proceso,
selecciona el nombre de la variable que referencia a otra neurona y
selecciona el n
umero de la entrada a enlazar, posteriormente el usuario
presiona el boton Aceptar de dicha ventana, luego el sistema enlaza
la otra neurona (valor de la variable nombreVariableNeurona) a la
neurona de proceso referenciada por la variable nombreVariableNP
(ella notifica del cambio a sus monitores, si los tiene), en la entrada
especificada.
Posteriormente el sistema muestra en la zona de reporte de actividades
de la Ventana Principal (ver Figura 2.5) el mensaje:
85
Desenlazar neurona
Curso b
asico
El sistema obtiene de la lista de variables, el listado de todas las variables que hagan referencia a neuronas de proceso y que tengan entradas
enlazadas. Tambien obtiene el n
umero de entradas de la primera neurona de proceso que se encuentra en la lista. Luego actualiza el listado
que aparecen en la ventana Desenlazar Neurona en una Entrada
umero de la entrada a desenlazar,
(ver Figura 2.34), para el caso del n
sera un listado de las entradas de esa neurona que se encuentran enlazadas.
El usuario en la ventana Desenlazar Neurona en una Entrada selecciona el nombre de la variable que referencia a una neurona de
proceso y selecciona la entrada a desenlazar, posteriormente el usuario
presiona el boton Aceptar de dicha ventana, el sistema desenlaza la
neurona referenciada por la neurona de proceso que referencia la variable seleccionada nombreVariableNeurona (ella notifica del cambio a
sus monitores, si los tiene), en la entrada especificada.
Posteriormente el sistema muestra en la zona de reporte de actividades
de la Ventana Principal (ver Figura 2.5) el mensaje:
nombreVariableNeurona.desenlazarNeurona ( numeroDeEntrada );
86
PRELIMINAR
CAPITULO 3. ANALISIS
Y DISENO
Obtener estado de un enlace
Curso b
asico
El sistema obtiene de la lista de variables, el listado de todas las variables que hagan referencia a neuronas de proceso. Tambien obtiene el
n
umero de entradas de la primera neurona de proceso que se encuentra en la lista. Luego actualiza los listados que aparecen en la ventana
Obtener Estado de una Entrada (ver Figura 2.35), para el caso del
n
umero de la entrada a enlazar, sera un listado desde uno hasta el
n
umero de entradas de esa neurona.
El usuario en la ventana Obtener Estado de una Entrada selecciona
el nombre de la variable que referencia la neurona a la cual se le desea
obtener el estado de un enlace, y por supuesto selecciona la entrada
deseada.
El sistema obtiene el estado del enlace de la entrada especificada de
la neurona de proceso que se encuentra referenciada por la variable
seleccionada y lo muestra en la misma ventana Obtener Estado de
una Entrada.
El usuario presiona el boton Aceptar que se encuentra en la misma
ventana.
El sistema muestra en la zona de reporte de actividades de la Ventana
Principal (ver Figura 2.5) el mensaje:
nombreVariable.obtenerEstadoDelEnlaceDeLaEntrada ( NumeroEntrada );
// El estado es: estadoDelEnlace.
87
nombreVariable.obtenerConQuienSeRelaciona ( );
/* Se relacionada con: listaDeNeuronasRelacionadas */
88
PRELIMINAR
CAPITULO 3. ANALISIS
Y DISENO
n
umero de entradas de la primera neurona de proceso que se encuentra en la lista. Luego actualiza los listados que aparecen en la ventana
Obtener Nombre de una Neurona Enlazada (ver Figura 2.36), para
el caso del n
umero de la entrada a enlazar, sera un listado desde uno
hasta el n
umero de entradas de esa neurona.
El usuario en la ventana Obtener Nombre de una Neurona Enlazada
selecciona el nombre de la variable que referencia la neurona a la cual
se le desea obtener el nombre de la neurona enlazada, y por supuesto
selecciona la entrada deseada.
El sistema obtiene el nombre de la neurona enlazada o <Libre> (si
esta libre) de la entrada especificada de la neurona de proceso que
se encuentra referenciada por la variable seleccionada (preguntando
el nombre a la neurona referenciada por la entrada especificada) y
lo muestra en la misma ventana Obtener Nombre de una Neurona
Enlazada.
El usuario presiona el boton Aceptar que se encuentra en la misma
ventana.
El sistema muestra en la zona de reporte de actividades de la Ventana
Principal (ver Figura 2.5) el mensaje:
89
nombreVariable.obtenerPesoEnlaceDeLaEntrada ( NumeroEntrada );
// El peso es: pesoDelEnlace.
(nombreVariable, NumeroEntrada y pesoDelEnlace corresponden respectivamente al nombre de la variable que referencia a la neurona de
proceso deseada, al n
umero de la entrada y por supuesto al peso del
enlace de dicha entrada).
Finalmente el sistema cierra la ventana Obtener Peso de un Enlace.
Curso alterno
Si el usuario presiona el boton Cancelar en la ventana Obtener
Peso de un Enlace, el sistema cierra dicha ventana quedando en la
Ventana Principal.
Cada vez que el usuario seleccione otra neurona de proceso, el sistema
obtiene el n
umero de entradas de esta nueva neurona y actualiza la
lista de la ventana Obtener Peso de un Enlace
90
PRELIMINAR
CAPITULO 3. ANALISIS
Y DISENO
Cambiar peso enlace
Curso b
asico
El sistema obtiene de la lista de variables, el listado de todas las
variables que hagan referencia a neuronas de proceso. Tambien obtiene el n
umero de entradas de la primera neurona de proceso que se
encuentra en la lista. Luego actualiza los listados que aparecen en la
ventana Cambiar Peso de un Enlace (ver Figura 2.38), para el caso
del n
umero de la entrada, sera un listado desde uno hasta el n
umero
de entradas de esa neurona.
El usuario en la ventana Cambiar Peso de un Enlace selecciona el
nombre de la variable que referencia la neurona a la cual se le desea
cambiar el peso del enlace de la entrada especificada, por supuesto
selecciona la entrada deseada y digita el nuevo peso para el enlace.
Finalmente el usuario presiona el boton Aceptar que se encuentra
en la misma ventana.
El sistema verifica que se hayan ingresado los datos (se espera el peso
para el enlace), verifica el formato del peso del enlace, luego cambia el
peso del enlace de la entrada especificada de la neurona de proceso que
se encuentra referenciada por la variable seleccionada (ella notifica del
cambio a sus monitores, si los tiene) y lo muestra en la misma ventana
Cambiar Peso de un Enlace. Tambien muestra en la zona de reporte
de actividades de la Ventana Principal (ver Figura 2.5) el mensaje:
(nombreVariable, NumeroEntrada y pesoDelEnlace corresponden respectivamente al nombre de la variable que referencia a la neurona de
proceso deseada, al n
umero de la entrada y por supuesto al peso del
enlace de dicha entrada).
Finalmente el sistema cierra la ventana Cambiar Peso de un Enlace.
Curso alterno
Si el usuario presiona el boton Cancelar en la ventana Cambiar
Peso de un Enlace, el sistema cierra dicha ventana quedando en la
Ventana Principal.
Si no se han ingresado datos, el sistema muestra el mensaje Ingrese
el peso para un enlace , en un Di
alogo de Informaci
on (ver Figura
2.60), el usuario presiona el boton Aceptar de dicho dialogo y el
91
(nombreVariable y nombreDeLaFuncionBase corresponden respectivamente al nombre de la variable que referencia a la neurona de proceso
seleccionada y al nombre de la funcion base de dicha neurona).
Finalmente el sistema cierra la ventana Obtener Funci
on Base.
Curso alterno
Si el usuario presiona el boton Cancelar en la ventana Obtener Funci
on Base, el sistema cierra dicha ventana quedando en la Ventana
Principal.
92
PRELIMINAR
CAPITULO 3. ANALISIS
Y DISENO
Cambiar funci
on base
Curso b
asico
El sistema obtiene de la lista de variables, el listado de todas las
variables que hagan referencia a neuronas de proceso y obtiene la lista
de todas las funciones base disponibles (incluyendo las estandar y las
definidas por el usuario en el disco). Luego actualiza los listados que
aparecen en la ventana Cambiar Funci
on Base (ver Figura 2.40).
El usuario en la ventana Cambiar Funci
on Base selecciona el nombre
de la variable que referencia a una neurona de proceso y selecciona el
nombre de la funcion base que desea asignar, posteriormente el usuario
presiona el boton Aceptar de dicha ventana, luego el sistema cambia
la funcion base de la neurona referenciada por la variable seleccionada
(ella notifica del cambio a sus monitores, si los tiene).
Posteriormente el sistema muestra en la zona de reporte de actividades
de la Ventana Principal (ver Figura 2.5) el mensaje:
93
// Nueva funci
on base nombreFuncionBase
/* fragmentoDeCodigoJava*/
(nombreFuncionBase y fragmentoDeCodigoJava corresponden respectivamente al nombre del nuevo tipo de funcion base y a el fragmento
dado por el usuario). Finalmente el sistema cierra la ventana Definir
Nueva Funci
on Base quedando en la Ventana Principal.
Curso alterno
Si el usuario presiona el boton Cancelar en la ventana Definir Nueva Funci
on Base, el sistema cierra dicha ventana quedando en la
Ventana Principal.
Si no se han ingresado datos, el sistema muestra el mensaje Ingrese el
nombre del nuevo tipo de funci
on base y el c
odigo Java requerido, en
un Di
alogo de Informaci
on (ver Figura 2.60), el usuario presiona el
boton Aceptar de dicho dialogo y el sistema cierra el dialogo quedando en la ventana Definir Nueva Funci
on Base.
Si el formato del nombre del nuevo tipo de funcion base no es correcto,
el sistema muestra el mensaje El formato del nombre no corresponde
al de un identificador v
alido, en un Di
alogo de Error (ver Figura
2.59), el usuario presiona el boton Aceptar de dicho dialogo y el sistema cierra el dialogo quedando en la ventana Definir Nueva Funci
on
Base.
Si no se puede buscar en el disco el nuevo tipo de funcion base, el
sistema muestra el mensaje Error al buscar el nuevo tipo de funci
on
base en el disco, en un Di
alogo de Error, el usuario presiona el boton
Aceptar de dicho dialogo y el sistema cierra el dialogo y regresa a la
ventana Definir Nueva Funci
on Base.
94
PRELIMINAR
CAPITULO 3. ANALISIS
Y DISENO
Si ya existe otro tipo de funcion base con ese nombre, el sistema muestra el mensaje Ya existe un tipo de funci
on base con ese nombre,
en un Di
alogo de Advertencia (ver Figura 2.61), el usuario presiona
el boton Aceptar de dicho dialogo y el sistema cierra el dialogo y
contin
ua el proceso normal. Si el usuario presiona el boton Cancelar
del dialogo, el sistema cierra el dialogo y regresa a la ventana Definir
Nueva Funci
on Base sin continuar con el proceso normal.
Si no se puede guardar en el disco el codigo fuente de la clase definida,
el sistema muestra el mensaje Error al almacenar la clase del nuevo
tipo de funci
on base, en un Di
alogo de Error, el usuario presiona
el boton Aceptar de dicho dialogo y el sistema cierra el dialogo y
regresa a la ventana Definir Nueva Funci
on Base.
Si no se puede llamar al compilador de Java, el sistema muestra el
mensaje Error al ejecutar el compilador de Java, en un Di
alogo de
Error, el usuario presiona el boton Aceptar de dicho dialogo y el
sistema cierra el dialogo y regresa a la ventana Definir Nueva Funci
on
Base.
Si se detectaron errores de compilacion, el sistema muestra estos errores en un Di
alogo de Error, el usuario presiona el boton Aceptar
de dicho dialogo y el sistema cierra el dialogo y regresa a la ventana
Definir Nueva Funci
on Base.
Si no se puede guardar en el disco el nuevo tipo de funcion base,
el sistema muestra el mensaje Error al almacenar el nuevo tipo de
funci
on base en el disco, en un Di
alogo de Error, el usuario presiona
el boton Aceptar de dicho dialogo y el sistema cierra el dialogo y
regresa a la ventana Definir Nueva Funci
on Base.
Si no se puede eliminar del disco el codigo fuente de la clase del nuevo
tipo de funcion base, el sistema muestra el mensaje Error al eliminar
la clase del nuevo tipo de funci
on base del disco, en un Di
alogo de
Error, el usuario presiona el boton Aceptar de dicho dialogo y el
sistema cierra el dialogo y regresa a la ventana Definir Nueva Funci
on
Base.
Cargar funci
on base
Curso b
asico
El usuario en la ventana Definir Nueva Funci
on Base (ver Figura
2.41) presiona el boton Cargar de dicha ventana.
El sistema abre el dialogo de Cargar archivos (ver Figura 2.8). El
usuario en el dialogo Cargar archivos selecciona la ubicacion y el
95
nombreVariable.obtenerNombreFuncionDeActivacion ( );,
// La funci
on de activaci
on es: nombreDeLaFuncionDeActivacion.
96
PRELIMINAR
CAPITULO 3. ANALISIS
Y DISENO
Finalmente el sistema cierra la ventana Obtener Funci
on de Activaci
on.
Curso alterno
Si el usuario presiona el boton Cancelar en la ventana Obtener
Funci
on de Activaci
on, el sistema cierra dicha ventana quedando en
la Ventana Principal.
Cambiar funci
on de activaci
on
Curso b
asico
El sistema obtiene de la lista de variables, el listado de todas las variables que hagan referencia a neuronas de proceso y obtiene la lista de
todas las funciones de activaci
on disponibles (incluyendo las estandar
y las definidas por el usuario en el disco). Luego actualiza los listados
que aparecen en la ventana Cambiar Funci
on de Activaci
on (ver
Figura 2.43).
El usuario en la ventana Cambiar Funci
on de Activaci
on selecciona
el nombre de la variable que referencia a una neurona de proceso y
selecciona el nombre de la funcion de activaci
on que desea asignar,
posteriormente el usuario presiona el boton Aceptar de dicha ventana, luego el sistema cambia la funcion de activacion de la neurona
referenciada por la variable seleccionada (ella notifica del cambio a sus
monitores, si los tiene).
Posteriormente el sistema muestra en la zona de reporte de actividades
de la Ventana Principal (ver Figura 2.5) el mensaje:
nombreVariable.cambiarFuncionDeActivacion ( nombreFuncionDeActivacion );
97
// Nueva funci
on de activaci
on nombreFuncionActivacion
/* fragmentoDeCodigoJava */
98
PRELIMINAR
CAPITULO 3. ANALISIS
Y DISENO
Si el formato del nombre del nuevo tipo de funcion de activaci
on no
es correcto, el sistema muestra el mensaje El formato del nombre no
corresponde al de un identificador v
alido, en un Di
alogo de Error
(ver Figura 2.59), el usuario presiona el boton Aceptar de dicho
dialogo y el sistema cierra el dialogo quedando en la ventana Definir
Nueva Funci
on de Activaci
on.
Si no se puede buscar en el disco el nuevo tipo de funcion de activaci
on,
el sistema muestra el mensaje Error al buscar el nuevo tipo de funci
on
de activaci
on en el disco, en un Di
alogo de Error, el usuario presiona el boton Aceptar de dicho dialogo y el sistema cierra el dialogo
y regresa a la ventana Definir Nueva Funci
on de Activaci
on.
Si ya existe otro tipo de funcion de activaci
on con ese nombre, el
sistema muestra el mensaje Ya existe un tipo de funci
on de activaci
on
con ese nombre, en un Di
alogo de Advertencia (ver Figura 2.61),
el usuario presiona el boton Aceptar de dicho dialogo y el sistema
cierra el dialogo y contin
ua el proceso normal. Si el usuario presiona el
boton Cancelar del dialogo, el sistema cierra el dialogo y regresa a
la ventana Definir Nueva Funci
on de Activaci
on sin continuar con
el proceso normal.
Si no se puede guardar en el disco el codigo fuente de la clase definida,
el sistema muestra el mensaje Error al almacenar la clase del nuevo
tipo de funci
on de activaci
on, en un Di
alogo de Error, el usuario
presiona el boton Aceptar de dicho dialogo y el sistema cierra el
dialogo y regresa a la ventana Definir Nueva Funci
on de Activaci
on.
Si no se puede llamar al compilador de Java, el sistema muestra el
mensaje Error al ejecutar el compilador de Java, en un Di
alogo de
Error, el usuario presiona el boton Aceptar de dicho dialogo y el
sistema cierra el dialogo y regresa a la ventana Definir Nueva Funci
on
de Activaci
on.
Si se detectaron errores de compilacion, el sistema muestra estos errores en un Di
alogo de Error, el usuario presiona el boton Aceptar
de dicho dialogo y el sistema cierra el dialogo y regresa a la ventana
Definir Nueva Funci
on de Activaci
on.
Si no se puede guardar en el disco el nuevo tipo de funcion de activacion, el sistema muestra el mensaje Error al almacenar el nuevo
tipo de funci
on de activaci
on en el disco, en un Di
alogo de Error,
el usuario presiona el boton Aceptar de dicho dialogo y el sistema
cierra el dialogo y regresa a la ventana Definir Nueva Funci
on de
Activaci
on.
99
100
PRELIMINAR
CAPITULO 3. ANALISIS
Y DISENO
El sistema obtiene el nombre de la funcion de transferencia de la neurona de proceso que se encuentra referenciada por la variable seleccionada y lo muestra en la misma ventana Obtener Funci
on de Transferencia.
El usuario presiona el boton Aceptar que se encuentra en la misma
ventana.
El sistema muestra en la zona de reporte de actividades de la Ventana
Principal (ver Figura 2.5) el mensaje:
nombreVariable.obtenerNombreFuncionDeTransferencia ( );
// La funci
on de transferencia es: nombreFuncionDeTransferencia.
101
nombreVariable.cambiarFuncionDeTransferencia (nombreFuncionDeTransferencia );
// Nueva funci
on de transferencia nombreFuncionTransferencia
/* fragmentoDeCodigoJava */
102
PRELIMINAR
CAPITULO 3. ANALISIS
Y DISENO
(nombreFuncionTransferencia y fragmentoDeCodigoJava corresponden respectivamente al nombre del nuevo tipo de funcion de transferencia y a el fragmento dado por el usuario). Finalmente el sistema cierra
la ventana Definir Nueva Funci
on de Transferencia quedando en la
Ventana Principal.
Curso alterno
Si el usuario presiona el boton Cancelar en la ventana Definir Nueva Funci
on de Transferencia, el sistema cierra dicha ventana quedando en la Ventana Principal.
Si no se han ingresado datos, el sistema muestra el mensaje Ingrese
el nombre del nuevo tipo de funci
on de transferencia y el c
odigo Java requerido, en un Di
alogo de Informaci
on (ver Figura 2.60), el
usuario presiona el boton Aceptar de dicho dialogo y el sistema cierra
el dialogo quedando en la ventana Definir Nueva Funci
on de Transferencia.
Si el formato del nombre del nuevo tipo de funcion de transferencia no
es correcto, el sistema muestra el mensaje El formato del nombre no
corresponde al de un identificador v
alido, en un Di
alogo de Error
(ver Figura 2.59), el usuario presiona el boton Aceptar de dicho
dialogo y el sistema cierra el dialogo quedando en la ventana Definir
Nueva Funci
on de Transferencia.
Si no se puede buscar en el disco el nuevo tipo de funcion de transferencia, el sistema muestra el mensaje Error al buscar el nuevo tipo
de funci
on de transferencia en el disco, en un Di
alogo de Error,
el usuario presiona el boton Aceptar de dicho dialogo y el sistema
cierra el dialogo y regresa a la ventana Definir Nueva Funci
on de
Transferencia.
Si ya existe otro tipo de funcion de transferencia con ese nombre, el
sistema muestra el mensaje Ya existe un tipo de funci
on de transferencia con ese nombre, en un Di
alogo de Advertencia (ver Figura
2.61), el usuario presiona el boton Aceptar de dicho dialogo y el
sistema cierra el dialogo y contin
ua el proceso normal. Si el usuario
presiona el boton Cancelar del dialogo, el sistema cierra el dialogo
y regresa a la ventana Definir Nueva Funci
on de Transferencia sin
continuar con el proceso normal.
Si no se puede guardar en el disco el codigo fuente de la clase definida, el sistema muestra el mensaje Error al almacenar la clase del
nuevo tipo de funci
on de transferencia, en un Di
alogo de Error,
el usuario presiona el boton Aceptar de dicho dialogo y el sistema
103
104
PRELIMINAR
CAPITULO 3. ANALISIS
Y DISENO
Si falla la carga de la informacion del nuevo tipo de funcion de transferencia, el sistema muestra el mensaje Error al cargar los datos de la
funcion de transferencia, en un Di
alogo de Error (ver Figura 2.59),
el usuario presiona el boton Aceptar de dicho dialogo, el sistema
cierra el dialogo de error quedando en el dialogo Cargar archivos.
Obtener umbral de activaci
on
Curso b
asico
El sistema obtiene de la lista de variables, el listado de todas las variables que hagan referencia a una neurona de proceso. Luego actualiza
el listado que aparece en la ventana Obtener Umbral de Activaci
on
(ver Figura 2.48).
El usuario en la ventana Obtener Umbral de Activaci
on selecciona
el nombre de la variable que referencia la neurona a la cual se le desea
obtener el umbral de activaci
on de la neurona.
El sistema obtiene el umbral de activaci
on de la neurona de proceso
que se encuentra referenciada por la variable seleccionada y lo muestra
en la misma ventana Obtener Umbral de Activaci
on.
El usuario presiona el boton Aceptar que se encuentra en la misma
ventana.
El sistema muestra en la zona de reporte de actividades de la Ventana
Principal (ver Figura 2.5) el mensaje:
nombreVariable.obtenerUmbralDeActivacion ( );
// El umbral de activaci
on es: umbralDeActivacion.
105
nombreVariable.cambiarUmbralDeActivacion ( umbralDeActivacion );
106
PRELIMINAR
CAPITULO 3. ANALISIS
Y DISENO
al de un n
umero real, en un Di
alogo de Error (ver Figura 2.59), el
usuario presiona el boton Aceptar de dicho dialogo y el sistema cierra
el dialogo quedando en la ventana Cambiar Umbral de Activaci
on.
Obtener potencial de activaci
on
Curso b
asico
El sistema obtiene de la lista de variables, el listado de todas las variables que hagan referencia a una neurona de proceso. Luego actualiza
el listado que aparece en la ventana Obtener Potencial de Activaci
on
(ver Figura 2.50).
El usuario en la ventana Obtener Potencial de Activaci
on selecciona
el nombre de la variable que referencia la neurona a la cual se le desea
obtener el potencial de activaci
on de la neurona.
El sistema obtiene el potencial de activaci
on de la neurona de proceso
que se encuentra referenciada por la variable seleccionada (usando el
valor de salida de las neuronas referenciadas por todas sus entradas y
cuidando de no olverse a preguntar recursivamente) y lo muestra en la
misma ventana Obtener Potencial de Activaci
on.
El usuario presiona el boton Aceptar que se encuentra en la misma
ventana.
El sistema muestra en la zona de reporte de actividades de la Ventana
Principal (ver Figura 2.5) el mensaje:
nombreVariable.obtenerPotencialDeActivacion ( );
// El potencial de activaci
on es: potencialDeActivacion.
(nombreVariable y potencialDeActivacion corresponden respectivamente al nombre de la variable que referencia a la neurona de proceso
seleccionada y al potencial de activaci
on de dicha neurona o un mensaje que diga Error, fue detectada una retroalimentaci
on inv
alida,
cuando se detecte que se vuelve a preguntar a la neurona actual, en el
proceso de consultar a las neuronas enlazadas a ella).
Finalmente el sistema cierra la ventana Obtener Potencial de Activaci
on.
Curso alterno
Si el usuario presiona el boton Cancelar en la ventana Obtener
Potencial de Activaci
on, el sistema cierra dicha ventana quedando en
la Ventana Principal.
107
nombreVariable.obtenerValorDeActivacion ( );,
// El valor de activaci
on es: valorDeActivacion.
108
PRELIMINAR
CAPITULO 3. ANALISIS
Y DISENO
el listado que aparece en la ventana Obtener Valor de Salida (ver
Figura 2.13).
El usuario en la ventana Obtener Valor de Salida selecciona el nombre de la variable que referencia la neurona a la cual se le desea obtener
el valor de salida de la neurona.
El sistema obtiene el valor de salida de la neurona de proceso que se
encuentra referenciada por la variable seleccionada (usando el valor de
activacion de la misma neurona) y lo muestra en la misma ventana
Obtener Valor de Salida.
El usuario presiona el boton Aceptar que se encuentra en la misma
ventana.
El sistema muestra en la zona de reporte de actividades de la Ventana
Principal (ver Figura 2.5) el mensaje:
nombreVariable.obtenerValorDeSalida ( );
// El valor de salida es: valorDeSalida.
109
TipoMonitorNeuronaProceso nombreVariableMonitor;
nombreVariableMonitor = new TipoMonitorNeuronaProceso ( );
110
PRELIMINAR
CAPITULO 3. ANALISIS
Y DISENO
Si el formato del nombre del monitor no es correcto, el sistema muestra
el mensaje El formato no corresponde al de un identificador v
alido,
en un Di
alogo de Error, el usuario presiona el boton Aceptar de
dicho dialogo y el sistema cierra el dialogo quedando en la ventana
Crear Monitor.
Si en la lista de variables ya existe otra con el mismo nombre, el sistema
muestra el mensaje Ya existe una variable con el mismo nombre, en
un Di
alogo de Informaci
on, el usuario presiona el boton Aceptar
de dicho dialogo y el sistema cierra el dialogo quedando en la ventana
Crear Monitor.
Si falla la adicion de la nueva entrada en la lista de variables, el sistema
muestra el mensaje Error al almacenar la nueva variable, en un
Di
alogo de Error, el usuario presiona el boton Aceptar de dicho
dialogo y el sistema cierra el dialogo quedando en la ventana Crear
Monitor.
Asignar monitor
Curso b
asico
El sistema obtiene de la lista de variables, el listado de todas las
variables que hagan referencia a monitores de neurona de proceso y
las que hagan referencia a neuronas de proceso. Luego actualiza los
listados que aparecen en la ventana Asignar Monitor (ver Figura
2.16).
El usuario en la ventana Asignar Monitor selecciona el nombre de la
variable que referencia a un monitor y selecciona el nombre de la variable que referencia a una neurona de proceso, posteriormente el usuario
presiona el boton Aceptar de dicha ventana, el sistema le adiciona la
referencia al monitor (valor de la variable nombreVariableMonitor) a
la neurona referenciada por la variable nombreVariableNeurona.
Posteriormente el sistema muestra en la zona de reporte de actividades
de la Ventana Principal (ver Figura 2.5) el mensaje:
nombreVariableNeurona.asignarMonitor ( nombreVariableMonitor );
111
nombreVariableNeurona.desasignarMonitor ( nombreVariableMonitor );
112
PRELIMINAR
CAPITULO 3. ANALISIS
Y DISENO
Monitor, el sistema cierra dicha ventana quedando en la Ventana
Principal.
No debe provocarse ning
un error al intentar retirar un monitor de una
neurona de proceso, a
un si este no lo tiene asignado actualmente.
Definir nuevo monitor
Curso b
asico
El usuario en la ventana Definir Nuevo Monitor (ver Figura 2.18)
escribe el nombre del nuevo tipo de monitor, posteriormente escribe
los fragmentos de codigo en Java seg
un sea el caso, luego el usuario
presiona el boton Aceptar de dicha ventana.
El sistema verifica que se hayan ingresado datos (se espera el nombre
del nuevo tipo de monitor y los fragmentos de codigo Java), verifica que el nombre tenga el formato de un identificador valido, busca
en el disco un monitor que tenga el mismo nombre, construye una
clase valida en Java (uniendo los fragmentos dados por el usuario con
partes fijas de codigo predeterminado, y guardandolo en el disco con el
nombre de la clase especificada), posteriormente le solicita a Java que
compile la nueva clase. Luego el sistema determina si el compilador
detecto errores de sintaxis en el codigo dado por el usuario, posteriormente el sistema almacena los fragmentos del nuevo tipo de monitor
en el disco y elimina el codigo fuente de la clase compilada. Luego
muestra en la zona de reporte de actividades de la Ventana Principal (ver Figura 2.5) el mensaje:
(nombreTipoMonitor y fragmentosDeCodigoJava corresponde respectivamente al nombre del nuevo tipo de monitor y a los fragmentos dados por el usuario). Finalmente el sistema cierra la ventana Definir
Nuevo Monitor quedando en la Ventana Principal.
Curso alterno
Si el usuario presiona el boton Cancelar en la ventana Definir Nuevo Monitor, el sistema cierra dicha ventana quedando en la Ventana
Principal.
Si no se han ingresado datos, el sistema muestra el mensaje Ingrese
el nombre del nuevo tipo de monitor y el c
odigo Java requerido, en
un Di
alogo de Informaci
on (ver Figura 2.60), el usuario presiona el
113
boton Aceptar de dicho dialogo y el sistema cierra el dialogo quedando en la ventana Definir Nuevo Monitor.
Si el formato del nombre del nuevo tipo de monitor no es correcto, el
sistema muestra el mensaje El formato del nombre no corresponde al
de un identificador v
alido, en un Di
alogo de Error (ver Figura 2.59),
el usuario presiona el boton Aceptar de dicho dialogo y el sistema
cierra el dialogo quedando en la ventana Definir Nuevo Monitor.
Si no se puede buscar en el disco el nuevo tipo de monitor, el sistema
muestra el mensaje Error al buscar el nuevo tipo de monitor en el disco, en un Di
alogo de Error, el usuario presiona el boton Aceptar
de dicho dialogo y el sistema cierra el dialogo y regresa a la ventana
Definir Nuevo Monitor.
Si ya existe otro tipo de monitor con ese nombre, el sistema muestra el mensaje Ya existe un tipo de monitor con ese nombre, en
un Di
alogo de Advertencia (ver Figura 2.61), el usuario presiona el
boton Aceptar de dicho dialogo y el sistema cierra el dialogo y contin
ua el proceso normal. Si el usuario presiona el boton Cancelar
del dialogo, el sistema cierra el dialogo y regresa a la ventana Definir
Nuevo Monitor sin continuar con el proceso normal.
Si no se puede guardar en el disco el codigo fuente de la clase definida,
el sistema muestra el mensaje Error al almacenar la clase del nuevo
tipo de monitor en el disco, en un Di
alogo de Error, el usuario
presiona el boton Aceptar de dicho dialogo y el sistema cierra el
dialogo y regresa a la ventana Definir Nuevo Monitor.
Si no se puede llamar al compilador de Java, el sistema muestra el
mensaje Error al ejecutar el compilador de Java, en un Di
alogo
de Error, el usuario presiona el boton Aceptar de dicho dialogo
y el sistema cierra el dialogo y regresa a la ventana Definir Nuevo
Monitor.
Si se detectaron errores de compilacion, el sistema muestra estos errores en un Di
alogo de Error, el usuario presiona el boton Aceptar
de dicho dialogo y el sistema cierra el dialogo y regresa a la ventana
Definir Nuevo Monitor.
Si no se puede guardar en el disco el nuevo tipo de monitor, el sistema
muestra el mensaje Error al almacenar el nuevo tipo de monitor en el
disco, en un Di
alogo de Error, el usuario presiona el boton Aceptar de dicho dialogo y el sistema cierra el dialogo y regresa a la ventana
Definir Nuevo Monitor.
PRELIMINAR
CAPITULO 3. ANALISIS
Y DISENO
114
3.1.5.
Crear red
Curso b
asico
El sistema obtiene del disco, el listado de todos los tipos de redes
neuronales, y actualiza el listado que aparece en la ventana Crear
una Red Neuronal (ver Figura 2.53), con este listado mas los tipos
estandar (Perceptron, Perceptron multinivel, Adaline, Madaline, Hopfield y Backpropagation) de redes neuronales.
El usuario en la ventana Crear una Red Neuronal selecciona el tipo
de red neuronal, escribe el nombre de la variable a la que se le asignara la nueva red neuronal, luego escribe el nombre que desea para
115
TipoRedNeuronal nombreVariable;
nombreVariable = new TipoRedNeuronal ( nombreRedNeuronal );
(TipoRedNeuronal, nombreVariable y nombreRedNeuronal corresponden respectivamente al tipo de red neuronal seleccionada, al nombre de la variable que referencia a la red neuronal y al nombre para
dicha red).
Y finalmente el sistema cierra la ventana Crear una Red Neuronal y
activa las alternativas
Obtener Nombre, Ejecutar red y Generar aplicaci
on de la opcion
Neurona de Retardo en la Ventana Principal.
Curso alterno
Si falla la obtencion del disco del listado de todos los tipos de redes
neuronales, el sistema cierra la ventana Crear una Red Neuronal,
muestra el mensaje Error al leer el disco para obtener el listado de
tipos de redes neuronales, en un Di
alogo de Error (ver Figura 2.59),
el usuario presiona el boton Aceptar de dicho dialogo y el sistema
cierra el dialogo quedando en la ventana Ventana Principal.
Si no hay en el disco nuevos tipos de neuronas de retardo, el sistema
deja solo el tipo estandar (perceptron, perceptron multinivel, a daline,
madaline, hopfield y backpropagation) de redes neuronales.
Si el usuario presiona el boton Cancelar en la ventana Crear una
Red Neuronal, el sistema cierra dicha ventana quedando en la Ventana Principal.
116
PRELIMINAR
CAPITULO 3. ANALISIS
Y DISENO
Si no se han ingresado datos, el sistema muestra el mensaje Ingrese
el nombre de la variable y el de la red neuronal , en un Di
alogo de
Informaci
on (ver Figura 2.60), el usuario presiona el boton Aceptar
de dicho dialogo y el sistema cierra el dialogo quedando en la ventana
Crear una Red Neuronal.
Si el formato de alguno de los nombres no es correcto, el sistema muestra el mensaje El formato no corresponde al de un identificador v
alido, en un Di
alogo de Error (ver Figura 2.59), el usuario presiona el
boton Aceptar de dicho dialogo y el sistema cierra el dialogo quedando en la ventana Crear una Red Neuronal.
Si en la lista de variables ya existe otra con el mismo nombre, el sistema
muestra el mensaje Ya existe una variable con el mismo nombre, en
un Di
alogo de Informaci
on, el usuario presiona el boton Aceptar
de dicho dialogo y el sistema cierra el dialogo quedando en la ventana
Crear una Red Neuronal.
Si en la lista de redes neuronales ya existe otra con el mismo nombre, el
sistema muestra el mensaje Ya existe una red neuronal con el mismo
nombre, en un Di
alogo de Informaci
on, el usuario presiona el boton
Aceptar de dicho dialogo y el sistema cierra el dialogo quedando en
la ventana Crear una Red Neuronal.
Si falla le creacion de la red neuronal, el sistema muestra el mensaje
Error al crear la red neuronal, en un Di
alogo de Error, el usuario
presiona el boton Aceptar de dicho dialogo y el sistema cierra el
dialogo quedando en la ventana Crear una Red Neuronal.
Si falla la adicion de la nueva red neuronal a la lista de redes neuronales, el sistema muestra el mensaje Error al almacenar la nueva
red neuronal, en un Di
alogo de Error, el usuario presiona el boton
Aceptar de dicho dialogo y el sistema cierra el dialogo quedando en
la ventana Crear una Red Neuronal.
Si falla la adicion de la nueva entrada en la lista de variables, el sistema
elimina la nueva red neuronal de la lista de redes neuronales y muestra
el mensaje Error al almacenar la nueva variable, en un Di
alogo
de Error, el usuario presiona el boton Aceptar de dicho dialogo y
el sistema cierra el dialogo quedando en la ventana Crear una Red
Neuronal.
Obtener nombre
Curso b
asico
El sistema obtiene de la lista de variables, el listado de todas las
117
nombreVariable.obtenerNombreDeLaRedNeuronal ( );
// El nombre es: nombreDeLaRedNeuronal.
(nombreDeLaRedNeuronal y nombreVariable corresponden respectivamente al nombre de la red neuronal y al de la variable que la referencia).
Finalmente el sistema cierra la ventana Obtener Nombre.
Curso alterno
Si el usuario presiona el boton Cancelar en la ventana Obtener
Nombre, el sistema cierra dicha ventana quedando en la Ventana
Principal.
Definir nueva red neuronal
Curso b
asico
El usuario en la ventana Definir Nueva Red Neuronal (ver Figura
2.54) escribe el nombre del nuevo tipo de red neuronal, posteriormente
escribe los fragmentos de codigo en Java seg
un sea el caso, luego el
usuario presiona el boton Aceptar de dicha ventana.
El sistema verifica que se hayan ingresado datos (se espera el nombre
del nuevo tipo de red neuronal y los fragmentos de codigo Java), verifica que el nombre tenga el formato de un identificador valido, busca en
el disco un tipo de red neuronal que tenga el mismo nombre, construye
una clase valida en Java (uniendo los fragmentos dados por el usuario
con partes fijas de codigo predeterminado, y guardandolo en el disco
con el nombre de la clase especificada), posteriormente le solicita a
118
PRELIMINAR
CAPITULO 3. ANALISIS
Y DISENO
Java que compile la nueva clase. Luego el sistema determina si el compilador detecto errores de sintaxis en el codigo dado por el usuario,
posteriormente el sistema almacena los fragmentos del nuevo tipo de
monitor en el disco y elimina el codigo fuente de la clase compilada.
Luego muestra en la zona de reporte de actividades de la Ventana
Principal (ver Figura 2.5) el mensaje:
119
120
PRELIMINAR
CAPITULO 3. ANALISIS
Y DISENO
dialogo. El sistema carga la informacion de la red neuronal del disco,
actualiza la ventana Definir Nueva Red Neuronal y cierra el dialogo
quedando en la ventana Definir Nueva Red Neuronal.
Curso alterno
Si el usuario presiona el boton de Cancelar en el dialogo Cargar
archivos, el sistema cierra el dialogo quedando en la ventana Definir
Nueva Red Neuronal.
Si falla la carga de la informacion de la red neuronal, el sistema muestra
el mensaje Error al cargar los datos de la red neuronal, en un Di
alogo de Error (ver Figura 2.59), el usuario presiona el boton Aceptar
de dicho dialogo, el sistema cierra el dialogo de error quedando en el
dialogo Cargar archivos.
Ejecutar red
Curso b
asico
El sistema obtiene de la lista de variables, el listado de todas las
variables que hagan referencia a una red neuronal. Luego actualiza el
listado que aparece en la ventana Ejecutar Red (ver Figura 2.55).
El usuario en la ventana Ejecutar Red selecciona el nombre de la
variable que referencia la red neuronal a la cual desea ejecutar y presiona el boton Aceptar que se encuentra en la misma ventana.
El sistema ejecuta la red neuronal que se encuentra referenciada por
la variable seleccionada y muestra en la zona de reporte de actividades
de la Ventana Principal (ver Figura 2.5) el mensaje:
nombreVariable.ejecutarRed ( );
121
122
PRELIMINAR
CAPITULO 3. ANALISIS
Y DISENO
copia los archivo necesarios para la aplicaci
on en la carpeta Aplicacion, en un Di
alogo de Error, el usuario presiona el boton Aceptar de dicho dialogo, el sistema cierra el dialogo de error quedando
en el dialogo Generar Aplicaci
on.
3.2.
123
Diagramas de robustez
124
PRELIMINAR
CAPITULO 3. ANALISIS
Y DISENO
Consideraciones sobre los diagramas de robustez
Haga un seguimiento visual entre el texto de los casos de uso y los
diagramas de robustez.
No haga un dise
no detallado sobre el diagrama de robustez.
Tome poco tiempo para perfeccionar el diagrama de robustez.
Use el analisis de robustez para asegurarse de la consistencia entre los
nombres de las clases en los diagramas de clase y el texto de los casos
de uso.
Incluya el curso alternativo en los diagramas de robustez.
Use el analisis de robustez para ayudarse a usar un formato consistente
para el texto de los casos de uso.
No violar ninguna de las reglas basicas (ver Figura 3.2), sobre las
posibles relaciones entre los elementos de un diagrama de robustez.
3.2.1.
125
Paquete archivo
Iniciar laboratorio: La figura 3.3 corresponde al diagrama de robustez del texto del caso de uso de la pagina 46.
126
PRELIMINAR
CAPITULO 3. ANALISIS
Y DISENO
3.2.2.
127
128
PRELIMINAR
CAPITULO 3. ANALISIS
Y DISENO
129
130
PRELIMINAR
CAPITULO 3. ANALISIS
Y DISENO
131
132
PRELIMINAR
CAPITULO 3. ANALISIS
Y DISENO
133
134
PRELIMINAR
CAPITULO 3. ANALISIS
Y DISENO
Cargar monitor: La figura 3.14 corresponde al diagrama de robustez
del texto del caso de uso de la pagina 59.
3.2.3.
135
136
PRELIMINAR
CAPITULO 3. ANALISIS
Y DISENO
137
138
PRELIMINAR
CAPITULO 3. ANALISIS
Y DISENO
139
140
PRELIMINAR
CAPITULO 3. ANALISIS
Y DISENO
141
Cargar valor futuro La figura 3.23 corresponde al diagrama de robustez del texto del caso de uso de la pagina 69.
142
PRELIMINAR
CAPITULO 3. ANALISIS
Y DISENO
143
144
PRELIMINAR
CAPITULO 3. ANALISIS
Y DISENO
Obtener nombre de la neurona enlazada La figura 3.28 corresponde al diagrama de robustez del texto del caso de uso de la pagina
73.
145
146
PRELIMINAR
CAPITULO 3. ANALISIS
Y DISENO
147
Desasignar monitor La figura 3.31 corresponde al diagrama de robustez del texto del caso de uso de la pagina 76.
148
PRELIMINAR
CAPITULO 3. ANALISIS
Y DISENO
149
PRELIMINAR
CAPITULO 3. ANALISIS
Y DISENO
150
3.2.4.
151
152
PRELIMINAR
CAPITULO 3. ANALISIS
Y DISENO
Enlazar neurona La figura 3.37 corresponde al diagrama de robustez
del texto del caso de uso de la pagina 83.
153
Obtener estado de un enlace La figura 3.39 corresponde al diagrama de robustez del texto del caso de uso de la pagina 86.
154
PRELIMINAR
CAPITULO 3. ANALISIS
Y DISENO
Obtener nombre de la neurona enlazada La figura 3.41 corresponde al diagrama de robustez del texto del caso de uso de la pagina
87.
155
156
PRELIMINAR
CAPITULO 3. ANALISIS
Y DISENO
157
158
PRELIMINAR
CAPITULO 3. ANALISIS
Y DISENO
159
Cambiar funci
on de activaci
on La figura 3.49 corresponde al diagrama de robustez del texto del caso de uso de la pagina 96.
160
PRELIMINAR
CAPITULO 3. ANALISIS
Y DISENO
161
162
PRELIMINAR
CAPITULO 3. ANALISIS
Y DISENO
Cambiar funci
on de transferencia La figura 3.53 corresponde al
diagrama de robustez del texto del caso de uso de la pagina 100.
163
164
PRELIMINAR
CAPITULO 3. ANALISIS
Y DISENO
165
166
PRELIMINAR
CAPITULO 3. ANALISIS
Y DISENO
167
168
PRELIMINAR
CAPITULO 3. ANALISIS
Y DISENO
169
170
PRELIMINAR
CAPITULO 3. ANALISIS
Y DISENO
171
172
PRELIMINAR
CAPITULO 3. ANALISIS
Y DISENO
Cargar monitor: La figura 3.65 corresponde al diagrama de robustez
del texto del caso de uso de la pagina 114.
3.2.5.
173
174
PRELIMINAR
CAPITULO 3. ANALISIS
Y DISENO
175
176
PRELIMINAR
CAPITULO 3. ANALISIS
Y DISENO
177
178
3.3.
PRELIMINAR
CAPITULO 3. ANALISIS
Y DISENO
Actualizaci
on del modelo del dominio
179
180
PRELIMINAR
CAPITULO 3. ANALISIS
Y DISENO
181
182
PRELIMINAR
CAPITULO 3. ANALISIS
Y DISENO
DEL DISENO
PRELIMINAR (PDR)
3.4. REVISION
3.4.
183
Revisi
on del dise
no preliminar (PDR)
Ultima
oportunidad de cambiar los requerimientos.
Finaliza el contrato entre los clientes y los desarrolladores.
Una lnea en el diagrama de robustez, significa comunicaci
on, no son
mensajes, estos aparecen el diagrama de secuencia.
Hay que verificar si la arquitectura seleccionada trabaja para los escenarios que se desean construir.
Adicionar atributos clave que van apareciendo al modelo de dominio.
Para este proyecto, toda la revision es satisfactoria.
184
PRELIMINAR
CAPITULO 3. ANALISIS
Y DISENO
DISENO
4.1.
Diagramas de secuencia
186
CAPITULO 4. DISENO
En este punto se pueden usar algunos estandares de dise
no (patrones),
para mejorar el diagrama de clase.
Siga principios basicos de dise
no orientado a objetos guiados por responsabilidad (patrones GRASP), cuando localice comportamiento dibujando flechas de mensaje. (Altamente cohesivos y debilmente acoplados).
Piense cuidadosamente acerca del origen de las flechas de mensajes,
en otras palabras, cual objeto tiene el control en un momento dado.
Enfoquese en metodos interesantes (comportamiento real del software),
en lugar de saturar el diagrama con mensajes tipo asignar (set) o obtener (get).
Utilice el diagrama de secuencia para localizar el comportamiento, no
lo convierta el diagrama de flujo.
Muestre detalles en el diagrama de secuencia, de tal forma que no
quede en un alto nivel de abstraccion.
Mantenga una correspondencia visual entre el texto de los casos de
uso y las flechas de los mensajes.
Identifique primero todos los objetos necesarios en el diagrama de robustez.
Coloque el texto de los casos de uso en los diagramas de secuencia (en
este documento se omitieron por el tama
no del papel).
Haga un diagrama de secuencia por cada caso de uso.
4.1.1.
187
Paquete archivo
Iniciar laboratorio La Figura 4.1 corresponde al diagrama de secuencia del texto del caso de uso de la pagina 46, y al diagrama de
robustez de la pagina 125 (Figura 3.3).
Cargar laboratorio La Figura 4.2 corresponde al diagrama de secuencia del texto del caso de uso de la pagina 47, y diagrama de robustez de la pagina 126 (Figura 3.4).
Guardar laboratorio La Figura 4.3 corresponde al diagrama de secuencia del texto del caso de uso de la pagina 48, y diagrama de robustez de la pagina 126 (Figura 3.5).
188
CAPITULO 4. DISENO
189
190
CAPITULO 4. DISENO
4.1.2.
191
192
CAPITULO 4. DISENO
193
194
CAPITULO 4. DISENO
Obtener valor de salida La Figura 4.7 corresponde al diagrama de
secuencia del texto del caso de uso de la pagina 52, y diagrama de
robustez de la pagina 128 (Figura 3.8).
195
196
CAPITULO 4. DISENO
Crear monitor Las Figuras 4.9 y 4.10 corresponden al diagrama de
secuencia del texto del caso de uso de la pagina 54, y diagrama de
robustez de la pagina 130 (Figura 3.10).
197
198
CAPITULO 4. DISENO
Asignar monitor La Figura 4.11 corresponde al diagrama de secuencia del texto del caso de uso de la pagina 55, y diagrama de robustez
de la pagina 131 (Figura 3.11).
199
Desasignar monitor La Figura 4.12 corresponde al diagrama de secuencia del texto del caso de uso de la pagina 56, y diagrama de robustez de la pagina 132 (Figura 3.12).
200
CAPITULO 4. DISENO
Definir nuevo monitor Las Figuras 4.13, 4.14 y 4.15 corresponden
al diagrama de secuencia del texto del caso de uso de la pagina 57, y
diagrama de robustez de la pagina 133 (Figura 3.13).
201
202
CAPITULO 4. DISENO
203
CAPITULO 4. DISENO
204
4.1.3.
205
206
CAPITULO 4. DISENO
Obtener nombre La Figura 4.19 corresponde al diagrama de secuencia del texto del caso de uso de la pagina 62, y diagrama de robustez
de la pagina 136 (Figura 3.16).
207
208
CAPITULO 4. DISENO
Asignar valor de salida La Figura 4.21 corresponde al diagrama de
secuencia del texto del caso de uso de la pagina 63, y diagrama de
robustez de la pagina 137 (Figura 3.18).
209
210
CAPITULO 4. DISENO
Obtener valor futuro La Figura 4.23 corresponde al diagrama de
secuencia del texto del caso de uso de la pagina 65, y diagrama de
robustez de la pagina 139 (Figura 3.20).
211
212
CAPITULO 4. DISENO
Definir nuevo valor futuro Las Figuras 4.25, 4.26 y 4.27 corresponden al diagrama de secuencia del texto del caso de uso de la pagina
67, y diagrama de robustez de la pagina 140 (Figura 3.22).
213
214
CAPITULO 4. DISENO
215
216
CAPITULO 4. DISENO
Enlazar neurona La Figura 4.29 corresponde al diagrama de secuencia del texto del caso de uso de la pagina 70, y diagrama de robustez
de la pagina 142 (Figura 3.24).
217
218
CAPITULO 4. DISENO
Obtener estado enlace La Figura 4.31 corresponde al diagrama de
secuencia del texto del caso de uso de la pagina 71, y diagrama de
robustez de la pagina 143 (Figura 3.26).
219
220
CAPITULO 4. DISENO
Obtener nombre de la neurona enlazada La Figura 4.33 corresponde al diagrama de secuencia del texto del caso de uso de la pagina
73, y diagrama de robustez de la pagina 144 (Figura 3.28).
221
222
CAPITULO 4. DISENO
223
Asignar monitor La Figura 4.36 corresponde al diagrama de secuencia del texto del caso de uso de la pagina 75, y diagrama de robustez
de la pagina 146 (Figura 3.30).
224
CAPITULO 4. DISENO
Desasignar monitor La Figura 4.37 corresponde al diagrama de secuencia del texto del caso de uso de la pagina 76, y diagrama de robustez de la pagina 147 (Figura 3.31).
225
226
CAPITULO 4. DISENO
227
228
CAPITULO 4. DISENO
Cargar monitor La Figura 4.41 corresponde al diagrama de secuencia
del texto del caso de uso de la pagina 79, y diagrama de robustez de
la pagina 149 (Figura 3.33).
4.1.4.
229
230
CAPITULO 4. DISENO
231
Obtener nombre La Figura 4.44 corresponde al diagrama de secuencia del texto del caso de uso de la pagina 82, y diagrama de robustez
de la pagina 151 (Figura 3.35).
232
CAPITULO 4. DISENO
Obtener n
umero de entradas La Figura 4.45 corresponde al diagrama de secuencia del texto del caso de uso de la pagina 83, y diagrama
de robustez de la pagina 151 (Figura 3.36).
233
Enlazar neurona La Figura 4.46 corresponde al diagrama de secuencia del texto del caso de uso de la pagina 83, y diagrama de robustez
de la pagina 152 (Figura 3.37).
234
CAPITULO 4. DISENO
Desenlazar neurona La Figura 4.47 corresponde al diagrama de
secuencia del texto del caso de uso de la pagina 85, y diagrama de
robustez de la pagina 152 (Figura 3.38).
235
Obtener estado de un enlace La Figura 4.48 corresponde al diagrama de secuencia del texto del caso de uso de la pagina 86, y diagrama
de robustez de la pagina 153 (Figura 3.39).
236
CAPITULO 4. DISENO
Obtener con quien se relaciona La Figura 4.49 corresponde al
diagrama de secuencia del texto del caso de uso de la pagina 87, y
diagrama de robustez de la pagina 153 (Figura 3.40).
237
Obtener nombre de la neurona enlazada La Figura 4.50 corresponde al diagrama de secuencia del texto del caso de uso de la pagina
87, y diagrama de robustez de la pagina 154 (Figura 3.41).
238
CAPITULO 4. DISENO
Obtener peso enlace La Figura 4.51 corresponde al diagrama de
secuencia del texto del caso de uso de la pagina 89, y diagrama de
robustez de la pagina 154 (Figura 3.42).
239
240
CAPITULO 4. DISENO
Obtener funci
on base La Figura 4.53 corresponde al diagrama de
secuencia del texto del caso de uso de la pagina 91, y diagrama de
robustez de la pagina 156 (Figura 3.44).
241
Cambiar funci
on base La Figura 4.54 corresponde al diagrama de
secuencia del texto del caso de uso de la pagina 92, y diagrama de
robustez de la pagina 156 (Figura 3.45).
242
CAPITULO 4. DISENO
Definir nueva funci
on base Las Figuras 4.55, 4.56, y 4.57 corresponden al diagrama de secuencia del texto del caso de uso de la pagina
92, y diagrama de robustez de la pagina 157 (Figura 3.46).
243
244
CAPITULO 4. DISENO
245
Cargar funci
on base La Figura 4.58 corresponde al diagrama de
secuencia del texto del caso de uso de la pagina 94, y diagrama de
robustez de la pagina 158 (Figura 3.47).
246
CAPITULO 4. DISENO
Obtener funci
on de activaci
on La Figura 4.59 corresponde al diagrama de secuencia del texto del caso de uso de la pagina 95, y diagrama de robustez de la pagina 158 (Figura 3.48).
247
Cambiar funci
on de activaci
on La Figura 4.60 corresponde al diagrama de secuencia del texto del caso de uso de la pagina 96, y diagrama de robustez de la pagina 159 (Figura 3.49).
248
CAPITULO 4. DISENO
Definir nueva funci
on de activaci
on Las Figuras 4.61, 4.62 y 4.63
corresponden al diagrama de secuencia del texto del caso de uso de la
pagina 97, y diagrama de robustez de la pagina 160 (Figura 3.50).
249
250
CAPITULO 4. DISENO
251
Cargar funci
on de activaci
on La Figura 4.64 corresponde al diagrama de secuencia del texto del caso de uso de la pagina 99, y diagrama
de robustez de la pagina 161 (Figura 3.51).
252
CAPITULO 4. DISENO
Obtener funci
on de transferencia La Figura 4.65 corresponde al
diagrama de secuencia del texto del caso de uso de la pagina 99, y
diagrama de robustez de la pagina 161 (Figura 3.52).
253
Cambiar funci
on de transferencia La Figura 4.66 corresponde al
diagrama de secuencia del texto del caso de uso de la pagina 100, y
diagrama de robustez de la pagina 162 (Figura 3.53).
254
CAPITULO 4. DISENO
Definir nueva funci
on de transferencia Las Figuras 4.67, 4.67 y
4.69 corresponden al diagrama de secuencia del texto del caso de uso
de la pagina 101, y diagrama de robustez de la pagina 163 (Figura
3.54).
255
256
CAPITULO 4. DISENO
257
Cargar funci
on de transferencia La Figura 4.70 corresponde al
diagrama de secuencia del texto del caso de uso de la pagina 103, y
diagrama de robustez de la pagina 164 (Figura 3.55).
258
CAPITULO 4. DISENO
Obtener umbral de activaci
on La Figura 4.71 corresponde al diagrama de secuencia del texto del caso de uso de la pagina 104, y
diagrama de robustez de la pagina 164 (Figura 3.56).
259
260
CAPITULO 4. DISENO
Obtener potencial de activaci
on La Figura 4.73 corresponde al
diagrama de secuencia del texto del caso de uso de la pagina 106, y
diagrama de robustez de la pagina 166 (Figura 3.58).
261
262
CAPITULO 4. DISENO
Obtener valor de salida La Figura 4.75 corresponde al diagrama de
secuencia del texto del caso de uso de la pagina 107, y diagrama de
robustez de la pagina 167 (Figura 3.60).
263
264
CAPITULO 4. DISENO
265
Asignar monitor La Figura 4.78 corresponde al diagrama de secuencia del texto del caso de uso de la pagina 110, y diagrama de robustez
de la pagina 169 (Figura 3.62).
266
CAPITULO 4. DISENO
Desasignar monitor La Figura 4.79 corresponde al diagrama de secuencia del texto del caso de uso de la pagina 111, y diagrama de
robustez de la pagina 170 (Figura 3.63).
267
268
CAPITULO 4. DISENO
269
270
CAPITULO 4. DISENO
Cargar monitor La Figura 4.83 corresponde al diagrama de secuencia
del texto del caso de uso de la pagina 114, y diagrama de robustez de
la pagina 172 (Figura 3.65).
4.1.5.
271
Crear red Las Figuras 4.84 y 4.85 corresponden al diagrama de secuencia del texto del caso de uso de la pagina 114, y diagrama de
robustez de la pagina 173 (Figura 3.66).
272
CAPITULO 4. DISENO
273
Obtener nombre La Figura 4.86 corresponde al diagrama de secuencia del texto del caso de uso de la pagina 116, y diagrama de robustez
de la pagina 174 (Figura 3.67).
274
CAPITULO 4. DISENO
Definir nueva red neuronal Las Figuras 4.87, 4.88 y 4.89 corresponden al diagrama de secuencia del texto del caso de uso de la pagina
117, y diagrama de robustez de la pagina 175 (Figura 3.68).
275
276
CAPITULO 4. DISENO
277
278
CAPITULO 4. DISENO
Ejecutar red La Figura 4.91 corresponde al diagrama de secuencia
del texto del caso de uso de la pagina 120, y diagrama de robustez de
la pagina 176 (Figura 3.70).
279
Generar aplicaci
on La Figura 4.92 corresponde al diagrama de secuencia del texto del caso de uso de la pagina 121, y diagrama de
robustez de la pagina 177 (Figura 3.71).
CAPITULO 4. DISENO
280
4.2.
Diagrama de clases
281
282
CAPITULO 4. DISENO
283
284
CAPITULO 4. DISENO
285
286
CAPITULO 4. DISENO
287
288
4.3.
CAPITULO 4. DISENO
Revisi
on crtica del dise
no (CDR)
289
290
CAPITULO 4. DISENO
IMPLEMENTACION
Las siguientes son algunas de las recomendaciones[16] que se deben
tomar en consideracion para realizar la implementaci
on:
Aseg
urese de orientar la codificacion directamente desde el dise
no.
Si al codificar descubre en el dise
no algo malo en alg
un sentido, cambielo.
Pero tambien revise el proceso.
Mantenga regularmente inspeccionando el codigo.
Siempre cuestione el framework seleccionado en el dise
no.
No permita que cuestiones del framework tome el control sobre asuntos
del negocio.
Si el comenzar la codificacion se sale de control, detengase y regrese al
dise
no.
Mantenga el dise
no y el codigo sincronizados.
Enfoquese sobre las pruebas unitarias mientras implementa el codigo.
No sobre documente su codigo, porque pierde mantenibilidad y dificulta su lectura.
Recuerde implementar tanto los cursos alternos como los cursos basicos.
292
5.1.
CAPITULO 5. IMPLEMENTACION
Comentarios cortos
Cada clase se encuentra debidamente documentada usando JavaDoc.
Cada clase tiene un comentario corto que ayuda a vislumbrar el
objetivo de dicha clase, por ejemplo:
Cuadro 1: Ejemplo del comentario de una clase
/**
* Esta clase representa a las neuronas de retardo. Una neurona de retardo es una
* neurona que almacena dos valores y que retorna el primero cuando se le es
* solicitado y lo actualiza con l segundo cuando se requiera. Se utiliza para
* convertir redes neuronales din
amicas en est
aticas. Es equivalente a Z^(-1).
*
* @author Juli
an Esteban Guti
errez Posada
* @version 1.0
* @created Dic-2007
*/
Cada metodo tambien posee un comentario que ayuda a su comprension, por ejemplo:
Cuadro 2: Ejemplo del comentario de una m
etodo
/**
* M
etodo que desenlaza una neurona determinada en una entrada especificada.
* @param numeroDeLaEntrada N
umero de la entrada en donde se desea desenlazar
*
la neurona.
* @return Retorna el estado del enlace "<Libre>" o "<Conectado>".
* @throws java.lang.Exception Si el n
umero de la entrada es inv
alida
*/
public String obtenerEstadoDelEnlaceDeLaEntrada( int numeroDeLaEntrada )
throws Exception
{
...
}
5.2. PARTICULARIDADES DE LA IMPLEMENTACION
293
5.2.
Particularidades de la implementaci
on
5.2.1.
CAPITULO 5. IMPLEMENTACION
294
Como se puede observar en el codigo del Cuadro 3, se verifica la existencia del archivo usuario.jar en la carpeta lib, de existir, se le hace una
copia nuevoUsuario.jar, y se le adiciona a dicha copia la carpeta en donde
se genero el nuevo archivo .class. De no existir, simplemente se crea el
archivo usuario.jar con dicha carpeta.
Posteriormente, se realiza una copia del archivo nuevoUsuario.jar con
el nuevo nombre de usuario.jar, logrando as modicarlo. Los pasos finales,
simplemente son la eliminacion de los archivos generados por la aplicacion
y por el proceso de compilacion.
5.2.2.
Como se observo en la seccion anterior, en algunas ocasiones es necesario adicionar un archivo .class al archivo usuario.jar. Hasta no existe
dificultad, salvo que dicho archivo se encuentra en uso por la aplicacion
principal. Lo anterior tiene como consecuencia que la aplicacion principal
no reconoce la clase adicionada sino hasta despues de su reiniciacion, lo cual
es un problema.
5.2. PARTICULARIDADES DE LA IMPLEMENTACION
295
El codigo del Cuadro 4, permite resolver este problema, al cargar dinamicamente un archivo jar y de el instanciar una clase determinada. De nuevo,
estos pasos se repiten para los otros tipos de monitores.
Si el objeto a instanciar posee un metodo constructor con argumentos,
es necesario usar las instrucciones que se observan en el Cuadro 5.
Cuadro 5: Instanciar un objeto con inicializaci
on,
de una clase y jar especificados
ClassLoader cargador = new URLClassLoader ( new URL[] {
new File ("lib//usuario.jar")
.toURI().toURL()
}
);
Class c = cargador.loadClass( tipoDeNeurona );
Constructor constructor = c.getConstructor( new Class[]{ String.class } );
neurona = ( NeuronaDeRetardo ) constructor.newInstance( nombreNeurona );
CAPITULO 5. IMPLEMENTACION
296
5.3.
5.3.1.
Aplicaci
on
5.3. PLANTILLAS PARA GENERAR CODIGO
5.3.2.
297
Funci
on Base
CAPITULO 5. IMPLEMENTACION
298
5.3.3.
Funci
on de activaci
on
5.3. PLANTILLAS PARA GENERAR CODIGO
5.3.4.
299
Funci
on de transferencia
5.3.5.
Manifest
CAPITULO 5. IMPLEMENTACION
300
5.3.6.
public nombre ()
{
// Constructor
}
5.3. PLANTILLAS PARA GENERAR CODIGO
5.3.7.
301
public nombre ()
{
// Constructor
}
CAPITULO 5. IMPLEMENTACION
302
5.3.8.
public nombre ()
{
// Constructor
}
5.3. PLANTILLAS PARA GENERAR CODIGO
5.3.9.
303
public nombre ()
{
super ( \"Nueva neurona de retardo -> \\\""+ nombre +"\\\"\" );
// Constructor
}
public double obtenerSiguienteValorFuturo()
{
double valorSiguiente = 0.0;
// codigoFuncion
return valorSiguiente;
}
CAPITULO 5. IMPLEMENTACION
304
5.3.10.
Red Neuronal
neuronal.redneuronal.RedNeuronal;
neuronal.neurona.NeuronaDeProceso;
neuronal.neurona.NeuronaDeRetardo;
neuronal.neurona.NeuronaDeEntrada;
import javax.swing.JOptionPane;
public class nombreRed extends RedNeuronal
{
// Variables modelo
public nombreRed ( String nombre )
{
super ( "Nueva red neuronal " + nombreRed + " -> " + nombre );
}
public
{
void ejecutarRed( )
// C
odigo de funcionamiento
}
// M
etodos de aprendizaje
}
PRUEBAS
Hoy por hoy, las pruebas se han convertido en una tarea de suma importancia en el desarrollo de cualquier software, debido principalmente al
aumento en el tama
no y complejidad de los mismos.
Las siguientes son algunas de las recomendaciones[16] que se deben
tomar en consideracion para realizar las pruebas:
Adoptar un conjunto de pruebas en donde cada error encontrado es
una victoria y no un defecto.
Comprender la diferencia entre los tipos de pruebas y cuando y por
que debe usar cada una (Ver figura 6.1).
Cree una o mas pruebas por cada control que aparezca en el diagrama
de robustez.
Para sistemas en tiempo real, use los elementos de los diagramas de
estados como basicos para los casos de prueba.
Haga verificacion a nivel de requerimientos, chequeando que cada requerimiento identificado este explicado.
CAPITULO 6. PRUEBAS
306
307
Pruebas del sistema: Prueba los requerimientos funcionales del software (casos de uso y procesos de negocio).
Pruebas de aceptaci
on: Pruebas conducidas por los clientes para
determinar si el sistema re
une los requerimientos especificados en el
contrato. Es en este punto importante realizar Pruebas beta con
usuarios finales.
Pruebas de liberaci
on: Verifica que el producto finalizado refleja
correctamente los casos de negocio.
Pruebas de requerimientos no funcionales: Pruebas no relacionadas con la funcionalidad, sino con el desempe
no, la usabilidad, la
seguridad, etc.
Pruebas de desempe
no: Pruebas conducidas para evaluar la obediencia del sistema o componente con unos requerimientos de desempe
no especificados.
Pruebas del stress: Pruebas conducentes a evaluar un sistema o
componente mas alla de los lmites de sus requerimientos especificados.
Pruebas de volumen: Probando donde el sistema esta expuesto a
grandes vol
umenes de datos.
6.1.
308
CAPITULO 6. PRUEBAS
309
CAPITULO 6. PRUEBAS
310
6.2.
Pruebas en DiscoLaboratorioVirtualRNATest
311
PROCEDIMIENTO
RESULTADO ESPERADO
Solicitar a la clase
DiscoLaboratorioVirtualRNA
obtenerTiposDeMonitoresANeuronasDeEntrada
RESULTADO ESPERADO
Solicitar a la clase
DiscoLaboratorioVirtualRNA
buscarMonitorNeuronaDeEntrada llamado
Prueba.class
Un boolean que
contiene true
RESULTADO ESPERADO
Solicitar a la clase
DiscoLaboratorioVirtualRNA
construirClaseMonitorNeuronaDeEntrada
llamado 1.java
Un archivo llamado
1.java
CAPITULO 6. PRUEBAS
312
PROCEDIMIENTO
RESULTADO ESPERADO
Solicitar a la clase
DiscoLaboratorioVirtualRNA
almacenarFragmentosDeCodigoMonitor . . .
. . . NeuronaDeEntrada llamado 1.MNE
Un archivo llamado
1.MNE
RESULTADO ESPERADO
Solicitar a la clase
DiscoLaboratorioVirtualRNA
cargarNuevoMonitorNeuronaDeEntrada
llamado 1.MNE
Un String[] que
contiene { "1", "2",
"3", "4", "5" }
RESULTADO ESPERADO
Solicitar a la clase
DiscoLaboratorioVirtualRNA
obtenerTiposDeMonitoresANeuronasDeRetardo
Un String[] que
contiene Prueba.class
313
PROCEDIMIENTO
RESULTADO ESPERADO
Solicitar a la clase
DiscoLaboratorioVirtualRNA
buscarMonitorNeuronaDeRetardo llamado
Prueba.class
Un boolean que
contiene true
RESULTADO ESPERADO
Solicitar a la clase
DiscoLaboratorioVirtualRNA
construirClaseMonitorNeuronaDeRetardo
llamado 1.java
Un archivo llamado
1.java
RESULTADO ESPERADO
Solicitar a la clase
DiscoLaboratorioVirtualRNA
almacenarFragmentosDeCodigoMonitor . . .
. . . NeuronaDeRetardo llamado 1.MNR
Un archivo llamado
1.MNR
CAPITULO 6. PRUEBAS
314
PROCEDIMIENTO
RESULTADO ESPERADO
Solicitar a la clase
DiscoLaboratorioVirtualRNA
cargarNuevoMonitorNeuronaDeRetardo
llamado 1.MNR
Un String[] que
contiene { "1", "2",
"3", "4", "5" }
RESULTADO ESPERADO
Solicitar a la clase
DiscoLaboratorioVirtualRNA
obtenerTiposDeMonitoresANeuronasDeProceso
Un String[] que
contiene Prueba.class
RESULTADO ESPERADO
Solicitar a la clase
DiscoLaboratorioVirtualRNA
buscarMonitorNeuronaDeProceso llamado
Prueba.class
Un boolean que
contiene true
315
PROCEDIMIENTO
RESULTADO ESPERADO
Solicitar a la clase
DiscoLaboratorioVirtualRNA
construirClaseMonitorNeuronaDeProceso
llamado 1.java
Un archivo llamado
1.java
RESULTADO ESPERADO
Solicitar a la clase
DiscoLaboratorioVirtualRNA
almacenarFragmentosDeCodigoMonitor . . .
. . . NeuronaDeProceso llamado 1.MNP
Un archivo llamado
1.MNP
RESULTADO ESPERADO
Solicitar a la clase
DiscoLaboratorioVirtualRNA
cargarNuevoMonitorNeuronaDeProceso
llamado 1.MNP
Un String[] que
contiene { "1", "2",
"3", "4", "5" }
CAPITULO 6. PRUEBAS
316
PROCEDIMIENTO
RESULTADO ESPERADO
Solicitar a la clase
DiscoLaboratorioVirtualRNA
obtenerFuncionesBase
Un String[] que
contiene Prueba.class
RESULTADO ESPERADO
Solicitar a la clase
DiscoLaboratorioVirtualRNA
buscarFuncionBase llamado
Prueba.class
Un boolean que
contiene true
RESULTADO ESPERADO
Solicitar a la clase
DiscoLaboratorioVirtualRNA
construirClaseFuncionBase
llamado 1.java
Un archivo llamado
1.java
RESULTADO ESPERADO
Solicitar a la clase
DiscoLaboratorioVirtualRNA
almacenarFragmentosDeCodigo . . .
. . . FuncionBase llamado 1.TFB
Un archivo llamado
1.TFB
317
RESULTADO ESPERADO
Solicitar a la clase
DiscoLaboratorioVirtualRNA
cargarNuevaFuncionBase
llamado 1.TFB
Un String[] que
contiene { "1", "2" }
RESULTADO ESPERADO
Solicitar a la clase
DiscoLaboratorioVirtualRNA
obtenerFuncionesDeActivacion
Un String[] que
contiene Prueba.class
CAPITULO 6. PRUEBAS
318
PROCEDIMIENTO
RESULTADO ESPERADO
Solicitar a la clase
DiscoLaboratorioVirtualRNA
buscarFuncionDeActivacion llamado
Prueba.class
Un boolean que
contiene true
RESULTADO ESPERADO
Solicitar a la clase
DiscoLaboratorioVirtualRNA
construirClaseFuncionDeActivacion
llamado 1.java
Un archivo llamado
1.java
RESULTADO ESPERADO
Solicitar a la clase
DiscoLaboratorioVirtualRNA
almacenarFragmentosDeCodigo . . .
. . . FuncionDeActivacion llamado 1.TFA
Un archivo llamado
1.TFA
RESULTADO ESPERADO
Solicitar a la clase
DiscoLaboratorioVirtualRNA
cargarNuevaFuncionDeActivacion
llamado 1.TFA
Un String[] que
contiene { "1", "2" }
319
RESULTADO ESPERADO
Solicitar a la clase
DiscoLaboratorioVirtualRNA
obtenerFuncionesDeTransferencia
Un String[] que
contiene Prueba.class
RESULTADO ESPERADO
Solicitar a la clase
DiscoLaboratorioVirtualRNA
buscarFuncionDeTransferencia llamado
Prueba.class
Un boolean que
contiene true
CAPITULO 6. PRUEBAS
320
PROCEDIMIENTO
RESULTADO ESPERADO
Solicitar a la clase
DiscoLaboratorioVirtualRNA
construirClaseFuncionDeTransferencia
llamado 1.java
Un archivo llamado
1.java
RESULTADO ESPERADO
Solicitar a la clase
DiscoLaboratorioVirtualRNA
almacenarFragmentosDeCodigo . . .
. . . FuncionDeTransferencia llamado 1.TFT
Un archivo llamado
1.TFT
RESULTADO ESPERADO
Solicitar a la clase
DiscoLaboratorioVirtualRNA
cargarNuevaFuncionDeTransferencia
llamado 1.TFA
Un String[] que
contiene { "1", "2" }
RESULTADO ESPERADO
Solicitar a la clase
DiscoLaboratorioVirtualRNA
obtenerTiposDeRedesNeuronales
Un String[] que
contiene Prueba.class
321
RESULTADO ESPERADO
Solicitar a la clase
DiscoLaboratorioVirtualRNA
buscarRedNeuronal llamado
Prueba.class
Un boolean que
contiene true
RESULTADO ESPERADO
Solicitar a la clase
DiscoLaboratorioVirtualRNA
construirClaseRedNeuronal
llamado 1.java
Un archivo llamado
1.java
CAPITULO 6. PRUEBAS
322
PROCEDIMIENTO
RESULTADO ESPERADO
Solicitar a la clase
DiscoLaboratorioVirtualRNA
almacenarFragmentosDeCodigo . . .
. . . RedNeuronal llamado 1.TRN
Un archivo llamado
1.TRN
RESULTADO ESPERADO
Solicitar a la clase
DiscoLaboratorioVirtualRNA
cargarNuevaRedNeuronal
llamado 1.TRN
Un String[] que
contiene { "1", "2",
"3", "4", "5" }
RESULTADO ESPERADO
Solicitar a la clase
DiscoLaboratorioVirtualRNA
obtenerTipoValorFuturo
Un String[] que
contiene Prueba.class
RESULTADO ESPERADO
Solicitar a la clase
DiscoLaboratorioVirtualRNA
buscarTipoValorFuturo llamado
Prueba.class
Un boolean que
contiene true
323
RESULTADO ESPERADO
DiscoLaboratorioVirtualRNA
construirClaseTipoValorFuturo
llamado 1.java
1.java
RESULTADO ESPERADO
DiscoLaboratorioVirtualRNA
almacenarFragmentosDeCodigo . . .
. . . RedNeuronal llamado 1.TVF
1.TVF
CAPITULO 6. PRUEBAS
324
PROCEDIMIENTO
RESULTADO ESPERADO
Solicitar a la clase
DiscoLaboratorioVirtualRNA
cargarNuevoValorFuturo
llamado 1.TRN
Un String[] que
contiene { "1", "2",
"3", "4", "5" }
RESULTADO ESPERADO
No encontrar un archivo
llamado Prueba.java
RESULTADO ESPERADO
No encontrar ni el archivo,
ni los directorios.
325
PROCEDIMIENTO
RESULTADO ESPERADO
Solicitar a la clase
DiscoLaboratorioVirtualRNA
crearArchivoManifestDeAplicacionDeUsuario
Encontrar un archivo
llamado Manifest.JEG
RESULTADO ESPERADO
Solicitar a la clase
DiscoLaboratorioVirtualRNA
construirClaseAplicacionDeUsuario
Encontrar un archivo
llamado AplicacionDeUsuario.java
6.3.
Pruebas en DiscoTest
CAPITULO 6. PRUEBAS
326
1. Prueba guardarInformacion
RESULTADO ESPERADO
Ning
un error en la creacion del
archivo.
RESULTADO ESPERADO
Solicitar a la clase
Disco
cargarInformacion de un
archivo llamado PruebaGuardarOBJ.prueba
Un String que
contiene la cadena almacenada
en la prueba anterior.
327
PROCEDIMIENTO
RESULTADO ESPERADO
Ning
un error en la creacion del
archivo.
PROCEDIMIENTO
RESULTADO ESPERADO
Solicitar a la clase
Disco
obtenerListaDeArchivos del
directorio de pruebas.
Un String[] que
contiene { PruebaGuardarOBJ.prueba y
PruebaGuardarTXT.prueba }
PROCEDIMIENTO
RESULTADO ESPERADO
Solicitar a la clase
Disco
obtenerListaDeArchivos
y determinar la cantidad de ellos,
luego se le solicita a la misma clase
que haga copiarArchivo de un
archivo especificado, finalmente se
vuelve a determinar la cantidad de
archivos
CAPITULO 6. PRUEBAS
328
6. Prueba ejecutarAplicativo
RESULTADO ESPERADO
Se le solicita a la clase
Disco
ejecutarAplicativo en una
aplicacion llamada java -version.
Ning
un error en la ejecucion de la
aplicacion.
RESULTADO ESPERADO
Un boolean que
contiene false
RESULTADO ESPERADO
Se le solicita a la clase
Disco
eliminarContenidoDeUnaCarpeta de la
carpeta llamada ArchivosDePrueba,
obtener la cantidad de archivos de y
dicha carpeta y verificar que sea cero.
Un int que
contenga cero.
6.4.
329
Pruebas en ListaDeNeuronasTest
RESULTADO ESPERADO
Un String que
contiene Neurona de Entrada
CAPITULO 6. PRUEBAS
330
PROCEDIMIENTO
RESULTADO ESPERADO
Un String que
contiene Neurona de Retardo
PROCEDIMIENTO
RESULTADO ESPERADO
Un String que
contiene Neurona de Proceso
PROCEDIMIENTO
RESULTADO ESPERADO
6.5.
331
Pruebas en ListaDeRedesNeuronalesTest
RESULTADO ESPERADO
Se crea un objeto
ListaDeRedesNeuronales, luego se
le pide a dicho objeto que adicione
una nueva red neuronal cuyo nombre es
Backpropagation de prueba,
posteriormente se le pide
buscarRedNeuronal al objeto lista
cuyo nombre sea el especificado y
finalmente se compara el nombre de la
red neuronal encontrada con el nombre
de la red neuronal adicionada.
Un String que
contiene Backpropagation de prueba
CAPITULO 6. PRUEBAS
332
PROCEDIMIENTO
RESULTADO ESPERADO
6.6.
Pruebas en ListaDeVariablesTest
333
RESULTADO ESPERADO
Un Object que
contiene null
CAPITULO 6. PRUEBAS
334
PROCEDIMIENTO
RESULTADO ESPERADO
Un String que
contiene N.Entrada 1
RESULTADO ESPERADO
Un String que
contiene N.Retardo 1
RESULTADO ESPERADO
Un String que
contiene N.Proceso 1
335
5. Prueba adicionarVariable4
El objetivo de esta prueba (Ver Cuadro 6.63) es para verificar la adicion
de una red neuronal.
PROCEDIMIENTO
RESULTADO ESPERADO
RESULTADO ESPERADO
CAPITULO 6. PRUEBAS
336
PROCEDIMIENTO
RESULTADO ESPERADO
PROCEDIMIENTO
RESULTADO ESPERADO
337
9. Prueba obtenerListadoDeVariablesANeuronasDeEntrada
El objetivo de esta prueba (Ver Cuadro 6.67) es obtener una lista de
las variables a neuronas de entrada.
PROCEDIMIENTO
RESULTADO ESPERADO
Un TreeSet<String> que
contiene N.Entrada 1 y
N.Entrada 1.
RESULTADO ESPERADO
Un TreeSet<String> que
contiene N.Retardo 1 y
N.Retardo 1.
RESULTADO ESPERADO
Un TreeSet<String> que
contiene N.Proceso 1 y
N.Proceso 1.
CAPITULO 6. PRUEBAS
338
PROCEDIMIENTO
RESULTADO ESPERADO
Un TreeSet<String> que
contiene N.Entrada 1,
N.Entrada 1, N.Retardo 1,
N.Retardo 2, N.Proceso 1 y
N.Proceso 2.
RESULTADO ESPERADO
Un TreeSet<String> que
contiene Monitor N.Entrada 1 y
Monitor N.Entrada 2.
RESULTADO ESPERADO
Un TreeSet<String> que
contiene Monitor N.Retardo 1 y
Monitor N.Retardo 2.
339
PROCEDIMIENTO
RESULTADO ESPERADO
Un TreeSet<String> que
contiene Monitor N.Proceso 1 y
Monitor N.Proceso 2.
RESULTADO ESPERADO
Un TreeSet<String> que
contiene R.Neuronal 1 y
R.Neuronal 1.
RESULTADO ESPERADO
Un int que
contiene 0.
(por defecto ninguna
se encuentra con enlaces)
CAPITULO 6. PRUEBAS
340
PROCEDIMIENTO
RESULTADO ESPERADO
Un TreeSet<String> que
contiene N.Proceso 2
RESULTADO ESPERADO
Un boolean que
contiene false.
(por defecto ninguna
se encuentra con enlaces)
341
PROCEDIMIENTO
RESULTADO ESPERADO
Un boolean que
contiene true.
PROCEDIMIENTO
RESULTADO ESPERADO
Un boolean que
contiene false.
CAPITULO 6. PRUEBAS
342
6.7.
Pruebas en FuncionEscalonBipolarTest
RESULTADO ESPERADO
Un double que
contiene 1.0.
RESULTADO ESPERADO
Un double que
contiene 1.0.
343
PROCEDIMIENTO
RESULTADO ESPERADO
Un double que
contiene -1.0.
RESULTADO ESPERADO
6.8.
Pruebas en FuncionEscalonUnipolarTest
RESULTADO ESPERADO
Un double que
contiene 1.0.
CAPITULO 6. PRUEBAS
344
2. Prueba obtenerValor2
RESULTADO ESPERADO
Un double que
contiene 1.0.
RESULTADO ESPERADO
Un double que
contiene 0.0.
RESULTADO ESPERADO
6.9.
Pruebas en FuncionIdentidadTest
345
RESULTADO ESPERADO
Un double que
contiene 0.0.
RESULTADO ESPERADO
Un double que
contiene 5.0.
RESULTADO ESPERADO
Un double que
contiene -5.0.
CAPITULO 6. PRUEBAS
346
PROCEDIMIENTO
RESULTADO ESPERADO
6.10.
Pruebas en FuncionLinealMixtaBipolarTest
RESULTADO ESPERADO
Un double que
contiene 0.0.
347
PROCEDIMIENTO
RESULTADO ESPERADO
Un double que
contiene 1.0.
RESULTADO ESPERADO
Un double que
contiene -1.0.
RESULTADO ESPERADO
6.11.
Pruebas en FuncionLinealMixtaUnipolarTest
CAPITULO 6. PRUEBAS
348
PROCEDIMIENTO
RESULTADO ESPERADO
Un double que
contiene 0.5.
RESULTADO ESPERADO
Un double que
contiene 1.0.
RESULTADO ESPERADO
Un double que
contiene 0.0.
RESULTADO ESPERADO
6.12.
Pruebas en FuncionSigmoidalBipolarTest
349
RESULTADO ESPERADO
Un double que
contiene 0.0.
RESULTADO ESPERADO
Un double que
contiene 0.999.
CAPITULO 6. PRUEBAS
350
PROCEDIMIENTO
RESULTADO ESPERADO
Un double que
contiene -0.999.
RESULTADO ESPERADO
6.13.
Pruebas en FuncionSigmoidalUnipolarTest
351
PROCEDIMIENTO
RESULTADO ESPERADO
Un double que
contiene 0.5.
RESULTADO ESPERADO
Un double que
contiene 0.993.
RESULTADO ESPERADO
Un double que
contiene 0.006.
RESULTADO ESPERADO
6.14.
Pruebas en FuncionBaseLinealTest
CAPITULO 6. PRUEBAS
352
RESULTADO ESPERADO
Un double que
contiene 130.0.
RESULTADO ESPERADO
353
3. Prueba obtenerValor3
El objetivo de esta prueba (Ver Cuadro 6.110) es evaluar las entrada
= 1.0, 2.0, 3.0, 4.0 y los pesos = 6.0, 7.0, 8.0, 9.0, 10.0 (FALTANDO
UNA ENTRADA).
PROCEDIMIENTO
RESULTADO ESPERADO
RESULTADO ESPERADO
6.15.
Pruebas en FuncionBaseRadicalTest
CAPITULO 6. PRUEBAS
354
1. Prueba obtenerValor1
RESULTADO ESPERADO
Un double que
contiene 11.180.
RESULTADO ESPERADO
RESULTADO ESPERADO
355
4. Prueba obtenerNombre
El objetivo de esta prueba (Ver Cuadro 6.115) es obtener el nombre
de la funcion.
PROCEDIMIENTO
RESULTADO ESPERADO
6.16.
Pruebas en FuncionDeActivacionTest
1. Prueba obtenerValorFuncionEscalonBipolar
El objetivo de esta prueba (Ver Cuadro 6.116) es evaluar el valor 3.0
con la funcion escalon bipolar.
2. Prueba obtenerNombreFuncionEscalonBipolar
El objetivo de esta prueba (Ver Cuadro 6.117) es obtener el nombre
de la funcion escalon bipolar.
CAPITULO 6. PRUEBAS
356
PROCEDIMIENTO
RESULTADO ESPERADO
PROCEDIMIENTO
RESULTADO ESPERADO
PROCEDIMIENTO
RESULTADO ESPERADO
357
3. Prueba obtenerValorFuncionEscalonUnipolar
El objetivo de esta prueba (Ver Cuadro 6.118) es evaluar el valor 3.0
con la funcion escalon unipolar.
4. Prueba obtenerNombreFuncionEscalonUnipolar
El objetivo de esta prueba (Ver Cuadro 6.119) es obtener el nombre
de la funcion escalon unipolar.
PROCEDIMIENTO
RESULTADO ESPERADO
RESULTADO ESPERADO
CAPITULO 6. PRUEBAS
358
PROCEDIMIENTO
RESULTADO ESPERADO
PROCEDIMIENTO
RESULTADO ESPERADO
PROCEDIMIENTO
RESULTADO ESPERADO
359
9. Prueba obtenerValorFuncionLinealMixtaUnipolar
El objetivo de esta prueba (Ver Cuadro 6.124) es evaluar el valor 3.0
con la funcion lineal mixta unipolar.
PROCEDIMIENTO
RESULTADO ESPERADO
RESULTADO ESPERADO
RESULTADO ESPERADO
CAPITULO 6. PRUEBAS
360
RESULTADO ESPERADO
RESULTADO ESPERADO
RESULTADO ESPERADO
6.17.
361
Pruebas en FuncionDeTransferenciaTest
RESULTADO ESPERADO
CAPITULO 6. PRUEBAS
362
PROCEDIMIENTO
RESULTADO ESPERADO
RESULTADO ESPERADO
RESULTADO ESPERADO
RESULTADO ESPERADO
363
RESULTADO ESPERADO
RESULTADO ESPERADO
CAPITULO 6. PRUEBAS
364
PROCEDIMIENTO
RESULTADO ESPERADO
RESULTADO ESPERADO
RESULTADO ESPERADO
RESULTADO ESPERADO
365
RESULTADO ESPERADO
RESULTADO ESPERADO
CAPITULO 6. PRUEBAS
366
PROCEDIMIENTO
RESULTADO ESPERADO
6.18.
Pruebas en NeuronaDeEntradaTest
1. Prueba obtenerNombreDeLaNeurona
El objetivo de esta prueba (Ver Cuadro 6.144) es obtener el nombre
de la neurona.
PROCEDIMIENTO
RESULTADO ESPERADO
Un String que
contiene Neurona de Entrada 1.
367
2. Prueba asignarMonitor
El objetivo de esta prueba (Ver Cuadro 6.145) es asignar un monitor.
Para realizar la prueba, es necesario asignar un monitor y realizar un
cambio en la neurona de entrada.
PROCEDIMIENTO
RESULTADO ESPERADO
Un double que
contiene 5.0.
RESULTADO ESPERADO
Un double que
contiene 0.0.
(valor por defecto
de un monitor)
CAPITULO 6. PRUEBAS
368
PROCEDIMIENTO
RESULTADO ESPERADO
Un double que
contiene 0.0.
RESULTADO ESPERADO
Un double que
contiene 7.0.
RESULTADO ESPERADO
Un String que
contiene .
6.19.
Pruebas en NeuronaDeProcesoTest
369
CAPITULO 6. PRUEBAS
370
1. Prueba obtenerNombreDeLaNeurona
RESULTADO ESPERADO
RESULTADO ESPERADO
Un double que
contiene 8.0.
RESULTADO ESPERADO
Un double que
contiene 5.0.
371
4. Prueba obtenerNumeroDeEntradas
El objetivo de esta prueba (Ver Cuadro 6.153) es obtener el n
umero
de entradas. Hay que tener presente que se retorna una mas de las
creadas en el momento de la instanciacion, pues la entrada del umbral
(interna) tambien cuenta como tal.
PROCEDIMIENTO
RESULTADO ESPERADO
RESULTADO ESPERADO
Un double que
contiene 5.0.
CAPITULO 6. PRUEBAS
372
PROCEDIMIENTO
RESULTADO ESPERADO
Un double que
contiene 0.0.
(valor por defecto
de un monitor)
RESULTADO ESPERADO
RESULTADO ESPERADO
RESULTADO ESPERADO
373
RESULTADO ESPERADO
Un double que
contiene 8.0.
RESULTADO ESPERADO
Un double que
contiene 4.0.
CAPITULO 6. PRUEBAS
374
PROCEDIMIENTO
RESULTADO ESPERADO
Un String que
contiene Funci
on base radical.
PROCEDIMIENTO
RESULTADO ESPERADO
Un String que
contiene Funci
on base radical.
PROCEDIMIENTO
RESULTADO ESPERADO
375
RESULTADO ESPERADO
RESULTADO ESPERADO
CAPITULO 6. PRUEBAS
376
PROCEDIMIENTO
RESULTADO ESPERADO
RESULTADO ESPERADO
RESULTADO ESPERADO
377
RESULTADO ESPERADO
RESULTADO ESPERADO
CAPITULO 6. PRUEBAS
378
RESULTADO ESPERADO
379
PROCEDIMIENTO
RESULTADO ESPERADO
RESULTADO ESPERADO
CAPITULO 6. PRUEBAS
380
RESULTADO ESPERADO
381
PROCEDIMIENTO
RESULTADO ESPERADO
RESULTADO ESPERADO
CAPITULO 6. PRUEBAS
382
PROCEDIMIENTO
RESULTADO ESPERADO
RESULTADO ESPERADO
RESULTADO ESPERADO
383
PROCEDIMIENTO
RESULTADO ESPERADO
RESULTADO ESPERADO
6.20.
Pruebas en NeuronaDeRetardoTest
CAPITULO 6. PRUEBAS
384
RESULTADO ESPERADO
385
PROCEDIMIENTO
RESULTADO ESPERADO
Un double que
contiene 5.0.
PROCEDIMIENTO
RESULTADO ESPERADO
Un double que
contiene 0.0.
(valor por defecto
de un monitor)
PROCEDIMIENTO
RESULTADO ESPERADO
CAPITULO 6. PRUEBAS
386
5. Prueba obtenerValorFuturo
RESULTADO ESPERADO
RESULTADO ESPERADO
RESULTADO ESPERADO
387
PROCEDIMIENTO
RESULTADO ESPERADO
RESULTADO ESPERADO
RESULTADO ESPERADO
CAPITULO 6. PRUEBAS
388
PROCEDIMIENTO
RESULTADO ESPERADO
RESULTADO ESPERADO
RESULTADO ESPERADO
RESULTADO ESPERADO
389
RESULTADO ESPERADO
RESULTADO ESPERADO
CAPITULO 6. PRUEBAS
390
RESULTADO ESPERADO
RESULTADO ESPERADO
391
RESULTADO ESPERADO
392
CAPITULO 6. PRUEBAS
Parte II
LABORATORIOS
393
GUIAS DE LABORATORIOS
(ESTUDIANTE)
396
397
7.1.
Instalaci
on del entorno de trabajo
Objetivos
Instalar el lenguaje de programacion Java 6.0 Update 3.
Instalar la documentacion de Java 6.
Instalar el entorno de programacion Netbeans-6.1.
Configurar en Windows la ruta (path) del compilador de Java.
Instalar el Laboratorio Virtual de Redes Neuronales con su respectivo material de apoyo.
Conceptos B
asicos
Experiencia en el manejo del sistema operativo Windows XP, experiencia en la instalacion de software y el manejo de archivos comprimidos.
Precauciones y Recomendaciones
Antes de iniciar la practica asegurarse de contar con todos los artefactos
del laboratorio que se requieren para desarrollar esta gua. CD difundido
en clase o acceso a un repositorio de archivos en la red de la Universidad
(consultar con el monitor de la sala).
398
Entregable:
Se debe entregar un disquete o CD que contenga un archivo Word con
mnimo: los codigos de los dos integrantes, los nombres, la fecha, las preguntas del taller y los respectivos resultados.
El archivo debe llamarse xxxxx_yyyyy_zz_RN.doc, en donde xxxxx y
yyyyy representan los codigos de los dos integrantes del grupo en orden
ascendente, zz representa el n
umero de la gua a cual pertenece el taller y
RN representa el nombre de la asignatura Redes Neuronales.
Se deben entregar ocho das despues de haber recibido la orden de ejecutar la presente gua.
Observaciones:
La entrega debe ser puntual, con todo lo que se solicita, respetando el
nombre del archivo y asegurandose de no tener Virus. La violacion de alguno
de estos elementos provocara una disminuci
on en la nota del laboratorio,
previo acuerdo con docente.
399
Procedimiento:
Pasos
1
Descripci
on
Ubique en el CD o en el repositorio de archivos de la red todos
los artefactos.
Ejecutar el instalador de Java
6 Update 3 y deje las opciones
por defecto.
Ejecutar el instalador de la
documentaci
on de Java y deje las opciones por defecto.
Ejecutar el instalador de
Netbeans 6.1 y deje las
opciones por defecto.
Abra el Panel de control
Sistema
Opciones
avanzadas
Variables
de entorno. Luego busque
y
modifique
la
variable
Path
en
las
Variables
de sistema
adicionando:
Comentario
Consultar al monitor sobre el
CD o el repositorio de archivos.
Consultar al monitor sobre
permisos para realizar esta
boratorio.
Consultar al monitor sobre
permisos para realizar esta
boratorio.
Consultar al monitor sobre
permisos para realizar esta
boratorio.
Consultar al monitor sobre
permisos para realizar esta
boratorio.
los
lalos
lalos
lalos
la-
;C:\Archivos de programa\Java\jdk1.6.0_03\bin
Taller:
1. Cuales son los nombres de los archivos necesarios para realizar el
montaje del entorno de trabajo? (Java 6.0 Update 3, Documentaci
on
de Java 6.0 y NetBeans)
2. Cual es la ruta en donde queda instalado Java 6.0 update 3 y la
respectiva documentacion?
3. Que contiene la carpeta Dist y explique brevemente cada uno?
4. Consulte en Internet para que se utiliza el archivo nimrodlf.jar.
400
401
7.2.
Objetivos
Aprender a crear un nuevo laboratorio.
Aprender a manipular neuronas de entrada.
Aprender a manipular monitores a neuronas de entrada.
Conceptos B
asicos
Experiencia en el manejo del sistema operativo Windows XP.
Precauciones y Recomendaciones
Antes de iniciar la practica asegurarse haber realizado correctamente la
gua educativa n
umero 001 Instalaci
on del entorno de trabajo.
Entregable:
Se debe entregar un disquete o CD que contenga un archivo Word con
mnimo: los codigos de los dos integrantes, los nombres, la fecha, las preguntas del taller y los respectivos resultados.
El archivo debe llamarse xxxxx_yyyyy_zz_RN.doc, en donde xxxxx y
yyyyy representan los codigos de los dos integrantes del grupo en orden
ascendente, zz representa el n
umero de la gua a cual pertenece el taller y
RN representa el nombre de la asignatura Redes Neuronales.
Se deben entregar ocho das despues de haber recibido la orden de ejecutar la presente gua.
402
Observaciones:
La entrega debe ser puntual, con todo lo que se solicita, respetando el
nombre del archivo y asegurandose de no tener Virus. La violacion de alguno
de estos elementos provocara una disminuci
on en la nota del laboratorio,
previo acuerdo con docente.
Procedimiento:
Pasos
1
Descripci
on
Ejecute el laboratorio virtual.
3
4
5
Comentario
Archivo LabVirtualRNA.jar
en la carpeta Dist.
Escriba o tenga pendiente estas
opciones.
Ubiquela en la opcion Archivo.
Importante si no se ha guardado el laboratorio previo.
Si desea use <br> para separarlos.
Descripci
on
Seleccione dos veces la opcion
Crear neurona.
Comentario
Ubiquela en la opcion Neurona
de Entrada, indique como
nombres de las variables a,
b y como nombres de las
neuronas Ne1, Ne2
Ubiquela en la opcion Neurona
de Entrada.
Ubiquela en la opcion Neurona
de Entrada.
Ubiquela en la opcion Neurona
de Entrada.
Descripci
on
Seleccione dos veces la opcion
Crear monitor.
6
7
403
Comentario
Ubiquela en la opcion Neurona
de Entrada, indique como
nombres de las variables
monitor1 y monitor2.
Ubiquela en la opcion Neurona
de Entrada.
Ubiquela en la opcion Neurona
de Entrada.
Ubiquela en la opcion Neurona
de Entrada.
Opcion Asignar monitor
Taller:
1. Cuales son las opciones de los men
us del LabVirtualRNA.jar que se
encuentran activadas por defecto?
404
405
17. Que sucede cuando hay cambios en las neuronas y ellas estan siendo
monitoreadas por el mismo monitor?
18. Cual es el mensaje que se muestra en la zona de reporte de actividades
una vez creado el nuevo monitor?
19. Que sucedio despues de realizar los cambios en las neuronas y de
tener asignado el nuevo monitor?
406
407
7.3.
Objetivos
Aprender a manipular neuronas de retardo.
Aprender a manipular monitores a neuronas de retardo.
Conceptos B
asicos
Experiencia en el manejo del sistema operativo Windows XP.
Precauciones y Recomendaciones
Antes de iniciar la practica asegurarse haber realizado correctamente la
gua educativa n
umero 001 Instalacion del entorno de trabajo y n
umero
002 Una neurona de entrada.
Entregable:
Se debe entregar un disquete o CD que contenga un archivo Word con
mnimo: los codigos de los dos integrantes, los nombres, la fecha, las preguntas del taller y los respectivos resultados.
El archivo debe llamarse xxxxx_yyyyy_zz_RN.doc, en donde xxxxx y
yyyyy representan los codigos de los dos integrantes del grupo en orden
ascendente, zz representa el n
umero de la gua a cual pertenece el taller y
RN representa el nombre de la asignatura Redes Neuronales.
Se deben entregar ocho das despues de haber recibido la orden de ejecutar la presente gua.
408
Observaciones:
La entrega debe ser puntual, con todo lo que se solicita, respetando el
nombre del archivo y asegurandose de no tener Virus. La violacion de alguno
de estos elementos provocara una disminuci
on en la nota del laboratorio,
previo acuerdo con docente.
Procedimiento:
Pasos
1
Descripci
on
Seleccione dos veces la opcion
Crear neurona.
Comentario
Ubiquela en la opcion Neurona
de Retardo, indique como
nombres de las variables c,
d y como nombres de las
neuronas Nr1, Nr2
Ubiquela en la opcion Neurona
de Retardo.
Ubiquela en la opcion Neurona
de Retardo.
Ubiquela en la opcion Neurona
de Retardo.
Descripci
on
Experiemente con el valor de
salida y el valor futuro.
Experiemente enlazando, desenlazando y obtiendo las relaciones y nombres de la neuronas enlazadas.
Defina
y
experimente
con un nuevo tipo de
valor
futuro
llamado
ValorFuturoDelDisco.
Comentario
Ubiquela en la opcion Neurona
de Retardo.
Ubiquela en la opcion Neurona
de Retardo.
Descripci
on
Seleccione dos veces la opcion
Crear monitor.
6
7
409
Comentario
Ubiquela en la opcion Neurona
de Entrada, indique como
nombres de las variables
monitor3 y monitor4.
Ubiquela en la opcion Neurona
de Retardo.
Ubiquela en la opcion Neurona
de Retardo.
Ubiquela en la opcion Neurona
de Retardo.
Opcion Asignar monitor
Taller:
1. Cual es el nombre del tipo de neurona de retardo por defecto?
2. Cual es el mensaje que se muestra en la zona de reporte de actividades
una vez creada la primera neurona de retardo?
410
411
412
413
7.4.
Objetivos
Aprender a manipular neuronas de proceso.
Aprender a manipular monitores a neuronas de proceso.
Conceptos B
asicos
Experiencia en el manejo del sistema operativo Windows XP.
Precauciones y Recomendaciones
Antes de iniciar la practica asegurarse haber realizado correctamente
la gua educativa n
umero 001 Instalacion del entorno de trabajo, n
umero
002 Una neurona de entrada y n
umero 003 Una neurona de retardo.
Entregable:
Se debe entregar un disquete o CD que contenga un archivo Word con
mnimo: los codigos de los dos integrantes, los nombres, la fecha, las preguntas del taller y los respectivos resultados.
El archivo debe llamarse xxxxx_yyyyy_zz_RN.doc, en donde xxxxx y
yyyyy representan los codigos de los dos integrantes del grupo en orden
ascendente, zz representa el n
umero de la gua a cual pertenece el taller y
RN representa el nombre de la asignatura Redes Neuronales.
Se deben entregar ocho das despues de haber recibido la orden de ejecutar la presente gua.
414
Observaciones:
La entrega debe ser puntual, con todo lo que se solicita, respetando el
nombre del archivo y asegurandose de no tener Virus. La violacion de alguno
de estos elementos provocara una disminuci
on en la nota del laboratorio,
previo acuerdo con docente.
Procedimiento:
Pasos
1
Descripci
on
Seleccione dos veces la opcion
Crear neurona.
Comentario
Ubiquela en la opcion Neurona
de Proceso, indique como
nombres de las variables e,
f, como nombres de las neuronas Np1, Np2 y ambas
con dos entradas.
Ubiquela en la opcion Neurona
de Proceso.
Ubiquela en la opcion Neurona
de Proceso.
Ubiquela en la opcion Neurona
de Proceso.
Descripci
on
Experiemente cambiando las
funciones.
Experiemente enlazando, desenlazando y obtiendo las relaciones y nombres de la neuronas enlazadas.
Comentario
Ubiquela en la opcion Neurona
de Proceso.
Ubiquela en la opcion Neurona
de Proceso.
Descripci
on
Seleccione dos veces la opcion
Crear monitor.
6
7
415
Comentario
Ubiquela en la opcion Neurona
de Entrada, indique como
nombres de las variables
monitor5 y monitor6.
Ubiquela en la opcion Neurona
de Proceso.
Ubiquela en la opcion Neurona
de Proceso.
Ubiquela en la opcion Neurona
de Proceso.
Opcion Asignar monitor
Taller:
1. Cual es el mensaje que se muestra en la zona de reporte de actividades
una vez creada la primera neurona de proceso?
416
417
418
419
7.5.
Objetivos
Aprender a construir una red monocapa con conexiones hacia adelante.
Conceptos B
asicos
Experiencia en el manejo del sistema operativo Windows XP.
Precauciones y Recomendaciones
Antes de iniciar la practica asegurarse haber realizado correctamente
la gua educativa n
umero 001 Instalacion del entorno de trabajo, n
umero
002 Una neurona de entrada, n
umero 003 Una neurona de retardo y
n
umero 004 Una neurona de proceso.
Entregable:
Se debe entregar un disquete o CD que contenga un archivo Word con
mnimo: los codigos de los dos integrantes, los nombres, la fecha, las preguntas del taller y los respectivos resultados.
El archivo debe llamarse xxxxx_yyyyy_zz_RN.doc, en donde xxxxx y
yyyyy representan los codigos de los dos integrantes del grupo en orden
ascendente, zz representa el n
umero de la gua a cual pertenece el taller y
RN representa el nombre de la asignatura Redes Neuronales.
Se deben entregar ocho das despues de haber recibido la orden de ejecutar la presente gua.
420
Observaciones:
La entrega debe ser puntual, con todo lo que se solicita, respetando el
nombre del archivo y asegurandose de no tener Virus. La violacion de alguno
de estos elementos provocara una disminuci
on en la nota del laboratorio,
previo acuerdo con docente.
Procedimiento:
Pasos
1
Descripci
on
Manualmente cree tres neuronas de entrada Nei y cinco
neuronas de proceso Npj
Comentario
El n
umero de entradas de las
neuronas de proceso debe coincidir con la cantidad de neuronas de entrada.
Entradai enlaza la Neurona de
entrada i -esima.
Descripci
on
Defina una nueva red neuronal
que construya una topologa
monocapa con conexiones hacia
adelante, pregunte al usuario la
cantidad de entradas y de neuronas de proceso. En la parte
del funcionamiento, recorra todas las neuronas de proceso e
imprima el nombre de las neuronas de entrada enlazadas e
imprima con quien se relacionan cada una de ellas.
Cree una nueva red usando el
nuevo tipo
Ejecute la red creada
Comentario
Use los nombre Nei y Npj
para las neuronas de entrada
y de proceso respectivamente.
Valide los datos de entrada y
los enlaces a posibles neuronas.
421
Taller:
1. Cual es el mensaje que se muestra en la zona de reporte de actividades
una vez creado la nueva red neurona?
2. Cual es el resultado al ejecutar la red?
422
7.6.
Objetivos
Aprender a construir una red multicapa con conexiones hacia adelante.
Conceptos B
asicos
Experiencia en el manejo del sistema operativo Windows XP.
Precauciones y Recomendaciones
Antes de iniciar la practica asegurarse haber realizado correctamente la
gua educativa n
umero 001 Instalacion del entorno de trabajo, n
umero 002
Una neurona de entrada, n
umero 003 Una neurona de retardo, n
umero
004 Una neurona de proceso y n
umero 005 Red monocapa con conexiones
hacia adelante.
Entregable:
Se debe entregar un disquete o CD que contenga un archivo Word con
mnimo: los codigos de los dos integrantes, los nombres, la fecha, las preguntas del taller y los respectivos resultados.
El archivo debe llamarse xxxxx_yyyyy_zz_RN.doc, en donde xxxxx y
yyyyy representan los codigos de los dos integrantes del grupo en orden
ascendente, zz representa el n
umero de la gua a cual pertenece el taller y
RN representa el nombre de la asignatura Redes Neuronales.
Se deben entregar ocho das despues de haber recibido la orden de ejecutar la presente gua.
424
Observaciones:
La entrega debe ser puntual, con todo lo que se solicita, respetando el
nombre del archivo y asegurandose de no tener Virus. La violacion de alguno
de estos elementos provocara una disminuci
on en la nota del laboratorio,
previo acuerdo con docente.
Procedimiento:
Pasos
1
Descripci
on
Manualmente cree tres neuronas de entrada Nei y dos
capas de neuronas de proceso
con cuatro y tres neuronas respectivamente, use como nombres Npcj en donde j es el
n
umero de la neurona y c el
n
umero la capa
Cree un enlace que conecte de
manera completa la capa c con
la capa c1 para c > 1
Comentario
El n
umero de entradas de las
neuronas de proceso debe coincidir con la cantidad de neuronas en la capa anterior.
Descripci
on
Defina una nueva red neuronal
que construya una topologa
multicapa con conexiones hacia
adelante, pregunte al usuario
la cantidad de entradas, de capas y de neuronas de proceso
por capa. En la parte del funcionamiento, recorra todas las
neuronas de proceso e imprima
el nombre de las neuronas enlazadas.
Cree una nueva red usando el
nuevo tipo
Comentario
Use los nombre Nei y Npcj
para las neuronas de entrada
y de proceso respectivamente.
Valide los datos de entrada.
Taller:
1. Cual es el mensaje que se muestra en la zona de reporte de actividades
una vez creado la nueva red neurona?
2. Cual es el resultado al ejecutar la red?
426
7.7. RED MONOCAPA CON RETROALIMENTACION
427
7.7.
Objetivos
Aprender a construir una red monocapa con retroalimentaci
on.
Conceptos B
asicos
Experiencia en el manejo del sistema operativo Windows XP.
Precauciones y Recomendaciones
Antes de iniciar la practica asegurarse haber realizado correctamente
la gua educativa n
umero 001 Instalacion del entorno de trabajo, n
umero
002 Una neurona de entrada, n
umero 003 Una neurona de retardo,
n
umero 004 Una neurona de proceso, n
umero 005 Red monocapa con
conexiones hacia adelante y n
umero 006 Red multicapa con conexiones
hacia adelante.
Entregable:
Se debe entregar un disquete o CD que contenga un archivo Word con
mnimo: los codigos de los dos integrantes, los nombres, la fecha, las preguntas del taller y los respectivos resultados.
El archivo debe llamarse xxxxx_yyyyy_zz_RN.doc, en donde xxxxx y
yyyyy representan los codigos de los dos integrantes del grupo en orden
ascendente, zz representa el n
umero de la gua a cual pertenece el taller y
RN representa el nombre de la asignatura Redes Neuronales.
Se deben entregar ocho das despues de haber recibido la orden de ejecutar la presente gua.
428
Observaciones:
La entrega debe ser puntual, con todo lo que se solicita, respetando el
nombre del archivo y asegurandose de no tener Virus. La violacion de alguno
de estos elementos provocara una disminuci
on en la nota del laboratorio,
previo acuerdo con docente.
Procedimiento:
Pasos
1
Descripci
on
Manualmente cree tres neuronas de retardo Nri y tres
neuronas de proceso Npj
Comentario
El n
umero de entradas de las
neuronas de proceso debe coincidir con la cantidad de neuronas de retardo - 1.
Topologa de Hopfield.
2
2
Descripci
on
Defina una nueva red neuronal que construya una
topologa
monocapa
con
retroalimentacion,
pregunte
al usuario la cantidad de
neuronas. En la parte del
funcionamiento, recorra todas
las neuronas de retardo y de
proceso e imprima el nombre
de las neuronas enlazadas (si
hay).
Cree una nueva red usando el
nuevo tipo
Ejecute la red creada
Comentario
Use los nombre Nri y Npj
para las neuronas de retardo
y de proceso respectivamente.
Valide los datos de entrada y
los enlaces a posibles neuronas.
7.7. RED MONOCAPA CON RETROALIMENTACION
429
Taller:
1. Cual es el mensaje que se muestra en la zona de reporte de actividades
una vez creado la nueva red neurona?
2. Cual es el resultado al ejecutar la red?
430
GUIAS DE LABORATORIOS
(DOCENTE)
432
433
8.1.
Instalaci
on del entorno de trabajo
Soluci
on del Taller
1. Cuales son los nombres de los archivos necesarios para realizar el
montaje del entorno de trabajo? (Java 6.0, Documentaci
on de Java
6.0, Material de Apoyo, Gua de laboratorio)
R./
jdk-6u3-windows-i586-p.exe
jdk-6-doc.zip
netbeans-6.1-windows.exe
434
435
8.2.
Taller:
1. Cuales son las opciones de los men
us del LabVirtualRNA.jar que se
encuentran activadas por defecto?
R./
Archivo
Iniciar laboratorio
Cargar laboratorio
Configurar tema
Salir
Acerca de
Agradecimientos
Acerca de
436
Iniciar laboratorio
Cargar laboratorio
Guardar laboratorio
Configurar tema
Salir
Neurona de Entrada
Crear neurona
Crear monitor
Definir nuevo monitor
Neurona de Retardo
Crear neurona
Definir nuevo valor futuro
Crear monitor
Definir nuevo monitor
Neurona de Retardo
Crear neurona
Definir nueva
Definir nueva
Definir nueva
Crear monitor
Definir nuevo
funci
on base
funci
on de activaci
on
funci
on de transferencia
monitor
Red Neuronal
Crear red
Definir nueva red neuronal
Acerca de
Agradecimientos
Acerca de
437
7. Cual es el mensaje que se muestra en la zona de reporte de actividades una vez presionado Aceptar en la ventana Obtener nombre
(variable a)?
R./
a.obtenerNombre();
//El nombre es: "Ne2"
9. Cual es el mensaje que se muestra en la zona de reporte de actividades una vez presionado Aceptar en la ventana Obtener valor de
salida (variable a)?
R./
a.obtenerValorDeSalida();
//El valor de salida es: 0.0
11. Cual es el nombre del tipo de monitor por defecto para una neurona
de entrada?
R./
neuronal.monitor.MonitorDeNeuronaDeEntrada
438
17. Que sucede cuando hay cambios en las neuronas y ellas estan siendo
monitoreadas por el mismo monitor?
R./
Se actualizan los datos de ambas neuronas en la misma ventana del monitor
439
440
441
8.3.
Taller:
1. Cual es el nombre del tipo de neurona de retardo por defecto?
R./
neuronal.neurona.NeuronaDeRetardo
4. Cual es el mensaje que se muestra en la zona de reporte de actividades una vez presionado Aceptar en la ventana Obtener nombre
(variable c)?
R./
c.obtenerNombre();
//El nombre es: "Nr1"
442
6. Cual es el mensaje que se muestra en la zona de reporte de actividades una vez presionado Aceptar en la ventana Obtener valor de
salida (variable c)?
R./
c.obtenerValorDeSalida();
//El valor de salida es: 0.0
443
/* Constructor:
linea = null;
bufferDeLectura = null;
*/
/* Funcionamiento:
try
{
do
{
if ( linea == null )
{
archivoDeLectura = new java.io.FileReader ( "Datos.txt");
bufferDeLectura = new java.io.BufferedReader ( archivoDeLectura );
}
linea = bufferDeLectura.readLine( );
} while ( linea == null );
valorSiguiente = Double.parseDouble( linea );
}
catch ( Exception e )
{
return 0.0;
}
*/
/* Destructor:
bufferDeLectura.close ( );
*/
12. Cual es el nombre del tipo de monitor por defecto para una neurona
de retardo?
R./
neuronal.monitor.MonitorDeNeuronaDeRetardo
444
18. Que sucede cuando hay cambios en las neuronas y ellas estan siendo
monitoreadas por el mismo monitor?
R./
Se actualizan los datos de ambas neuronas en la misma ventana del monitor
445
446
447
8.4.
Taller:
1. Cual es el mensaje que se muestra en la zona de reporte de actividades
una vez creada la primera neurona de proceso?
R./
NeuronaDeProceso e;
e = new NeuronaDeProceso ( "Np1", 2 );
3. Cual es el mensaje que se muestra en la zona de reporte de actividades una vez presionado Aceptar en la ventana Obtener nombre
(variable e)?
R./
e.obtenerNombre();
//El nombre es: "Np1"
448
5. Cuales son las funciones por defecto en una neurona proceso para la
funcion base, funcion de activaci
on y funcion de transferencia?
R./
Funci
on base: Funci
on base lineal.
Funci
on de activaci
on: Funci
on identidad.
Funcion de transferencia: Funci
on identidad.
8. Cual es el mensaje que se muestra en la zona de reporte de actividades una vez presionado Aceptar en la ventana Obtener valor de
salida (variable e)?
R./
e.obtenerValorDeSalida();
//El valor de salida es: 4.5
9. Cual es el nombre del tipo de monitor por defecto para una neurona
de proceso?
R./
neuronal.monitor.MonitorDeNeuronaDeProceso
449
450
15. Que sucede cuando hay cambios en las neuronas y ellas estan siendo
monitoreadas por el mismo monitor?
R./
Se actualizan los datos de ambas neuronas en la misma ventana del monitor
451
452
453
8.5.
Taller:
1. Cual es el mensaje que se muestra en la zona de reporte de actividades
una vez creado la nueva red neurona?
R./
/* Variables modelo:
NeuronaDeEntrada[] entrada;
NeuronaDeProceso[] proceso;
*/
/* Topolog
a:
int numeroDeEntradas = 0;
int numeroDeNeuronas = 0;
String linea;
while ( true )
{
try
{
linea = JOptionPane.showInputDialog( "N
umero de entradas: ");
numeroDeEntradas = Integer.parseInt( linea );
if ( numeroDeEntradas >= 1 ) { break; }
}
catch ( Exception e ) { }
}
while ( true )
{
try
{
linea = JOptionPane.showInputDialog( "N
umero de neuronas: ");
numeroDeNeuronas = Integer.parseInt( linea );
if ( numeroDeNeuronas >= 1 ) { break; }
}
catch ( Exception e ) { }
}
454
/* Funcionamiento:
String texto;
for ( int i = 0 ; i <proceso.length ; i++ )
{
texto = proceso[ i ].obtenerNombre( ) +"\n";
for ( int j = 1 ; j <proceso[ i ].obtenerNumeroDeEntradas() ; j++ )
{
texto += "Entrada "+ j +": ";
try
{
texto += "\""+ proceso[ i ].obtenerNombreNeuronaEnlazada( j ) + "\"\n";
}
catch( Exception e )
{
texto += "<Libre>\n";
}
}
JOptionPane.showMessageDialog ( null , texto );
}
*/
455
456
8.6.
Taller:
1. Cual es el mensaje que se muestra en la zona de reporte de actividades
una vez creado la nueva red neurona?
R./
/* Variables modelo:
NeuronaDeEntrada[] entrada;
NeuronaDeProceso[][] proceso;
*/
/* Topolog
a:
int numeroDeCapas = 0;
int numeroDeEntradas = 0;
int numeroDeNeuronas = 0;
String linea;
while ( true )
{
try
{
linea = JOptionPane.showInputDialog( "N
umero de entradas: " );
numeroDeEntradas = Integer.parseInt( linea );
if ( numeroDeEntradas >= 1 ) { break; }
}
catch ( Exception e ) { }
}
entrada = new NeuronaDeEntrada[ numeroDeEntradas ];
for ( int i = 0 ; i <numeroDeEntradas ; i++ )
{
entrada [ i ] = new NeuronaDeEntrada( "Ne" + i );
}
458
while ( true )
{
try
{
linea = JOptionPane.showInputDialog( "N
umero de capas: " );
numeroDeCapas = Integer.parseInt( linea );
if ( numeroDeCapas >= 1 ) { break; }
}
catch ( Exception e ) { }
}
proceso = new NeuronaDeProceso[ numeroDeCapas ][ ];
try
{
for ( int k = 0 ; k <numeroDeCapas ; k++ )
{
while ( true )
{
linea = JOptionPane.showInputDialog("Neuronas por la capa "+ k +": ");
numeroDeNeuronas = Integer.parseInt( linea );
if ( numeroDeNeuronas >= 1 )
break;
}
proceso[ k ] = new NeuronaDeProceso [ numeroDeNeuronas ];
for ( int j = 0 ; j <numeroDeNeuronas ; j++ )
{
if ( k == 0 )
{
proceso [k][j] = new NeuronaDeProceso( "Np" + k + "," + j, numeroDeEntradas);
for ( int i = 1 ; i <= numeroDeEntradas ; i++ )
{
proceso[ k ][ j ].enlazarNeurona( entrada[ i - 1 ], i );
}
}
else
{
proceso[ k ][ j ]=new NeuronaDeProceso("Np" + k + ","+j, proceso[k-1].length);
for ( int i = 1 ; i <= proceso [ k - 1 ].length; i++ )
{
proceso[ k ][ j ].enlazarNeurona( proceso[ k - 1 ][ i - 1], i );
}
}
}
}
}
catch ( Exception e ) { }
*/
1 ): "Ne0"
2 ): "Ne1"
1 ): "Ne0"
2 ): "Ne1"
1 ): "Ne0"
2 ): "Ne1"
1 ): "Ne0"
2 ): "Ne1"
460
1
2
3
4
):
):
):
):
"Np0,0"
"Np0,1"
"Np0,2"
"Np0,3"
1
2
3
4
):
):
):
):
"Np0,0"
"Np0,1"
"Np0,2"
"Np0,3"
1 ): "Np1,0"
2 ): "Np1,1"
1 ): "Np1,0"
2 ): "Np1,1"
1 ): "Np1,0"
2 ): "Np1,1"
8.7. RED MONOCAPA CON RETROALIMENTACION
461
8.7.
Taller:
1. Cual es el mensaje que se muestra en la zona de reporte de actividades
una vez creado la nueva red neurona?
R./
/* Variables modelo:
NeuronaDeRetardo[] retardo;
NeuronaDeProceso[] proceso;
*/
/* Topolog
a:
int numeroDeNeuronas = 0, k;
String linea;
while ( true )
{
try
{
linea = JOptionPane.showInputDialog( "N
umero de neuronas: " );
numeroDeNeuronas = Integer.parseInt( linea );
if ( numeroDeNeuronas >= 1 ) { break; }
}
catch ( Exception e ) { }
}
retardo = new NeuronaDeRetardo [ numeroDeNeuronas ];
proceso = new NeuronaDeProceso [ numeroDeNeuronas ];
try
{
for ( int i = 0 ; i <numeroDeNeuronas ; i++ )
{
retardo [ i ] = new NeuronaDeRetardo( "Nr" + i );
proceso [ i ] = new NeuronaDeProceso( "Np" + i, numeroDeNeuronas - 1 );
retardo[ i ].enlazarNeurona( proceso[ i ] );
}
462
8.7. RED MONOCAPA CON RETROALIMENTACION
for ( int i = 1 ; i <proceso[ j ].obtenerNumeroDeEntradas() ; i++ )
{
texto += " Entrada( " + i + " ): ";
try
{
texto += proceso[ j ].obtenerNombreNeuronaEnlazada( i ) +"\n";
}
catch( Exception e )
{
texto += "<Libre>\n";
}
}
JOptionPane.showMessageDialog ( null , texto );
}
*/
463
464
8.8. PROYECTOS DE PROGRAMACION
465
8.8.
Proyectos de programaci
on
466
Bibliografa
467
468
BIBLIOGRAFIA
[11] M. Norgaard, O. Ravn, N.K. Poulsen and L.K. Hansen. Neural networks
for modelling and control of dynamic systems. Springer, London, 2000.
Libro que hace explcita la existencia de las neuronas de entrada, las neronas de retardo
y las neuronas de proceso.
Indice alfabetico
C
casos de uso . . . . . . . . . . . . . . . . . . . 40
archivo. . . . . . . . . . . . . . . . . . . .40
cargar laboratorio . . . . . . . 47
guardar laboratorio . . . . . 48
iniciar laboratorio . . . . . . . 46
neurona de entrada . . . . . . . 40
asignar monitor . . . . . . . . . 55
asignar valor de salida . . 53
cargar monitor . . . . . . . . . . 59
crear monitor . . . . . . . . . . . 54
crear neurona . . . . . . . . . . . 49
definir monitor . . . . . . . . . . 57
desasignar monitor . . . . . . 56
obtener nombre . . . . . . . . . 51
obtener valor de salida . . 52
neurona de proceso . . . . . . . 42
asignar monitor . . . . . . . . 110
cambiar f. activacion . . . . 96
cambiar f. base. . . . . . . . . .92
cambiar f. transferencia 100
cambiar peso. . . . . . . . . . . .90
cambiar umbral . . . . . . . . 105
cargar f. activacion . . . . . . 99
cargar f. base . . . . . . . . . . . 94
cargar f. transferencia . . 103
cargar monitor . . . . . . . . . 114
crear monitor . . . . . . . . . . 108
crear neurona . . . . . . . . . . . 80
definir f. activacion. . . . . .97
definir f. base . . . . . . . . . . . 92
definir f. transferencia. .101
definir monitor. . . . . . . . .112
desasignar monitor . . . . .111
desenlazar neurona . . . . . . 85
enlazar neurona . . . . . . . . . 83
obtener estado enlace . . . 86
obtener f. activaci
on . . . . 95
obtener f. base . . . . . . . . . . 91
obtener f. transferencia. .99
obtener nom. enlazada . . 87
obtener nombre . . . . . . . . . 82
obtener num. entradas . . 83
obtener peso . . . . . . . . . . . . 89
obtener potencial . . . . . . 106
obtener relaciones . . . . . . . 87
obtener umbral . . . . . . . . 104
obtener v. activaci
on . . . 107
obtener v. salida . . . . . . . 107
neurona de retardo . . . . . . . . 41
actualizar valor futuro . . 66
actualizar valor presente 64
asignar monitor . . . . . . . . . 75
asignar valor de salida . . 63
cargar monitor . . . . . . . . . . 79
cargar valor futuro . . . . . . 69
crear monitor . . . . . . . . . . . 74
crear neurona . . . . . . . . . . . 60
definir n. monitor . . . . . . . 77
definir nuevo v. futuro . . 67
desasignar monitor . . . . . . 76
desenlazar neurona . . . . . . 70
enlazar neurona . . . . . . . . . 70
obtener estado enlace . . . 71
obtener nom. enlazada . . 73
obtener nombre . . . . . . . . . 62
obtener relaciones . . . . . . . 72
obtener valor de salida . . 63
469
470
obtener valor futuro . . . . . 65
red neuronal . . . . . . . . . . . . . . 41
cargar red neuronal . . . . 119
crear red. . . . . . . . . . . . . . .114
definir red . . . . . . . . . . . . . 117
ejecutar red . . . . . . . . . . . . 120
generar aplicacion . . . . . 121
obtener nombre . . . . . . . . 116
ciclo de vida de un producto. . . .4
D
descripcion de los casos de uso 45
documento de requerimientos . . . 9
F
funciones
activacion . . . . . . . . . . . . . . . . . 10
base . . . . . . . . . . . . . . . . . . . . . . 10
lineal . . . . . . . . . . . . . . . . . . . 10
radical . . . . . . . . . . . . . . . . . . 10
transferencia . . . . . . . . . . . . . . 10
G
gua docente
01. instalacion . . . . . . . . . . . 433
02. neurona de entrada. . .435
03. neurona de retardo . . . 441
04. neurona de proceso . . . 447
05. red monocapa conexiones
hacia adelante . . . . . . . 453
06. red m
ulticapa con conexiones hacia adelante . 457
07. red monocapa con retroalimentacion . . . . . . . . . 461
Proyectos de programacion465
gua estudiante
01. instalacion . . . . . . . . . . . 397
02. neurona de entrada. . .401
03. neurona de retardo . . . 407
04. neurona de proceso . . . 413
05. red monocapa conexiones
hacia adelante . . . . . . . 419
INDICE ALFABETICO
06. red m
ulticapa con conexiones hacia adelante . 423
07. red monocapa con retroalimentaci
on . . . . . . . . . 427
gui . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18
archivo
cargar archivos. . . . . . . . . .19
Guardar laboratorio. . . . .20
nuevo laboratorio . . . . . . . 19
dialogo de advertencia . . . . 39
dialogo de error . . . . . . . . . . . 39
dialogo de informacion . . . . 39
dialogo de pregunta . . . . . . . 39
neurona de entrada
asignar monitor . . . . . . . . . 22
asignar valor de salida . . 22
crear monitor . . . . . . . . . . . 22
crear neurona . . . . . . . . . . . 21
definir nuevo monitor . . . 23
desasignar monitor . . . . . . 23
obtener nombre . . . . . . . . . 21
obtener valor de salida . . 21
neurona de proceso
asignar monitor . . . . . . . . . 22
cambiar f. activaci
on . . . . 33
cambiar f. base. . . . . . . . . .32
cambiar f. transferencia . 34
cambiar peso enlace . . . . . 31
cambiar umbral . . . . . . . . . 35
crear monitor . . . . . . . . . . . 22
crear neurona . . . . . . . . . . . 29
definir f. activaci
on. . . . . .33
definir f. base . . . . . . . . . . . 32
definir f. transferencia . . . 34
definir nuevo monitor . . . 23
desasignar monitor . . . . . . 23
desenlazar neurona . . . . . . 30
enlazar neurona . . . . . . . . . 29
obtener estado . . . . . . . . . . 30
obtener f. activaci
on . . . . 32
INDICE ALFABETICO
obtener f. base . . . . . . . . . . 31
obtener f. transferencia. .33
obtener n
um. entradas . . 29
obtener nom. enlazada . . 30
obtener nombre . . . . . . . . . 21
obtener peso enlace . . . . . 31
obtener potencial . . . . . . . 35
obtener relaciones . . . . . . . 27
obtener umbral . . . . . . . . . 34
obtener v. de activacion . 35
neurona de retardo
actualizar v. presente . . . 39
actualizar valor futuro . . 26
actualizar valor presente 25
asignar monitor . . . . . . . . . 22
asignar valor de salida . . 22
crear monitor . . . . . . . . . . . 22
crear neurona . . . . . . . . . . . 24
definir nuevo monitor . . . 23
definir nuevo v.futuro . . . 26
desasignar monitor . . . . . . 23
desenlazar neurona . . . . . . 27
enlazar neurona . . . . . . . . . 26
obtener estado enlace . . . 27
obtener nom. enlazada . . 28
obtener nombre . . . . . . . . . 21
obtener relaciones . . . . . . . 27
obtener valor de salida . . 21
obtener valor futuro . . . . . 25
red neuronal
asignar monitor . . . . . . . . . 22
crear monitor . . . . . . . . . . . 22
crear red neuronal . . . . . . 36
definir nuevo monitor . . . 23
definir red neuronal . . . . . 37
desasignar monitor . . . . . . 23
generar aplicacion . . . . . . . 39
obtener nombre . . . . . . . . . 21
ventana principal . . . . . . . . . 18
acerca de . . . . . . . . . . . . . . . 38
471
agradecimientos . . . . . . . . . 38
archivo . . . . . . . . . . . . . . . . . 18
ejecutar red . . . . . . . . . . . . . 37
generar aplicacion . . . . . . . 37
neurona de entrada . . . . . 20
neurona de proceso . . . . . 28
neurona de retardo . . . . . . 24
red neuronal . . . . . . . . . . . . 36
I
Iconix . . . . . . . . . . . . . . . . . . . . . . . . . . 5
an
alsis y dise
no preliminar . 7
dise
no. . . . . . . . . . . . . . . . . . . . . .7
implementaci
on y pruebas . . 7
L
laboratorio virtual . . . . . . . . . . . . 11
an
alisis de requerimientos
casos de uso . . . . . . . . . . . . 40
GUI . . . . . . . . . . . . . . . . . . . . 18
modelo del dominio . . . . . 15
requerimientos . . . . . . . . . . . 9
revisi
on de requerimient/42
tecnica de identificaci
on . 12
an
alisis y dise
no preliminar
descripcion casos de uso .45
M
modelo del dominio . . . . . . . . . . . 17
N
neurona de entrada . . . . . . . . 1012
neurona de proceso . . . . . 9, 10, 12
neurona de retardo . . . . . . . . 10, 12
niveles de abstraccion . . . . . . . . . . 3
P
PLC . . . . . . . . . . . . . . . . . . . . . . . . . . . 4
R
red neuronal . . . . . . . . . . . . . . . . . . 12
requerimientos . . . . . . . . . . . . . . . . . 9
472
robustez
archivo
cargar laboratorio. . . . . .125
guardar laboratorio . . . . 125
iniciar laboratorio. . . . . .125
neurona de entrada
asignar monitor . . . . . . . . 131
asignar valor de salida . 129
cargar monitor . . . . . . . . . 134
crear monitor . . . . . . . . . . 129
crear neurona . . . . . . . . . . 127
definir monitor. . . . . . . . .131
desasignar monitor. . . . .131
obtener nombre . . . . . . . . 127
obtener valor de salida . 127
neurona de proceso
asignar monitor . . . . . . . . 167
cambiar f. activacion . . . 159
cambiar f. base . . . . . . . . 155
cambiar f. transferencia 162
cambiar peso . . . . . . . . . . 155
cambiar umbral . . . . . . . . 165
cargar f. activacion . . . . 159
cargar f. base . . . . . . . . . . 157
cargar f. transferencia . . 162
cargar monitor . . . . . . . . . 172
crear monitor . . . . . . . . . . 167
crear neurona . . . . . . . . . . 150
definir f. activacion . . . . 159
definir f. base . . . . . . . . . . 157
definir f. transferencia. .162
definir monitor. . . . . . . . .171
desasignar monitor. . . . .167
desenlazar neurona . . . . 152
enlazar neurona . . . . . . . . 152
obtener estado enlace . . 153
obtener f. actualizacion 157
obtener f. base . . . . . . . . . 155
obtener f. transferencia 159
obtener nom. enlazada . 154
INDICE ALFABETICO
INDICE ALFABETICO
473
obtener relaciones . . . . . . 236
obtener umbral . . . . . . . . 258
obtener v. activaci
on . . . 261
obtener v. salida . . . . . . . 262
neurona de retardo
actualizar valor futuro . 211
actualizar valor presente209
asignar monitor . . . . . . . . 223
asignar valor de salida . 208
cargar monitor . . . . . . . . . 228
cargar valor futuro . . . . . 215
crear monitor . . . . . . . . . . 221
crear neurona . . . . . . . . . . 204
definir n. monitor . . . . . . 225
definir nuevo v. futuro . 212
desasignar monitor. . . . .224
desenlazar neurona . . . . 217
enlazar neurona . . . . . . . . 216
obtener estado enlace . . 218
obtener nom. enlazada . 220
obtener nombre . . . . . . . . 206
obtener relaciones . . . . . . 219
obtener valor de salida . 207
obtener valor futuro . . . 210
red neuronal
cargar red neuronal . . . . 277
crear red. . . . . . . . . . . . . . .271
definir red . . . . . . . . . . . . . 274
ejecutar red . . . . . . . . . . . . 278
generar aplicacion . . . . . 279
obtener nombre . . . . . . . . 273