Você está na página 1de 481

Laboratorio virtual de

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

Laboratorio virtual de redes neuronales


Esta permitida la reproduccion total o parcial
de esta obra, y/o su tratamiento o transmision por
cualquier metodo sin previa autorizacion del autor.
Derechos reservados
c Agosto de 2008

Este documento fue editado usando LATEX 2


Conceptos Graficos Ltda
Calle 19 13-30
Telefono: (6) 741 07 91 - 741 14 02
Armenia, Quindo
Armenia, Quindo - Colombia

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

1.1. Proceso de desarrollo ICONIX . . . . . . . . . . . . . . . . .

2. ANALISIS
DE REQUERIMIENTOS

5
9

2.1. Documento de requerimientos . . . . . . . . . . . . . . . . . .

2.2. Tecnica de identificacion . . . . . . . . . . . . . . . . . . . . .

12

2.2.1. Lista de clases candidatas . . . . . . . . . . . . . . . .

13

2.2.2. Eliminacion de algunas clases candidatas . . . . . . .

13

2.2.3. Lista definitiva de clases candidatas . . . . . . . . . .

14

2.2.4. Relaciones entre las clases candidatas . . . . . . . . .

15

2.2.5. Lista de verbos . . . . . . . . . . . . . . . . . . . . . .

15

2.3. Modelo del dominio

. . . . . . . . . . . . . . . . . . . . . . .

15

2.4. Prototipo de las interfaces graficas . . . . . . . . . . . . . . .

18

2.5. Diagramas de Casos de Uso . . . . . . . . . . . . . . . . . . .

40

2.6. Revision de requerimientos (RR) . . . . . . . . . . . . . . . .

42

INDICE GENERAL

vi

PRELIMINAR
3. ANALISIS
Y DISENO

45

3.1. Descripcion de los casos de uso . . . . . . . . . . . . . . . . .

45

3.1.1. Paquete archivo . . . . . . . . . . . . . . . . . . . .

46

3.1.2. Paquete neurona de entrada . . . . . . . . . . . . .

49

3.1.3. Paquete neurona de retardo

. . . . . . . . . . . . .

60

3.1.4. Paquete neurona de proceso . . . . . . . . . . . . . .

80

3.1.5. Paquete red neuronal . . . . . . . . . . . . . . . . . 114


3.2. Diagramas de robustez . . . . . . . . . . . . . . . . . . . . . . 123
3.2.1. Paquete archivo . . . . . . . . . . . . . . . . . . . . 125
3.2.2. Paquete neurona de entrada . . . . . . . . . . . . . 127
3.2.3. Paquete neurona de retardo . . . . . . . . . . . . . . 135
3.2.4. Paquete neurona de proceso . . . . . . . . . . . . . . 150
3.2.5. Paquete red neuronal . . . . . . . . . . . . . . . . . 173
3.3. Actualizacion del modelo del dominio . . . . . . . . . . . . . 178
3.4. Revision del dise
no preliminar (PDR) . . . . . . . . . . . . . 183

4. DISENO

185

4.1. Diagramas de secuencia . . . . . . . . . . . . . . . . . . . . . 185


4.1.1. Paquete archivo . . . . . . . . . . . . . . . . . . . . 187
4.1.2. Paquete neurona de entrada . . . . . . . . . . . . . 191
4.1.3. Paquete neurona de retardo . . . . . . . . . . . . . . 204
4.1.4. Paquete neurona de proceso . . . . . . . . . . . . . . 229
4.1.5. Paquete red neuronal . . . . . . . . . . . . . . . . . 271
4.2. Diagrama de clases . . . . . . . . . . . . . . . . . . . . . . . . 280
4.3. Revision crtica del dise
no (CDR) . . . . . . . . . . . . . . . . 288

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

7. GUIAS DE LABORATORIOS (ESTUDIANTE)


7.1. Instalacion del entorno de trabajo

395

. . . . . . . . . . . . . . . 397

7.2. Una neurona de entrada . . . . . . . . . . . . . . . . . . . . . 401


7.3. Una neurona de retardo . . . . . . . . . . . . . . . . . . . . . 407
7.4. Una neurona de proceso . . . . . . . . . . . . . . . . . . . . . 413
7.5. Red monocapa con conexiones hacia adelante . . . . . . . . . 419
7.6. Red multicapa con conexiones hacia adelante . . . . . . . . . 423
7.7. Red monocapa con retroalimentaci
on . . . . . . . . . . . . . . 427
8. GUIAS DE LABORATORIOS (DOCENTE)
8.1. Instalacion del entorno de trabajo

431

. . . . . . . . . . . . . . . 433

8.2. Una neurona de entrada . . . . . . . . . . . . . . . . . . . . . 435


8.3. Una neurona de retardo . . . . . . . . . . . . . . . . . . . . . 441
8.4. Una neurona de proceso . . . . . . . . . . . . . . . . . . . . . 447
8.5. Red monocapa con conexiones hacia adelante . . . . . . . . . 453
8.6. Red multicapa con conexiones hacia adelante . . . . . . . . . 457
8.7. Red monocapa con retroalimentaci
on . . . . . . . . . . . . . . 461
8.8. Proyectos de programacion . . . . . . . . . . . . . . . . . . . 465
BIBLIOGRAF
IA

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

Figura 1.1: Niveles de abstraccion de un proyecto de software


Estos diferentes niveles de abstraccion que se han mencionado, se ven
durante el ciclo de vida de un producto de software. En muchos casos el ciclo
de vida de un producto de software (PLC1 ), se suele subdividir en etapas como: analisis, dise
no, implementaci
on, pruebas, implantaci
on, mantenimiento
y soporte.
La etapa del analisis, consiste en comprender el problema que se desea resolver; en la etapa de dise
no, se especifica y detalla la solucion del
problema comprendido; en la etapa de implementaci
on, se crea un producto
acorde con la especificacion hecha; en la etapa de pruebas, se verifica que el
producto cumple con toda la especificacion; en la etapa de implantaci
on, se
hace disponible el producto a los clientes; en la etapa de mantenimiento, el
objetivo es realizar mejoras al producto; finalmente y no menos importante,
se encuentra la etapa de soporte, en la cual se le brinda ayuda al usuario en
todas las dificultades que llegara a tener mientras utiliza el producto final,
ver Figura 1.2.

Product Life Cycle

1.1. PROCESO DE DESARROLLO ICONIX

Figura 1.2: Ciclo de vida de un producto de software (PLC)


Para este desarrollo en particular, solo nos interesan las etapas de: analisis, dise
no, implementacion y pruebas. Un proceso de desarrollo de software que se centra especialmente en estas cuatro primeras etapas, se llama
ICONIX2 .

1.1.

Proceso de desarrollo ICONIX

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

Figura 1.3: Proceso de desarrollo ICONIX

1.1. PROCESO DE DESARROLLO ICONIX

La etapa de analisis y dise


no preliminar, cubre los numerales del siete
al diez que se muestran en la Figura 1.3. Estos numerales son: Construccion
de los textos descriptivos de los casos de uso, elaboracion de un diagrama
de robustez por cada caso de uso, actualizacion del modelo del dominio, y
finalmente una revision del dise
no preliminar.
La etapa de dise
no, cubre los numerales del once al trece que se muestran en la Figura 1.3. Estos numerales son: construccion de un diagrama de
secuencia por cada caso de uso, realizacion de la segunda actualizacion del
modelo del dominio (diagrama de clases), y finalmente una revision crtica
del dise
no. En esta etapa, tambien se pueden elaborar de ser necesarios, los
diagramas de colaboracion, estados y actividad.
La etapa final, la de implementaci
on y pruebas, no se encuentra muy
detallada en ICONIX[17], pero si lo estan en ICONIX[16] escrito este a
no
2007.
En el momento no se explicaran con mayor detalle cada uno de los
numerales citados en las etapas del proceso ICONIX, sin embargo ellos seran
desarrollados de aqu en adelante.

CAPITULO 1. INTRODUCCION

ANALISIS
DE REQUERIMIENTOS

2.1.

Documento de requerimientos

Desarrollar un laboratorio virtual de redes neuronales, el cual permita


trabajar con neuronas de procesamiento, neuronas de retardo (Z 1 ), neuronas de entrada y agrupacion de neuronas (redes neuronales). Tambien
debe permitir generar programas que se ejecuten por fuera del laboratorio
y disponer de monitores por los cuales se puedan observar los cambios realizados en neuronas de proceso, neuronas de retardo o neurona de entrada.
Las neuronas de procesamiento deben tener externamente unas entradas
y una u
nica salida, internamente cada neurona de procesamiento, posee asociado un factor o peso por cada entrada, una funcion base, una funcion de
activacion, y una funcion de transferencia, ver Figura 2.1 y los Cuadros 2.1
y 2.2.
Una funcion base, relaciona los pesos y las entradas, su valor de salida
se conoce como potencial de activaci
on (T). Esta relacion entre los pesos y
las entradas, se puede realizar por medio de una funcion base lineal, una
funcion base radical u otra definida por el usuario.
Una funcion de activacion, cuya salida se conoce como valor de activacion (A); y la funcion de transferencia, cuya salida corresponde al valor

10

CAPITULO 2. ANALISIS
DE REQUERIMIENTOS

de salida (S) de la neurona de proceso; son funciones matematicas las cuales


pueden ser: funcion sigmoidal unipolar, funcion sigmoidal bipolar, funcion
lineal mixta unipolar, funcion lineal mixta bipolar, funcion escalon unipolar,
funcion escalon bipolar, funcion identidad, u otra definida por el usuario. Ver
Cuadro 2.2.
Cada neurona de proceso tambien dispone de un umbral de activaci
on
el cual es considerado una entrada mas a la funcion base pero interno.

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

Tabla 2.1: Lista de funciones base

Figura 2.1: Neurona de proceso


Las neuronas de retardo (Z 1 ), conservan un valor de salida hasta que
reciben una se
nal la cual hace que ellas actualicen dicho valor de salida por
otro valor, el de entrada, ver Figura 2.2).

Figura 2.2: Neurona de retardo


Las neuronas de entrada, toman valores fijos y los distribuyen a otras
neuronas que lo soliciten, ver Figura 2.3.
Por otro lado, las redes neuronales definen una forma de conexion de

2.1. DOCUMENTO DE REQUERIMIENTOS

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

u otra definida por el usuario

si x 0
si x < 0

ex ex
ex + ex

si x > 1

1
0
si x < 1
f (x) =

x + 0,5 en otro caso


2

si x > 1
1
1 si x < 1
f (x) =

x
en otro caso
f (x) = g(x)

Tabla 2.2: Lista de funciones de activaci


on o transferencia

Figura 2.3: Neurona de entrada


las neuronas (topologa) y un algoritmo de entrenamiento (algoritmo para
modificar el peso de las conexiones seg
un alg
un criterio predefinido). Algunas redes neuronales [18] son: Perceptron, Perceptron multinivel, Adaline,
Madaline, Hopfield y Backpropagation.
Las funcionalidades que debe tener el laboratorio virtual sobre cada uno
de los elementos son:

Sobre el laboratorio: Iniciar laboratorio, cargar laboratorio, guardar


laboratorio.

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

La tecnica que se va a utilizar para la identificaci


on de clases y objetos
candidatos es la llamada Descripcion informal, la cual consiste en redactar una descripcion del problema (o de una parte de el - Ver requerimientos
en la pagina 9), para luego subrayar de dicha descripcion los sustantivos y
los verbos. Los sustantivos mas relevantes se convierten en clases u objetos, mientras que los verbos clave se convierten en las funcionalidades del
software (los casos de uso). Esta identificaci
on de sustantivos y verbos no
tiene porque ser exhaustiva, lo importante es identificar los elementos mas
relevantes en el texto.

2.2. TECNICA
DE IDENTIFICACION

13

La tecnica de Descripcion informal se presta para la automatizacion,


es facil de aplicar y no requiere mucha experiencia, pero es poco rigurosa y
dependiente de la redaccion, lo cual la hace poco apta para problemas de
gran tama
no.

2.2.1.

Lista de clases candidatas

En primera instancia se obtiene una lista de los sustantivos (palabras o


frases cortas que hagan de sustantivos) presentes en la descripcion (Ver la
Tabla 2.3). Hay que resaltar el hecho que en este punto no importa si dichos
sustantivos son o no importantes para el sistema que se desea construir.
CLASES CANDIDATAS
laboratorio virtual
red neuronal
neurona
neurona de procesamiento
neurona de retardo
neurona de entrada
agrupaci
on de neuronas
monitor
monitor de neurona de proceso monitor de neurona de retardo
monitor de neurona de entrada entradas
salida
factor
peso
funci
on base
potencial de activaci
on
lineal
funci
on base radical
usuario
funci
on de activaci
on
valor de activaci
on
funci
on matem
atica
funci
on de activaci
on
valor de salida
funci
on sigmoidal unipolar
funci
on sigmoidal bipolar
funci
on lineal mixta unipolar
funci
on lineal mixta bipolar
funci
on escal
on unipolar
funci
on escal
on bipolar
funci
on identidad
umbral de activaci
on
se
nal
valor de entrada
forma de conexi
on
topologa
algoritmo de entrenamiento
conexiones
criterio predefinido
red perceptron
red perceptron multinivel
red adaline
red madaline
red hopfield
red backpropagation

Tabla 2.3: Lista de clases candidatas

2.2.2.

Eliminaci
on de algunas clases candidatas

Ahora se procede a realizar la eliminacion de algunos de los sustantivos


de la Tabla 2.3, los cuales se presumen no son importantes para el sistema
que se desea construir (Ver Tabla 2.4).


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

Tabla 2.4: Eliminaci


on de algunas clases candidatas

2.2.3.

Lista definitiva de clases candidatas

En la Tabla 2.5 se puede observar la lista resultante despues de eliminar


los sustantivos citados en la Tabla 2.4.
La idea ahora es buscar las posibles relaciones que hay entre los sustantivos resultantes.
CLASES CANDIDATAS
red neuronal
laboratorio virtual
neurona de procesamiento
neurona de retardo
neurona de entrada
monitor
monitor de neurona de proceso monitor de neurona de retardo
monitor de neurona de entrada funci
on base
funci
on base lineal
funci
on base radical
funci
on de activaci
on
funci
on de activaci
on
funci
on matem
atica
funci
on sigmoidal unipolar
funci
on sigmoidal bipolar
funci
on lineal mixta unipolar
funci
on lineal mixta bipolar
funci
on escal
on unipolar
funci
on escal
on bipolar
funci
on identidad
red perceptron
red perceptron multinivel
red adaline
red madaline
red hopfield
red backpropagation
neurona

Tabla 2.5: Lista definitiva de clases candidatas

2.3. MODELO DEL DOMINIO

2.2.4.

15

Relaciones entre las clases candidatas

Las relaciones a identificar son:


Las generalizaciones (es un o es una clase de),
la agregacion (es una parte de o esta compuesto por),
o cualquier otra relacion (asociaciones).
Ver Tabla 2.6.

2.2.5.

Lista de verbos

La idea ahora es tomar la descripcion del problema e identificar los


verbos con una peque
na frase que le de un contexto de accion, en este caso, se
pueden observar estos elementos en la lista de funcionalidades presentadas en
la pagina 11. Hay que resaltar el hecho que lo que se identifique se convierte
posteriormente en los casos de uso del sistema, ver pagina 40.

2.3.

Modelo del dominio

El modelo del dominio no es mas que un diagrama de clases sin ning


un
tipo de detalle (sin atributos, sin metodos, . . .), en el cual se pueden ver graficamente todas las relaciones identificadas en la Tabla 2.6. Ver el diagrama
resultante en la Figura 2.4.

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

Tabla 2.6: Relaciones entre las clases candidatas

2.3. MODELO DEL DOMINIO

Figura 2.4: Modelo del dominio

17

18

2.4.

CAPITULO 2. ANALISIS
DE REQUERIMIENTOS

Prototipo de las interfaces gr


aficas

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.

Figura 2.5: Ventana Principal


En la Figura 2.6, se observan las alternativas de la opcion Archivo
de la Ventana Principal. Inicialmente la opcion Guardar laboratorio
permanece desactivada.

Figura 2.6: Ventana Principal opcion -Archivo-


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.

Figura 2.7: Ventana Nuevo Laboratorio


En la Figura 2.8, se observa el prototipo del dialogo de Cargar archivos,
el cual se muestra cuando el usuario selecciona la alternativa Cargar laboratorio de la opcion Archivo en la Ventana Principal.

Figura 2.8: Dialogo de Cargar archivos

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.

Figura 2.10: Ventana Principal opcion -Neurona de Entrada-


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.

Figura 2.11: Ventana Crear Neurona


En la Figura 2.12, se observa el prototipo de la Ventana Obtener Nombre, la cual se muestra cuando el usuario selecciona la alternativa de igual
nombre de la opcion Neurona de entrada en la Ventana Principal.

Figura 2.12: Ventana Obtener Nombre


En la Figura 2.13, se observa el prototipo de la Ventana Obtener Valor
de Salida, la cual se muestra cuando el usuario selecciona la alternativa de
igual nombre de la opcion Neurona de entrada en la Ventana Principal.

Figura 2.13: Ventana Obtener Valor de Salida

22

CAPITULO 2. ANALISIS
DE REQUERIMIENTOS

En la Figura 2.14, se observa el prototipo de la VentanaAsignar Valor


de Salida, la cual se muestra cuando el usuario selecciona la alternativa de
igual nombre de la opcion Neurona de entrada en la Ventana Principal.

Figura 2.14: Ventana Asignar Valor de Salida


En la Figura 2.15, se observa el prototipo de la Ventana Crear Monitor, la cual se muestra cuando el usuario selecciona la alternativa de igual
nombre de la opcion Neurona de entrada en la Ventana Principal.

Figura 2.15: Ventana Crear Monitor


En la Figura 2.16, se observa el prototipo de la Ventana Asignar Monitor, la cual se muestra cuando el usuario selecciona la alternativa de igual
nombre de la opcion Neurona de entrada en la Ventana Principal.

Figura 2.16: Ventana Asignar Monitor


2.4. PROTOTIPO DE LAS INTERFACES GRAFICAS

23

En la Figura 2.17, se observa el prototipo de la Ventana Desasignar


Monitor, la cual se muestra cuando el usuario selecciona la alternativa de
igual nombre de la opcion Neurona de entrada en la Ventana Principal.

Figura 2.17: Ventana Desasignar Monitor


En la Figura 2.18, se observa el prototipo de la Ventana Definir Nuevo
Monitor, la cual se muestra cuando el usuario selecciona la alternativa de
igual nombre de la opcion Neurona de entrada en la Ventana Principal.

Figura 2.18: Ventana Definir Nuevo Monitor

24

CAPITULO 2. ANALISIS
DE REQUERIMIENTOS

En la Figura 2.19, se observan las alternativas de la opcion Neurona de


Retardo de la Ventana Principal. Por defecto solo las alternativas Crear
neurona, Crear monitor y Definir nuevo monitor se encuentran activas.

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.

Figura 2.20: Ventana Crear Neurona de Retardo


En la Figura 2.12, se observa el prototipo de la Ventana Obtener Nombre, la cual se muestra cuando el usuario selecciona la alternativa de igual
nombre de la opcion Neurona de retardo en la Ventana Principal.
En la Figura 2.13, se observa el prototipo de la Ventana Obtener Valor
de Salida, 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

En la Figura 2.14, se observa el prototipo de la Ventana Asignar Valor


de Salida, la cual se muestra cuando el usuario selecciona la alternativa de
igual nombre de la opcion Neurona de retardo en la Ventana Principal.
La alternativa Actualizar valor presente utiliza solo un dialogo de
informacion (Figura 2.60).
En la Figura 2.21, se observa el prototipo de la Ventana Actualizar
Valor Presente, la cual se muestra cuando el usuario selecciona la alternativa de igual nombre de la opcion Neurona de retardo en la Ventana
Principal.

Figura 2.21: Ventana Actualizar Valor Presente


En la Figura 2.22, se observa el prototipo de la Ventana Obtener Valor
Futuro, la cual se muestra cuando el usuario selecciona la alternativa de
igual nombre de la opcion Neurona de retardo en la Ventana Principal.
En las Figuras 2.12, 2.13, 2.14, 2.60, 2.22 se observan los prototipos de
las Ventanas Obtener Nombre, Obtener Valor de Salida, Asignar Valor
de Salida, Actualizar valor presente y Obtener Valor Futuro respectivamente, las cuales se muestran cuando el usuario selecciona la alternativa de
igual nombre de la opcion Neurona de retardo en la Ventana Principal.

Figura 2.22: Ventana Obtener Valor Futuro


En la Figura 2.23, se observa el prototipo de la Ventana Actualizar Valor Futuro, la cual se muestra cuando el usuario selecciona la alternativa de
igual nombre de la opcion Neurona de retardo en la Ventana Principal.

26

CAPITULO 2. ANALISIS
DE REQUERIMIENTOS

Figura 2.23: Ventana Actualizar Valor Futuro


En la Figura 2.24, se observa el prototipo de la Ventana Definir Nuevo
Valor Futuro, la cual se muestra cuando el usuario selecciona la alternativa de igual nombre de la opcion Neurona de retardo en la Ventana
Principal.

Figura 2.24: Ventana Definir Nuevo Valor Futuro


En la Figura 2.25, se observa el prototipo de la Ventana Enlazar Neurona, la cual se muestra cuando el usuario selecciona la alternativa de igual
nombre de la opcion Neurona de retardo en la Ventana Principal.

Figura 2.25: Ventana Enlazar Neurona


2.4. PROTOTIPO DE LAS INTERFACES GRAFICAS

27

En la Figura 2.26, se observa el prototipo de la Ventana Desenlazar


Neurona, la cual se muestra cuando el usuario selecciona la alternativa de
igual nombre de la opcion Neurona de retardo en la Ventana Principal.

Figura 2.26: Ventana Desenlazar Neurona


En la Figura 2.27, se observa el prototipo de la Ventana Obtener Estado
del Enlace, la cual se muestra cuando el usuario selecciona la alternativa de
igual nombre de la opcion Neurona de retardo en la Ventana Principal.

Figura 2.27: Ventana Obtener Estado del Enlace


En la Figura 2.28, se observa el prototipo de la Ventana Obtener con
quien se Relaciona, la cual se muestra cuando el usuario selecciona la alternativa de igual nombre de la opcion Neurona de retardo en la Ventana
Principal.

Figura 2.28: Ventana Obtener con quien se Relaciona


En la Figura 2.29, se observa el prototipo de la Ventana Obtener Nombre de la Neurona Enlazada, la cual se muestra cuando el usuario selecciona
la alternativa de igual nombre de la opcion Neurona de retardo en la
Ventana Principal.

28

CAPITULO 2. ANALISIS
DE REQUERIMIENTOS

Figura 2.29: Ventana Obtener Nombre de la Neurona Enlazada


En las figuras 2.15, 2.16, 2.17 y 2.18, se observan los prototipos de las
ventanas relacionadas con los monitores, las cuales se muestran cuando el
usuario selecciona la alternativa de igual nombre de la opcion Neurona de
retardo en la Ventana Principal.
En la Figura 2.30, se observan las alternativas de la opcion Neurona de
Proceso de la Ventana Principal. Por defecto solo las alternativas Crear
neurona, Crear monitor y Definir nuevo monitor se encuentran activas.

Figura 2.30: Ventana Principal opcion -Neurona de Proceso-


2.4. PROTOTIPO DE LAS INTERFACES GRAFICAS

29

En la Figura 2.31, se observa el prototipo de la Ventana Crear Neurona


de Proceso, la cual se muestra cuando el usuario selecciona la alternativa de
igual nombre de la opcion Neurona de proceso en la Ventana Principal.

Figura 2.31: Ventana Crear Neurona de Proceso


En la Figura 2.12, se observa el prototipo de la Ventana Obtener Nombre, la cual se muestra cuando el usuario selecciona la alternativa de igual
nombre de la opcion Neurona de proceso en la Ventana Principal.
En la Figura 2.32, se observa el prototipo de la Ventana Obtener
N
umero de Entradas, la cual se muestra cuando el usuario selecciona la
alternativa de igual nombre de la opcion Neurona de proceso en la Ventana Principal.

Figura 2.32: Ventana Obtener N


umero de Entradas
En la Figura 2.33, se observa el prototipo de la Ventana Enlazar Neurona en una Entrada, la cual se muestra cuando el usuario selecciona la
alternativa de igual nombre de la opcion Neurona de proceso en la Ventana Principal.

Figura 2.33: Ventana Enlazar Neurona en una Entrada

30

CAPITULO 2. ANALISIS
DE REQUERIMIENTOS

En la Figura 2.34, se observa el prototipo de la Ventana Desenlazar


Neurona en una Entrada, la cual se muestra cuando el usuario selecciona
la alternativa de igual nombre de la opcion Neurona de proceso en la
Ventana Principal.

Figura 2.34: Ventana Desenlazar Neurona en una Entrada


En la Figura 2.35, se observa el prototipo de la Ventana Obtener Estado
de una Entrada, la cual se muestra cuando el usuario selecciona la alternativa de igual nombre de la opcion Neurona de proceso en la Ventana
Principal.

Figura 2.35: Ventana Obtener Estado de una Entrada


En la Figura 2.28, se observa el prototipo de la Ventana Obtener con
quien se Relaciona, la cual se muestra cuando el usuario selecciona la alternativa de igual nombre de la opcion Neurona de proceso en la Ventana
Principal.
En la Figura 2.36, se observa el prototipo de la Ventana Obtener Nombre de una Neurona Enlazada, la cual se muestra cuando el usuario selecciona la alternativa de igual nombre de la opcion Neurona de proceso en
la Ventana Principal.

Figura 2.36: Ventana Obtener Nombre de una Neurona Enlazada


2.4. PROTOTIPO DE LAS INTERFACES GRAFICAS

31

En la Figura 2.37, se observa el prototipo de la Ventana Obtener Peso


de un Enlace, la cual se muestra cuando el usuario selecciona la alternativa de igual nombre de la opcion Neurona de proceso en la Ventana
Principal.

Figura 2.37: Ventana Obtener Peso de un Enlace


En la Figura 2.38, se observa el prototipo de la Ventana Cambiar Peso
de un Enlace, la cual se muestra cuando el usuario selecciona la alternativa de igual nombre de la opcion Neurona de proceso en la Ventana
Principal.

Figura 2.38: Ventana Cambiar Peso de un Enlace


En la Figura 2.39, se observa el prototipo de la Ventana Obtener Funci
on Base, la cual se muestra cuando el usuario selecciona la alternativa de
igual nombre de la opcion Neurona de proceso en la Ventana Principal.

Figura 2.39: Ventana Obtener Funci


on Base

32

CAPITULO 2. ANALISIS
DE REQUERIMIENTOS

En la Figura 2.40, se observa el prototipo de la Ventana Cambiar Funci


on Base, la cual se muestra cuando el usuario selecciona la alternativa de
igual nombre de la opcion Neurona de proceso en la Ventana Principal.

Figura 2.40: Ventana Cambiar Funci


on Base
En la Figura 2.41, se observa el prototipo de la Ventana Definir Nueva
Funci
on Base, la cual se muestra cuando el usuario selecciona la alternativa de igual nombre de la opcion Neurona de proceso en la Ventana
Principal.

Figura 2.41: Ventana Definir Nueva Funci


on Base
En la Figura 2.42, se observa el prototipo de la Ventana Obtener Funci
on de Activaci
on, la cual se muestra cuando el usuario selecciona la alternativa de igual nombre de la opcion Neurona de proceso en la Ventana
Principal.

Figura 2.42: Ventana Obtener Funci


on de Activaci
on


2.4. PROTOTIPO DE LAS INTERFACES GRAFICAS

33

En la Figura 2.43, se observa el prototipo de la Ventana Cambiar Funci


on de Activaci
on, la cual se muestra cuando el usuario selecciona la alternativa de igual nombre de la opcion Neurona de proceso en la Ventana
Principal.

Figura 2.43: Ventana Cambiar Funci


on de Activaci
on
En la Figura 2.44, se observa el prototipo de la Ventana Definir Nueva
Funci
on de Activaci
on, la cual se muestra cuando el usuario selecciona
la alternativa de igual nombre de la opcion Neurona de proceso en la
Ventana Principal.

Figura 2.44: Ventana Definir Nueva Funci


on de Activaci
on
En la Figura 2.45, se observa el prototipo de la Ventana Obtener Funci
on de Transferencia, la cual se muestra cuando el usuario selecciona la
alternativa de igual nombre de la opcion Neurona de proceso en la Ventana Principal.

Figura 2.45: Ventana Obtener Funci


on de Transferencia

34

CAPITULO 2. ANALISIS
DE REQUERIMIENTOS

En la Figura 2.46, se observa el prototipo de la Ventana Cambiar Funci


on de Transferencia, la cual se muestra cuando el usuario selecciona la
alternativa de igual nombre de la opcion Neurona de proceso en la Ventana Principal.

Figura 2.46: Ventana Cambiar Funci


on de Transferencia
En la Figura 2.47, se observa el prototipo de la Ventana Definir Nueva
Funci
on de Transferencia, la cual se muestra cuando el usuario selecciona
la alternativa de igual nombre de la opcion Neurona de proceso en la
Ventana Principal.

Figura 2.47: Ventana Definir Nueva Funci


on de Transferencia
En la Figura 2.48, se observa el prototipo de la Ventana Obtener Umbral de Activaci
on, la cual se muestra cuando el usuario selecciona la alternativa de igual nombre de la opcion Neurona de proceso en la Ventana
Principal.

Figura 2.48: Ventana Obtener Umbral de Activaci


on


2.4. PROTOTIPO DE LAS INTERFACES GRAFICAS

35

En la Figura 2.49, se observa el prototipo de la Ventana Cambiar Umbral de Activaci


on, la cual se muestra cuando el usuario selecciona la alternativa de igual nombre de la opcion Neurona de proceso en la Ventana
Principal.

Figura 2.49: Ventana Cambiar Umbral de Activaci


on
En la Figura 2.50, se observa el prototipo de la Ventana Obtener Potencial de Activaci
on, la cual se muestra cuando el usuario selecciona la
alternativa de igual nombre de la opcion Neurona de proceso en la Ventana Principal.

Figura 2.50: Ventana Obtener Potencial de Activaci


on
En la Figura 2.51, se observa el prototipo de la Ventana Obtener Valor
de Activaci
on, la cual se muestra cuando el usuario selecciona la alternativa de igual nombre de la opcion Neurona de proceso en la Ventana
Principal.

Figura 2.51: Ventana Obtener Valor de Activaci


on
En las figuras 2.15, 2.16, 2.17 y 2.18, se observan los prototipos de las
ventanas relacionadas con los monitores, las cuales se muestran cuando el
usuario selecciona la alternativa de igual nombre de la opcion Neurona de
proceso en la Ventana Principal.

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.

Figura 2.53: Ventana Crear una Red Neuronal


En la Figura 2.12, se observa el prototipo de la Ventana Obtener Nombre, la cual se muestra cuando el usuario selecciona la alternativa de igual
nombre de la opcion Red Neuronal en la Ventana Principal.
En la Figura 2.54, se observa el prototipo de la Ventana Definir Nueva
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

Figura 2.54: Ventana Definir Nueva Red Neuronal


En la Figura 2.55, se observan el prototipo de la Ventana Ejecutar
Red, la cual se muestra cuando el usuario selecciona la alternativa de igual
nombre en la Ventana Principal.

Figura 2.55: Ventana Ejecutar Red


En la Figura 2.56, se observan el prototipo de la Ventana Generar
Aplicaci
on, la cual se muestra cuando el usuario selecciona la alternativa
de igual nombre en la Ventana Principal.

Figura 2.56: Ventana Generar Aplicaci


on
En la Figura 2.57, se observan el prototipo de la Ventana Acerda de, la
cual se muestra cuando el usuario selecciona la alternativa de igual nombre
en la Ventana Principal.

38

CAPITULO 2. ANALISIS
DE REQUERIMIENTOS

Figura 2.57: Ventana Acerda de

Figura 2.58: Ventana Agradecimientos


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

TODAS LAS INTERFACES GRAFICAS MENCIONADAS SON DIALOGOS,


SALVO LA VENTANA PRINCIPAL, SIN EMBARGO PARA EVITAR
DICIENDO VENTANAS.
CONFUSIONES, SE LES SEGUIRA

2.5.

Diagramas de Casos de Uso

Los casos de uso se organizaron en paquetes para su mejor comprension.


Los detalles de cada caso de uso se hacen en el captulo siguiente.
La Figura 2.63 muestra los casos de uso del paquete archivo.

Figura 2.63: Casos de uso del paquete archivo


La Figura 2.64 muestra los casos de uso del paquete neurona de entrada.

Figura 2.64: Casos de uso del paquete neurona de entrada

2.5. DIAGRAMAS DE CASOS DE USO

41

La Figura 2.65 muestra los casos de uso del paquete neurona de retardo.

Figura 2.65: Casos de uso del paquete neurona de retardo


La Figura 2.66 muestra los casos de uso del paquete red neuronal.

Figura 2.66: Casos de uso del paquete red neuronal

42

CAPITULO 2. ANALISIS
DE REQUERIMIENTOS

La Figura 2.67 muestra los casos de uso del paquete neurona de proceso.

Figura 2.67: Casos de uso del paquete neurona de proceso

2.6.

Revisi
on de requerimientos (RR)

Para realizar la revision de requerimientos (RR) hay que tener en cuenta


las siguientes consideraciones.
Asegurarse que los pasos anteriores reflejan los requerimientos funcionales.
Asegurarse que los clientes tengan idea de los requerimientos con los
cuales se basara el dise
no.

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

como se hizo en el capitulo anterior. Ademas todas las descripciones deben


ser claras, concisas y en un lenguaje en el cual los clientes no tecnicos puedan
interpretarlo para que as, ellos puedan participar en su mejoramiento. De
igual manera, debe ser lo mas completo posible pues debe impedirse que los
codificadores o programadores implementen lo que ellos creen que el sistema
debe hacer.
Es clave identificar cada uno de los siguientes elementos:

Lmites: Cuando empieza y cuando termina el caso de uso.


Interacciones: Comportamiento de actores y el sistema. Accion reaccion dentro del caso de uso.
Masa: Conjunto de objetos e interfaces que se requieren.

Indice de escenarios: Flujo principal de eventos y secuencia de variaciones


Tribulaciones: Contingencias probables que pueden afectar al flujo
de los eventos y son ellas las excepciones del caso de uso.

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:

DE LOS CASOS DE USO


3.1. DESCRIPCION

/*
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

(listadoDeAutores y fechaActual corresponden respectivamente al


listado de los nombre de los autores y a la fecha actual).
Posteriormente el sistema crea las listas para las neuronas de entrada,
neurona de retardo, neurona de proceso, redes neuronales y monitores
del laboratorio; finalmente el sistema activa la alternativa Guardar
laboratorio de la opcion Archivo de la Ventana Principal, as como tambien activa las opciones Neurona de entrada, Neurona de
retardo, Neurona de proceso y la opcion Red Neuronal de dicha
ventana.
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 no se han ingresado datos, el sistema muestra el mensaje Debe
ingresar el nombre del autor o autores del laboratorio, 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 Nuevo Laboratorio.
Si se produce una falla en la creacion de alguna de las listas de neuronas
o de redes neuronales, el sistema muestra el mensaje Error al crear
la lista xxx, 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 el usuario presiona el boton de Cancelar en la ventana Nuevo
Laboratorio, el sistema cierra la ventana quedando en la Ventana
Principal.
Cargar 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 el dialogo Cargar archivos (ver Figura
2.8).

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.

DE LOS CASOS DE USO


3.1. DESCRIPCION

49

El sistema cierra el dialogo Guardar como, guarda la informacion del


laboratorio actual (autores, listas de las neuronas de entrada, neurona
de retardo, neurona de proceso, redes neuronales y demas actividades
realizadas) en la ubicacion y con el nombre especificado.
Luego el sistema muestra en la zona del reporte de actividades de la
Ventana Principal (ver Figura 2.5) el mensaje:
/*
Guardado en: nombreCompletoDelArchivo
En la fecha: fechaYHoraActual
*/

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

Paquete neurona de entrada

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 );

(nombreVariable y nombreNeurona corresponden respectivamente al


nombre de la variable que referencia a la neurona de entrada y al
nombre para dicha neurona).
Y finalmente el sistema cierra la ventana Crear Neurona y activa las
alternativas Obtener nombre, Asignar Valor de Salida, y Obtener
Valor de Salida de la opcion Neurona de Entrada en la Ventana
Principal.
Curso alterno
Si el usuario presiona el boton Cancelar en la ventana Crear Neurona, el sistema cierra dicha ventana quedando en la Ventana Principal.
Si no se han ingresado datos, el sistema muestra el mensaje Ingrese
el nombre de la variable y el de 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
Crear neurona.
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 Neurona.
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 Neurona.
Si en la lista de neuronas de entrada ya existe otra con el mismo
nombre, el sistema muestra el mensaje Ya existe una neurona de

DE LOS CASOS DE USO


3.1. DESCRIPCION

51

entrada 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 Neurona.
Si falla le creacion de la neurona de entrada, el sistema muestra el
mensaje Error al crear la neurona de entrada, 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.
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.
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.
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 entrada. 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 entrada 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.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.

DE LOS CASOS DE USO


3.1. DESCRIPCION

53

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 entrada. Luego actualiza
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 entrada), verifica el formato del
valor de salida y actualiza dicho valor en la neurona de entrada 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 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 ( );

(TipoMonitorNeuronaEntrada y nombreVariableMonitor corresponden respectivamente al tipo de monitor seleccionado y al nombre definido


por el usuario para la variable que referencia al monitor).
Y finalmente el sistema cierra la ventana Crear Monitor y activa la
alternativa Asignar monitor, de la opcion Neurona de Entrada en
la Ventana Principal.
Curso alterno
Si el usuario presiona el boton Cancelar en la ventana Crear Monitor, el sistema cierra dicha ventana quedando en la Ventana Principal.
Si falla la obtencion del disco del listado de todos los tipos de monitores, el sistema cierra la ventana Crear Monitor, muestra el mensaje Error al leer el disco para obtener el listado de monitores, en
un Di
alogo de Error (ver Figura 2.59), el usuario presiona el boton

DE LOS CASOS DE USO


3.1. DESCRIPCION

55

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 entrada, el
sistema cierra la ventana Crear Monitor, y muestra el mensaje No
hay monitores disponibles para neuronas de entrada, 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 entrada y
las que hagan referencia a neuronas de entrada. 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 entrada, posteriormente el usuario
presiona el boton Aceptar de dicha ventana, el sistema le adiciona la

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 );

(nombreVariableNeurona y nombreVariableMonitor corresponden a


los nombres de las variables que hacen referencia a la neurona de entrada y al monitor respectivamente).
Y finalmente el sistema cierra la ventana Asignar Monitor y activa la
alternativa Desasignar Monitor de la opcion Neurona de Entrada
en la Ventana Principal.
Curso alterno
Si el usuario presiona el boton Cancelar en la ventana Asignar
monitor, el sistema cierra dicha ventana quedando en la Ventana
Principal.
Si en la lista de variables no se encuentran variables a neuronas de
entrada, el sistema cierra la ventana Asignar Monitor, y muestra
el mensaje No hay variables disponibles a neuronas de entrada, 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.
Desasignar 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 entrada y
las que hagan referencia a neuronas de entrada. Luego actualiza los
listados que aparecen en la ventana Desasignar Monitor (ver Figura
2.17).
El usuario en la ventana Desasignar 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 entrada, posteriormente el
usuario presiona el boton Aceptar de dicha ventana, el sistema retira
la referencia al monitor (valor de la variable nombreVariableMonitor)
de la neurona referenciada por la variable nombreVariableNeurona.

DE LOS CASOS DE USO


3.1. DESCRIPCION

57

Posteriormente el sistema muestra en la zona de reporte de actividades


de la Ventana Principal (ver Figura 2.5) el mensaje:

nombreVariableNeurona.desasignarMonitor ( nombreVariableMonitor );

(nombreVariableNeurona y nombreVariableMonitor corresponden al


nombre de las variables que referencian a una neurona de entrada y a
un monitor respectivamente).
Y finalmente el sistema cierra la ventana Desasignar Monitor.
Curso alterno
Si el usuario presiona el boton Cancelar en la ventana Desasignar
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 entrada, 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:

// Nuevo monitor nombreTipoMonitor para neuronas de entrada


/* fragmentosDeCodigoJava */

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

DE LOS CASOS DE USO


3.1. DESCRIPCION

59

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 almacenar 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.
Si no se puede eliminar del disco el codigo fuente de la clase del nuevo
tipo de monitor, el sistema muestra el mensaje Error al eliminar la
clase del nuevo tipo de monitor 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 Nuevo Monitor.
Cargar monitor
Curso b
asico
El usuario en la ventana Definir Nuevo Monitor (ver Figura 2.18)
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
nombre del archivo que desea y presiona el boton Cargar de dicho
dialogo. El sistema carga la informacion del nuevo tipo de monitor del
disco, actualiza la ventana Definir Nuevo Monitor y cierra el dialogo
quedando en la ventana Definir Nuevo Monitor.
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
Nuevo Monitor.
Si falla la carga de la informacion del nuevo tipo de monitor, el sistema
muestra el mensaje Error al cargar los datos del nuevo tipo de monitor, 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.


PRELIMINAR
CAPITULO 3. ANALISIS
Y DISENO

60

3.1.3.

Paquete neurona de retardo

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 );

(TipoNeuronaDeRetardo, nombreVariable y nombreNeurona corresponden respectivamente al tipo de neurona seleccionada, al nombre de


la variable que referencia a la neurona de entrada y al nombre para
dicha neurona).
Y finalmente el sistema cierra la ventana Crear Neurona de Retardo
y activa las alternativas
Obtener Nombre, Obtener Valor de Salida, Asignar Valor de Salida, Actualizar valor presente, Obtener Valor Futuro, Actualizar
Valor Futuro, Definir Nuevo Valor Futuro, Enlazar Neurona,
Obtener Estado del Enlace, Obtener con quien se Relaciona y

DE LOS CASOS DE USO


3.1. DESCRIPCION

61

Obtener Nombre de la Neurona Enlazada 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 neuronas
de retardo, el sistema cierra la ventana Crear Neurona de Retardo,
muestra el mensaje Error al leer el disco para obtener el listado de
tipos de neuronas de retardo, 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 (Z 1 ) de neurona de retardo.
Si el usuario presiona el boton Cancelar en la ventana Crear Neurona de Retardo, el sistema cierra dicha ventana quedando en la Ventana Principal.
Si no se han ingresado datos, el sistema muestra el mensaje Ingrese
el nombre de la variable y el de 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
Crear neurona de Retardo.
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 Neurona de Retardo.
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 Neurona de Retardo.
Si en la lista de neuronas de retardo ya existe otra con el mismo nombre, el sistema muestra el mensaje Ya existe una neurona de retardo
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 Neurona de Retardo.
Si falla le creacion de la neurona de retardo, el sistema muestra el
mensaje Error al crear la neurona de retardo, en un Di
alogo de
Error, el usuario presiona el boton Aceptar de dicho dialogo y el

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.

(nombreVariable y nombreNeurona corresponden respectivamente al


nombre de la variable que referencia a la neurona deseada y al nombre
de la neurona de retardo).
Finalmente el sistema cierra la ventana Obtener Nombre.

DE LOS CASOS DE USO


3.1. DESCRIPCION

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

DE LOS CASOS DE USO


3.1. DESCRIPCION

65

el listado que aparece en la ventana Actualizar Valor Presente (ver


Figura 2.21).
El usuario en la ventana Actualizar Valor Presente selecciona el
nombre de la variable que referencia la neurona a la cual se le desea
actualizar el valor presente.
El sistema obtiene el valor futuro (valor candidato a ser proximo valor
presente) de la neurona de retardo que se encuentra referenciada por
la variable seleccionada y lo muestra en la misma ventana Actualizar
Valor Presente.
El usuario presiona el boton Aceptar que se encuentra en la misma
ventana, actualiza el valor presente con el valor futuro (ella notifica
del cambio a sus monitores, si los tiene), luego muestra en la zona de
reporte de actividades de la Ventana Principal (ver Figura 2.5) el
mensaje:

nombreVariable.actualizarValorPresente ( );
// El nuevo valor presente es: valorPresente.

(nombreVariable y valorPresente corresponden respectivamente al


nombre de la variable que referencia a la neurona deseada y al nuevo
valor presente de dicha neurona de retardo).
Finalmente el sistema cierra la ventana Actualizar Valor Presente.
Curso alterno
Si el usuario presiona el boton Cancelar en la ventana Actualizar
Valor Presente, el sistema cierra dicha ventana quedando en la Ventana Principal.
Obtener 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 Obtener Valor Futuro (ver
Figura 2.22).
El usuario en la ventana Obtener Valor Futuro selecciona el nombre
de la variable que referencia la neurona a la cual se le desea obtener el
valor futuro.
El sistema obtiene el valor futuro de la neurona de retardo que se
encuentra referenciada por la variable seleccionada (preguntando a

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.

DE LOS CASOS DE USO


3.1. DESCRIPCION

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.actualizarValorFuturo ( ); // El valor futuro es: valorFuturo.

(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

// Nuevo tipo de neurona de retardo nombreTipoDeNeurona


/* fragmentosDeCodigoJava */

(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

DE LOS CASOS DE USO


3.1. DESCRIPCION

69

tipo de neurona de retardo 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 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 Valor
Futuro.
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 Valor Futuro.
Si no se puede guardar en el disco el nuevo tipo de neurona de retardo,
el sistema muestra el mensaje Error al almacenar el nuevo tipo de
neurona de retardo 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 no se puede eliminar del disco el codigo fuente de la clase del nuevo
tipo de neurona de retardo, el sistema muestra el mensaje Error al
eliminar la clase del nuevo tipo de neurona de retardo 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
Nuevo Valor Futuro.
Cargar valor futuro
Curso b
asico
El usuario en la ventana Definir Nuevo Valor Futuro (ver Figura
2.24) 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
nombre del archivo que desea y presiona el boton Cargar de dicho
dialogo. El sistema carga la informacion del nuevo valor futuro del
disco, actualiza la ventana Definir Nuevo valor futuro y cierra el
dialogo quedando en la ventana Definir Nuevo Valor Futuro.
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
Nuevo Valor Futuro.

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 );

(nombreVariableNR y nombreVariableNeurona corresponden respectivamente al nombre de la variable que referencia a la neurona de


retardo y a la variable que referencia a la neurona a enlazar).
Y finalmente el sistema cierra la ventana Enlazar Neurona y activa la
alternativa Desasignar Neurona de la opcion Neurona de Retardo
en la Ventana Principal.
Curso alterno
Si el usuario presiona el boton Cancelar en la ventana Enlazar
Neurona, el sistema cierra dicha ventana quedando en la Ventana
Principal.
Desenlazar neurona
Curso b
asico
El sistema obtiene de la lista de variables, el listado de todas las

DE LOS CASOS DE USO


3.1. DESCRIPCION

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 ( );

(nombreVariableNeuronaDeRetardo corresponde al nombre de la variable que referencia la neurona de retardo deseada).


Posteriormente el sistema cierra la ventana Desenlazar Neurona y
determina si existen otras neuronas enlazadas, de no haber, desactiva
la alternativa Desenlazar Neurona de la opcion Neurona de retardo en la Ventana Principal.
Curso alterno
Si el usuario presiona el boton Cancelar en la ventana Desenlazar
Neurona, el sistema cierra dicha ventana quedando en la Ventana
Principal.
Obtener estado enlace
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 Estado del Enlace (ver
Figura 2.27).
El usuario en la ventana Obtener Estado del Enlace selecciona el
nombre de la variable que referencia la neurona a la cual se le desea
obtener el estado del enlace.
El sistema obtiene el estado del enlace de la neurona de retardo que
se encuentra referenciada por la variable seleccionada y lo muestra en
la misma ventana Obtener Estado del Enlace.

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 y estadoDelEnlace corresponden respectivamente


al nombre de la variable que referencia a la neurona deseada y al estado
del enlace de la neurona de retardo).
Finalmente el sistema cierra la ventana Obtener Estado del Enlace.
Curso alterno
Si el usuario presiona el boton Cancelar en la ventana Obtener
Estado del Enlace, el sistema cierra dicha ventana quedando en la
Ventana Principal.
Obtener con quien se relaciona
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 con quien se Relaciona
(ver Figura 2.28).
El usuario en la ventana Obtener con quien se Relaciona selecciona
el nombre de la variable que referencia la neurona a la cual se le desea
obtener la lista de neuronas con las cuales se relaciona.
El sistema obtiene la lista de las neuronas con las cuales se relaciona
la neurona de retardo que se encuentra referenciada por la variable
seleccionada y la muestra en la misma ventana Obtener con quien se
Relaciona.
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.obtenerConQuienSeRelaciona ( );
/* Se relacionada con: listaDeNeuronasRelacionadas */

DE LOS CASOS DE USO


3.1. DESCRIPCION

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 ( );

(TipoMonitorNeuronaRetardo y nombreVariableMonitor corresponden respectivamente al tipo de monitor seleccionado y al nombre de la


variable definido por el usuario).
Y finalmente el sistema cierra la ventana Crear Monitor y activa la
alternativa Asignar monitor, de la opcion Neurona de Retardo en
la Ventana Principal.
Curso alterno
Si el usuario presiona el boton Cancelar en la ventana Crear Monitor, el sistema cierra dicha ventana quedando en la Ventana Principal.
Si falla la obtencion del disco del listado de todos los tipos de monitores, el sistema cierra la ventana Crear Monitor, muestra el mensaje Error al leer el disco para obtener el listado de monitores, en

DE LOS CASOS DE USO


3.1. DESCRIPCION

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 );

(nombreVariableNeurona y nombreVariableMonitor corresponden a


los nombres de las variables que hacen referencia a la neurona de retardo y al monitor respectivamente).
Y finalmente el sistema cierra la ventana Asignar Monitor y activa la
alternativa Desasignar Monitor de la opcion Neurona de Retardo
en la Ventana Principal.
Curso alterno
Si el usuario presiona el boton Cancelar en la ventana Asignar
monitor, el sistema cierra dicha ventana quedando en la Ventana
Principal.
Si en la lista de variables no se encuentran variables a neuronas de
retardo, el sistema cierra la ventana Asignar Monitor, y muestra
el mensaje No hay variables disponibles a 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.
Desasignar 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 Desasignar Monitor (ver Figura
2.17).
El usuario en la ventana Desasignar 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
usuario presiona el boton Aceptar de dicha ventana, el sistema retira
la referencia al monitor (valor de la variable nombreVariableMonitor)
a la neurona referenciada por la variable nombreVariableNeurona.

DE LOS CASOS DE USO


3.1. DESCRIPCION

77

Posteriormente el sistema muestra en la zona de reporte de actividades


de la Ventana Principal (ver Figura 2.5) el mensaje:

nombreVariableNeurona.desasignarMonitor ( nombreVariableMonitor );

(nombreVariableNeurona y nombreVariableMonitor corresponden al


nombre de las variables que referencian a una neurona de retardo y a
un monitor respectivamente).
Y finalmente el sistema cierra la ventana Desasignar Monitor.
Curso alterno
Si el usuario presiona el boton Cancelar en la ventana Desasignar
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 retardo, 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:

// Nuevo monitor nombreTipoMonitor para neuronas de retardo


/* fragmentosDeCodigoJava */

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

DE LOS CASOS DE USO


3.1. DESCRIPCION

79

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.
Si no se puede eliminar del disco el codigo fuente de la clase del nuevo
tipo de monitor, el sistema muestra el mensaje Error al eliminar la
clase del nuevo tipo de monitor 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 Nuevo Monitor.
Cargar monitor
Curso b
asico
El usuario en la ventana Definir Nuevo Monitor (ver Figura 2.18)
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
nombre del archivo que desea y presiona el boton Cargar de dicho
dialogo. El sistema carga la informacion del nuevo tipo de monitor del
disco, actualiza la ventana Definir Nuevo Monitor y cierra el dialogo
quedando en la ventana Definir Nuevo Monitor.
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
Nuevo Monitor.
Si falla la carga de la informacion del nuevo tipo de monitor, el sistema
muestra el mensaje Error al cargar los datos del nuevo tipo de monitor, 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.


PRELIMINAR
CAPITULO 3. ANALISIS
Y DISENO

80

3.1.4.

Paquete neurona de proceso

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

DE LOS CASOS DE USO


3.1. DESCRIPCION

81

de Transferencia, Obtener Umbral de Activaci


on, Cambiar Umbral
de Activaci
on, Obtener Potencial de Activaci
on y Obtener Valor
de Activaci
on de la opcion Neurona de Proceso en la Ventana
Principal.
Y finalmente el sistema cierra la ventana Crear Neurona de Proceso.
Curso alterno
Si el usuario presiona el boton Cancelar en la ventana Crear Neurona de Proceso, el sistema cierra dicha ventana quedando en la Ventana Principal.
Si no se han ingresado datos, el sistema muestra el mensaje Ingrese
el nombre de la variable, el de la neurona y el n
umero de entradas
, 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 neurona de Proceso.
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 Neurona de Proceso.
Si el formato del n
umero de entradas no es correcto, el sistema muestra
el mensaje El formato del n
umero de entradas no corresponde al de
un n
umero entero positivo, 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 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 Neurona de Proceso.
Si en la lista de neuronas de proceso ya existe otra con el mismo
nombre, el sistema muestra el mensaje Ya existe una neurona de
proceso 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 Neurona de Proceso.
Si falla le creacion de la neurona de proceso, el sistema muestra el
mensaje Error al crear la neurona de proceso, en un Di
alogo de
Error, el usuario presiona el boton Aceptar de dicho dialogo y el

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.

(nombreNeurona y nombreVariable corresponden respectivamente al


nombre de la neurona de proceso 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

DE LOS CASOS DE USO


3.1. DESCRIPCION

83

Nombre, el sistema cierra dicha ventana quedando en la Ventana


Principal.
Obtener n
umero de entradas
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 N
umero de Entradas
(ver Figura 2.32).
El usuario en la ventana Obtener N
umero de Entradas selecciona el
nombre de la variable que referencia la neurona a la cual se le desea
obtener el n
umero de entradas.
El sistema obtiene el n
umero de entradas de la neurona de proceso que
se encuentra referenciada por la variable seleccionada y lo muestra en
la misma ventana Obtener N
umero de Entradas.
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.obtenerNumeroDeEntradas ( );
// El n
umero de entradas es: numeroDeEntradas.

(nombreVariable y numeroDeEntradas corresponden respectivamente


al nombre de la variable que referencia la neurona de proceso deseada
y al n
umero de entradas de la neurona de proceso).
Finalmente el sistema cierra la ventana Obtener N
umero de Entradas.
Curso alterno
Si el usuario presiona el boton Cancelar en la ventana Obtener
N
umero de Entradas, el sistema cierra dicha ventana quedando en la
Ventana Principal.
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 proceso y las que hagan

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:

nombreVariableNP.enlazarNeurona ( nombreVariableNeurona, numeroDeEntrada );

(nombreVariableNP, nombreVariableNeurona y numeroDeEntrada corresponden respectivamente al nombre de la variable que referencia a


la neurona de proceso, a la variable que referencia a la neurona a enlazar y por supuesto al n
umero de la entrada a utilizar para realizar
el enlace).
Finalmente, el sistema activa la alternativa Desenlazar Neurona en
una Entrada de la opcion Neurona de Proceso en la Ventana Principal y cierra la ventana Enlazar Neurona en una Entrada.
Curso alterno
Si el usuario presiona el boton Cancelar en la ventana Enlazar
Neurona en una Entrada, 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 Enlazar Neurona en una Entrada que hace referencia
a este n
umero.

DE LOS CASOS DE USO


3.1. DESCRIPCION

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 );

(nombreVariableNeurona y numeroDeEntrada corresponden respectivamente al nombre de la variable seleccionada por el usuario, y a de


la entrada respectiva).
Y posteriormente el sistema determina si existen otras neuronas enlazadas, de no haber, desactiva la alternativa Desenlazar Neurona
en una Entrada de la opcion Neurona de proceso en la Ventana
Principal y cierra la ventana Desenlazar Neurona en una Entrada.
Curso alterno
Si el usuario presiona el boton Cancelar en la ventana Desenlazar
Neurona, 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 Desenlazar Neurona en una Entrada

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.

(nombreVariable, NumeroEntrada y estadoDelEnlace corresponden


respectivamente al nombre de la variable que referencia a la neurona
de proceso, al n
umero de la entrada y por supuesto al estado de dicho
enlace).
Finalmente el sistema cierra la ventana Obtener Estado de una Entrada.
Curso alterno
Si el usuario presiona el boton Cancelar en la ventana Obtener
Estado de una Entrada, 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 Estado de una Entrada

DE LOS CASOS DE USO


3.1. DESCRIPCION

87

Obtener con quien se relaciona


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 con quien se Relaciona
(ver Figura 2.28).
El usuario en la ventana Obtener con quien se Relaciona selecciona
el nombre de la variable que referencia la neurona a la cual se le desea
obtener la lista de neuronas con las cuales se relaciona.
El sistema obtiene la lista de las neuronas con las cuales se relaciona
la neurona de proceso que se encuentra referenciada por la variable
seleccionada (preguntando a las neuronas referenciadas por todas sus
entradas y cuidando de no olverse a preguntar recursivamente) y la
muestra en la misma ventana Obtener con quien se Relaciona.
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.obtenerConQuienSeRelaciona ( );
/* Se relacionada con: listaDeNeuronasRelacionadas */

(nombreVariable y listaDeNeuronasRelacionadas corresponden respectivamente al nombre de la variable que referencia la neurona de


proceso deseada y al listado de las neuronas con las cuales se relaciona la neurona de proceso, en esta lista se indica el lugar en donde
se detecte una recursion en los enlaces de la neurona).
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 neuronas de proceso. Tambien obtiene el

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:

nombreVariable.obtenerNombreDeNeuronaEnlazada ( NumeroEntrada );,


// El nombre es: nombreDeLaNeuronaEnlazada.

(nombreVariable, NumeroEntrada y nombreDeLaNeuronaEnlazada 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
nombre de la neurona enlazada en dicha entrada o <Libre> si esta
libre).
Finalmente el sistema cierra la ventana Obtener Nombre de una Neurona Enlazada.
Curso alterno
Si el usuario presiona el boton Cancelar en la ventana Obtener
Nombre de una Neurona Enlazada, 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 Nombre de una Neurona Enlazada

DE LOS CASOS DE USO


3.1. DESCRIPCION

89

Obtener 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 Obtener Peso de un Enlace (ver Figura 2.37), 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 Peso de un Enlace 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 peso del enlace en la entrada especificada de
la neurona de proceso que se encuentra referenciada por la variable
seleccionada y lo muestra en la misma ventana Obtener Peso de un
Enlace.
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.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.cambiarPesoEnlaceDeLaEntrada ( NumeroEntrada, 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 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

DE LOS CASOS DE USO


3.1. DESCRIPCION

91

sistema cierra el dialogo quedando en la ventana Cambiar Peso de


un Enlace.
Si el formato del peso del enlace no es correcto, el sistema muestra el
mensaje El formato del peso de la entrada no corresponde 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 Peso de un Enlace.
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 Cambiar Peso de un Enlace
Obtener funci
on base
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 Funci
on Base
(ver Figura 2.39).
El usuario en la ventana Obtener Funci
on Base selecciona el nombre
de la variable que referencia la neurona a la cual se le desea obtener el
nombre de la funcion base asignada a la neurona.
El sistema obtiene el nombre de la funcion base de la neurona de
proceso que se encuentra referenciada por la variable seleccionada y lo
muestra en la misma ventana Obtener Funci
on Base.
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.obtenerNombreFuncionBase ( );
// La funci
on base es: nombreDeLaFuncionBase.

(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:

nombreVariable.cambiarFuncionBase ( new nombreFuncionBase( ) );

(nombreVariable y nombreFuncionBase corresponden respectivamente


al nombre de la variable que referencia la neurona de proceso deseada
y el nombre de la funcion base a asignar).
Y finalmente el sistema cierra la ventana Cambiar Funci
on Base.
Curso alterno
Si el usuario presiona el boton Cancelar en la ventana Cambiar
Funci
on Base, el sistema cierra dicha ventana quedando en la Ventana Principal.
Si falla la recuperacion del disco, el sistema ignora el error y solo
muestra las funciones base estandar.
Definir nueva funci
on base
Curso b
asico
El usuario en la ventana Definir Nueva Funci
on Base (ver Figura
2.41) escribe el nombre de la nueva funcion base, posteriormente escribe el fragmento de codigo en Java que define la funcion, 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 funcion base y el fragmento de codigo Java), verifica que el nombre tenga el formato de un identificador valido, busca

DE LOS CASOS DE USO


3.1. DESCRIPCION

93

en el disco una funcion base que tenga el mismo nombre, construye


una clase valida en Java (uniendo el fragmento dado 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:

// 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

DE LOS CASOS DE USO


3.1. DESCRIPCION

95

nombre del archivo que desea y presiona el boton Cargar de dicho


dialogo. El sistema carga la informacion de la nueva funcion base del
disco, actualiza la ventana Definir Nueva Funci
on Base y cierra el
dialogo quedando en la ventana Definir Nueva Funci
on Base.
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 Funci
on Base.
Si falla la carga de la informacion del nuevo tipo de funcion base, el
sistema muestra el mensaje Error al cargar los datos de la funcion
base, 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 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 una neurona de proceso. Luego actualiza
el listado que aparece en la ventana Obtener Funci
on de Activaci
on
(ver Figura 2.42).
El usuario en la ventana Obtener Funci
on de Activaci
on selecciona
el nombre de la variable que referencia la neurona a la cual se le desea
obtener el nombre de la funcion de activaci
on asignada a la neurona.
El sistema obtiene el nombre de la funcion de activaci
on de la neurona
de proceso que se encuentra referenciada por la variable seleccionada
y lo muestra en la misma ventana Obtener Funci
on 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.obtenerNombreFuncionDeActivacion ( );,
// La funci
on de activaci
on es: nombreDeLaFuncionDeActivacion.

(nombreVariable y nombreDeLaFuncionDeActivacion corresponden


respectivamente al nombre de la variable que referencia a la neurona
de proceso seleccionada y al nombre de la funcion de activaci
on de
dicha neurona).

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 );

(nombreVariable y nombreFuncionDeActivacion corresponden respectivamente al nombre de la variable que referencia la neurona de


proceso deseada y el nombre de la funcion de activaci
on a asignar).
Finalmente el sistema cierra la ventana Cambiar Funci
on de Activaci
on.
Curso alterno
Si el usuario presiona el boton Cancelar en la ventana Cambiar
Funci
on de Activaci
on, el sistema cierra dicha ventana quedando en
la Ventana Principal.

DE LOS CASOS DE USO


3.1. DESCRIPCION

97

Definir nueva funci


on de activaci
on
Curso b
asico
El usuario en la ventana Definir Nueva Funci
on de Activaci
on (ver
Figura 2.44) escribe el nombre de la nueva funcion de activaci
on, posteriormente escribe el fragmento de codigo en Java que define la funcion,
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 funcion de activaci
on y el fragmento de codigo Java),
verifica que el nombre tenga el formato de un identificador valido,
busca en el disco una funcion de activaci
on que tenga el mismo nombre,
construye una clase valida en Java (uniendo el fragmento dado 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:

// Nueva funci
on de activaci
on nombreFuncionActivacion
/* fragmentoDeCodigoJava */

(nombreFuncionActivacion y fragmentoDeCodigoJava corresponden


respectivamente al nombre del nuevo tipo de funcion de activaci
on y a
el fragmento dado por el usuario). Finalmente el sistema cierra la ventana Definir Nueva Funci
on de Activaci
on quedando en la Ventana
Principal.
Curso alterno
Si el usuario presiona el boton Cancelar en la ventana Definir Nueva Funci
on de Activaci
on, 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 activaci
on 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
Activaci
on.

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.

DE LOS CASOS DE USO


3.1. DESCRIPCION

99

Si no se puede eliminar del disco el codigo fuente de la clase del nuevo


tipo de funcion de activaci
on, el sistema muestra el mensaje Error al
eliminar la clase del nuevo tipo de funci
on de activaci
on 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 de Activaci
on.
Cargar funci
on de activaci
on
Curso b
asico
El usuario en la ventana Definir Nueva Funci
on de Activaci
on (ver
Figura 2.44) 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
nombre del archivo que desea y presiona el boton Cargar de dicho dialogo. El sistema carga la informacion de la nueva funcion de
activacion del disco, actualiza la ventana Definir Nueva Funci
on de
Activaci
on y cierra el dialogo quedando en la ventana Definir Nueva
Funci
on de Activaci
on.
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 Funci
on de Activaci
on.
Si falla la carga de la informacion del nuevo tipo de funcion de activacion, el sistema muestra el mensaje Error al cargar los datos de la
funci
on de activaci
on, 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 funci
on de transferencia
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 Funci
on de Transferencia (ver Figura 2.45).
El usuario en la ventana Obtener Funci
on de Transferencia selecciona el nombre de la variable que referencia la neurona a la cual se le
desea obtener el nombre de la funcion de transferencia asignada a la
neurona.

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.

(nombreVariable y nombreFuncionDeTransferencia corresponden respectivamente al nombre de la variable que referencia a la neurona de


proceso seleccionada y al nombre de la funcion de transferencia de
dicha neurona).
Finalmente el sistema cierra la ventana Obtener Funci
on de Transferencia.
Curso alterno
Si el usuario presiona el boton Cancelar en la ventana Obtener
Funci
on de Transferencia, el sistema cierra dicha ventana quedando
en la Ventana Principal.
Cambiar funci
on de transferencia
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 transferencia 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 Transferencia (ver Figura 2.46).
El usuario en la ventana Cambiar Funci
on de Transferencia selecciona el nombre de la variable que referencia a una neurona de proceso
y selecciona el nombre de la funcion de transferencia que desea asignar, posteriormente el usuario presiona el boton Aceptar de dicha
ventana, luego el sistema cambia la funcion de transferencia de la neurona referenciada por la variable seleccionada (ella notifica del cambio
a sus monitores, si los tiene).

DE LOS CASOS DE USO


3.1. DESCRIPCION

101

Posteriormente el sistema muestra en la zona de reporte de actividades


de la Ventana Principal (ver Figura 2.5) el mensaje:

nombreVariable.cambiarFuncionDeTransferencia (nombreFuncionDeTransferencia );

(nombreVariable y nombreFuncionDeTransferencia corresponden respectivamente al nombre de la variable que referencia la neurona de


proceso deseada y el nombre de la funcion de transferencia a asignar).
Finalmente el sistema cierra la ventana Cambiar Funci
on de Transferencia.
Curso alterno
Si el usuario presiona el boton Cancelar en la ventana Cambiar
Funci
on de Transferencia, el sistema cierra dicha ventana quedando
en la Ventana Principal.
Definir nueva funci
on de transferencia
Curso b
asico
El usuario en la ventana Definir Nueva Funci
on de Transferencia
(ver Figura 2.47) escribe el nombre de la nueva funcion de transferencia, posteriormente escribe el fragmento de codigo en Java que define la
funcion, 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 funcion de transferencia y el fragmento de codigo Java), verifica que el nombre tenga el formato de un identificador valido,
busca en el disco una funcion de transferencia que tenga el mismo nombre, construye una clase valida en Java (uniendo el fragmento dado 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:

// 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

DE LOS CASOS DE USO


3.1. DESCRIPCION

103

cierra el dialogo y regresa a la ventana Definir Nueva Funci


on de
Transferencia.
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 Transferencia.
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 Transferencia.
Si no se puede guardar en el disco el nuevo tipo de funcion de transferencia, el sistema muestra el mensaje Error al almacenar 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 no se puede eliminar del disco el codigo fuente de la clase del nuevo
tipo de funcion de transferencia, el sistema muestra el mensaje Error
al eliminar la clase del nuevo tipo de funci
on de transferencia 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 de Transferencia.
Cargar funci
on de transferencia
Curso b
asico
El usuario en la ventana Definir Nueva Funci
on de Transferencia
(ver Figura 2.47) 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
nombre del archivo que desea y presiona el boton Cargar de dicho dialogo. El sistema carga la informacion de la nueva funcion de
transferencia del disco, actualiza la ventana Definir Nueva Funci
on
de Transferencia y cierra el dialogo quedando en la ventana Definir
Nueva Funci
on de Transferencia.
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 Funci
on de Transferencia.

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.

(nombreVariable y umbralDeActivacion corresponden respectivamente


al nombre de la variable que referencia a la neurona de proceso seleccionada y al umbral de activaci
on de dicha neurona).
Finalmente el sistema cierra la ventana Obtener Umbral de Activaci
on.
Curso alterno
Si el usuario presiona el boton Cancelar en la ventana Obtener
Umbral de Activaci
on, el sistema cierra dicha ventana quedando en
la Ventana Principal.

DE LOS CASOS DE USO


3.1. DESCRIPCION

105

Cambiar 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 neuronas de proceso. Luego actualiza
el listado que aparece en la ventana Cambiar Umbral de Activaci
on
(ver Figura 2.49).
El usuario en la ventana Cambiar Umbral de Activaci
on selecciona
el nombre de la variable que referencia la neurona a la cual se le desea
cambiar el umbral de activaci
on y luego digita el nuevo umbral de
activacion.
El sistema verifica que se hayan ingresado los datos (se espera el nuevo
umbral de activacion para la neurona de entrada), verifica el formato
del umbral de activacion (n
umero real), luego cambia el umbral de
activacion 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 Umbral de
Activaci
on. Tambien muestra en la zona de reporte de actividades de
la Ventana Principal (ver Figura 2.5) el mensaje:

nombreVariable.cambiarUmbralDeActivacion ( umbralDeActivacion );

(nombreVariable y umbralDeActivacion corresponden respectivamente


al nombre de la variable que referencia a la neurona de proceso deseada, y por supuesto al umbral de activaci
on).
El usuario presiona el boton Aceptar que se encuentra en la misma
ventana, el sistema cierra la ventana Cambiar Umbral de Activaci
on.
Curso alterno
Si el usuario presiona el boton Cancelar en la ventana Cambiar
Umbral de Activaci
on, el sistema cierra dicha ventana quedando en
la Ventana Principal.
Si no se han ingresado datos, el sistema muestra el mensaje Ingrese
el nuevo umbral de activaci
on 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
Cambiar Umbral de Activaci
on.
Si el formato del umbral de activaci
on no es correcto, el sistema muestra el mensaje El formato del umbral de activaci
on no corresponde

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.

DE LOS CASOS DE USO


3.1. DESCRIPCION

107

Obtener valor 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 Valor de Activaci
on
(ver Figura 2.51).
El usuario en la ventana Obtener Valor de Activaci
on selecciona el
nombre de la variable que referencia la neurona a la cual se le desea
obtener el valor de activaci
on de la neurona.
El sistema obtiene el valor de activaci
on de la neurona de proceso
que se encuentra referenciada por la variable seleccionada (usando el
potencial de activacion de la misma neurona) y lo muestra en la misma
ventana Obtener Valor 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.obtenerValorDeActivacion ( );,
// El valor de activaci
on es: valorDeActivacion.

(nombreVariable y valorDeActivacion corresponden respectivamente


al nombre de la variable que referencia a la neurona de proceso seleccionada y al valor 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 Valor de Activaci
on.
Curso alterno
Si el usuario presiona el boton Cancelar en la ventana Obtener
Valor de Activaci
on, 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 proceso. Luego actualiza

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.

(nombreVariable y valorDeSalida corresponden respectivamente al


nombre de la variable que referencia a la neurona de proceso seleccionada y al valor de salida 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 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.
Crear monitor
Curso b
asico
El sistema obtiene del disco, el listado de todos los tipos de monitores
para neuronas de proceso, 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 proceso, 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.

DE LOS CASOS DE USO


3.1. DESCRIPCION

109

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 proceso- 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:

TipoMonitorNeuronaProceso nombreVariableMonitor;
nombreVariableMonitor = new TipoMonitorNeuronaProceso ( );

(TipoMonitorNeuronaProceso y nombreVariableMonitor corresponden respectivamente al tipo de monitor seleccionado y al nombre de la


variable definido por el usuario).
Y finalmente el sistema cierra la ventana Crear Monitor y activa la
alternativa Asignar monitor, de la opcion Neurona de Proceso en
la Ventana Principal.
Curso alterno
Si el usuario presiona el boton Cancelar en la ventana Crear Monitor, el sistema cierra dicha ventana quedando en la Ventana Principal.
Si falla la obtencion del disco del listado de todos los tipos de monitores, el sistema cierra la ventana Crear Monitor, muestra el mensaje Error al leer el disco para obtener el listado de monitores, 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 en el disco no se encuentran monitores para neuronas de proceso, el
sistema cierra la ventana Crear Monitor, y muestra el mensaje No
hay monitores disponibles para neuronas de proceso, 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.

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 );

(nombreVariableNeurona y nombreVariableMonitor corresponden a


los nombres de las variables que hacen referencia a la neurona de proceso y al monitor respectivamente).

DE LOS CASOS DE USO


3.1. DESCRIPCION

111

Y finalmente el sistema cierra la ventana Asignar Monitor y activa la


alternativa Desasignar Monitor de la opcion Neurona de Proceso
en la Ventana Principal.
Curso alterno
Si el usuario presiona el boton Cancelar en la ventana Asignar
monitor, el sistema cierra dicha ventana quedando en la Ventana
Principal.
Si en la lista de variables no se encuentran variables a neuronas de
proceso, el sistema cierra la ventana Asignar Monitor, y muestra
el mensaje No hay variables disponibles a neuronas de proceso, 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.
Desasignar 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 Desasignar Monitor (ver Figura
2.17).
El usuario en la ventana Desasignar 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 retira
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.desasignarMonitor ( nombreVariableMonitor );

(nombreVariableNeurona y nombreVariableMonitor corresponden al


nombre de las variables que referencian a una neurona de proceso y a
un monitor respectivamente).
Y finalmente el sistema cierra la ventana Desasignar Monitor.
Curso alterno
Si el usuario presiona el boton Cancelar en la ventana Desasignar

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:

// Nuevo monitor nombreTipoMonitor para neuronas de proceso


/* fragmentosDeCodigoJava */

(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

DE LOS CASOS DE USO


3.1. DESCRIPCION

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

Si no se puede eliminar del disco el codigo fuente de la clase del nuevo


tipo de monitor, el sistema muestra el mensaje Error al eliminar la
clase del nuevo tipo de monitor 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 Nuevo Monitor.
Cargar monitor
Curso b
asico
El usuario en la ventana Definir Nuevo Monitor (ver Figura 2.18)
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
nombre del archivo que desea y presiona el boton Cargar de dicho
dialogo. El sistema carga la informacion del nuevo tipo de monitor del
disco, actualiza la ventana Definir Nuevo Monitor y cierra el dialogo
quedando en la ventana Definir Nuevo Monitor.
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
Nuevo Monitor.
Si falla la carga de la informacion del nuevo tipo de monitor, el sistema
muestra el mensaje Error al cargar los datos del nuevo tipo de monitor, 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.

3.1.5.

Paquete red neuronal

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

DE LOS CASOS DE USO


3.1. DESCRIPCION

115

dicha red, 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 red), 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 redes neuronales
otra red con el mismo nombre, crea una red neuronal (asignandole el
nombre especificado), la adiciona a la lista de redes neuronales, luego
adiciona una nueva entrada a la lista de variables (indicando el nombre, el tipo de variable -red neuronal- y una referencia a la nueva red
neuronal), posteriormente muestra en la zona de reporte de actividades
de la Ventana Principal (ver Figura 2.5) el mensaje:

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

DE LOS CASOS DE USO


3.1. DESCRIPCION

117

variables que hagan referencia a una red neuronal. 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 red neuronal a la cual se le desea obtener
el nombre.
El sistema obtiene el nombre de la red neuronal 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.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:

// Nuevo tipo de red neuronal nombreTipoDeRedNeuronal


/* fragmentosDecodigoJava */

nombreTipoDeRedNeuronal y fragmentosDecodigoJava corresponde


en realidad al nombre del nuevo tipo de red neuronal y los fragmentos
dados por el usuario. Finalmente el sistema cierra la ventana Definir
Nueva Red Neuronal quedando en la Ventana Principal.
Curso alterno
Si el usuario presiona el boton Cancelar en la ventana Definir Nueva Red Neuronal, 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 red neuronal 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 Red Neuronal.
Si el formato del nombre del nuevo tipo de red neuronal 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 Red
Neuronal.
Si no se puede buscar en el disco el nuevo tipo de red neuronal, el sistema muestra el mensaje Error al buscar el nuevo tipo de red neuronal
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 Red Neuronal.
Si ya existe otro tipo de red neuronal con ese nombre, el sistema muestra el mensaje Ya existe un tipo de red neuronal 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

DE LOS CASOS DE USO


3.1. DESCRIPCION

119

del dialogo, el sistema cierra el dialogo y regresa a la ventana Definir


Nueva Red Neuronal 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 red neuronal 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 Red Neuronal.
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 Red
Neuronal.
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 Red Neuronal.
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 red neuronal
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 Red Neuronal.
Si no se puede eliminar del disco el codigo fuente de la clase del nuevo
tipo de red neuronal, el sistema muestra el mensaje Error al eliminar
la clase del nuevo tipo de red neuronal 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 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.
Cargar red neuronal
Curso b
asico
El usuario en la ventana Definir Nueva Red Neuronal (ver Figura
2.54) 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
nombre del archivo que desea y presiona el boton Cargar de dicho

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 ( );

(nombreVariable corresponde al nombre de la variable que referencia


a la red neuronal).
Finalmente el sistema cierra la ventana Ejecutar Red.
Curso alterno
Si el usuario presiona el boton Cancelar en la ventana Ejecutar
Red, el sistema cierra dicha ventana quedando en la Ventana Principal.
Si falla la ejecucion de la red neuronal, el sistema muestra el mensaje
Error al ejecutar la red neuronal, en un Di
alogo de Error (ver
Figura 2.59), el usuario presiona el boton Aceptar de dicho dialogo,

DE LOS CASOS DE USO


3.1. DESCRIPCION

121

el sistema cierra el dialogo de error y cierra la ventana Ejecutar Red,


quedando en la Ventana Principal.
Generar aplicaci
on
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 Generar Aplicaci
on (ver Figura
2.56).
El usuario en la ventana Generar Aplicaci
on selecciona el nombre
de la variable que referencia la red neuronal a la cual le desea generar
una aplicacion y presiona el boton Aceptar que se encuentra en la
misma ventana.
El sistema elimina el contenido de la carpeta Aplicacion, luego copia
en ella todos los archivos necesarios para ejecutar la red neuronal que
se encuentra referenciada por la variable seleccionada y finalmente
muestra en la zona de reporte de actividades de la Ventana Principal
(ver Figura 2.5) el mensaje:

La red neuronal nombreDeLaRedNeuronal fue generada como aplicaci


on
en la carpeta Aplicacion.

(nombreDeLaRedNeuronal y Aplicacion corresponden respectivamente


al nombre de la red neuronal y al nombre de la carpeta en donde se
genero la aplicacion).
Finalmente el sistema cierra la ventana Generar Aplicaci
on.
Curso alterno
Si el usuario presiona el boton Cancelar en la ventana Generar
Aplicaci
on, el sistema cierra dicha ventana quedando en la Ventana
Principal.
Si falla la eliminacion del contenido de la carpeta Aplicacion, el sistema muestra el mensaje Error al eliminar el contenido de la carpeta
Aplicacion, 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 Generar Aplicaci
on.
Si falla la copia de los archivo necesarios para ejecutar la red neuronal
en la carpeta Aplicacion, el sistema muestra el mensaje Error al

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. DIAGRAMAS DE ROBUSTEZ

3.2.

123

Diagramas de robustez

El objetivo primordial de los diagramas de robustez es ayudar a mejorar


los textos detallados de los casos de uso. Esto es importante pues ellos se
convierten en los diagramas de secuencia mas adelante.
Los diagramas de robustez permiten realizar los siguientes chequeos:
Chequeo de sensatez: Ayuda a estar seguro que el texto de los casos
de uso es correcto y que no sea irrazonable o imposible.
Chequeo de correlaci
on y completitud: Ayuda a estar seguro
que todos los casos de uso hablan de los cursos alternativos de accion
necesarios.
Adicional a esto, permite el descubrimiento de objetos omitidos en el
modelo de dominio. No hay que olvidar reescribir el texto de los casos de uso
(si es necesario) para que concuerde uno a uno con el diagrama de robustez.
Los elementos de un diagrama de robustez son los que se puede ver en
la Figura 3.1.

Figura 3.1: Elementos de un diagrama de robustez


Por supuesto, en los diagramas de robustez tambien aparecen los actores
como entes que interact
uan con el sistema.

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.

Figura 3.2: Reglas basica de un diagrama de robustez

3.2. DIAGRAMAS 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.

Figura 3.3: Iniciar laboratorio


Cargar laboratorio: La figura 3.4 corresponde al diagrama de robustez del texto del caso de uso de la pagina 47.
Guardar laboratorio: La figura 3.5 corresponde al diagrama de robustez del texto del caso de uso de la pagina 48.

126

PRELIMINAR
CAPITULO 3. ANALISIS
Y DISENO

Figura 3.4: Cargar laboratorio

Figura 3.5: Guardar laboratorio

3.2. DIAGRAMAS DE ROBUSTEZ

3.2.2.

127

Paquete neurona de entrada

Crear neurona: La figura 3.6 corresponde al diagrama de robustez


del texto del caso de uso de la pagina 49.

Figura 3.6: Crear neurona


Obtener nombre: La figura 3.7 corresponde al diagrama de robustez
del texto del caso de uso de la pagina 51.
Obtener valor de salida: La figura 3.8 corresponde al diagrama de
robustez del texto del caso de uso de la pagina 52.

128

PRELIMINAR
CAPITULO 3. ANALISIS
Y DISENO

Figura 3.7: Obtener nombre

Figura 3.8: Obtener valor de salida

3.2. DIAGRAMAS DE ROBUSTEZ

129

Asignar valor de salida: La figura 3.9 corresponde al diagrama de


robustez del texto del caso de uso de la pagina 53.

Figura 3.9: Asignar valor de salida


Crear monitor: La figura 3.10 corresponde al diagrama de robustez
del texto del caso de uso de la pagina 54.

130

PRELIMINAR
CAPITULO 3. ANALISIS
Y DISENO

Figura 3.10: Crear monitor

3.2. DIAGRAMAS DE ROBUSTEZ

131

Asignar monitor: La figura 3.11 corresponde al diagrama de robustez


del texto del caso de uso de la pagina 55.

Figura 3.11: Asignar monitor


Desasignar monitor: La figura 3.12 corresponde al diagrama de robustez del texto del caso de uso de la pagina 56.
Definir nuevo monitor: La figura 3.13 corresponde al diagrama de
robustez del texto del caso de uso de la pagina 57.

132

PRELIMINAR
CAPITULO 3. ANALISIS
Y DISENO

Figura 3.12: Desasignar monitor

3.2. DIAGRAMAS DE ROBUSTEZ

Figura 3.13: Definir nuevo monitor

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.

Figura 3.14: Cargar monitor

3.2. DIAGRAMAS DE ROBUSTEZ

3.2.3.

135

Paquete neurona de retardo

Crear neurona La figura 3.15 corresponde al diagrama de robustez


del texto del caso de uso de la pagina 60.

Figura 3.15: Crear neurona


Obtener nombre La figura 3.16 corresponde al diagrama de robustez
del texto del caso de uso de la pagina 62.
Obtener valor de salida La figura 3.17 corresponde al diagrama de
robustez del texto del caso de uso de la pagina 63.

136

PRELIMINAR
CAPITULO 3. ANALISIS
Y DISENO

Figura 3.16: Obtener nombre

Figura 3.17: Obtener valor de salida

3.2. DIAGRAMAS DE ROBUSTEZ

137

Asignar valor de salida La figura 3.18 corresponde al diagrama de


robustez del texto del caso de uso de la pagina 63.

Figura 3.18: Asignar valor de salida


Actualizar valor presente La figura 3.19 corresponde al diagrama
de robustez del texto del caso de uso de la pagina 64.

138

PRELIMINAR
CAPITULO 3. ANALISIS
Y DISENO

Figura 3.19: Actualizar valor presente


Obtener valor futuro La figura 3.20 corresponde al diagrama de
robustez del texto del caso de uso de la pagina 65.
Actualizar valor futuro La figura 3.21 corresponde al diagrama de
robustez del texto del caso de uso de la pagina 66.
Definir nuevo valor futuro La figura 3.22 corresponde al diagrama
de robustez del texto del caso de uso de la pagina 67.

3.2. DIAGRAMAS DE ROBUSTEZ

Figura 3.20: Obtener valor futuro

Figura 3.21: Actualizar valor futuro

139

140

PRELIMINAR
CAPITULO 3. ANALISIS
Y DISENO

Figura 3.22: Definir nuevo valor futuro

3.2. DIAGRAMAS DE ROBUSTEZ

141

Cargar valor futuro La figura 3.23 corresponde al diagrama de robustez del texto del caso de uso de la pagina 69.

Figura 3.23: Cargar valor futuro


Enlazar neurona La figura 3.24 corresponde al diagrama de robustez
del texto del caso de uso de la pagina 70.
Desenlazar neurona La figura 3.25 corresponde al diagrama de robustez del texto del caso de uso de la pagina 70.
Obtener estado enlace La figura 3.26 corresponde al diagrama de
robustez del texto del caso de uso de la pagina 71.
Obtener con quien se relaciona La figura 3.27 corresponde al diagrama de robustez del texto del caso de uso de la pagina 72.

142

PRELIMINAR
CAPITULO 3. ANALISIS
Y DISENO

Figura 3.24: Enlazar neurona

Figura 3.25: Desenlazar neurona

3.2. DIAGRAMAS DE ROBUSTEZ

Figura 3.26: Obtener estado del enlace

Figura 3.27: Obtener con quien se relaciona

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.

Figura 3.28: Obtener nombre de la neurona enlazada


Crear monitor La figura 3.29 corresponde al diagrama de robustez
del texto del caso de uso de la pagina 74.
Asignar monitor La figura 3.30 corresponde al diagrama de robustez
del texto del caso de uso de la pagina 75.

3.2. DIAGRAMAS DE ROBUSTEZ

Figura 3.29: Crear monitor

145

146

PRELIMINAR
CAPITULO 3. ANALISIS
Y DISENO

Figura 3.30: Asignar monitor

3.2. DIAGRAMAS DE ROBUSTEZ

147

Desasignar monitor La figura 3.31 corresponde al diagrama de robustez del texto del caso de uso de la pagina 76.

Figura 3.31: Desasignar monitor


Definir nuevo monitor La figura 3.32 corresponde al diagrama de
robustez del texto del caso de uso de la pagina 77.
Cargar monitor: La figura 3.33 corresponde al diagrama de robustez
del texto del caso de uso de la pagina 79.

148

PRELIMINAR
CAPITULO 3. ANALISIS
Y DISENO

Figura 3.32: Definir nuevo monitor

3.2. DIAGRAMAS DE ROBUSTEZ

Figura 3.33: Cargar monitor

149


PRELIMINAR
CAPITULO 3. ANALISIS
Y DISENO

150

3.2.4.

Paquete neurona de proceso

Crear neurona La figura 3.34 corresponde al diagrama de robustez


del texto del caso de uso de la pagina 80.

Figura 3.34: Crear neurona


Obtener nombre La figura 3.35 corresponde al diagrama de robustez
del texto del caso de uso de la pagina 82.
Obtener n
umero de entradas La figura 3.36 corresponde al diagrama de robustez del texto del caso de uso de la pagina 83.

3.2. DIAGRAMAS DE ROBUSTEZ

Figura 3.35: Obtener nombre

Figura 3.36: Obtener n


umero de entradas

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.

Figura 3.37: Enlazar neurona


Desenlazar neurona La figura 3.38 corresponde al diagrama de robustez del texto del caso de uso de la pagina 85.

Figura 3.38: Desenlazar neurona

3.2. DIAGRAMAS DE ROBUSTEZ

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.

Figura 3.39: Obtener estado de un enlace


Obtener con quien se relaciona La figura 3.40 corresponde al diagrama de robustez del texto del caso de uso de la pagina 87.

Figura 3.40: Obtener con quien se relaciona

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.

Figura 3.41: Obtener nombre de la neurona enlazada


Obtener peso enlace La figura 3.42 corresponde al diagrama de
robustez del texto del caso de uso de la pagina 89.

Figura 3.42: Obtener peso enlace

3.2. DIAGRAMAS DE ROBUSTEZ

155

Cambiar peso enlace La figura 3.43 corresponde al diagrama de


robustez del texto del caso de uso de la pagina 90.

Figura 3.43: Cambiar peso enlace


Obtener funci
on base La figura 3.44 corresponde al diagrama de
robustez del texto del caso de uso de la pagina 91.
Cambiar funci
on base La figura 3.45 corresponde al diagrama de
robustez del texto del caso de uso de la pagina 92.

156

PRELIMINAR
CAPITULO 3. ANALISIS
Y DISENO

Figura 3.44: Obtener funcion base

Figura 3.45: Cambiar funcion base

3.2. DIAGRAMAS DE ROBUSTEZ

157

Definir nueva funci


on base La figura 3.46 corresponde al diagrama
de robustez del texto del caso de uso de la pagina 92.

Figura 3.46: Definir funcion base


Cargar funci
on base La figura 3.47 corresponde al diagrama de
robustez del texto del caso de uso de la pagina 94.
Obtener funci
on de activaci
on La figura 3.48 corresponde al diagrama de robustez del texto del caso de uso de la pagina 95.

158

PRELIMINAR
CAPITULO 3. ANALISIS
Y DISENO

Figura 3.47: Cargar funcion base

Figura 3.48: Obtener funcion de activaci


on

3.2. DIAGRAMAS DE ROBUSTEZ

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.

Figura 3.49: Cambiar funcion de activacion


Definir nueva funci
on de activaci
on La figura 3.50 corresponde al
diagrama de robustez del texto del caso de uso de la pagina 97.
Cargar funci
on de activaci
on La figura 3.51 corresponde al diagrama de robustez del texto del caso de uso de la pagina 99.
Obtener funci
on de transferencia La figura 3.52 corresponde al
diagrama de robustez del texto del caso de uso de la pagina 99.

160

PRELIMINAR
CAPITULO 3. ANALISIS
Y DISENO

Figura 3.50: Definir funcion de activaci


on

3.2. DIAGRAMAS DE ROBUSTEZ

Figura 3.51: Cargar funcion de activaci


on

Figura 3.52: Obtener funcion de activaci


on

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.

Figura 3.53: Cambiar funcion de transferencia


Definir nueva funci
on de transferencia La figura 3.54 corresponde
al diagrama de robustez del texto del caso de uso de la pagina 101.
Cargar funci
on de transferencia La figura 3.55 corresponde al
diagrama de robustez del texto del caso de uso de la pagina 103.
Obtener umbral de activaci
on La figura 3.56 corresponde al diagrama de robustez del texto del caso de uso de la pagina 104.

3.2. DIAGRAMAS DE ROBUSTEZ

Figura 3.54: Definir funcion de transferencia

163

164

PRELIMINAR
CAPITULO 3. ANALISIS
Y DISENO

Figura 3.55: Cargar funcion de transferencia

Figura 3.56: Obtener umbral de activaci


on

3.2. DIAGRAMAS DE ROBUSTEZ

165

Cambiar umbral de activaci


on La figura 3.57 corresponde al diagrama de robustez del texto del caso de uso de la pagina 105.

Figura 3.57: Cambiar umbral de activaci


on
Obtener potencial de activaci
on La figura 3.58 corresponde al
diagrama de robustez del texto del caso de uso de la pagina 106.
Obtener valor de activaci
on La figura 3.59 corresponde al diagrama
de robustez del texto del caso de uso de la pagina 107.

166

PRELIMINAR
CAPITULO 3. ANALISIS
Y DISENO

Figura 3.58: Obtener potencial de activaci


on

Figura 3.59: Obtener valor de activaci


on

3.2. DIAGRAMAS DE ROBUSTEZ

167

Obtener valor de salida La figura 3.60 corresponde al diagrama de


robustez del texto del caso de uso de la pagina 107.

Figura 3.60: Obtener valor de salida


Crear monitor La figura 3.61 corresponde al diagrama de robustez
del texto del caso de uso de la pagina 108.
Asignar monitor La figura 3.62 corresponde al diagrama de robustez
del texto del caso de uso de la pagina 110.
Desasignar monitor La figura 3.63 corresponde al diagrama de robustez del texto del caso de uso de la pagina 111.

168

PRELIMINAR
CAPITULO 3. ANALISIS
Y DISENO

Figura 3.61: Crear monitor

3.2. DIAGRAMAS DE ROBUSTEZ

Figura 3.62: Asignar monitor

169

170

PRELIMINAR
CAPITULO 3. ANALISIS
Y DISENO

Figura 3.63: Desasignar monitor

3.2. DIAGRAMAS DE ROBUSTEZ

171

Definir nuevo monitor La figura 3.64 corresponde al diagrama de


robustez del texto del caso de uso de la pagina 112.

Figura 3.64: Definir nuevo monitor

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.

Figura 3.65: Cargar monitor

3.2. DIAGRAMAS DE ROBUSTEZ

3.2.5.

173

Paquete red neuronal

Crear red La figura 3.66 corresponde al diagrama de robustez del


texto del caso de uso de la pagina 114.

Figura 3.66: Crear red


Obtener nombre La figura 3.67 corresponde al diagrama de robustez
del texto del caso de uso de la pagina 116.
Definir nueva red neuronal La figura 3.68 corresponde al diagrama
de robustez del texto del caso de uso de la pagina 117.

174

PRELIMINAR
CAPITULO 3. ANALISIS
Y DISENO

Figura 3.67: Obtener Nombre


Cargar red neuronal: La figura 3.69 corresponde al diagrama de
robustez del texto del caso de uso de la pagina 119.
Ejecutar red La figura 3.70 corresponde al diagrama de robustez del
texto del caso de uso de la pagina 120.
Generar aplicaci
on La figura 3.71 corresponde al diagrama de robustez del texto del caso de uso de la pagina 121.

3.2. DIAGRAMAS DE ROBUSTEZ

Figura 3.68: Definir nueva red neuronal

175

176

PRELIMINAR
CAPITULO 3. ANALISIS
Y DISENO

Figura 3.69: Cargar red neuronal

Figura 3.70: Ejecutar red neuronal

3.2. DIAGRAMAS DE ROBUSTEZ

Figura 3.71: Generar aplicacion

177

178

3.3.

PRELIMINAR
CAPITULO 3. ANALISIS
Y DISENO

Actualizaci
on del modelo del dominio

Por organizacion, las clases identificadas hasta ahora se agruparon en


diferentes paquetes (Ver Figura 3.72).

Figura 3.72: Jerarqua de paquetes


Las figuras 3.73, 3.74, 3.75, 3.76, 3.77, 3.78, 3.79 y 3.80 corresponde a
la actualizacion del modelo del dominio (Ver Figura 2.4 en la pagina 17).

DEL MODELO DEL DOMINIO


3.3. ACTUALIZACION

Figura 3.73: Actualizacion del modelo del dominio - Parte I

179

180

PRELIMINAR
CAPITULO 3. ANALISIS
Y DISENO

Figura 3.74: Actualizacion del modelo del dominio - Parte II

Figura 3.75: Actualizacion del modelo del dominio - Parte III

DEL MODELO DEL DOMINIO


3.3. ACTUALIZACION

Figura 3.76: Actualizacion del modelo del dominio - Parte IV

Figura 3.77: Actualizacion del modelo del dominio - Parte V

181

182

PRELIMINAR
CAPITULO 3. ANALISIS
Y DISENO

Figura 3.78: Actualizacion del modelo del dominio - Parte VI

Figura 3.79: Actualizaci


on del modelo del dominiov - Parte VII

Figura 3.80: Actualizacion del modelo del dominio - Parte VIII

DEL DISENO
PRELIMINAR (PDR)
3.4. REVISION

3.4.

183

Revisi
on del dise
no preliminar (PDR)

Para realizar la revision del dise


no preliminar (PDR) hay que tener en
cuenta las siguientes consideraciones.
Revision de los diagramas de robustez y textos de los casos de uso
para cada escenario, asegurandose que ellos concuerdan entre s, y
representen completamente la conducta deseada del sistema.
Tambien verifique que el modelo del dominio concuerde con el diagrama de robustez.
Involucrar representantes tanto del cliente como del equipo de desarrollo (igual que en los requerimientos).

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

En ICONIX, los diagramas de secuencia representan el mayor trabajo


de producto de dise
no.
Las siguientes son algunas de las recomendaciones que se deben tomar
en consideracion para realizar los diagramas de secuencia:
Localice el comportamiento entre objetos lmite, entidad y objetos de
control (si los hay).
Mostrar las interacciones que ocurren entre los objetos asociados con
cada uno de sus casos de uso.
Si aparecen nuevo atributos, se adicionan al modelo estatico.
Use el diagrama de robustez como elemento para verificar el diagrama
de secuencia.
Un controlador en el diagrama de robustez puede convertirse en muchos metodos en el diagrama 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. DIAGRAMAS DE SECUENCIA

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

Figura 4.1: Iniciar laboratorio

4.1. DIAGRAMAS DE SECUENCIA

Figura 4.2: Cargar laboratorio

189

190

CAPITULO 4. DISENO

Figura 4.3: Guardar laboratorio

4.1. DIAGRAMAS DE SECUENCIA

4.1.2.

191

Paquete neurona de entrada

Crear neurona Las Figuras 4.4 y 4.5 corresponden al diagrama de


secuencia del texto del caso de uso de la pagina 49, y diagrama de
robustez de la pagina 127 (Figura 3.6).

Figura 4.4: Crear neurona - Curso basico

192

CAPITULO 4. DISENO

Figura 4.5: Crear neurona - Curso alterno

4.1. DIAGRAMAS DE SECUENCIA

193

Obtener nombre La Figura 4.6 corresponde al diagrama de secuencia


del texto del caso de uso de la pagina 51, y diagrama de robustez de
la pagina 128 (Figura 3.7).

Figura 4.6: Obtener nombre

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

Figura 4.7: Obtener valor de salida

4.1. DIAGRAMAS DE SECUENCIA

195

Asignar valor de salida La Figura 4.8 corresponde al diagrama de


secuencia del texto del caso de uso de la pagina 53, y diagrama de
robustez de la pagina 129 (Figura 3.9).

Figura 4.8: Asignar valor de salida

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

Figura 4.9: Crear monitor - Curso basico

4.1. DIAGRAMAS DE SECUENCIA

Figura 4.10: Crear monitor - Curso alterno

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

Figura 4.11: Asignar monitor

4.1. DIAGRAMAS DE SECUENCIA

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

Figura 4.12: Desasignar monitor

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

Figura 4.13: Definir nuevo monitor - Curso basico

4.1. DIAGRAMAS DE SECUENCIA

Figura 4.14: Definir nuevo monitor - Curso alterno - Parte 1

201

202

CAPITULO 4. DISENO

Figura 4.15: Definir nuevo monitor - Curso alterno - Parte 2

4.1. DIAGRAMAS DE SECUENCIA

203

Cargar monitor La Figura 4.16 corresponde al diagrama de secuencia


del texto del caso de uso de la pagina 59, y diagrama de robustez de
la pagina 134 (Figura 3.14).

Figura 4.16: Cargar monitor


CAPITULO 4. DISENO

204

4.1.3.

Paquete neurona de retardo

Crear neurona Las Figuras 4.17 y 4.18 corresponden al diagrama


de secuencia del texto del caso de uso de la pagina 60, y diagrama de
robustez de la pagina 135 (Figura 3.15).

Figura 4.17: Crear neurona - Curso basico

4.1. DIAGRAMAS DE SECUENCIA

Figura 4.18: Crear neurona - Curso alterno

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

Figura 4.19: Obtener nombre

4.1. DIAGRAMAS DE SECUENCIA

207

Obtener valor de salida La Figura 4.20 corresponde al diagrama


de secuencia del texto del caso de uso de la pagina 63, y diagrama de
robustez de la pagina 136 (Figura 3.17).

Figura 4.20: Obtener valor de salida

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

Figura 4.21: Asignar valor de salida

4.1. DIAGRAMAS DE SECUENCIA

209

Actualizar valor presente La Figura 4.22 corresponde al diagrama


de secuencia del texto del caso de uso de la pagina 64, y diagrama de
robustez de la pagina 138 (Figura 3.19).

Figura 4.22: Actualizar valor presente

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

Figura 4.23: Obtener valor futuro

4.1. DIAGRAMAS DE SECUENCIA

211

Actualizar valor futuro La Figura 4.24 corresponde al diagrama de


secuencia del texto del caso de uso de la pagina 66, y diagrama de
robustez de la pagina 139 (Figura 3.21).

Figura 4.24: Actualizar valor futuro

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

Figura 4.25: Definir nuevo valor futuro - Curso basico

4.1. DIAGRAMAS DE SECUENCIA

Figura 4.26: Definir nuevo valor futuro - Curso alterno - Parte 1

213

214

CAPITULO 4. DISENO

Figura 4.27: Definir nuevo valor futuro - Curso alterno - Parte 2

4.1. DIAGRAMAS DE SECUENCIA

215

Cargar valor futuro La Figura 4.28 corresponde al diagrama de


secuencia del texto del caso de uso de la pagina 69, y diagrama de
robustez de la pagina 141 (Figura 3.23).

Figura 4.28: Cargar valor futuro

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

Figura 4.29: Enlazar neurona

4.1. DIAGRAMAS DE SECUENCIA

217

Desenlazar neurona La Figura 4.30 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.25).

Figura 4.30: Desenlazar neurona

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

Figura 4.31: Obtener estado del enlace

4.1. DIAGRAMAS DE SECUENCIA

219

Obtener con quien se relaciona La Figura 4.32 corresponde al


diagrama de secuencia del texto del caso de uso de la pagina 72, y
diagrama de robustez de la pagina 143 (Figura 3.27).

Figura 4.32: Obtener con quien se relaciona

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

Figura 4.33: Obtener nombre de la neurona enlazada

4.1. DIAGRAMAS DE SECUENCIA

221

Crear monitor Las Figuras 4.34 y 4.35 corresponden al diagrama de


secuencia del texto del caso de uso de la pagina 74, y diagrama de
robustez de la pagina 145 (Figura 3.29).

Figura 4.34: Crear monitor - Curso basico

222

CAPITULO 4. DISENO

Figura 4.35: Crear monitor - Curso alterno

4.1. DIAGRAMAS DE SECUENCIA

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

Figura 4.36: Asignar monitor

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

Figura 4.37: Desasignar monitor

4.1. DIAGRAMAS DE SECUENCIA

225

Definir nuevo monitor Las Figuras 4.38, 4.39 y 4.40 corresponden


al diagrama de secuencia del texto del caso de uso de la pagina 77, y
diagrama de robustez de la pagina 148 (Figura 3.32).

Figura 4.38: Definir nuevo monitor - Curso basico

226

CAPITULO 4. DISENO

Figura 4.39: Definir nuevo monitor - Curso alterno - Parte 1

4.1. DIAGRAMAS DE SECUENCIA

Figura 4.40: Definir nuevo monitor - Curso alterno - Parte 2

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

Figura 4.41: Cargar monitor

4.1. DIAGRAMAS DE SECUENCIA

4.1.4.

229

Paquete neurona de proceso

Crear neurona Las Figuras 4.42 y 4.43 corresponden al diagrama


de secuencia del texto del caso de uso de la pagina 80, y diagrama de
robustez de la pagina 150 (Figura 3.34).

Figura 4.42: Crear neurona - Curso basico

230

CAPITULO 4. DISENO

Figura 4.43: Crear neurona - Curso alterno

4.1. DIAGRAMAS DE SECUENCIA

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

Figura 4.44: Obtener nombre

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

Figura 4.45: Obtener n


umero de entradas

4.1. DIAGRAMAS DE SECUENCIA

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

Figura 4.46: Enlazar neurona

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

Figura 4.47: Desenlazar neurona

4.1. DIAGRAMAS DE SECUENCIA

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

Figura 4.48: Obtener estado de un enlace

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

Figura 4.49: Obtener con quien se relaciona

4.1. DIAGRAMAS DE SECUENCIA

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

Figura 4.50: Obtener nombre de la neurona enlazada

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

Figura 4.51: Obtener peso enlace

4.1. DIAGRAMAS DE SECUENCIA

239

Cambiar peso enlace La Figura 4.52 corresponde al diagrama de


secuencia del texto del caso de uso de la pagina 90, y diagrama de
robustez de la pagina 155 (Figura 3.43).

Figura 4.52: Cambiar peso enlace

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

Figura 4.53: Obtener funcion base

4.1. DIAGRAMAS DE SECUENCIA

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

Figura 4.54: Cambiar funcion base

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

Figura 4.55: Definir funcion base - Curso basico

4.1. DIAGRAMAS DE SECUENCIA

Figura 4.56: Definir funcion base - Curso alterno - Parte 1

243

244

CAPITULO 4. DISENO

Figura 4.57: Definir funcion base - Curso alterno - Parte 2

4.1. DIAGRAMAS DE SECUENCIA

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

Figura 4.58: Cargar funcion base

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

Figura 4.59: Obtener funcion de activaci


on

4.1. DIAGRAMAS DE SECUENCIA

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

Figura 4.60: Cambiar funcion de activacion

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

Figura 4.61: Definir funcion de activaci


on - Curso basico

4.1. DIAGRAMAS DE SECUENCIA

Figura 4.62: Definir funcion de activaci


on - Curso alterno - Parte 1

249

250

CAPITULO 4. DISENO

Figura 4.63: Definir funcion de activaci


on - Curso alterno - Parte 2

4.1. DIAGRAMAS DE SECUENCIA

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

Figura 4.64: Cargar funcion de activaci


on

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

Figura 4.65: Obtener funcion de activaci


on

4.1. DIAGRAMAS DE SECUENCIA

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

Figura 4.66: Cambiar funcion de transferencia

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

Figura 4.67: Definir funcion de transferencia - Curso basico

4.1. DIAGRAMAS DE SECUENCIA

255

Figura 4.68: Definir funcion de transferencia - Curso alterno - Parte 1

256

CAPITULO 4. DISENO

Figura 4.69: Definir funcion de transferencia - Curso alterno - Parte 2

4.1. DIAGRAMAS DE SECUENCIA

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

Figura 4.70: Cargar funcion de transferencia

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

Figura 4.71: Obtener umbral de activaci


on

4.1. DIAGRAMAS DE SECUENCIA

259

Cambiar umbral de activaci


on La Figura 4.72 corresponde al diagrama de secuencia del texto del caso de uso de la pagina 105, y
diagrama de robustez de la pagina 165 (Figura 3.57).

Figura 4.72: Cambiar umbral de activaci


on

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

Figura 4.73: Obtener potencial de activaci


on

4.1. DIAGRAMAS DE SECUENCIA

261

Obtener valor de activaci


on La Figura 4.74 corresponde al diagrama de secuencia del texto del caso de uso de la pagina 107, y diagrama
de robustez de la pagina 166 (Figura 3.59).

Figura 4.74: Obtener valor de activaci


on

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

Figura 4.75: Obtener valor de salida

4.1. DIAGRAMAS DE SECUENCIA

263

Crear monitor Las Figuras 4.76 y 4.77 corresponden al diagrama de


secuencia del texto del caso de uso de la pagina 108, y diagrama de
robustez de la pagina 168 (Figura 3.61).

Figura 4.76: Crear monitor - Curso basico

264

CAPITULO 4. DISENO

Figura 4.77: Crear monitor - Curso alterno

4.1. DIAGRAMAS DE SECUENCIA

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

Figura 4.78: Asignar monitor

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

Figura 4.79: Desasignar monitor

4.1. DIAGRAMAS DE SECUENCIA

267

Definir nuevo monitor Las Figuras 4.80, 4.81 y 4.82 corresponde a


los diagramas de secuencia del texto del caso de uso de la pagina 112,
y diagrama de robustez de la pagina 171 (Figura 3.64).

Figura 4.80: Definir nuevo monitor - Curso basico

268

CAPITULO 4. DISENO

Figura 4.81: Definir nuevo monitor - Curso alterno - Parte 1

4.1. DIAGRAMAS DE SECUENCIA

Figura 4.82: Definir nuevo monitor - Curso alterno - Parte 2

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

Figura 4.83: Cargar monitor

4.1. DIAGRAMAS DE SECUENCIA

4.1.5.

271

Paquete red neuronal

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

Figura 4.84: Crear red - Curso basico

272

CAPITULO 4. DISENO

Figura 4.85: Crear red - Curso alterno

4.1. DIAGRAMAS DE SECUENCIA

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

Figura 4.86: Obtener Nombre

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

Figura 4.87: Definir nueva red neuronal - Curso basico

4.1. DIAGRAMAS DE SECUENCIA

Figura 4.88: Definir nueva red neuronal - Curso alterno - Parte 1

275

276

CAPITULO 4. DISENO

Figura 4.89: Definir nueva red neuronal - Curso alterno - Parte 2

4.1. DIAGRAMAS DE SECUENCIA

277

Cargar red neuronal La Figura 4.90 corresponde al diagrama de


secuencia del texto del caso de uso de la pagina 119, y diagrama de
robustez de la pagina 176 (Figura 3.69).

Figura 4.90: Cargar red neuronal

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

Figura 4.91: Ejecutar red neuronal

4.1. DIAGRAMAS DE SECUENCIA

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

Figura 4.92: Generar aplicacion


CAPITULO 4. DISENO

280

4.2.

Diagrama de clases

Por organizacion, las clases se agruparon en paquetes (Ver Figura 4.93).

Figura 4.93: Jerarqua de paquetes


Los paquetes principales del proyecto son: neuronal, matematica,
laboratoriovirtual y gui, los cuales se pueden observar en las Figuras
4.94, 4.98, 4.99 y 4.100 respectivamente.

Figura 4.94: Paquete - neuronal


El paquete neuronal se subdivide en los paquetes neurona, redneuronal y monitor, los cuales se pueden observar en las Figuras 4.95,
4.96 y 4.97 respectivament.

4.2. DIAGRAMA DE CLASES

Figura 4.95: Paquete - neurona

Figura 4.96: Paquete - redneuronal

281

282

CAPITULO 4. DISENO

Figura 4.97: Paquete - monitor

Figura 4.98: Paquete - matematica

4.2. DIAGRAMA DE CLASES

Figura 4.99: Paquete - laboratoriovirtual

283

284

CAPITULO 4. DISENO

Figura 4.100: Paquete - gui

Figura 4.101: Paquete - guicomun

4.2. DIAGRAMA DE CLASES

Figura 4.102: Paquete - guineuronadeentrada

Figura 4.103: Paquete - guimonitor

Figura 4.104: Paquete - guineuronaderetardo

285

286

CAPITULO 4. DISENO

Figura 4.105: Paquete - guiarchivo

Figura 4.106: Paquete - guineurona

Figura 4.107: Paquete - guidialogo

4.2. DIAGRAMA DE CLASES

Figura 4.108: Paquete - guineuronadeproceso

287

288

4.3.

CAPITULO 4. DISENO

Revisi
on crtica del dise
no (CDR)

Para realizar la revision crtica del dise


no (CDR) hay que tener en cuenta
las siguientes consideraciones.
Asegurase de que el como del dise
no detallado (diagramas de secuencia y diagramas de clase), coinciden bien con el que que se especifica
en los casos de uso.
Asegurarse que el dise
no detallado es lo suficientemente profundo para
facilitar el paso al codigo fuente.
Involucrar la revision de modularidad, cohesion de las clases, acoplamiento de los objetos, entre otras metricas.
El dise
no debe estar acorde con los estandares de la organizacion, los
cuales pueden incluir patrones de dise
no.
Asegurarse que exista una correspondencia entre los flujos del diagrama de secuencia y los requerimientos funcionales del cliente.
Los diagramas nos permiten visualizar en una pagina conceptos que
podran tomar docenas de paginas en codigo.
Los diagramas tambien nos permiten jugar rapidamente con estos conceptos y comunicarlos a otros.
Usted no puede construir codigo efectivamente a partir del dise
no detallado, si la conexion entre el dise
no y el ambiente de implementaci
on
no es obvia.
Preoc
upese acerca de detalles de su dise
no antes de saltar al codigo y no
asumir que con reparar el codigo, usted puede solucionar cualquier cosa
(usted pierde la vista global del dise
no, cuando se enfoca en codificar
peque
nas piezas).
Revise los diagramas de secuencia para cada escenario que sera construido en la version actual.
Considere los patrones de dise
no que deberan ser usados en su dise
no.
Preocuparse por detalles como el almacenamiento, la distribucion y
las capas.

CRITICA DEL DISENO


(CDR)
4.3. REVISION

289

Verifique cuidadosamente el origen y destino de cada flecha de mensaje


en cada diagrama de secuencia.
Verifique los textos de los casos de uso contra los diagramas de secuencia.
No invite a clientes no tecnicos a revisar el dise
no.
Para este proyecto, toda la revision es satisfactoria.

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
{
...
}

La implementacion se hizo utilizando NetBeans 6.1 con Java Standard


Edition 6, Update 3
Todo los metodos son visibles en un pantallazo, salvo algunas excepciones.


5.2. PARTICULARIDADES DE LA IMPLEMENTACION

293

La eleccion de los nombres para todos los identificadores se hizo con


base en los siguientes criterios:
Todo se escribe en espa
nol.
No uso de siglas.
Todos los nombre de los metodos deben iniciar por un verbo, por
ejemplo: obtener, cambiar, realizar, . . . .
Cuando un identificador tiene mas de una palabra, no se usa el
caracter (_) para separarlas, salvo si son constantes.
Los identificadores de las constantes se escriben en may
usculas
sostenidas, los demas, solo la primera letra de cada palabra (salvo
la primera palabra).
Los identificadores para las clases usan may
usculas para la primera
letra de cada palabra, incluyendo la primera.
En el momento de la implementaci
on, se ajustaron algunos modificadores de acceso para ciertos metodos, sin alterar la funcionalidad
original.

POR RESPETO AL LECTOR, TODO EL CODIGO


DE LA APLICACION
DEBERA

SER CONSULTADO EN EL CD QUE ACOMPANA


ESTE DOCUMENTO.

5.2.

Particularidades de la implementaci
on

5.2.1.

Definir nuevo monitor a neurona de entrada

Despues de compilar y determinar que no hay errores de compilacion,


se procede hacer una serie de artilugios para poder adicionar en tiempo de
ejecucion un archivo .class al archivo usuario.jar. La dificultad radica
en que dicho archivo jar se encuentra en uso por la aplicacion principal.
Estos pasos se repiten para los otros tipos de monitores.


CAPITULO 5. IMPLEMENTACION

294

Cuadro 3: Adicionar un archivo .class a un archivo .jar


if ( new File ("lib/usuario.jar").isFile() )
{
Disco.copiarArchivo("lib/usuario.jar", "lib/nuevoUsuario.jar");
Disco.ejecutarAplicativo("jar", "uf lib/nuevoUsuario.jar usuario/");
}
else
{
Disco.ejecutarAplicativo("jar", "cf lib/nuevoUsuario.jar usuario/");
}
Disco.copiarArchivo("lib/nuevoUsuario.jar", "lib/usuario.jar");
Disco.eliminarArchivo("lib/nuevoUsuario.jar");
Disco.eliminarArchivo(nombreMonitor+".java");
Disco.eliminarArchivo("usuario/monitor/neurona/entrada/"+nombreMonitor+".class");
Disco.eliminarArchivo("usuario/monitor/neurona/entrada");
Disco.eliminarArchivo("usuario/monitor/neurona");
Disco.eliminarArchivo("usuario/monitor");
Disco.eliminarArchivo("usuario");

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.

Crear monitor a neurona de entrada

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

Cuadro 4: Instanciar un objeto sin inicializaci


on,
de una clases y jar especificados
MonitorDeNeuronaDeEntrada monitor;
ClassLoader cargador = new URLClassLoader ( new URL[] {
new File ("lib//usuario.jar")
.toURI().toURL()
}
);
Class c = cargador.loadClass( tipoDeMonitor );
monitor = (MonitorDeNeuronaDeEntrada) c.newInstance();

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.

Plantillas para generar c


odigo

5.3.1.

Aplicaci
on

En la Figura 6 se puede observar la plantilla utilizada para generar una


aplicacion.
Cuadro 6: Plantilla del c
odigo para generar una aplicaci
on
import javax.swing.UIManager;
import javax.swing.JOptionPane;
public class AplicacionDeUsuario
{
public static void main ( String[] arg )
{
try
{
UIManager.setLookAndFeel( "com.nilo.plaf.nimrod.NimRODLookAndFeel" );
}
catch ( Throwable e )
{
}
try
{
new tipoRedNeuronal( "nombreRedNeuronal" ).ejecutarRed( );
}
catch ( Throwable e )
{
JOptionPane.showMessageDialog (null, "Error, la red neuronal \"" +
tipoRedNeuronal + "\""
);
}
System.exit ( 0 );
}
}


5.3. PLANTILLAS PARA GENERAR CODIGO

5.3.2.

297

Funci
on Base

En la Figura 7 se puede observar la plantilla utilizada para generar una


funcion base.
Cuadro 7: Plantilla del c
odigo para generar una funci
on base
package usuario.tipo.funcion.base;
import java.lang.Exception;
import neuronal.neurona.FuncionBase;
public class nombre extends FuncionBase
{
public nombre ( )
{
super ( "Nueva funci
on base -> \""+ nombre + "\"" );
}
public double obtenerValor( double[] entrada, double[] peso ) throws Exception
{
double salida = 0.0;
// Codigo de la funci
on
return salida;
}
}


CAPITULO 5. IMPLEMENTACION

298

5.3.3.

Funci
on de activaci
on

En la Figura 8 se puede observar la plantilla utilizada para generar una


funcion de activacion.
Cuadro 8: Plantilla del c
odigo para generar una funci
on de
activaci
on
package usuario.tipo.funcion.activacion;
import matematica.FuncionMatematica;

public class nombre extends FuncionMatematica


{
public nombre ( )
{
super ( "Nueva funci
on de activaci
on-> \""+ nombre + "\"" );
}
public double obtenerValor( double x )
{
double salida = 0.0;
// Codigo de la funci
on
return salida;
}
}


5.3. PLANTILLAS PARA GENERAR CODIGO

5.3.4.

299

Funci
on de transferencia

En la Figura 9 se puede observar la plantilla utilizada para generar una


funcion de transferencia.
Cuadro 9: Plantilla del c
odigo para generar una funci
on de
transferencia
package usuario.tipo.funcion.transferencia;
import matematica.FuncionMatematica;

public class nombre extends FuncionMatematica


{
public nombre ( )
{
super ( "Nueva funci
on de transferencia-> \""+ nombre + "\"" );
}
public double obtenerValor( double x )
{
double salida = 0.0;
// Codigo de la funci
on
return salida;
}
}

5.3.5.

Manifest

En la Figura 10 se puede observar el archivo Manifest.JEG utilizado


para generar una aplicacion.
Cuadro 10: Archivo Manifest.JEG utilizado para generar
aplicaciones
Class-Path: lib/BibliotecaRNA.jar lib/nimrodlf.jar lib/usuario.jar
Main-Class: AplicacionDeUsuario


CAPITULO 5. IMPLEMENTACION

300

5.3.6.

Monitor a neurona de entrada

En la Figura 11 se puede observar la plantilla utilizada para generar un


monitor a una neurona de entrada.
Cuadro 11: Plantilla del c
odigo para generar un monitor a una
neurona de entrada
package usuario.monitor.neurona.entrada;
import neuronal.neurona.Neurona;
import neuronal.neurona.NeuronaDeEntrada;
import neuronal.monitor.MonitorDeNeuronaDeEntrada;
public class nombre extends MonitorDeNeuronaDeEntrada
{
// Variables modelo

public nombre ()
{
// Constructor
}

public void realizarActualizacion( Neurona neurona )


{
NeuronaDeEntrada neuronaModificada = (NeuronaDeEntrada) neurona;
// Funcionamiento
}

public void finalize() throws Throwable


{
// Destructor
}
}


5.3. PLANTILLAS PARA GENERAR CODIGO

5.3.7.

301

Monitor a neurona de proceso

En la Figura 12 se puede observar la plantilla utilizada para generar un


monitor a una neurona de proceso.
Cuadro 12: Plantilla del c
odigo para generar un monitor a una
neurona de proceso
import neuronal.monitor.MonitorDeNeuronaDeProceso;
public class nombre extends MonitorDeNeuronaDeProceso
{
// Variables modelo

public nombre ()
{
// Constructor
}

public void realizarActualizacion( Neurona neurona )


{
NeuronaDeProceso neuronaModificada = (NeuronaDeProceso) neurona;
// Funcionamiento
}

public void finalize() throws Throwable


{
// Destructor
}
}


CAPITULO 5. IMPLEMENTACION

302

5.3.8.

Monitor a neurona de retardo

En la Figura 13 se puede observar la plantilla utilizada para generar un


monitor a una neurona de retardo.
Cuadro 13: Plantilla del c
odigo para generar un monitor a una
neurona de retardo
package usuario.monitor.neurona.retardo;
import neuronal.neurona.Neurona;
import neuronal.neurona.NeuronaDeRetardo;
import neuronal.monitor.MonitorDeNeuronaDeRetardo;
public class nombre extends MonitorDeNeuronaDeRetardo
{
// Variables modelo

public nombre ()
{
// Constructor
}

public void realizarActualizacion( Neurona neurona )


{
NeuronaDeRetardo neuronaModificada = (NeuronaDeRetardo) neurona;
// Funcionamiento
}

public void finalize() throws Throwable


{
// Destructor
}
}


5.3. PLANTILLAS PARA GENERAR CODIGO

5.3.9.

303

Neurona de retardo (Valor Futuro)

En la Figura 14 se puede observar la plantilla utilizada para generar una


neurona de retardo.
Cuadro 14: Plantilla del c
odigo para generar una neurona de
retardo
package usuario.tipo.valorfuturo;
import neuronal.neurona.NeuronaDeRetardo;
public class nombre extends NeuronaDeRetardo
{
// variablesModelo

public nombre ()
{
super ( \"Nueva neurona de retardo -> \\\""+ nombre +"\\\"\" );
// Constructor
}
public double obtenerSiguienteValorFuturo()
{
double valorSiguiente = 0.0;
// codigoFuncion
return valorSiguiente;
}

public void finalize() throws Throwable


{
// Destructor
}
}


CAPITULO 5. IMPLEMENTACION

304

5.3.10.

Red Neuronal

En la Figura 15 se puede observar la plantilla utilizada para generar una


red neuronal.
Cuadro 15: Plantilla del c
odigo para generar una red neuronal
package usuario.tipo.redneuronal;
import
import
import
import

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 crearRedNeuronal( )


{
// Construcci
on topologia
}

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

Use una matriz de trazabilidad para ayudarse en la verificaci


on de
requerimientos.
Haga escenarios para pruebas de aceptacion por cada caso de prueba.
Expanda sus escenarios de prueba, para cubrir una ruta completa de
los curso basicos y alternos.
Use un framework como JUnit para almacenar y organiza los casos
de prueba y sus pruebas.
Mantenga sus pruebas en un grado fino.

Figura 6.1: Modelo en V aplicado al proceso ICONIX


Pruebas de unidad: Pruebas de componentes individuales de software, simulando algunas entradas y salidas de otros componentes. Es
importante en la fase de desarrollo para encontrar errores.
Pruebas de integraci
on: Prueba el desempe
no al exponer fallas en
las interfaces y en la interacci
on entre los componentes integrados. En
este punto, se puede hacer una prueba de compatibilidad para
probar que la interoperativilidad con otros sistemas trabaja correctamente.

6.1. LISTADO DE LOS CASOS DE PRUEBA

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.

Existen otros tipos de prueba como:

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.

Listado de los casos de prueba

La Figura 6.2 muestra 23 archivos java agrupados en tres paquetes, los


cuales corresponden a 19 casos de prueba y algunos programa de apoyo.
Todo esto realizado en NetBeans 6.1.
La Figura 6.3 muestra los 19 casos de prueba ejecutados, los cuales
agrupan 200 pruebas individuales realizadas con JUnit 4.1. Observe que todas las pruebas individuales fueron exitosas, es decir obtuvieron el resultado
esperado.

308

CAPITULO 6. PRUEBAS

Figura 6.2: Listado de los casos de prueba

Figura 6.3: Listado de los casos de prueba ejecutados

6.1. LISTADO DE LOS CASOS DE PRUEBA

Figura 6.4: Pruebas en DiscoLaboratorioVirtualRNATest

309

CAPITULO 6. PRUEBAS

310

6.2.

Pruebas en DiscoLaboratorioVirtualRNATest

Las 44 pruebas individuales realizadas a DiscoLaboratorioVirtualRNATest.


se pueden observar en la Figura 6.4.
Antes de explicar las pruebas, es importante anotar que esta clase tiene
un metodo constructor que realiza:
Crea de forma temporal el arbol de directorios que se observa en la
Figura 6.5.

Figura 6.5: Directorios creados para realizar las pruebas


Crear un archivo llamado Prueba.class en lo directorios finales del
arbol ( entrada, retardo, proceso, base, activacion, transferencia,
redneuronal, valorfuturo.
Con todos estos directorio y archivos, se crea un archivo JAR llamado
"usuario.jar". en la carpeta "lib", el cual es consultado por la clase
DiscoLaboratorioVirtualRNA.
Estos directorios y archivos son importantes para poder realizar las pruebas.
1. Prueba obtenerTiposDeMonitoresANeuronasDeEntrada
El objetivo de esta prueba (Ver Cuadro 6.1) es obtener los tipos de
monitores a neuronas de entrada (archivos almacenados en la carpeta
entrada).

6.2. PRUEBAS EN DISCOLABORATORIOVIRTUALRNATEST

311

PROCEDIMIENTO

RESULTADO ESPERADO

Solicitar a la clase
DiscoLaboratorioVirtualRNA
obtenerTiposDeMonitoresANeuronasDeEntrada

Un String[] que contiene


{ PruebaGuardarOBJ.prueba y
PruebaGuardarTXT.prueba }

Tabla 6.1: obtenerTiposDeMonitoresANeuronasDeEntrada


2. Prueba buscarMonitorNeuronaDeEntrada
El objetivo de esta prueba (Ver Cuadro 6.2) es buscar un monitor a
neurona de entrada.
PROCEDIMIENTO

RESULTADO ESPERADO

Solicitar a la clase
DiscoLaboratorioVirtualRNA
buscarMonitorNeuronaDeEntrada llamado
Prueba.class

Un boolean que
contiene true

Tabla 6.2: buscarMonitorNeuronaDeEntrada


3. Prueba construirClaseMonitorNeuronaDeEntrada
El objetivo de esta prueba (Ver Cuadro 6.3) es construir una clase
monitor a neurona de entrada.
PROCEDIMIENTO

RESULTADO ESPERADO

Solicitar a la clase
DiscoLaboratorioVirtualRNA
construirClaseMonitorNeuronaDeEntrada
llamado 1.java

Un archivo llamado
1.java

Tabla 6.3: construirClaseMonitorNeuronaDeEntrada


4. Prueba almacenarFragmentosDeCodigoMonitorNeuronaDeEntrada
El objetivo de esta prueba (Ver Cuadro 6.4) es almacenar fragmentos de codigo de un monitor a neurona de entrada, cuyas partes sean:
nombre = "1", variablesModelo = "2", constructor = "3", destructor
= "4" y codigoFuncion = "5".

CAPITULO 6. PRUEBAS

312
PROCEDIMIENTO

RESULTADO ESPERADO

Solicitar a la clase
DiscoLaboratorioVirtualRNA
almacenarFragmentosDeCodigoMonitor . . .
. . . NeuronaDeEntrada llamado 1.MNE

Un archivo llamado
1.MNE

Tabla 6.4: almacenarFragmentosDeCodigoMonitorNeuronaDeEntrada


5. Prueba cargarNuevoMonitorNeuronaDeEntrada
El objetivo de esta prueba (Ver Cuadro 6.5) es cargar un nuevo monitor a neurona de entrada requisito haber realizado la prueba para
almacenar fragmentos de codigo.
PROCEDIMIENTO

RESULTADO ESPERADO

Solicitar a la clase
DiscoLaboratorioVirtualRNA
cargarNuevoMonitorNeuronaDeEntrada
llamado 1.MNE

Un String[] que
contiene { "1", "2",
"3", "4", "5" }

Tabla 6.5: cargarNuevoMonitorNeuronaDeEntrada


6. Prueba obtenerTiposDeMonitoresANeuronasDeRetardo
El objetivo de esta prueba (Ver Cuadro 6.6) es obtener los tipos de
monitores a neuronas de retardo.
PROCEDIMIENTO

RESULTADO ESPERADO

Solicitar a la clase
DiscoLaboratorioVirtualRNA
obtenerTiposDeMonitoresANeuronasDeRetardo

Un String[] que
contiene Prueba.class

Tabla 6.6: obtenerTiposDeMonitoresANeuronasDeRetardo


7. Prueba buscarMonitorNeuronaDeRetardo
El objetivo de esta prueba (Ver Cuadro 6.7) es buscar un monitor a
neurona de retardo.

6.2. PRUEBAS EN DISCOLABORATORIOVIRTUALRNATEST

313

PROCEDIMIENTO

RESULTADO ESPERADO

Solicitar a la clase
DiscoLaboratorioVirtualRNA
buscarMonitorNeuronaDeRetardo llamado
Prueba.class

Un boolean que
contiene true

Tabla 6.7: buscarMonitorNeuronaDeRetardo


8. Prueba construirClaseMonitorNeuronaDeRetardo
El objetivo de esta prueba (Ver Cuadro 6.8) es construir una clase
monitor a neurona de retardo.
PROCEDIMIENTO

RESULTADO ESPERADO

Solicitar a la clase
DiscoLaboratorioVirtualRNA
construirClaseMonitorNeuronaDeRetardo
llamado 1.java

Un archivo llamado
1.java

Tabla 6.8: construirClaseMonitorNeuronaDeRetardo


9. Prueba almacenarFragmentosDeCodigoMonitorNeuronaDeRetardo
El objetivo de esta prueba (Ver Cuadro 6.9) es almacenar fragmentos de codigo de un monitor a neurona de retardo, cuyas partes sean:
nombre = "1", variablesModelo = "2", constructor = "3", destructor
= "4" y codigoFuncion = "5".
PROCEDIMIENTO

RESULTADO ESPERADO

Solicitar a la clase
DiscoLaboratorioVirtualRNA
almacenarFragmentosDeCodigoMonitor . . .
. . . NeuronaDeRetardo llamado 1.MNR

Un archivo llamado
1.MNR

Tabla 6.9: almacenarFragmentosDeCodigoMonitorNeuronaDeRetardo


10. Prueba cargarNuevoMonitorNeuronaDeRetardo
El objetivo de esta prueba (Ver Cuadro 6.10) es cargar un nuevo monitor a neurona de retardo requisito haber realizado la prueba para
almacenar fragmentos de codigo.

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" }

Tabla 6.10: cargarNuevoMonitorNeuronaDeRetardo


11. Prueba obtenerTiposDeMonitoresANeuronasDeProceso
El objetivo de esta prueba (Ver Cuadro 6.11) es obtener los tipos de
monitores a neuronas de proceso.
PROCEDIMIENTO

RESULTADO ESPERADO

Solicitar a la clase
DiscoLaboratorioVirtualRNA
obtenerTiposDeMonitoresANeuronasDeProceso

Un String[] que
contiene Prueba.class

Tabla 6.11: obtenerTiposDeMonitoresANeuronasDeProceso


12. Prueba buscarMonitorNeuronaDeProceso
El objetivo de esta prueba (Ver Cuadro 6.12) es buscar un monitor a
neurona de proceso.
PROCEDIMIENTO

RESULTADO ESPERADO

Solicitar a la clase
DiscoLaboratorioVirtualRNA
buscarMonitorNeuronaDeProceso llamado
Prueba.class

Un boolean que
contiene true

Tabla 6.12: buscarMonitorNeuronaDeProceso


13. Prueba construirClaseMonitorNeuronaDeProceso
El objetivo de esta prueba (Ver Cuadro 6.13) es construir una clase
monitor a neurona de proceso.

6.2. PRUEBAS EN DISCOLABORATORIOVIRTUALRNATEST

315

PROCEDIMIENTO

RESULTADO ESPERADO

Solicitar a la clase
DiscoLaboratorioVirtualRNA
construirClaseMonitorNeuronaDeProceso
llamado 1.java

Un archivo llamado
1.java

Tabla 6.13: construirClaseMonitorNeuronaDeProceso


14. Prueba almacenarFragmentosDeCodigoMonitorNeuronaDeProceso
El objetivo de esta prueba (Ver Cuadro 6.14) es almacenar fragmentos de codigo de un monitor a neurona de proceso, cuyas partes sean:
nombre = "1", variablesModelo = "2", constructor = "3", destructor
= "4" y codigoFuncion = "5".
PROCEDIMIENTO

RESULTADO ESPERADO

Solicitar a la clase
DiscoLaboratorioVirtualRNA
almacenarFragmentosDeCodigoMonitor . . .
. . . NeuronaDeProceso llamado 1.MNP

Un archivo llamado
1.MNP

Tabla 6.14: almacenarFragmentosDeCodigoMonitorNeuronaDeProceso


15. Prueba cargarNuevoMonitorNeuronaDeProceso
El objetivo de esta prueba (Ver Cuadro 6.15) es cargar un nuevo monitor de neurona de proceso requisito haber realizado la prueba para
almacenar fragmentos de codigo.
PROCEDIMIENTO

RESULTADO ESPERADO

Solicitar a la clase
DiscoLaboratorioVirtualRNA
cargarNuevoMonitorNeuronaDeProceso
llamado 1.MNP

Un String[] que
contiene { "1", "2",
"3", "4", "5" }

Tabla 6.15: cargarNuevoMonitorNeuronaDeProceso


16. Prueba obtenerFuncionesBase
El objetivo de esta prueba (Ver Cuadro 6.16) es obtener las funciones
base.

CAPITULO 6. PRUEBAS

316
PROCEDIMIENTO

RESULTADO ESPERADO

Solicitar a la clase
DiscoLaboratorioVirtualRNA
obtenerFuncionesBase

Un String[] que
contiene Prueba.class

Tabla 6.16: obtenerFuncionesBase


17. Prueba buscarFuncionBase
El objetivo de esta prueba (Ver Cuadro 6.17) es buscar una funcion
base.
PROCEDIMIENTO

RESULTADO ESPERADO

Solicitar a la clase
DiscoLaboratorioVirtualRNA
buscarFuncionBase llamado
Prueba.class

Un boolean que
contiene true

Tabla 6.17: buscarFuncionBase


18. Prueba construirClaseFuncionBase
El objetivo de esta prueba (Ver Cuadro 6.18) es construir una clase
funcion base.
PROCEDIMIENTO

RESULTADO ESPERADO

Solicitar a la clase
DiscoLaboratorioVirtualRNA
construirClaseFuncionBase
llamado 1.java

Un archivo llamado
1.java

Tabla 6.18: construirClaseFuncionBase


19. Prueba almacenarFragmentosDeCodigoFuncionBase
El objetivo de esta prueba (Ver Cuadro 6.19) es almacenar fragmentos
de codigo de una funcion base, cuyas partes sean: nombre = "1" y
codigoFuncion = "2".

6.2. PRUEBAS EN DISCOLABORATORIOVIRTUALRNATEST


PROCEDIMIENTO

RESULTADO ESPERADO

Solicitar a la clase
DiscoLaboratorioVirtualRNA
almacenarFragmentosDeCodigo . . .
. . . FuncionBase llamado 1.TFB

Un archivo llamado
1.TFB

317

Tabla 6.19: almacenarFragmentosDeCodigoFuncionBase


20. Prueba cargarNuevaFuncionBase
El objetivo de esta prueba (Ver Cuadro 6.20) es cargar una nueva funcion base requisito haber realizado la prueba para almacenar fragmentos de codigo.
PROCEDIMIENTO

RESULTADO ESPERADO

Solicitar a la clase
DiscoLaboratorioVirtualRNA
cargarNuevaFuncionBase
llamado 1.TFB

Un String[] que
contiene { "1", "2" }

Tabla 6.20: cargarNuevaFuncionBase


21. Prueba obtenerFuncionesDeActivacion
El objetivo de esta prueba (Ver Cuadro 6.21) es obtener las funciones
de activacion.
PROCEDIMIENTO

RESULTADO ESPERADO

Solicitar a la clase
DiscoLaboratorioVirtualRNA
obtenerFuncionesDeActivacion

Un String[] que
contiene Prueba.class

Tabla 6.21: obtenerFuncionesDeActivacion


22. Prueba buscarFuncionDeActivacion
El objetivo de esta prueba (Ver Cuadro 6.22) es buscar una funcion
de activacion.

CAPITULO 6. PRUEBAS

318
PROCEDIMIENTO

RESULTADO ESPERADO

Solicitar a la clase
DiscoLaboratorioVirtualRNA
buscarFuncionDeActivacion llamado
Prueba.class

Un boolean que
contiene true

Tabla 6.22: buscarFuncionDeActivacion


23. Prueba construirClaseFuncionDeActivacion
El objetivo de esta prueba (Ver Cuadro 6.23) es construir una clase
funcion de activacion.
PROCEDIMIENTO

RESULTADO ESPERADO

Solicitar a la clase
DiscoLaboratorioVirtualRNA
construirClaseFuncionDeActivacion
llamado 1.java

Un archivo llamado
1.java

Tabla 6.23: construirClaseFuncionDeActivacion


24. Prueba almacenarFragmentosDeCodigoFuncionDeActivacion
El objetivo de esta prueba (Ver Cuadro 6.24) es almacenar fragmentos
de codigo de una funcion de activaci
on, cuyas partes sean: nombre =
"1" y codigoFuncion = "2".
PROCEDIMIENTO

RESULTADO ESPERADO

Solicitar a la clase
DiscoLaboratorioVirtualRNA
almacenarFragmentosDeCodigo . . .
. . . FuncionDeActivacion llamado 1.TFA

Un archivo llamado
1.TFA

Tabla 6.24: almacenarFragmentosDeCodigoFuncionDeActivacion


25. Prueba cargarNuevaFuncionDeActivacion
El objetivo de esta prueba (Ver Cuadro 6.25) es cargar una nueva funcion de activacion requisito haber realizado la prueba para almacenar
fragmentos de codigo.

6.2. PRUEBAS EN DISCOLABORATORIOVIRTUALRNATEST


PROCEDIMIENTO

RESULTADO ESPERADO

Solicitar a la clase
DiscoLaboratorioVirtualRNA
cargarNuevaFuncionDeActivacion
llamado 1.TFA

Un String[] que
contiene { "1", "2" }

319

Tabla 6.25: cargarNuevaFuncionDeActivacion


26. Prueba obtenerFuncionesDeTransferencia
El objetivo de esta prueba (Ver Cuadro 6.26) es obtener las funciones
de transferencia.
PROCEDIMIENTO

RESULTADO ESPERADO

Solicitar a la clase
DiscoLaboratorioVirtualRNA
obtenerFuncionesDeTransferencia

Un String[] que
contiene Prueba.class

Tabla 6.26: obtenerFuncionesDeTransferencia


27. Prueba buscarFuncionDeTransferencia
El objetivo de esta prueba (Ver Cuadro 6.27) es buscar una funcion
de transferencia.
PROCEDIMIENTO

RESULTADO ESPERADO

Solicitar a la clase
DiscoLaboratorioVirtualRNA
buscarFuncionDeTransferencia llamado
Prueba.class

Un boolean que
contiene true

Tabla 6.27: buscarFuncionDeTransferencia


28. Prueba construirClaseFuncionDeTransferencia
El objetivo de esta prueba (Ver Cuadro 6.28) es construir una clase
funcion de transferencia.

CAPITULO 6. PRUEBAS

320
PROCEDIMIENTO

RESULTADO ESPERADO

Solicitar a la clase
DiscoLaboratorioVirtualRNA
construirClaseFuncionDeTransferencia
llamado 1.java

Un archivo llamado
1.java

Tabla 6.28: construirClaseFuncionDeTransferencia


29. Prueba almacenarFragmentosDeCodigoFuncionDeTransferencia
El objetivo de esta prueba (Ver Cuadro 6.29) es almacenar fragmentos
de codigo de una funcion de transferencia, cuyas partes sean: nombre
= "1" y codigoFuncion = "2".
PROCEDIMIENTO

RESULTADO ESPERADO

Solicitar a la clase
DiscoLaboratorioVirtualRNA
almacenarFragmentosDeCodigo . . .
. . . FuncionDeTransferencia llamado 1.TFT

Un archivo llamado
1.TFT

Tabla 6.29: almacenarFragmentosDeCodigoFuncionDeTransferencia


30. Prueba cargarNuevaFuncionDeTransferencia
El objetivo de esta prueba (Ver Cuadro 6.30) es cargar una nueva
funcion de transferencia requisito haber realizado la prueba para almacenar fragmentos de codigo.
PROCEDIMIENTO

RESULTADO ESPERADO

Solicitar a la clase
DiscoLaboratorioVirtualRNA
cargarNuevaFuncionDeTransferencia
llamado 1.TFA

Un String[] que
contiene { "1", "2" }

Tabla 6.30: cargarNuevaFuncionDeTransferencia


31. Prueba obtenerTiposDeRedesNeuronales
El objetivo de esta prueba (Ver Cuadro 6.31) es obtener los tipos de
redes neuronales.

6.2. PRUEBAS EN DISCOLABORATORIOVIRTUALRNATEST


PROCEDIMIENTO

RESULTADO ESPERADO

Solicitar a la clase
DiscoLaboratorioVirtualRNA
obtenerTiposDeRedesNeuronales

Un String[] que
contiene Prueba.class

321

Tabla 6.31: obtenerTiposDeRedesNeuronales


32. Prueba buscarRedNeuronal
El objetivo de esta prueba (Ver Cuadro 6.32) es buscar una red neuronal.
PROCEDIMIENTO

RESULTADO ESPERADO

Solicitar a la clase
DiscoLaboratorioVirtualRNA
buscarRedNeuronal llamado
Prueba.class

Un boolean que
contiene true

Tabla 6.32: buscarRedNeuronal


33. Prueba construirClaseRedNeuronal
El objetivo de esta prueba (Ver Cuadro 6.33) es construir una clase de
red neuronal.
PROCEDIMIENTO

RESULTADO ESPERADO

Solicitar a la clase
DiscoLaboratorioVirtualRNA
construirClaseRedNeuronal
llamado 1.java

Un archivo llamado
1.java

Tabla 6.33: construirClaseRedNeuronal


34. Prueba almacenarFragmentosDeCodigoRedNeuronal
El objetivo de esta prueba (Ver Cuadro 6.34) es almacenar fragmentos de codigo de una red neuronal, cuyas partes sean: nombre = "1",
variablesModelo = "2", constructorTopologia = "3", aprendizaje
= "4" y codigoFuncionamiento = "5".

CAPITULO 6. PRUEBAS

322
PROCEDIMIENTO

RESULTADO ESPERADO

Solicitar a la clase
DiscoLaboratorioVirtualRNA
almacenarFragmentosDeCodigo . . .
. . . RedNeuronal llamado 1.TRN

Un archivo llamado
1.TRN

Tabla 6.34: almacenarFragmentosDeCodigoRedNeuronal


35. Prueba cargarNuevaRedNeuronal
El objetivo de esta prueba (Ver Cuadro 6.35) es cargar una nueva red
neuronal. requisito haber realizado la prueba para almacenar fragmentos de codigo.
PROCEDIMIENTO

RESULTADO ESPERADO

Solicitar a la clase
DiscoLaboratorioVirtualRNA
cargarNuevaRedNeuronal
llamado 1.TRN

Un String[] que
contiene { "1", "2",
"3", "4", "5" }

Tabla 6.35: cargarNuevaRedNeuronal


36. Prueba obtenerTipoValorFuturo
El objetivo de esta prueba (Ver Cuadro 6.36) es obtener los tipos de
valor futuro.
PROCEDIMIENTO

RESULTADO ESPERADO

Solicitar a la clase
DiscoLaboratorioVirtualRNA
obtenerTipoValorFuturo

Un String[] que
contiene Prueba.class

Tabla 6.36: obtenerTipoValorFuturo


37. Prueba buscarTipoValorFuturo
El objetivo de esta prueba (Ver Cuadro 6.37) es buscar un tipo de
valor futuro.

6.2. PRUEBAS EN DISCOLABORATORIOVIRTUALRNATEST


PROCEDIMIENTO

RESULTADO ESPERADO

Solicitar a la clase
DiscoLaboratorioVirtualRNA
buscarTipoValorFuturo llamado
Prueba.class

Un boolean que
contiene true

323

Tabla 6.37: buscarTipoValorFuturo


38. Prueba construirClaseTipoValorFuturo
El objetivo de esta prueba (Ver Cuadro 6.38) es construir una clase de
tipo de valor futuro.
PROCEDIMIENTO

RESULTADO ESPERADO

DiscoLaboratorioVirtualRNA
construirClaseTipoValorFuturo
llamado 1.java

1.java

Tabla 6.38: construirClaseTipoValorFuturo


39. Prueba almacenarFragmentosDeCodigoTipoValorFuturo
El objetivo de esta prueba (Ver Cuadro 6.39) es almacenar fragmentos
de codigo de un tipo de valor futuro,cuyas partes sean: nombre = "1",
variablesModelo = "2", constructor = "3", destructor = "4" y
codigoFuncion = "5".
PROCEDIMIENTO

RESULTADO ESPERADO

DiscoLaboratorioVirtualRNA
almacenarFragmentosDeCodigo . . .
. . . RedNeuronal llamado 1.TVF

1.TVF

Tabla 6.39: almacenarFragmentosDeCodigoTipoValorFuturo


40. Prueba cargarNuevoValorFuturo
El objetivo de esta prueba (Ver Cuadro 6.40) es cargar un nuevo valor
futuro. requisito haber realizado la prueba para almacenar fragmentos de codigo.

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" }

Tabla 6.40: cargarNuevoValorFuturo


41. Prueba eliminarClase
El objetivo de esta prueba (Ver Cuadro 6.41) es eliminar un archivo
de una clase de java. (no hay que especificar la extension).
PROCEDIMIENTO

RESULTADO ESPERADO

Crear un archivo llamado Prueba.Java


Solicitar a la clase
DiscoLaboratorioVirtualRNA
eliminarClase al archivo Prueba

No encontrar un archivo
llamado Prueba.java

Tabla 6.41: eliminarClase


42. Prueba eliminarContenidoDeAplicacion
El objetivo de esta prueba (Ver Cuadro 6.42) es eliminar el contenido
de la carpeta Aplicacion.
PROCEDIMIENTO

RESULTADO ESPERADO

Crear el directorio llamado Aplicacion


y luego dentro de el, crea el directorio lib
y el archivo Prueba.txt, luego le
solicita a la clase
DiscoLaboratorioVirtualRNA
eliminarContenidoDeAplicacion

No encontrar ni el archivo,
ni los directorios.

Tabla 6.42: eliminarContenidoDeAplicacion


43. Prueba crearArchivoManifestDeAplicacionDeUsuario
El objetivo de esta prueba (Ver Cuadro 6.43) es crear el archivo manifest de la clase aplicacion del usuario.

6.3. PRUEBAS EN DISCOTEST

325

PROCEDIMIENTO

RESULTADO ESPERADO

Solicitar a la clase
DiscoLaboratorioVirtualRNA
crearArchivoManifestDeAplicacionDeUsuario

Encontrar un archivo
llamado Manifest.JEG

Tabla 6.43: crearArchivoManifestDeAplicacionDeUsuario


44. Prueba construirClaseAplicacionDeUsuario
El objetivo de esta prueba (Ver Cuadro 6.44) es construir una clase de
aplicacion de usuario.
PROCEDIMIENTO

RESULTADO ESPERADO

Solicitar a la clase
DiscoLaboratorioVirtualRNA
construirClaseAplicacionDeUsuario

Encontrar un archivo
llamado AplicacionDeUsuario.java

Tabla 6.44: construirClaseAplicacionDeUsuario

6.3.

Pruebas en DiscoTest

Las 8 pruebas individuales realizadas a DiscoTest se pueden observar


en la Figura 6.6.

Figura 6.6: Pruebas en DiscoTest


Antes de explicar las pruebas, es importante anotar que esta clase tiene
un metodo setUp que se ejecuta antes de cada prueba. El objetivo de este
metodo es crear de forma temporal una carpeta llamada ArchivosDePrueba,
en la cual se realiza la prueba siguiente.

CAPITULO 6. PRUEBAS

326
1. Prueba guardarInformacion

El objetivo de esta prueba (Ver Cuadro 6.45) es guardar un objeto en


un archivo.
PROCEDIMIENTO

RESULTADO ESPERADO

Se crea un objeto String y


se le solicita a la clase
Disco
guardarInformacion en un
archivo llamado PruebaGuardarOBJ.prueba

Ning
un error en la creacion del
archivo.

Tabla 6.45: guardarInformacion


2. Prueba cargarInformacion
El objetivo de esta prueba (Ver Cuadro 6.46) es cargar un objeto de un
archivo. requisito haber realizado la prueba guardarInformacion.
PROCEDIMIENTO

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.

Tabla 6.46: cargarInformacion


3. Prueba guardarArchivoDeTexto
El objetivo de esta prueba (Ver Cuadro 6.47) es guardar una cadena
en un archivo de texto.
4. Prueba obtenerListaDeArchivos
El objetivo de esta prueba (Ver Cuadro 6.48) es obtener la lista de
archivos de una carpeta. Es indispensable para esta prueba la ejecucion con anterioridad de las pruebas: GuardarArchivoDeTexto y
GuardarInformacion.
5. Prueba copiarArchivo
El objetivo de esta prueba (Ver Cuadro 6.49) es sacar una copia de un
archivo.

6.3. PRUEBAS EN DISCOTEST

327

PROCEDIMIENTO

RESULTADO ESPERADO

Se crea un objeto String y


se le solicita a la clase
Disco
guardarArchivoDeTexto en un
archivo llamado PruebaGuardarTXT.prueba.

Ning
un error en la creacion del
archivo.

Tabla 6.47: guardarArchivoDeTexto

PROCEDIMIENTO

RESULTADO ESPERADO

Solicitar a la clase
Disco
obtenerListaDeArchivos del
directorio de pruebas.

Un String[] que
contiene { PruebaGuardarOBJ.prueba y
PruebaGuardarTXT.prueba }

Tabla 6.48: obtenerListaDeArchivos

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

Que la cantidad de archivos finales sean


mayor en una unidad a la cantida de
archivos iniciales.

Tabla 6.49: copiarArchivo

CAPITULO 6. PRUEBAS

328
6. Prueba ejecutarAplicativo

El objetivo de esta prueba (Ver Cuadro 6.50) es ejecutar un programa,


en este caso java -version.
PROCEDIMIENTO

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.

Tabla 6.50: ejecutarAplicativo


7. Prueba eliminarArchivo
El objetivo de esta prueba (Ver Cuadro 6.51) es eliminar un archivo.
PROCEDIMIENTO

RESULTADO ESPERADO

Se crea un archivo temporal llamado


Prueba.xxx y se le solicita a la
clase Disco eliminarArchivo
(el temporal), luego se verifica que
el archivo temporal exista.

Un boolean que
contiene false

Tabla 6.51: eliminarArchivo


8. Prueba eliminarContenidoDeUnaCarpeta
El objetivo de esta prueba (Ver Cuadro 6.52) es eliminar todo el contenido de un carpeta (solo archivos).
PROCEDIMIENTO

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.

Tabla 6.52: eliminarContenidoDeUnaCarpeta

6.4. PRUEBAS EN LISTADENEURONASTEST

6.4.

329

Pruebas en ListaDeNeuronasTest

Las 4 pruebas individuales realizadas a ListaDeNeuronasTest se pueden


observar en la Figura 6.7.

Figura 6.7: Pruebas en ListaDeNeuronasTest


1. Prueba adicionarNeurona1
El objetivo de esta prueba (Ver Cuadro 6.53) es adicion/busqueda de
una neurona de entrada.
PROCEDIMIENTO

RESULTADO ESPERADO

Se crea un objeto ListaDeNeuronas,


luego se le pide a dicho objeto que adicione una
nueva neurona de entrada cuyo nombre es
Neurona de Proceso, posteriormente se le
pide buscarNeurona al objeto lista cuyo
nombre sea el especificado y finalmente se
compara el nombre de la neurona encontrada con
el nombre de la neurona adicionada.

Un String que
contiene Neurona de Entrada

Tabla 6.53: adicionarNeurona1


2. Prueba adicionarNeurona2
El objetivo de esta prueba (Ver Cuadro 6.54) es adicion/busqueda de
una neurona de retardo.
3. Prueba adicionarNeurona3
El objetivo de esta prueba (Ver Cuadro 6.55) es adicion/busqueda de
una neurona de proceso.
4. Prueba buscarNeurona
El objetivo de esta prueba (Ver Cuadro 6.56) es busqueda de una
neurona inexistente.

CAPITULO 6. PRUEBAS

330

PROCEDIMIENTO

RESULTADO ESPERADO

Se crea un objeto ListaDeNeuronas,


luego se le pide a dicho objeto que adicione una
nueva neurona de retardo cuyo nombre es
Neurona de Proceso, posteriormente se le
pide buscarNeurona al objeto lista cuyo
nombre sea el especificado y finalmente se
compara el nombre de la neurona encontrada con
el nombre de la neurona adicionada.

Un String que
contiene Neurona de Retardo

Tabla 6.54: adicionarNeurona2

PROCEDIMIENTO

RESULTADO ESPERADO

Se crea un objeto ListaDeNeuronas,


luego se le pide a dicho objeto que adicione una
nueva neurona de proceso cuyo nombre es
Neurona de Proceso, posteriormente se le
pide buscarNeurona al objeto lista cuyo
nombre sea el especificado y finalmente se
compara el nombre de la neurona encontrada con
el nombre de la neurona adicionada.

Un String que
contiene Neurona de Proceso

Tabla 6.55: adicionarNeurona3

PROCEDIMIENTO

RESULTADO ESPERADO

Se crea un objeto ListaDeNeuronas,


luego se le pide a dicho objeto buscarNeurona
cuyo nombre es Neurona inexistente,
finalmente se compara el resultado
objenido con null.

Una Neurona que


contiene null

Tabla 6.56: buscarNeurona

6.5. PRUEBAS EN LISTADEREDESNEURONALESTEST

6.5.

331

Pruebas en ListaDeRedesNeuronalesTest

Las 2 pruebas individuales realizadas a ListaDeRedesNeuronalesTest


se pueden observar en la Figura 6.8.

Figura 6.8: Pruebas en ListaDeRedesNeuronalesTest


1. Prueba adicionarRedNeuronal
El objetivo de esta prueba (Ver Cuadro 6.57) es adicion/busqueda de
una red neuronal.
PROCEDIMIENTO

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

Tabla 6.57: adicionarRedNeuronal


2. Prueba buscarRedNeuronal
El objetivo de esta prueba (Ver Cuadro 6.58) es busqueda de una red
neuronal inexistente.

CAPITULO 6. PRUEBAS

332
PROCEDIMIENTO

RESULTADO ESPERADO

Se crea un objeto ListaDeRedesNeuronales,


luego se le pide a dicho objeto
buscarRedNeuronal cuyo nombre es
Red inexistente, finalmente se compara
el resultado objenido con null.

Una RedNeuronal que


contiene null

Tabla 6.58: buscarRedNeuronal

6.6.

Pruebas en ListaDeVariablesTest

Las 21 pruebas individuales realizadas a ListaDeVariablesTest se pueden


observar en la Figura 6.9.

Figura 6.9: Pruebas en ListaDeVariablesTest


Antes de explicar las pruebas, es importante anotar que esta clase tiene
un metodo constructor que realiza:
Crea un objeto de tipo ListaDeVariables.
Crea dos objetos de tipo NeuronaDeEntrada y los adiciona a la lista.
Dichas neuronas tiene como nombre N.Entrada 1 y N.Entrada 2
respectivamente.

6.6. PRUEBAS EN LISTADEVARIABLESTEST

333

Crea dos objetos de tipo NeuronaDeRetardo y los adiciona a la lista.


Dichas neuronas tiene como nombre N.Retardo 1 y N.Retardo 2
respectivamente.
Crea dos objetos de tipo NeuronaDeProceso y los adiciona a la lista.
Dichas neuronas tiene como nombre N.Proceso 1 y N.Proceso 2
respectivamente.
Crea dos objetos de tipo BackpropagationDePrueba y los adiciona a
la lista.
Crea dos objetos de tipo MonitorDeNeuronaDeEntradaParaPruebas
y los adiciona a la lista.
Crea dos objetos de tipo MonitorDeNeuronaDeRetardoParaPruebas
y los adiciona a la lista.
Crea dos objetos de tipo MonitorDeNeuronaDeProcesoParaPruebas
y los adiciona a la lista.
1. Prueba buscarVariable
El objetivo de esta prueba (Ver Cuadro 6.59) es buscar una variable
inexistente.
PROCEDIMIENTO

RESULTADO ESPERADO

Se le piede a la lista creada en el constructor


buscarVariable, especificando el nombre
Variable inexistente y se compara
el resultado objenido con null.

Un Object que
contiene null

Tabla 6.59: buscarVariable


2. Prueba adicionarVariable1
El objetivo de esta prueba (Ver Cuadro 6.60) es para verificar la adicion
de una neurona de entrada.

CAPITULO 6. PRUEBAS

334
PROCEDIMIENTO

RESULTADO ESPERADO

Se le piede a la lista creada en el constructor


buscarVariable, especificando el nombre
N.Entrada 1 y se obtiene
el nombre de la neurona entregada
como resultado.

Un String que
contiene N.Entrada 1

Tabla 6.60: adicionarVariable1


3. Prueba adicionarVariable2
El objetivo de esta prueba (Ver Cuadro 6.61) es para verificar la adicion
de una neurona de retardo.
PROCEDIMIENTO

RESULTADO ESPERADO

Se le piede a la lista creada en el constructor


buscarVariable, especificando el nombre
N.Retardo 1 y se obtiene
el nombre de la neurona entregada
como resultado.

Un String que
contiene N.Retardo 1

Tabla 6.61: adicionarVariable2


4. Prueba adicionarVariable3
El objetivo de esta prueba (Ver Cuadro 6.62) es para verificar la adicion
de una neurona de proceso.
PROCEDIMIENTO

RESULTADO ESPERADO

Se le piede a la lista creada en el constructor


buscarVariable, especificando el nombre
N.Proceso 1 y se obtiene
el nombre de la neurona entregada
como resultado.

Un String que
contiene N.Proceso 1

Tabla 6.62: adicionarVariable3

6.6. PRUEBAS EN LISTADEVARIABLESTEST

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

Se le piede a la lista creada en


el constructor buscarVariable,
especificando el nombre R.Neuronal 1
y se obtiene el nombre de la red
neuronal entregada como resultado.

Un String que contiene


Backpropagation de prueba"
(Nombre por defecto)

Tabla 6.63: adicionarVariable4


6. Prueba adicionarVariable5
El objetivo de esta prueba (Ver Cuadro 6.64) es para verificar la adicion
de un monitor a neurona de entrada.
PROCEDIMIENTO

RESULTADO ESPERADO

Se crea un objeto de tipo


MonitorDeNeuronaDeEntradaParaPruebas
y se adiciona a la lista creada
en el constructor con el nombre
Monitor a neurona de entrada.
Finalmente se le piede al objeto
lista buscarVariable, especificando
el nombre anterior.

Un Object que contiene


una referencia al monitor
adicionado.

Tabla 6.64: adicionarVariable5


7. Prueba adicionarVariable6
El objetivo de esta prueba (Ver Cuadro 6.65) es para verificar la adicion
de un monitor a neurona de retardo.
8. Prueba adicionarVariable7
El objetivo de esta prueba (Ver Cuadro 6.66) es para verificar la adicion
de un monitor a neurona de proceso.

CAPITULO 6. PRUEBAS

336

PROCEDIMIENTO

RESULTADO ESPERADO

Se crea un objeto de tipo


MonitorDeNeuronaDeRetardoParaPruebas
y se adiciona a la lista creada
en el constructor con el nombre
Monitor a neurona de retardo.
Finalmente se le piede al objeto
lista buscarVariable, especificando
el nombre anterior.

Un Object que contiene


una referencia al monitor
adicionado.

Tabla 6.65: adicionarVariable6

PROCEDIMIENTO

RESULTADO ESPERADO

Se crea un objeto de tipo


MonitorDeNeuronaDeProcesoParaPruebas
y se adiciona a la lista creada
en el constructor con el nombre
Monitor a neurona de proceso.
Finalmente se le piede al objeto
lista buscarVariable, especificando
el nombre anterior.

Un Object que contiene


una referencia al monitor
adicionado.

Tabla 6.66: adicionarVariable7

6.6. PRUEBAS EN LISTADEVARIABLESTEST

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

Se le piede a la lista creada en el constructor


obtenerListadoDeVariables
ANeuronasDeEntrada

Un TreeSet<String> que
contiene N.Entrada 1 y
N.Entrada 1.

Tabla 6.67: obtenerListadoDeVariablesANeuronasDeEntrada


10. Prueba obtenerListadoDeVariablesANeuronasDeRetardo
El objetivo de esta prueba (Ver Cuadro 6.68) es obtener una lista de
las variables a neuronas de retardo.
PROCEDIMIENTO

RESULTADO ESPERADO

Se le piede a la lista creada en el constructor


obtenerListadoDeVariables
ANeuronasDeRetardo

Un TreeSet<String> que
contiene N.Retardo 1 y
N.Retardo 1.

Tabla 6.68: obtenerListadoDeVariablesANeuronasDeRetardo


11. Prueba obtenerListadoDeVariablesANeuronasDeProceso
El objetivo de esta prueba (Ver Cuadro 6.69) es obtener una lista de
las variables a neuronas de proceso.
PROCEDIMIENTO

RESULTADO ESPERADO

Se le piede a la lista creada en el constructor


obtenerListadoDeVariables
ANeuronasDeProceso

Un TreeSet<String> que
contiene N.Proceso 1 y
N.Proceso 1.

Tabla 6.69: obtenerListadoDeVariablesANeuronasDeProceso


12. Prueba obtenerListadoDeVariablesANeuronas
El objetivo de esta prueba (Ver Cuadro 6.70) es obtener una lista de
las variables a neuronas.

CAPITULO 6. PRUEBAS

338
PROCEDIMIENTO

RESULTADO ESPERADO

Se le piede a la lista creada en el constructor


obtenerListadoDeVariablesANeuronas

Un TreeSet<String> que
contiene N.Entrada 1,
N.Entrada 1, N.Retardo 1,
N.Retardo 2, N.Proceso 1 y
N.Proceso 2.

Tabla 6.70: obtenerListadoDeVariablesANeuronas


13. Prueba obtenerListadoDeVariablesAMonitoresDeNeuronasDeEntrada
El objetivo de esta prueba (Ver Cuadro 6.71) es obtener una lista de
las variables a monitores de neuronas de entrada.
PROCEDIMIENTO

RESULTADO ESPERADO

Se le piede a la lista creada en el constructor


obtenerListadoDeVariables
AMonitoresDeNeuronasDeEntrada

Un TreeSet<String> que
contiene Monitor N.Entrada 1 y
Monitor N.Entrada 2.

Tabla 6.71: obtenerListadoDeVariablesAMonitoresDeNeuronasDeEntrada


14. Prueba obtenerListadoDeVariablesAMonitoresDeNeuronasDeRetardo
El objetivo de esta prueba (Ver Cuadro 6.72) es obtener una lista de
las variables a monitores de neuronas de retardo.
PROCEDIMIENTO

RESULTADO ESPERADO

Se le piede a la lista creada en el constructor


obtenerListadoDeVariables
AMonitoresDeNeuronasDeRetardo

Un TreeSet<String> que
contiene Monitor N.Retardo 1 y
Monitor N.Retardo 2.

Tabla 6.72: obtenerListadoDeVariablesAMonitoresDeNeuronasDeRetardo


15. Prueba obtenerListadoDeVariablesAMonitoresDeNeuronasDeProceso
El objetivo de esta prueba (Ver Cuadro 6.73) es obtener una lista de
las variables a monitores de neuronas de proceso.

6.6. PRUEBAS EN LISTADEVARIABLESTEST

339

PROCEDIMIENTO

RESULTADO ESPERADO

Se le piede a la lista creada en el constructor


obtenerListadoDeVariables
AMonitoresDeNeuronasDeProceso

Un TreeSet<String> que
contiene Monitor N.Proceso 1 y
Monitor N.Proceso 2.

Tabla 6.73: obtenerListadoDeVariablesAMonitoresDeNeuronasDeProceso


16. Prueba obtenerListadoDeVariablesARedesNeuronales
El objetivo de esta prueba (Ver Cuadro 6.74) es obtener una lista de
las variables a redes neuronales.
PROCEDIMIENTO

RESULTADO ESPERADO

Se le piede a la lista creada en el constructor


obtenerListadoDeVariables
ARedesNeuronales

Un TreeSet<String> que
contiene R.Neuronal 1 y
R.Neuronal 1.

Tabla 6.74: obtenerListadoDeVariablesARedesNeuronales


17. Prueba obtenerListadoDeVariablesANeuronasDeProcesoConEnlaces1
El objetivo de esta prueba (Ver Cuadro 6.75) es obtener una lista de
las variables a neuronas de proceso con enlaces (No hay ninguna).
PROCEDIMIENTO

RESULTADO ESPERADO

Se le piede a la lista creada en el constructor


obtenerListadoDeVariables
ANeuronasDeProcesoConEnlaces
y se determina la cantidad de variables.

Un int que
contiene 0.
(por defecto ninguna
se encuentra con enlaces)

Tabla 6.75: obtenerListadoDeVariablesANeuronasDeProcesoConEnlaces1


18. Prueba obtenerListadoDeVariablesANeuronasDeProcesoConEnlaces2
El objetivo de esta prueba (Ver Cuadro 6.76) es obtener una lista de
las variables a neuronas de proceso con enlaces (Hay una).

CAPITULO 6. PRUEBAS

340
PROCEDIMIENTO

RESULTADO ESPERADO

Se le piede a la lista creada en el constructor


buscarVariable con el nombre
N.Proceso 2, luego se le pide
a la neurona encontrar enlazarNeurona
a ella misma en la entrada 1 y finalmente
se le piede a la lista
obtenerListadoDeVariables
ANeuronasDeProcesoConEnlaces.

Un TreeSet<String> que
contiene N.Proceso 2

Tabla 6.76: obtenerListadoDeVariablesANeuronasDeProcesoConEnlaces2


19. Prueba determinarExistenciaDeNeuronasEnlazadas1
El objetivo de esta prueba (Ver Cuadro 6.77) es determinar si existen
variables a neuronas de proceso con enlaces (No hay ninguna).
PROCEDIMIENTO

RESULTADO ESPERADO

Se le piede a la lista creada en el constructor


determinarExistenciaDeNeuronasEnlazadas.

Un boolean que
contiene false.
(por defecto ninguna
se encuentra con enlaces)

Tabla 6.77: determinarExistenciaDeNeuronasEnlazadas1


20. Prueba determinarExistenciaDeNeuronasEnlazadas2
El objetivo de esta prueba (Ver Cuadro 6.78) es determinar si existen
variables a neuronas de proceso con enlaces (Hay una).
21. Prueba determinarExistenciaDeNeuronasEnlazadas3
El objetivo de esta prueba (Ver Cuadro 6.79) es determinar si existen
variables a neuronas de proceso con enlaces (No hay ninguna -primero
se crea un enlace y luego de retira-).

6.6. PRUEBAS EN LISTADEVARIABLESTEST

341

PROCEDIMIENTO

RESULTADO ESPERADO

Se le piede a la lista creada en el constructor


buscarVariable con el nombre
N.Proceso 2, luego se le pide
a la neurona encontrar enlazarNeurona
a ella misma en la entrada 1 y finalmente
se le piede a la lista
determinarExistenciaDeNeuronasEnlazadas.

Un boolean que
contiene true.

Tabla 6.78: determinarExistenciaDeNeuronasEnlazadas2

PROCEDIMIENTO

RESULTADO ESPERADO

Se le piede a la lista creada en el constructor


buscarVariable con el nombre
N.Proceso 2, luego se le pide
a la neurona encontrar enlazarNeurona
a ella misma en la entrada 1, luego se le pide
que desenlazarNeurona de la entrada 1 y
finalmente se le piede a la lista
determinarExistenciaDeNeuronasEnlazadas.

Un boolean que
contiene false.

Tabla 6.79: determinarExistenciaDeNeuronasEnlazadas3

CAPITULO 6. PRUEBAS

342

6.7.

Pruebas en FuncionEscalonBipolarTest

Las 4 pruebas individuales realizadas a FuncionEscalonBipolarTest


se pueden observar en la Figura 6.10.

Figura 6.10: Pruebas en FuncionEscalonBipolarTest


Antes de explicar las pruebas, es importante anotar que esta clase tiene
un metodo setUp y otro tearDown que se ejecutan antes y despues de cada prueba respectivamente. El objetivo de estos metodos es: instanciar un
objeto de FuncionEscalonBipolar y eliminar la referencia hacia el.
1. Prueba obtenerValor1
El objetivo de esta prueba (Ver Cuadro 6.80) es evaluar el valor 0.0.
PROCEDIMIENTO

RESULTADO ESPERADO

Se le pide al objeto instanciado inicialmente


obtenerValor con el valor de 0.0

Un double que
contiene 1.0.

Tabla 6.80: obtenerValor1


2. Prueba obtenerValor2
El objetivo de esta prueba (Ver Cuadro 6.81) es evaluar el valor 5.0.
PROCEDIMIENTO

RESULTADO ESPERADO

Se le pide al objeto instanciado inicialmente


obtenerValor con el valor de 5.0

Un double que
contiene 1.0.

Tabla 6.81: obtenerValor2


3. Prueba obtenerValor3
El objetivo de esta prueba (Ver Cuadro 6.82) es evaluar el valor -5.0.
4. Prueba obtenerNombre
El objetivo de esta prueba (Ver Cuadro 6.83) es obtener el nombre de
la funcion.

6.8. PRUEBAS EN FUNCIONESCALONUNIPOLARTEST

343

PROCEDIMIENTO

RESULTADO ESPERADO

Se le pide al objeto instanciado inicialmente


obtenerValor con el valor de -5.0

Un double que
contiene -1.0.

Tabla 6.82: obtenerValor3


PROCEDIMIENTO

RESULTADO ESPERADO

Se le pide al objeto instanciado


inicialmente getNombre.

Un String que contiene


Funci
on escalon bipolar.

Tabla 6.83: obtenerNombre

6.8.

Pruebas en FuncionEscalonUnipolarTest

Las 4 pruebas individuales realizadas a FuncionEscalonUnipolarTest


se pueden observar en la Figura 6.11.

Figura 6.11: Pruebas en FuncionEscalonUnipolarTest


Antes de explicar las pruebas, es importante anotar que esta clase tiene
un metodo setUp y otro tearDown que se ejecutan antes y despues de cada prueba respectivamente. El objetivo de estos metodos es: instanciar un
objeto de FuncionEscalonUnipolar y eliminar la referencia hacia el.
1. Prueba obtenerValor1
El objetivo de esta prueba (Ver Cuadro 6.84) es evaluar el valor 0.0.
PROCEDIMIENTO

RESULTADO ESPERADO

Se le pide al objeto instanciado inicialmente


obtenerValor con el valor de 0.0

Un double que
contiene 1.0.

Tabla 6.84: obtenerValor1

CAPITULO 6. PRUEBAS

344
2. Prueba obtenerValor2

El objetivo de esta prueba (Ver Cuadro 6.85) es evaluar el valor 5.0.


PROCEDIMIENTO

RESULTADO ESPERADO

Se le pide al objeto instanciado inicialmente


obtenerValor con el valor de 5.0

Un double que
contiene 1.0.

Tabla 6.85: obtenerValor2


3. Prueba obtenerValor3
El objetivo de esta prueba (Ver Cuadro 6.86) es evaluar el valor -5.0.
PROCEDIMIENTO

RESULTADO ESPERADO

Se le pide al objeto instanciado inicialmente


obtenerValor con el valor de -5.0

Un double que
contiene 0.0.

Tabla 6.86: obtenerValor3


4. Prueba obtenerNombre
El objetivo de esta prueba (Ver Cuadro 6.87) es obtener el nombre de
la funcion.
PROCEDIMIENTO

RESULTADO ESPERADO

Se le pide al objeto instanciado


inicialmente getNombre.

Un String que contiene


Funci
on escalon unipolar.

Tabla 6.87: obtenerNombre

6.9.

Pruebas en FuncionIdentidadTest

Las 4 pruebas individuales realizadas a FuncionIdentidadTest se pueden


observar en la Figura 6.12.
Antes de explicar las pruebas, es importante anotar que esta clase tiene
un metodo setUp y otro tearDown que se ejecutan antes y despues de cada prueba respectivamente. El objetivo de estos metodos es: instanciar un
objeto de FuncionIdentidad y eliminar la referencia hacia el.

6.9. PRUEBAS EN FUNCIONIDENTIDADTEST

345

Figura 6.12: Pruebas en FuncionIdentidadTest


1. Prueba obtenerValor1
El objetivo de esta prueba (Ver Cuadro 6.88) es evaluar el valor 0.0.
PROCEDIMIENTO

RESULTADO ESPERADO

Se le pide al objeto instanciado inicialmente


obtenerValor con el valor de 0.0

Un double que
contiene 0.0.

Tabla 6.88: obtenerValor1


2. Prueba obtenerValor2
El objetivo de esta prueba (Ver Cuadro 6.89) es evaluar el valor 5.0.
PROCEDIMIENTO

RESULTADO ESPERADO

Se le pide al objeto instanciado inicialmente


obtenerValor con el valor de 5.0

Un double que
contiene 5.0.

Tabla 6.89: obtenerValor2


3. Prueba obtenerValor3
El objetivo de esta prueba (Ver Cuadro 6.90) es evaluar el valor -5.0.
PROCEDIMIENTO

RESULTADO ESPERADO

Se le pide al objeto instanciado inicialmente


obtenerValor con el valor de -5.0

Un double que
contiene -5.0.

Tabla 6.90: obtenerValor3


4. Prueba obtenerNombre
El objetivo de esta prueba (Ver Cuadro 6.91) es obtener el nombre de
la funcion.

CAPITULO 6. PRUEBAS

346
PROCEDIMIENTO

RESULTADO ESPERADO

Se le pide al objeto instanciado


inicialmente getNombre.

Un String que contiene


Funci
on identidad.

Tabla 6.91: obtenerNombre

6.10.

Pruebas en FuncionLinealMixtaBipolarTest

Las 4 pruebas individuales realizadas a FuncionLinealMixtaBipolarTest


se pueden observar en la Figura 6.13.

Figura 6.13: Pruebas en FuncionLinealMixtaBipolarTest


Antes de explicar las pruebas, es importante anotar que esta clase tiene
un metodo setUp y otro tearDown que se ejecutan antes y despues de cada prueba respectivamente. El objetivo de estos metodos es: instanciar un
objeto de FuncionLinealMixtaBipolar y eliminar la referencia hacia el.
1. Prueba obtenerValor1
El objetivo de esta prueba (Ver Cuadro 6.92) es evaluar el valor 0.0.
PROCEDIMIENTO

RESULTADO ESPERADO

Se le pide al objeto instanciado inicialmente


obtenerValor con el valor de 0.0

Un double que
contiene 0.0.

Tabla 6.92: obtenerValor1


2. Prueba obtenerValor2
El objetivo de esta prueba (Ver Cuadro 6.93) es evaluar el valor 5.0.
3. Prueba obtenerValor3
El objetivo de esta prueba (Ver Cuadro 6.94) es evaluar el valor -5.0.
4. Prueba obtenerNombre
El objetivo de esta prueba (Ver Cuadro 6.95) es obtener el nombre de
la funcion.

6.11. PRUEBAS EN FUNCIONLINEALMIXTAUNIPOLARTEST

347

PROCEDIMIENTO

RESULTADO ESPERADO

Se le pide al objeto instanciado inicialmente


obtenerValor con el valor de 5.0

Un double que
contiene 1.0.

Tabla 6.93: obtenerValor2


PROCEDIMIENTO

RESULTADO ESPERADO

Se le pide al objeto instanciado inicialmente


obtenerValor con el valor de -5.0

Un double que
contiene -1.0.

Tabla 6.94: obtenerValor3


PROCEDIMIENTO

RESULTADO ESPERADO

Se le pide al objeto instanciado


inicialmente getNombre.

Un String que contiene


Funci
on lineal mixta bipolar.

Tabla 6.95: obtenerNombre

6.11.

Pruebas en FuncionLinealMixtaUnipolarTest

Las 4 pruebas individuales realizadas a FuncionLinealMixtaUnipolarTest


se pueden observar en la Figura 6.14.

Figura 6.14: Pruebas en FuncionLinealMixtaUnipolarTest


Antes de explicar las pruebas, es importante anotar que esta clase tiene
un metodo setUp y otro tearDown que se ejecutan antes y despues de cada prueba respectivamente. El objetivo de estos metodos es: instanciar un
objeto de FuncionLinealMixtaUnipolar y eliminar la referencia hacia el.
1. Prueba obtenerValor1
El objetivo de esta prueba (Ver Cuadro 6.96) es evaluar el valor 0.0.
2. Prueba obtenerValor2
El objetivo de esta prueba (Ver Cuadro 6.97) es evaluar el valor 5.0.

CAPITULO 6. PRUEBAS

348
PROCEDIMIENTO

RESULTADO ESPERADO

Se le pide al objeto instanciado inicialmente


obtenerValor con el valor de 0.0

Un double que
contiene 0.5.

Tabla 6.96: obtenerValor1


PROCEDIMIENTO

RESULTADO ESPERADO

Se le pide al objeto instanciado inicialmente


obtenerValor con el valor de 5.0

Un double que
contiene 1.0.

Tabla 6.97: obtenerValor2


3. Prueba obtenerValor3
El objetivo de esta prueba (Ver Cuadro 6.98) es evaluar el valor -5.0.
PROCEDIMIENTO

RESULTADO ESPERADO

Se le pide al objeto instanciado inicialmente


obtenerValor con el valor de -5.0

Un double que
contiene 0.0.

Tabla 6.98: obtenerValor3


4. Prueba obtenerNombre
El objetivo de esta prueba (Ver Cuadro 6.99) es obtener el nombre de
la funcion.
PROCEDIMIENTO

RESULTADO ESPERADO

Se le pide al objeto instanciado


inicialmente getNombre.

Un String que contiene


Funci
on lineal mixta unipolar.

Tabla 6.99: obtenerNombre

6.12.

Pruebas en FuncionSigmoidalBipolarTest

Las 4 pruebas individuales realizadas a FuncionSigmoidalBipolarTest


se pueden observar en la Figura 6.15.

6.12. PRUEBAS EN FUNCIONSIGMOIDALBIPOLARTEST

349

Figura 6.15: Pruebas en FuncionSigmoidalBipolarTest


Antes de explicar las pruebas, es importante anotar que esta clase tiene
un metodo setUp y otro tearDown que se ejecutan antes y despues de cada prueba respectivamente. El objetivo de estos metodos es: instanciar un
objeto de FuncionSigmoidalBipolar y eliminar la referencia hacia el.
1. Prueba obtenerValor1
El objetivo de esta prueba (Ver Cuadro 6.100) es evaluar el valor 0.0.
PROCEDIMIENTO

RESULTADO ESPERADO

Se le pide al objeto instanciado inicialmente


obtenerValor con el valor de 0.0

Un double que
contiene 0.0.

Tabla 6.100: obtenerValor1


2. Prueba obtenerValor2
El objetivo de esta prueba (Ver Cuadro 6.101) es evaluar el valor 5.0.
PROCEDIMIENTO

RESULTADO ESPERADO

Se le pide al objeto instanciado inicialmente


obtenerValor con el valor de 5.0

Un double que
contiene 0.999.

Tabla 6.101: obtenerValor2


3. Prueba obtenerValor3
El objetivo de esta prueba (Ver Cuadro 6.102) es evaluar el valor -5.0.

CAPITULO 6. PRUEBAS

350
PROCEDIMIENTO

RESULTADO ESPERADO

Se le pide al objeto instanciado inicialmente


obtenerValor con el valor de -5.0

Un double que
contiene -0.999.

Tabla 6.102: obtenerValor3


4. Prueba obtenerNombre
El objetivo de esta prueba (Ver Cuadro 6.103) es obtener el nombre
de la funcion.
PROCEDIMIENTO

RESULTADO ESPERADO

Se le pide al objeto instanciado


inicialmente getNombre.

Un String que contiene


Funci
on sigmoidal bipolar.

Tabla 6.103: obtenerNombre

6.13.

Pruebas en FuncionSigmoidalUnipolarTest

Las 4 pruebas individuales realizadas a FuncionSigmoidalUnipolarTest


se pueden observar en la Figura 6.16.

Figura 6.16: Pruebas en FuncionSigmoidalUnipolarTest


Antes de explicar las pruebas, es importante anotar que esta clase tiene
un metodo setUp y otro tearDown que se ejecutan antes y despues de cada prueba respectivamente. El objetivo de estos metodos es: instanciar un
objeto de FuncionSigmoidalUnipolar y eliminar la referencia hacia el.
1. Prueba obtenerValor1
El objetivo de esta prueba (Ver Cuadro 6.104) es evaluar el valor 0.0.
2. Prueba obtenerValor2
El objetivo de esta prueba (Ver Cuadro 6.105) es evaluar el valor 5.0.

6.14. PRUEBAS EN FUNCIONBASELINEALTEST

351

PROCEDIMIENTO

RESULTADO ESPERADO

Se le pide al objeto instanciado inicialmente


obtenerValor con el valor de 0.0

Un double que
contiene 0.5.

Tabla 6.104: obtenerValor1


PROCEDIMIENTO

RESULTADO ESPERADO

Se le pide al objeto instanciado inicialmente


obtenerValor con el valor de 5.0

Un double que
contiene 0.993.

Tabla 6.105: obtenerValor2


3. Prueba obtenerValor3
El objetivo de esta prueba (Ver Cuadro 6.106) es evaluar el valor -5.0.
PROCEDIMIENTO

RESULTADO ESPERADO

Se le pide al objeto instanciado inicialmente


obtenerValor con el valor de -5.0

Un double que
contiene 0.006.

Tabla 6.106: obtenerValor3


4. Prueba obtenerNombre
El objetivo de esta prueba (Ver Cuadro 6.107) es obtener el nombre
de la funcion.
PROCEDIMIENTO

RESULTADO ESPERADO

Se le pide al objeto instanciado


inicialmente getNombre.

Un String que contiene


Funci
on sigmoidal unipolar.

Tabla 6.107: obtenerNombre

6.14.

Pruebas en FuncionBaseLinealTest

Las 4 pruebas individuales realizadas a FuncionBaseLinealTest se


pueden observar en la Figura 6.17.

CAPITULO 6. PRUEBAS

352

Figura 6.17: Pruebas en FuncionBaseLinealTest


Antes de explicar las pruebas, es importante anotar que esta clase tiene
un metodo setUp y otro tearDown que se ejecutan antes y despues de cada prueba respectivamente. El objetivo de estos metodos es: instanciar un
objeto de FuncionBaseLineal y eliminar la referencia hacia el.
1. Prueba obtenerValor1
El objetivo de esta prueba (Ver Cuadro 6.108) es evaluar las entrada
= 1.0, 2.0, 3.0, 4.0, 5.0 y los pesos = 6.0, 7.0, 8.0, 9.0, 10.0 .
PROCEDIMIENTO

RESULTADO ESPERADO

Se le pide al objeto instanciado inicialmente


obtenerValor con:
las entradas { 1.0, 2.0, 3.0, 4.0, 5.0 }
y los pesos { 6.0, 7.0, 8.0, 9.0, 10.0 }

Un double que
contiene 130.0.

Tabla 6.108: obtenerValor1


2. Prueba obtenerValor2
El objetivo de esta prueba (Ver Cuadro 6.109) es evaluar las entrada
= 1.0, 2.0, 3.0, 4.0, 5.0 y los pesos = 6.0, 7.0, 8.0, 9.0 (FALTANDO
UN PESO).
PROCEDIMIENTO

RESULTADO ESPERADO

Se le pide al objeto instanciado inicialmente


obtenerValor con:
las entradas { 1.0, 2.0, 3.0, 4.0, 5.0 }
y los pesos { 6.0, 7.0, 8.0, 9.0 }

Una excepcion con el mensaje:


Error, el n
umero de
entradas no coincide con
el n
umero de pesos

Tabla 6.109: obtenerValor2

6.15. PRUEBAS EN FUNCIONBASERADICALTEST

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

Se le pide al objeto instanciado inicialmente


obtenerValor con:
las entradas { 1.0, 2.0, 3.0, 4.0 }
y los pesos { 6.0, 7.0, 8.0, 9.0, 10.0 }

Una excepcion con el mensaje:


Error, el n
umero de
entradas no coincide con
el n
umero de pesos

Tabla 6.110: obtenerValor3


4. Prueba obtenerNombre
El objetivo de esta prueba (Ver Cuadro 6.111) es obtener el nombre
de la funcion.
PROCEDIMIENTO

RESULTADO ESPERADO

Se le pide al objeto instanciado


inicialmente getNombre.

Un String que contiene


Funci
on base lineal.

Tabla 6.111: obtenerNombre

6.15.

Pruebas en FuncionBaseRadicalTest

Las 4 pruebas individuales realizadas a FuncionBaseRadicalTest se


pueden observar en la Figura 6.18.

Figura 6.18: Pruebas en FuncionBaseRadicalTest


Antes de explicar las pruebas, es importante anotar que esta clase tiene
un metodo setUp y otro tearDown que se ejecutan antes y despues de cada prueba respectivamente. El objetivo de estos metodos es: instanciar un
objeto de FuncionBaseRadical y eliminar la referencia hacia el.

CAPITULO 6. PRUEBAS

354
1. Prueba obtenerValor1

El objetivo de esta prueba (Ver Cuadro 6.112) es evaluar las entrada


= 1.0, 2.0, 3.0, 4.0, 5.0 y los pesos = 6.0, 7.0, 8.0, 9.0, 10.0 .
PROCEDIMIENTO

RESULTADO ESPERADO

Se le pide al objeto instanciado inicialmente


obtenerValor con:
las entradas { 1.0, 2.0, 3.0, 4.0, 5.0 }
y los pesos { 6.0, 7.0, 8.0, 9.0, 10.0 }

Un double que
contiene 11.180.

Tabla 6.112: obtenerValor1


2. Prueba obtenerValor2
El objetivo de esta prueba (Ver Cuadro 6.113) es evaluar las entrada
= 1.0, 2.0, 3.0, 4.0, 5.0 y los pesos = 6.0, 7.0, 8.0, 9.0 (FALTANDO
UN PESO).
PROCEDIMIENTO

RESULTADO ESPERADO

Se le pide al objeto instanciado inicialmente


obtenerValor con:
las entradas { 1.0, 2.0, 3.0, 4.0, 5.0 }
y los pesos { 6.0, 7.0, 8.0, 9.0 }

Una excepcion con el mensaje:


Error, el n
umero de
entradas no coincide con
el n
umero de pesos

Tabla 6.113: obtenerValor2


3. Prueba obtenerValor3
El objetivo de esta prueba (Ver Cuadro 6.114) 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

Se le pide al objeto instanciado inicialmente


obtenerValor con:
las entradas { 1.0, 2.0, 3.0, 4.0 }
y los pesos { 6.0, 7.0, 8.0, 9.0, 10.0 }

Una excepcion con el mensaje:


Error, el n
umero de
entradas no coincide con
el n
umero de pesos

Tabla 6.114: obtenerValor3

6.16. PRUEBAS EN FUNCIONDEACTIVACIONTEST

355

4. Prueba obtenerNombre
El objetivo de esta prueba (Ver Cuadro 6.115) es obtener el nombre
de la funcion.
PROCEDIMIENTO

RESULTADO ESPERADO

Se le pide al objeto instanciado


inicialmente getNombre.

Un String que contiene


Funci
on base radical.

Tabla 6.115: obtenerNombre

6.16.

Pruebas en FuncionDeActivacionTest

Las 14 pruebas individuales realizadas a FuncionDeActivacionTest se


pueden observar en la Figura 6.19.

Figura 6.19: 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

Se instancia un objeto de tipo


FuncionEscalonBipolar como una
FuncionDeActivacion y se le pide
que evalue 3.0

Un double que contiene


1.0.

Tabla 6.116: obtenerValorFuncionEscalonBipolar

PROCEDIMIENTO

RESULTADO ESPERADO

Se instancia un objeto de tipo


FuncionEscalonBipolar como una
FuncionDeActivacion y se le pide
que evalue getNombre

Un String que contiene


Funci
on escalon bipolar.

Tabla 6.117: obtenerNombreFuncionEscalonBipolar

PROCEDIMIENTO

RESULTADO ESPERADO

Se instancia un objeto de tipo


FuncionEscalonUnipolar como una
FuncionDeActivacion y se le pide
que evalue 3.0

Un double que contiene


1.0.

Tabla 6.118: obtenerValorFuncionEscalonUnipolar

6.16. PRUEBAS EN FUNCIONDEACTIVACIONTEST

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

Se instancia un objeto de tipo


FuncionEscalonUnipolar como una
FuncionDeActivacion y se le pide
que evalue getNombre

Un String que contiene


Funci
on escalon unipolar.

Tabla 6.119: obtenerNombreFuncionEscalonUnipolar


5. Prueba obtenerValorFuncionIdentidad
El objetivo de esta prueba (Ver Cuadro 6.120) es evaluar el valor 3.0
con la funcion identidad.
PROCEDIMIENTO

RESULTADO ESPERADO

Se instancia un objeto de tipo


FuncionIdentidad como una
FuncionDeActivacion y se le pide
que evalue 3.0

Un double que contiene


3.0.

Tabla 6.120: obtenerValorFuncionIdentidad


6. Prueba obtenerNombreFuncionIdentidad
El objetivo de esta prueba (Ver Cuadro 6.121) es obtener el nombre
de la funcion identidad.
7. Prueba obtenerValorFuncionLinealMixtaBipolar
El objetivo de esta prueba (Ver Cuadro 6.122) es evaluar el valor 3.0
con la funcion lineal mixta bipolar.
8. Prueba obtenerNombreFuncionLinealMixtaBipolar
El objetivo de esta prueba (Ver Cuadro 6.123) es obtener el nombre
de la funcion lineal mixta bipolar.

CAPITULO 6. PRUEBAS

358

PROCEDIMIENTO

RESULTADO ESPERADO

Se instancia un objeto de tipo


FuncionIdentidad como una
FuncionDeActivacion y se le pide
que evalue getNombre

Un String que contiene


Funci
on identidad.

Tabla 6.121: obtenerNombreFuncionIdentidad

PROCEDIMIENTO

RESULTADO ESPERADO

Se instancia un objeto de tipo


FuncionLinealMixtaBipolar como una
FuncionDeActivacion y se le pide
que evalue 3.0

Un double que contiene


1.0.

Tabla 6.122: obtenerValorFuncionLinealMixtaBipolar

PROCEDIMIENTO

RESULTADO ESPERADO

Se instancia un objeto de tipo


FuncionLinealMixtaBipolar como una
FuncionDeActivacion y se le pide
que evalue getNombre

Un String que contiene


Funci
on lineal mixta bipolar.

Tabla 6.123: obtenerNombreFuncionLinealMixtaBipolar

6.16. PRUEBAS EN FUNCIONDEACTIVACIONTEST

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

Se instancia un objeto de tipo


FuncionLinealMixtaUnipolar como una
FuncionDeActivacion y se le pide
que evalue 3.0

Un double que contiene


1.0.

Tabla 6.124: obtenerValorFuncionLinealMixtaUnipolar


10. Prueba obtenerNombreFuncionLinealMixtaUnipolar
El objetivo de esta prueba (Ver Cuadro 6.125) es obtener el nombre
de la funcion lineal mixta unipolar.
PROCEDIMIENTO

RESULTADO ESPERADO

Se instancia un objeto de tipo


FuncionLinealMixtaUnipolar como una
FuncionDeActivacion y se le pide
que evalue getNombre

Un String que contiene


Funci
on lineal mixta unipolar.

Tabla 6.125: obtenerNombreFuncionLinealMixtaUnipolar


11. Prueba obtenerValorFuncionSigmoidalBipolar
El objetivo de esta prueba (Ver Cuadro 6.126) es evaluar el valor 3.0
con la funcion sigmoidal bipolar.
PROCEDIMIENTO

RESULTADO ESPERADO

Se instancia un objeto de tipo


FuncionSigmoidalBipolar como una
FuncionDeActivacion y se le pide
que evalue 3.0

Un double que contiene


0.9950.

Tabla 6.126: obtenerValorFuncionSigmoidalBipolar

CAPITULO 6. PRUEBAS

360

12. Prueba obtenerNombreFuncionSigmoidalBipolar


El objetivo de esta prueba (Ver Cuadro 6.127) es obtener el nombre
de la funcion sigmoidal bipolar.
PROCEDIMIENTO

RESULTADO ESPERADO

Se instancia un objeto de tipo


FuncionSigmoidalBipolar como una
FuncionDeActivacion y se le pide
que evalue getNombre

Un String que contiene


Funci
on sigmoidal bipolar.

Tabla 6.127: obtenerNombreFuncionSigmoidalBipolar


13. Prueba obtenerValorFuncionSigmoidalUnipolar
El objetivo de esta prueba (Ver Cuadro 6.128) es evaluar el valor 3.0
con la funcion sigmoidal unipolar. obtenerValorFuncionSigmoidalUnipolar
PROCEDIMIENTO

RESULTADO ESPERADO

Se instancia un objeto de tipo


FuncionSigmoidalUnipolar como una
FuncionDeActivacion y se le pide
que evalue 3.0

Un double que contiene


0.9525.

Tabla 6.128: obtenerValorFuncionSigmoidalUnipolar


14. Prueba obtenerNombreFuncionSigmoidalUnipolar
El objetivo de esta prueba (Ver Cuadro 6.129) es obtener el nombre
de la funcion sigmoidal unipolar.
PROCEDIMIENTO

RESULTADO ESPERADO

Se instancia un objeto de tipo


FuncionSigmoidalUnipolar como una
FuncionDeActivacion y se le pide
que evalue getNombre

Un String que contiene


Funci
on sigmoidal unipolar.

Tabla 6.129: obtenerNombreFuncionSigmoidalUnipolar

6.17. PRUEBAS EN FUNCIONDETRANSFERENCIATEST

6.17.

361

Pruebas en FuncionDeTransferenciaTest

Las 14 pruebas individuales realizadas a FuncionDeTransferenciaTest


se pueden observar en la Figura 6.20.

Figura 6.20: Pruebas en FuncionDeTransferenciaTest


1. Prueba obtenerValorFuncionEscalonBipolar
El objetivo de esta prueba (Ver Cuadro 6.130) es evaluar el valor 3.0
con la funcion escalon bipolar.
PROCEDIMIENTO

RESULTADO ESPERADO

Se instancia un objeto de tipo


FuncionEscalonBipolar como una
FuncionDeTransferencia y se le pide
que evalue 3.0

Un double que contiene


1.0.

Tabla 6.130: obtenerValorFuncionEscalonBipolar


2. Prueba obtenerNombreFuncionEscalonBipolar
El objetivo de esta prueba (Ver Cuadro 6.131) es obtener el nombre
de la funcion escalon bipolar.

CAPITULO 6. PRUEBAS

362
PROCEDIMIENTO

RESULTADO ESPERADO

Se instancia un objeto de tipo


FuncionEscalonBipolar como una
FuncionDeTransferencia y se le pide
que evalue getNombre

Un String que contiene


Funci
on escalon bipolar.

Tabla 6.131: obtenerNombreFuncionEscalonBipolar


3. Prueba obtenerValorFuncionEscalonUnipolar
El objetivo de esta prueba (Ver Cuadro 6.132) es evaluar el valor 3.0
con la funcion escalon unipolar.
PROCEDIMIENTO

RESULTADO ESPERADO

Se instancia un objeto de tipo


FuncionEscalonUnipolar como una
FuncionDeTransferencia y se le pide
que evalue 3.0

Un double que contiene


1.0.

Tabla 6.132: obtenerValorFuncionEscalonUnipolar


4. Prueba obtenerNombreFuncionEscalonUnipolar
El objetivo de esta prueba (Ver Cuadro 6.133) es obtener el nombre
de la funcion escalon unipolar.
PROCEDIMIENTO

RESULTADO ESPERADO

Se instancia un objeto de tipo


FuncionEscalonUnipolar como una
FuncionDeTransferencia y se le pide
que evalue getNombre

Un String que contiene


Funci
on escalon unipolar.

Tabla 6.133: obtenerNombreFuncionEscalonUnipolar


5. Prueba obtenerValorFuncionIdentidad
El objetivo de esta prueba (Ver Cuadro 6.134) es evaluar el valor 3.0
con la funcion identidad.

6.17. PRUEBAS EN FUNCIONDETRANSFERENCIATEST


PROCEDIMIENTO

RESULTADO ESPERADO

Se instancia un objeto de tipo


FuncionIdentidad como una
FuncionDeTransferencia y se le pide
que evalue 3.0

Un double que contiene


3.0.

363

Tabla 6.134: obtenerValorFuncionIdentidad


6. Prueba obtenerNombreFuncionIdentidad
El objetivo de esta prueba (Ver Cuadro 6.135) es obtener el nombre
de la funcion identidad.
PROCEDIMIENTO

RESULTADO ESPERADO

Se instancia un objeto de tipo


FuncionIdentidad como una
FuncionDeTransferencia y se le pide
que evalue getNombre

Un String que contiene


Funci
on identidad.

Tabla 6.135: obtenerNombreFuncionIdentidad


7. Prueba obtenerValorFuncionLinealMixtaBipolar
El objetivo de esta prueba (Ver Cuadro 6.136) es evaluar el valor 3.0
con la funcion lineal mixta bipolar.
PROCEDIMIENTO

RESULTADO ESPERADO

Se instancia un objeto de tipo


FuncionLinealMixtaBipolar como una
FuncionDeTransferencia y se le pide
que evalue 3.0

Un double que contiene


1.0.

Tabla 6.136: obtenerValorFuncionLinealMixtaBipolar


8. Prueba obtenerNombreFuncionLinealMixtaBipolar
El objetivo de esta prueba (Ver Cuadro 6.137) es obtener el nombre
de la funcion lineal mixta bipolar.

CAPITULO 6. PRUEBAS

364
PROCEDIMIENTO

RESULTADO ESPERADO

Se instancia un objeto de tipo


FuncionLinealMixtaBipolar como una
FuncionDeTransferencia y se le pide
que evalue getNombre

Un String que contiene


Funci
on lineal mixta bipolar.

Tabla 6.137: obtenerNombreFuncionLinealMixtaBipolar


9. Prueba obtenerValorFuncionLinealMixtaUnipolar
El objetivo de esta prueba (Ver Cuadro 6.138) es evaluar el valor 3.0
con la funcion lineal mixta unipolar.
PROCEDIMIENTO

RESULTADO ESPERADO

Se instancia un objeto de tipo


FuncionLinealMixtaUnipolar como una
FuncionDeTransferencia y se le pide
que evalue 3.0

Un double que contiene


1.0.

Tabla 6.138: obtenerValorFuncionLinealMixtaUnipolar


10. Prueba obtenerNombreFuncionLinealMixtaUnipolar
El objetivo de esta prueba (Ver Cuadro 6.139) es obtener el nombre
de la funcion lineal mixta unipolar.
PROCEDIMIENTO

RESULTADO ESPERADO

Se instancia un objeto de tipo


FuncionLinealMixtaUnipolar como una
FuncionDeTransferencia y se le pide
que evalue getNombre

Un String que contiene


Funci
on lineal mixta unipolar.

Tabla 6.139: obtenerNombreFuncionLinealMixtaUnipolar


11. Prueba obtenerValorFuncionSigmoidalBipolar
El objetivo de esta prueba (Ver Cuadro 6.140) es evaluar el valor 3.0
con la funcion sigmoidal bipolar.

6.17. PRUEBAS EN FUNCIONDETRANSFERENCIATEST


PROCEDIMIENTO

RESULTADO ESPERADO

Se instancia un objeto de tipo


FuncionSigmoidalBipolar como una
FuncionDeTransferencia y se le pide
que evalue 3.0

Un double que contiene


0.9950.

365

Tabla 6.140: obtenerValorFuncionSigmoidalBipolar


12. Prueba obtenerNombreFuncionSigmoidalBipolar
El objetivo de esta prueba (Ver Cuadro 6.141) es obtener el nombre
de la funcion sigmoidal bipolar.
PROCEDIMIENTO

RESULTADO ESPERADO

Se instancia un objeto de tipo


FuncionSigmoidalBipolar como una
FuncionDeTransferencia y se le pide
que evalue getNombre

Un String que contiene


Funci
on sigmoidal bipolar.

Tabla 6.141: obtenerNombreFuncionSigmoidalBipolar


13. Prueba obtenerValorFuncionSigmoidalUnipolar
El objetivo de esta prueba (Ver Cuadro 6.142) es evaluar el valor 3.0
con la funcion sigmoidal unipolar.
PROCEDIMIENTO

RESULTADO ESPERADO

Se instancia un objeto de tipo


FuncionSigmoidalUnipolar como una
FuncionDeTransferencia y se le pide
que evalue 3.0

Un double que contiene


0.9525.

Tabla 6.142: obtenerValorFuncionSigmoidalUnipolar


14. Prueba obtenerNombreFuncionSigmoidalUnipolar
El objetivo de esta prueba (Ver Cuadro 6.143) es obtener el nombre
de la funcion sigmoidal unipolar.

CAPITULO 6. PRUEBAS

366
PROCEDIMIENTO

RESULTADO ESPERADO

Se instancia un objeto de tipo


FuncionSigmoidalUnipolar como una
FuncionDeTransferencia y se le pide
que evalue getNombre

Un String que contiene


Funci
on sigmoidal unipolar.

Tabla 6.143: obtenerNombreFuncionSigmoidalUnipolar

6.18.

Pruebas en NeuronaDeEntradaTest

Las 6 pruebas individuales realizadas a NeuronaDeEntradaTest se pueden


observar en la Figura 6.21.

Figura 6.21: Pruebas en NeuronaDeEntradaTest


Antes de explicar las pruebas, es importante anotar que esta clase tiene
un metodo setUp y otro tearDown que se ejecutan antes y despues de cada prueba respectivamente. El objetivo de estos metodos es: instanciar un
objeto de NeuronaDeEntrada con el nombre de Neurona de Entrada 1
y eliminar la referencia hacia el.

1. Prueba obtenerNombreDeLaNeurona
El objetivo de esta prueba (Ver Cuadro 6.144) es obtener el nombre
de la neurona.
PROCEDIMIENTO

RESULTADO ESPERADO

Se le pide al objeto instanciado inicialmente


obtenerNombre.

Un String que
contiene Neurona de Entrada 1.

Tabla 6.144: obtenerNombreDeLaNeurona

6.18. PRUEBAS EN NEURONADEENTRADATEST

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

Se instancia un objeto de tipo


MonitorDeNeuronaDeEntradaParaPruebas,
se le pide al objeto instanciado inicialmente
asignarMonitor a dicho monitor,
luego se le pide asignarValorDeSalida el
valor de 5.0, finalmente se le pide al
monitor asignado obtenerNuevoValorDeSalida

Un double que
contiene 5.0.

Tabla 6.145: asignarMonitor


3. Prueba desasignarMonitor
El objetivo de esta prueba (Ver Cuadro 6.146) es desasignar un monitor. Para realizar la prueba, es necesario asignar un monitor, desasignarlo y realizar un cambio en la neurona de entrada.
PROCEDIMIENTO

RESULTADO ESPERADO

Se instancia un objeto de tipo


MonitorDeNeuronaDeEntradaParaPruebas,
se le pide al objeto instanciado inicialmente
asignarMonitor a dicho monitor y luego
desasignarMonitor, luego se le pide tambien
asignarValorDeSalida el valor de 8.0
y finalmente se le pide al monitor asignado
obtenerNuevoValorDeSalida

Un double que
contiene 0.0.
(valor por defecto
de un monitor)

Tabla 6.146: desasignarMonitor


4. Prueba obtenerValorDeSalida
El objetivo de esta prueba (Ver Cuadro 6.147) es obtener el valor de
salida por defecto.

CAPITULO 6. PRUEBAS

368
PROCEDIMIENTO

RESULTADO ESPERADO

Se le pide al objeto instanciado inicialmente


obtenerValorDeSalida.

Un double que
contiene 0.0.

Tabla 6.147: obtenerValorDeSalida


5. Prueba asignarValorDeSalida
El objetivo de esta prueba (Ver Cuadro 6.148) es obtener el valor de
salida despues de hacer un cambio.
PROCEDIMIENTO

RESULTADO ESPERADO

Se le pide al objeto instanciado inicialmente


asignarValorDeSalida el valor 7.0
y luego se le pide obtenerValorDeSalida

Un double que
contiene 7.0.

Tabla 6.148: asignarValorDeSalida


6. Prueba obtenerConQuienSeRelaciona
El objetivo de esta prueba (Ver Cuadro 6.149) es obtener con quien se
relaciona la neurona.
PROCEDIMIENTO

RESULTADO ESPERADO

Se le pide al objeto instanciado inicialmente


obtenerConQuienSeRelaciona.

Un String que
contiene .

Tabla 6.149: obtenerConQuienSeRelaciona

6.19.

Pruebas en NeuronaDeProcesoTest

Las 32 pruebas individuales realizadas a NeuronaDeProcesoTest se pueden


observar en la Figura 6.22.
Antes de explicar las pruebas, es importante anotar que esta clase tiene
un metodo setUp y otro tearDown que se ejecutan antes y despues de cada
prueba respectivamente. El objetivo de estos metodos es: instanciar un objeto de NeuronaDeProceso con el nombre de N de Proceso 1 y 3 entradas.
El metodo tearDown va a eliminar la referencia hacia el.

6.19. PRUEBAS EN NEURONADEPROCESOTEST

Figura 6.22: Pruebas en NeuronaDeProcesoTest

369

CAPITULO 6. PRUEBAS

370
1. Prueba obtenerNombreDeLaNeurona

El objetivo de esta prueba (Ver Cuadro 6.150) es obtener el nombre


de la neurona.
PROCEDIMIENTO

RESULTADO ESPERADO

Se le pide al objeto instanciado inicialmente


obtenerNombre.

Un String que contiene


N de Proceso 1.

Tabla 6.150: obtenerNombreDeLaNeurona


2. Prueba cambiarUmbralDeActivacion
El objetivo de esta prueba (Ver Cuadro 6.151) es cambiar el umbral
de activacion, es necesario usar el metodo para obtener el umbral de
activacion.
PROCEDIMIENTO

RESULTADO ESPERADO

Se le pide al objeto instanciado inicialmente


cambiarUmbralDeActivacion por el valor
8.0 y luego se le pide
obtenerUmbralDeActivacion

Un double que
contiene 8.0.

Tabla 6.151: cambiarUmbralDeActivacion


3. Prueba obtenerUmbralDeActivacion
El objetivo de esta prueba (Ver Cuadro 6.152) es obtener el umbral
de activacion, es necesario utilizar el metodo cambiar umbral de activacion porque dicho valor inicia en un valor aleatorio.
PROCEDIMIENTO

RESULTADO ESPERADO

Se le pide al objeto instanciado inicialmente


cambiarUmbralDeActivacion por el valor
5.0 y luego se le pide
obtenerUmbralDeActivacion

Un double que
contiene 5.0.

Tabla 6.152: obtenerUmbralDeActivacion

6.19. PRUEBAS EN NEURONADEPROCESOTEST

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

Se le pide al objeto instanciado inicialmente


obtenerNumeroDeEntradas.

Un int que contiene 4


(3 entradas + 1 umbral).

Tabla 6.153: obtenerNumeroDeEntradas


5. Prueba asignarMonitor
El objetivo de esta prueba (Ver Cuadro 6.154) es asignar un monitor.
Para realizar la prueba, es necesario asignar un monitor y realizar un
cambio en la neurona de proceso.
PROCEDIMIENTO

RESULTADO ESPERADO

Se instancia un objeto de tipo


MonitorDeNeuronaDeProcesoParaPruebas,
se le pide al objeto instanciado inicialmente
asignarMonitor a dicho monitor,
luego se le pide asignarValorDeSalida el
valor de 5.0, finalmente se le pide al monitor
asignado obtenerNuevoValorDeSalida

Un double que
contiene 5.0.

Tabla 6.154: asignarMonitor


6. Prueba desasignarMonitor
El objetivo de esta prueba (Ver Cuadro 6.155) es desasignar un monitor. Para realizar la prueba, es necesario asignar un monitor, desasignarlo, y realizar un cambio en la neurona de proceso.
7. Prueba obtenerFuncionBase
El objetivo de esta prueba (Ver Cuadro 6.156) es obtener la funcion
base.

CAPITULO 6. PRUEBAS

372
PROCEDIMIENTO

RESULTADO ESPERADO

Se instancia un objeto de tipo


MonitorDeNeuronaDeProcesoParaPruebas,
se le pide al objeto instanciado inicialmente
asignarMonitor a dicho monitor y luego
desasignarMonitor, luego se le pide tambien
asignarValorDeSalida el valor de 5.0
y finalmente se le pide al monitor asignado
obtenerNuevoValorDeSalida

Un double que
contiene 0.0.
(valor por defecto
de un monitor)

Tabla 6.155: desasignarMonitor


PROCEDIMIENTO

RESULTADO ESPERADO

Se le pide al objeto instanciado inicialmente


obtenerFuncionBase.

Un String que contiene


Funci
on base lineal.

Tabla 6.156: obtenerFuncionBase


8. Prueba obtenerFuncionDeActivacion
El objetivo de esta prueba (Ver Cuadro 6.157) es obtener la funcion
de activacion.
PROCEDIMIENTO

RESULTADO ESPERADO

Se le pide al objeto instanciado inicialmente


obtenerFuncionDeActivacion.

Un String que contiene


Funci
on identidad.

Tabla 6.157: obtenerFuncionDeActivacion


9. Prueba obtenerFuncionDeTransferencia
El objetivo de esta prueba (Ver Cuadro 6.158) es obtener la funcion
de transferencia.
PROCEDIMIENTO

RESULTADO ESPERADO

Se le pide al objeto instanciado inicialmente


obtenerFuncionDeTransferencia.

Un String que contiene


Funci
on identidad.

Tabla 6.158: obtenerFuncionDeTransferencia

6.19. PRUEBAS EN NEURONADEPROCESOTEST

373

10. Prueba cambiarPesoEnlaceDeLaEntrada


El objetivo de esta prueba (Ver Cuadro 6.159) es cambiar el peso de
una entrada, es necesario utilizar el metodo obtener el peso de una
entrada para verificar el cambio.
PROCEDIMIENTO

RESULTADO ESPERADO

Se le pide al objeto instanciado inicialmente


cambiarPesoEnlaceDeLaEntrada por el valor
8.0 en la entrada 2 y luego se le pide
obtenerPesoEnlaceDeLaEntrada
de dicha entrada

Un double que
contiene 8.0.

Tabla 6.159: cambiarPesoEnlaceDeLaEntrada


11. Prueba obtenerPesoEnlaceDeLaEntrada
El objetivo de esta prueba (Ver Cuadro 6.160) es obtener el peso de una
entrada, es necesario utilizar el metodo cambiar peso de una entrada
debido a que los pesos se inicializan aleatoriamente.
PROCEDIMIENTO

RESULTADO ESPERADO

Se le pide al objeto instanciado inicialmente


cambiarPesoEnlaceDeLaEntrada por el valor
4.0 en la entrada 2 y luego se le pide
obtenerPesoEnlaceDeLaEntrada
de dicha entrada

Un double que
contiene 4.0.

Tabla 6.160: obtenerPesoEnlaceDeLaEntrada


12. Prueba cambiarFuncionBase1
El objetivo de esta prueba (Ver Cuadro 6.161) es cambiar la funcion
base, usando el operador new.
13. Prueba cambiarFuncionBase2
El objetivo de esta prueba (Ver Cuadro 6.162) es cambiar la funcion
base, usando Class.forName ("").newInstance().
14. Prueba cambiarFuncionDeActivacion1
El objetivo de esta prueba (Ver Cuadro 6.163) es cambiar la funcion
de activacion, usando el operador new.

CAPITULO 6. PRUEBAS

374

PROCEDIMIENTO

RESULTADO ESPERADO

Se instancia un objeto de tipo


FuncionBaseRadical como una
FuncionBase, luego se le pide
al objeto instanciado inicialmente
cambiarFuncionBase por esta nueva
funcion. Finalmente se le pide al objeto
inicial obtenerFuncionBase

Un String que
contiene Funci
on base radical.

Tabla 6.161: cambiarFuncionBase1

PROCEDIMIENTO

RESULTADO ESPERADO

Se instancia un objeto de tipo


FuncionBaseRadical como una
FuncionBase, luego se le pide
al objeto instanciado inicialmente
cambiarFuncionBase por esta nueva
funcion. Finalmente se le pide al objeto
inicial obtenerFuncionBase

Un String que
contiene Funci
on base radical.

Tabla 6.162: cambiarFuncionBase2

PROCEDIMIENTO

RESULTADO ESPERADO

Se instancia un objeto de tipo


FuncionEscalonBipolar como una
FuncionDeActivacion, luego se le pide
al objeto instanciado inicialmente
cambiarFuncionDeActivacion por esta
nueva funcion. Finalmente se le pide al objeto
inicial obtenerFuncionDeActivacion

Un String que contiene


Funci
on escalon bipolar.

Tabla 6.163: cambiarFuncionDeActivacion1

6.19. PRUEBAS EN NEURONADEPROCESOTEST

375

15. Prueba cambiarFuncionDeActivacion2


El objetivo de esta prueba (Ver Cuadro 6.164) es cambiar la funcion
de activacion, usando Class.forName ("").newInstance().
PROCEDIMIENTO

RESULTADO ESPERADO

Se instancia un objeto de tipo


FuncionLinealMixtaBipolar como una
FuncionDeActivacion, luego se le pide
al objeto instanciado inicialmente
cambiarFuncionDeActivacion por esta
nueva funcion. Finalmente se le pide al objeto
inicial obtenerFuncionDeActivacion

Un String que contiene


Funci
on lineal .
mixta bipolar

Tabla 6.164: cambiarFuncionDeActivacion2


16. Prueba cambiarFuncionDeTransferencia1
El objetivo de esta prueba (Ver Cuadro 6.165) es cambiar la funcion
de transferencia, usando el operador new.
PROCEDIMIENTO

RESULTADO ESPERADO

Se instancia un objeto de tipo


FuncionSigmoidalUnipolar como una
FuncionDeTransferencia, luego se le pide
al objeto instanciado inicialmente
cambiarFuncionDeTransferencia por esta
nueva funcion. Finalmente se le pide al objeto
inicial obtenerFuncionDeTransferencia

Un String que contiene


Funci
on sigmoidal
unipolar.

Tabla 6.165: cambiarFuncionDeTransferencia1


17. Prueba cambiarFuncionDeTransferencia2
El objetivo de esta prueba (Ver Cuadro 6.166) es cambiar la funcion
de transferencia, usando Class.forName ("").newInstance().
18. Prueba obtenerEstadoDelEnlaceDeLaEntrada
El objetivo de esta prueba (Ver Cuadro 6.167) es obtener el estado de
un enlace de una entrada.

CAPITULO 6. PRUEBAS

376
PROCEDIMIENTO

RESULTADO ESPERADO

Se instancia un objeto de tipo


FuncionSigmoidalBipolar como una
FuncionDeTransferencia, luego se le pide
al objeto instanciado inicialmente
cambiarFuncionDeTransferencia por esta
nueva funcion. Finalmente se le pide al objeto
inicial obtenerFuncionDeTransferencia

Un String que contiene


Funci
on sigmoidal
bipolar.

Tabla 6.166: cambiarFuncionDeTransferencia2


PROCEDIMIENTO

RESULTADO ESPERADO

Se le pide al objeto instanciado inicialmente


obtenerEstadoDelEnlaceDeLaEntrada
de la entrada 2.

Un String que contiene


<Libre>.

Tabla 6.167: obtenerEstadoDelEnlaceDeLaEntrada


19. Prueba enlazarNeurona
El objetivo de esta prueba (Ver Cuadro 6.168) es enlazar una neurona
(neurona de entrada).
PROCEDIMIENTO

RESULTADO ESPERADO

Se instancia un objeto de tipo


NeuronaDeEntrada, luego se le pide
al objeto instanciado inicialmente
enlazarNeurona a la neurona instanciada
en la entrada 1 y finalmente se le pide
obtenerEstadoDelEnlaceDeLaEntrada 1.

Un String que contiene


<Conectado>.

Tabla 6.168: enlazarNeurona


20. Prueba desenlazarNeurona
El objetivo de esta prueba (Ver Cuadro 6.169) es desenlazar una neurona previamente enlazada.

6.19. PRUEBAS EN NEURONADEPROCESOTEST


PROCEDIMIENTO

377

RESULTADO ESPERADO

Se instancia un objeto de tipo


NeuronaDeEntrada, luego se le pide
al objeto instanciado inicialmente
enlazarNeurona a la neurona instanciada
en la entrada 1, posteriormente se le pide
desenlazarNeurona y finalmente se ordena
obtenerEstadoDelEnlaceDeLaEntrada 1.

Un String que contiene


<Libre>.

Tabla 6.169: desenlazarNeurona


21. Prueba obtenerConQuienSeRelaciona1
El objetivo de esta prueba (Ver Cuadro 6.170) es obtener las relaciones
de una neurona de proceso sin conexion alguna a otras neuronas (Ver
Figura 6.23).

Figura 6.23: Prueba obtenerConQuienSeRelaciona1


PROCEDIMIENTO

RESULTADO ESPERADO

Se le pide al objeto instanciado


obtenerConQuienSeRelaciona.

Un String que contiene

"N de Proceso 1"(1)-> <Libre>


"N de Proceso 1"(2)-> <Libre>
"N de Proceso 1"(3)-> <Libre>

Tabla 6.170: obtenerConQuienSeRelaciona1


22. Prueba obtenerConQuienSeRelaciona2
El objetivo de esta prueba (Ver Cuadro 6.171) es obtener las relaciones
de una neurona de proceso con conexion a una neurona de entrada (Ver
Figura 6.24).

CAPITULO 6. PRUEBAS

378

Figura 6.24: Prueba obtenerConQuienSeRelaciona2


PROCEDIMIENTO

RESULTADO ESPERADO

Se instancia un objeto de tipo


NeuronaDeEntrada como una Neurona
y se le asigna el nombre de NE1,
luego se le pide al objeto instanciado
enlazarNeurona a la nueva neurona
en la entrada 2 y finalmente se le pide
obtenerConQuienSeRelaciona.

Un String que contiene

"N de Proceso 1"(1)-> <Libre>


"N de Proceso 1"(2)-> "NE1"
"N de Proceso 1"(3)-> <Libre>

Tabla 6.171: obtenerConQuienSeRelaciona2


23. Prueba obtenerConQuienSeRelaciona3
El objetivo de esta prueba (Ver Cuadro 6.172) es obtener las relaciones
de una neurona de proceso con conexion a una neurona de retardo (Ver
Figura 6.25).

Figura 6.25: Prueba obtenerConQuienSeRelaciona3

6.19. PRUEBAS EN NEURONADEPROCESOTEST

379

PROCEDIMIENTO

RESULTADO ESPERADO

Se instancia un objeto de tipo


NeuronaDeRetardo como una Neurona
y se le asigna el nombre de NR1,
luego se le pide al objeto instanciado
enlazarNeurona a la nueva neurona
en la entrada 2 y finalmente se le pide
obtenerConQuienSeRelaciona.

Un String que contiene

"N de Proceso 1"(1)-> <Libre>


"N de Proceso 1"(2)-> "NR1"<Libre>
"N de Proceso 1"(3)-> <Libre>

Tabla 6.172: obtenerConQuienSeRelaciona3


24. Prueba obtenerConQuienSeRelaciona4
El objetivo de esta prueba (Ver Cuadro 6.173) es obtener las relaciones
de una neurona de proceso con conexion a una neurona de proceso (Ver
Figura 6.26).

Figura 6.26: Prueba obtenerConQuienSeRelaciona4


PROCEDIMIENTO

RESULTADO ESPERADO

Se instancia un objeto de tipo


NeuronaDeProceso como una Neurona
(2 entradas) y se le asigna el nombre de
NP1, luego se le pide al objeto
instanciado enlazarNeurona a la nueva
neurona en la entrada 2 y finalmente se
le pide obtenerConQuienSeRelaciona.

Un String que contiene

"N de Proceso 1"(1)-> <Libre>


"N de Proceso 1"(2)-> "NP1"
"NP1"(1)-> <Libre>
"NP1"(2)-> <Libre>
"N de Proceso 1"(3)-> <Libre>

Tabla 6.173: obtenerConQuienSeRelaciona4


25. Prueba obtenerConQuienSeRelaciona5
El objetivo de esta prueba (Ver Cuadro 6.174) es obtener las relaciones

CAPITULO 6. PRUEBAS

380

de una neurona de proceso con conexion a dos neurona de proceso (Ver


Figura 6.27).

Figura 6.27: Prueba obtenerConQuienSeRelaciona5


PROCEDIMIENTO

RESULTADO ESPERADO

Se instancian dos objetos de tipo


NeuronaDeProceso como una Neurona
(2 entradas) y se les asignan los nombres
de NP1 y NP2, luego se le pide al objeto
instanciado inicialmente enlazarNeurona
NP1 en la entrada 2 y se le piede a esta
neurona enlazarNeurona a NP2 en su
entrada 1; y finalmente se le pide
obtenerConQuienSeRelaciona al objeto
inicial.

Un String que contiene

"N de Proceso 1"(1)-> <Libre>


"N de Proceso 1"(2)-> "NP1"
"NP1"(1)-> "NP2"
"NP2"(1)-> <Libre>
"NP2"(2)-> <Libre>
"NP1"(2)-> <Libre>
"N de Proceso 1"(3)-> <Libre>

Tabla 6.174: obtenerConQuienSeRelaciona5


26. Prueba obtenerConQuienSeRelaciona6
El objetivo de esta prueba (Ver Cuadro 6.175) es obtener las relaciones
de una neurona de proceso con conexion a tres neurona de proceso y
creando una retroalimentaci
on (Ver Figura 6.28).

Figura 6.28: Prueba obtenerConQuienSeRelaciona6

6.19. PRUEBAS EN NEURONADEPROCESOTEST

381

PROCEDIMIENTO

RESULTADO ESPERADO

Se instancian tres objetos de tipo


NeuronaDeProceso como una Neurona
(2 entradas) y se les asignan los nombres
de NP1, NP2 y NP3,
luego se crea la topologa de la Figura 6.28
usando enlazarNeurona en las
neuronas apropiadas, y finalmente se le pide
obtenerConQuienSeRelaciona al objeto inicial.

Un String que contiene

"N de Proceso 1"(1)-> <Libre>


"N de Proceso 1"(2)-> "NP1"
"NP1"(1)-> "NP2"
"NP2"(1)-> <Libre>
"NP2"(2)-> "NP3"
"NP3"(1)-> "NP2"[...]
"NP3"(2)-> <Libre>
"NP1"(2)-> <Libre>
"N de Proceso 1"(3)-> <Libre>

Tabla 6.175: obtenerConQuienSeRelaciona6


27. Prueba obtenerPotencialDeActivacion1
El objetivo de esta prueba (Ver Cuadro 6.176) es obtener el potencial de activacion de una neurona de proceso sin conexion con otras
neuronas.
PROCEDIMIENTO

RESULTADO ESPERADO

Se le pide al objeto instanciado inicialmente


cambiarUmbralDeActivacion, por el valor 4.0
y luego se le pide obtenerPotencialDeActivacion.

Un double que contiene


4.0.

Tabla 6.176: obtenerPotencialDeActivacion1


28. Prueba obtenerPotencialDeActivacion2
El objetivo de esta prueba (Ver Cuadro 6.177) es obtener el potencial de activacion de una neurona de proceso con conexion a otras
neuronas. Estas conexiones crean una retroalimentaci
on inv
alida (Ver
Figura 6.28).
29. Prueba obtenerValorDeActivacion
El objetivo de esta prueba (Ver Cuadro 6.178) es obtener el valor de
activacion de una neurona de proceso.

CAPITULO 6. PRUEBAS

382
PROCEDIMIENTO

RESULTADO ESPERADO

Se instancian tres objetos de tipo


NeuronaDeProceso como una Neurona
(2 entradas) y se les asignan los nombres
de NP1, NP2 y NP3,
luego se crea la topologa de la Figura 6.28
usando enlazarNeurona en las
neuronas apropiadas, y finalmente se le pide
obtenerPotencialDeActivacion al objeto inicial.

Un String que contiene


Error,
retroalimentaci
on inv
alida
entre las neuronas.

Tabla 6.177: obtenerPotencialDeActivacion2


PROCEDIMIENTO

RESULTADO ESPERADO

Se le pide al objeto instanciado inicialmente


cambiarUmbralDeActivacion, por el valor 9.0
y luego se le pide obtenerValorDeActivacion.

Un double que contiene


9.0.

Tabla 6.178: obtenerValorDeActivacion


30. Prueba obtenerValorDeSalida
El objetivo de esta prueba (Ver Cuadro 6.179) es obtener el valor de
salida de una neurona de proceso.
PROCEDIMIENTO

RESULTADO ESPERADO

Se le pide al objeto instanciado inicialmente


cambiarUmbralDeActivacion, por el valor 3.0
y luego se le pide obtenerValorDeSalida.

Un double que contiene


3.0.

Tabla 6.179: obtenerValorDeSalida


31. Prueba obtenerNombreNeuronaEnlazada1
El objetivo de esta prueba (Ver Cuadro 6.180) es obtener el nombre
una neurona enlazada, pero actualmente la neurona de proceso no
tienen enlazada ninguna neurona.
32. Prueba obtenerNombreNeuronaEnlazada2
El objetivo de esta prueba (Ver Cuadro 6.181) es obtener el nombre una

6.20. PRUEBAS EN NEURONADERETARDOTEST

383

PROCEDIMIENTO

RESULTADO ESPERADO

Se le pide al objeto instanciado inicialmente


obtenerNombreNeuronaEnlazada de
la entrada 0

Un String que contiene


Error, no hay una
neurona enlazada.

Tabla 6.180: obtenerNombreNeuronaEnlazada1


neurona enlazada, actualmente la neurona de proceso tienen enlazada
una neurona de entrada.
PROCEDIMIENTO

RESULTADO ESPERADO

Se instancian un objeto de tipo


NeuronaDeEntrada como una Neurona
y se asigna el nombre de N de entrada 1,
luego se le pide a la neurona creada inicialmente
enlazarNeurona a la nueva neurona en la
entrada 1 y finalmente se le pide a dicha
neurona obtenerNombreNeuronaEnlazada
de la entrada 1

Un String que contiene


N de entrada 1

Tabla 6.181: obtenerNombreNeuronaEnlazada2

6.20.

Pruebas en NeuronaDeRetardoTest

Las 19 pruebas individuales realizadas a NeuronaDeRetardoTest se pueden


observar en la Figura 6.29.
Antes de explicar las pruebas, es importante anotar que esta clase tiene
un metodo setUp y otro tearDown que se ejecutan antes y despues de cada
prueba respectivamente. El objetivo de estos metodos es: instanciar un objeto de NeuronaDeRetardo con el nombre de N de Retardo 1. El metodo
tearDown va a eliminar la referencia hacia el.

CAPITULO 6. PRUEBAS

384

Figura 6.29: Pruebas en NeuronaDeRetardoTest


1. Prueba obtenerNombreDeLaNeurona
El objetivo de esta prueba (Ver Cuadro 6.182) es obtener el nombre
de la neurona.
PROCEDIMIENTO

RESULTADO ESPERADO

Se le pide al objeto instanciado inicialmente


obtenerNombre.

Un String que contiene


N de Retardo 1.

Tabla 6.182: obtenerNombreDeLaNeurona


2. Prueba asignarMonitor
El objetivo de esta prueba (Ver Cuadro 6.183) es asignar un monitor.
Para realizar la prueba, es necesario asignar un monitor y realizar un
cambio en la neurona de retardo.
3. Prueba desasignarMonitor
El objetivo de esta prueba (Ver Cuadro 6.184) es desasignar un monitor. Para realizar la prueba, es necesario asignar un monitor, desasignarlo, y realizar un cambio en la neurona de retardo.
4. Prueba obtenerValorDeSalida
El objetivo de esta prueba (Ver Cuadro 6.185) es obtener el valor de
salida por defecto.

6.20. PRUEBAS EN NEURONADERETARDOTEST

385

PROCEDIMIENTO

RESULTADO ESPERADO

Se instancia un objeto de tipo


MonitorDeNeuronaDeRetardoParaPruebas,
se le pide al objeto instanciado inicialmente
asignarMonitor a dicho monitor,
luego se le pide asignarValorDeSalida el
valor de 5.0, finalmente se le pide al monitor
asignado obtenerNuevoValorDeSalida

Un double que
contiene 5.0.

Tabla 6.183: asignarMonitor

PROCEDIMIENTO

RESULTADO ESPERADO

Se instancia un objeto de tipo


MonitorDeNeuronaDeRetardoParaPruebas,
se le pide al objeto instanciado inicialmente
asignarMonitor a dicho monitor y luego
desasignarMonitor, luego se le pide tambien
asignarValorDeSalida el valor de 8.0
y finalmente se le pide al monitor asignado
obtenerNuevoValorDeSalida

Un double que
contiene 0.0.
(valor por defecto
de un monitor)

Tabla 6.184: desasignarMonitor

PROCEDIMIENTO

RESULTADO ESPERADO

Se le pide al objeto instanciado inicialmente


obtenerValorDeSalida.

Un double que contiene


0.0.

Tabla 6.185: obtenerValorDeSalida

CAPITULO 6. PRUEBAS

386
5. Prueba obtenerValorFuturo

El objetivo de esta prueba (Ver Cuadro 6.186) es obtener el valor


futuro por defecto.
PROCEDIMIENTO

RESULTADO ESPERADO

Se le pide al objeto instanciado inicialmente


obtenerValorFuturo.

Un double que contiene


0.0.

Tabla 6.186: obtenerValorFuturo


6. Prueba obtenerEstadoDelEnlace
El objetivo de esta prueba (Ver Cuadro 6.187) es obtener el estado del
enlace por defecto.
PROCEDIMIENTO

RESULTADO ESPERADO

Se le pide al objeto instanciado inicialmente


obtenerEstadoDelEnlace.

Un String que contiene


<Libre>.

Tabla 6.187: obtenerEstadoDelEnlace


7. Prueba obtenerNombreDeLaNeuronaEnlazada
El objetivo de esta prueba (Ver Cuadro 6.188) es obtener el nombre
de la neurona.
PROCEDIMIENTO

RESULTADO ESPERADO

Se le pide al objeto instanciado inicialmente


obtenerNombreDeLaNeuronaEnlazada.

Un String que contiene


Error, no hay .
una neurona enlazada

Tabla 6.188: obtenerNombreDeLaNeuronaEnlazada


8. Prueba asignarValorDeSalida
El objetivo de esta prueba (Ver Cuadro 6.189) es obtener el valor de
salida despues de hacer un cambio.
9. Prueba asignarValorFuturo
El objetivo de esta prueba (Ver Cuadro 6.190) es obtener el valor
futuro despues de hacer un cambio.

6.20. PRUEBAS EN NEURONADERETARDOTEST

387

PROCEDIMIENTO

RESULTADO ESPERADO

Se le pide al objeto instanciado inicialmente


asignarValorDeSalida el valor de 7.0
y luego se le pide obtenerValorDeSalida

Un double que contiene


7.0.

Tabla 6.189: asignarValorDeSalida


PROCEDIMIENTO

RESULTADO ESPERADO

Se le pide al objeto instanciado inicialmente


asignarValorFuturo el valor de 8.0
y luego se le pide obtenerValorFuturo

Un double que contiene


8.0.

Tabla 6.190: asignarValorFuturo


10. Prueba actualizarValorPresente
El objetivo de esta prueba (Ver Cuadro 6.191) es obtener el valor
futuro despues de hacer un cambio.
PROCEDIMIENTO

RESULTADO ESPERADO

Se le pide al objeto instanciado inicialmente


asignarValorFuturo el valor de 8.0,
luego se le pide asignarValorDeSalida
el valor de 3.0, posteriormente le pide
actualizarValorPresente y finalmente se le
pide obtenerValorDeSalida.

Un double que contiene


8.0.

Tabla 6.191: actualizarValorPresente


11. Prueba obtenerSiguienteValorFuturo
El objetivo de esta prueba (Ver Cuadro 6.192) es obtener el siguiente
valor futuro por defecto.
12. Prueba actualizarValorFuturo
El objetivo de esta prueba (Ver Cuadro 6.193) es actualizar el valor
futuro.

CAPITULO 6. PRUEBAS

388
PROCEDIMIENTO

RESULTADO ESPERADO

Se le pide al objeto instanciado inicialmente


obtenerSiguienteValorFuturo.

Un double que contiene


0.0.

Tabla 6.192: obtenerSiguienteValorFuturo


PROCEDIMIENTO

RESULTADO ESPERADO

Se le pide al objeto instanciado inicialmente


asignarValorFuturo el valor de 9.0,
luego se le pide actualizarValorFuturo y
finalmente se le pide obtenerValorFuturo

Un double que contiene


0.0.

Tabla 6.193: actualizarValorFuturo


13. Prueba enlazarNeurona
El objetivo de esta prueba (Ver Cuadro 6.194) es enlazar una neurona
y verificar el estado de la conexion.
PROCEDIMIENTO

RESULTADO ESPERADO

Se instancia un objeto de tipo


NeuronaDeRetardo, luego se le pide
al objeto instanciado inicialmente
enlazarNeurona a la neurona instanciada
y finalmente se le pide
obtenerEstadoDelEnlace.

Un String que contiene


<Conectado>.

Tabla 6.194: enlazarNeurona


14. Prueba obtenerConQuienSeRelaciona1
El objetivo de esta prueba (Ver Cuadro 6.195) es obtener con quien se
relaciona la neurona.
PROCEDIMIENTO

RESULTADO ESPERADO

Se le pide al objeto instanciado inicialmente


obtenerConQuienSeRelaciona.

Un String que contiene


<Libre>.

Tabla 6.195: obtenerConQuienSeRelaciona1

6.20. PRUEBAS EN NEURONADERETARDOTEST

389

15. Prueba obtenerConQuienSeRelaciona2


El objetivo de esta prueba (Ver Cuadro 6.196) es enlazar una neurona
y verificar el nombre de la neurona enlazada.
PROCEDIMIENTO

RESULTADO ESPERADO

Se instancia un objeto de tipo


NeuronaDeRetardo asignandole el nombre
N de Retardo 2, luego se le pide
al objeto instanciado inicialmente
enlazarNeurona a la neurona instanciada
y finalmente se le pide
obtenerNombreDeLaNeuronaEnlazada.

Un String que contiene


N de Retardo 2.

Tabla 6.196: obtenerConQuienSeRelaciona2


16. Prueba obtenerConQuienSeRelaciona3
El objetivo de esta prueba (Ver Cuadro 6.197) es enlazar una neurona
y verificar con quien se relaciona.
PROCEDIMIENTO

RESULTADO ESPERADO

Se instancia un objeto de tipo


NeuronaDeRetardo asignandole el nombre
N2, luego se le pide
al objeto instanciado inicialmente
enlazarNeurona a la neurona instanciada
y finalmente se le pide
obtenerConQuienSeRelaciona.

Un String que contiene


"N2"-> <Libre>.

Tabla 6.197: obtenerConQuienSeRelaciona3


17. Prueba obtenerConQuienSeRelaciona4
El objetivo de esta prueba (Ver Cuadro 6.198) es enlazar tres neuronas
y verificar con quien se relaciona (Ver Figura 6.30).
18. Prueba obtenerConQuienSeRelaciona5
El objetivo de esta prueba (Ver Cuadro 6.199) es enlazar tres neuronas
con retroalimentacion y verificar con quien se relaciona (Ver Figura
6.31).

CAPITULO 6. PRUEBAS

390

Figura 6.30: Prueba obtenerConQuienSeRelaciona4


PROCEDIMIENTO

RESULTADO ESPERADO

Se instancian tres objetos de tipo


NeuronaDeRetardo asignandole el nombre
N2, N3 y N4,
luego se crea la topologa de la Figura 6.30
usando enlazarNeurona en las neuronas apropiadas
y finalmente se le pide al objeto instanciado inicialmente
obtenerConQuienSeRelaciona.

Un String que contiene


"N2"-> "N3"->
"N4"-> <Libre>.

Tabla 6.198: obtenerConQuienSeRelaciona4

Figura 6.31: Prueba obtenerConQuienSeRelaciona5


PROCEDIMIENTO

RESULTADO ESPERADO

Se instancian tres objetos de tipo


NeuronaDeRetardo asignandole el nombre
N2, N3 y N4,
luego se crea la topologa de la Figura 6.31
usando enlazarNeurona en las neuronas
apropiadas y finalmente se le pide al objeto
instanciado inicialmente
obtenerConQuienSeRelaciona.

Un String que contiene


"N2"-> "N3"->
"N4"-> "N2"-> [...].

Tabla 6.199: obtenerConQuienSeRelaciona5

6.20. PRUEBAS EN NEURONADERETARDOTEST

391

19. Prueba desenlazarNeurona


El objetivo de esta prueba (Ver Cuadro 6.200) es enlazar/desenlazar
una neurona y verificar el estado de la conexion.
PROCEDIMIENTO

RESULTADO ESPERADO

Se instancian un objeto de tipo


NeuronaDeRetardo, luego se le pide a la
neurona creada inicialmente enlazarNeurona
a la nueva neurona, luego desenlazarNeurona
y finalmente obtenerEstadoDelEnlace

Un String que contiene


<Libre>

Tabla 6.200: desenlazarNeurona

392

CAPITULO 6. PRUEBAS

Parte II

LABORATORIOS

393

GUIAS DE LABORATORIOS
(ESTUDIANTE)

396

CAPITULO 7. GUIAS DE LABORATORIOS (ESTUDIANTE)

DEL ENTORNO DE TRABAJO


7.1. INSTALACION

397

Universidad del Quindo


Facultad de Ingenieras
Programa de Ingeniera de Sistemas y Computaci
on
Gua Educativa N
umero: 001
Fecha de Entrega: Ocho das despues de la fecha asignada
Duraci
on Estimada: 60 Minutos
Asignatura: Redes Neuronales / Inteligencia Artificial
Profesor: Julian Esteban Gutierrez Posada

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

CAPITULO 7. GUIAS DE LABORATORIOS (ESTUDIANTE)

Artefactos del Laboratorio


Java 1.6 Update 3 (Java 6.0 Update 3): Tener el archivo de
instalacion del lenguaje de programacion Java 6.0 update 3 en el
equipo de trabajo ya sea en la casa o en el equipo del laboratorio en
el cual desea trabajar.
Documentaci
on Java 1.6: Tener el archivo de la documentaci
on
de Java 6.0 en el equipo de trabajo ya sea en la casa o en el equipo
del laboratorio en el cual desea trabajar.
Entorno de programaci
on Netbeans-6.1: Tener el archivo de instalacion del entorno de programacion Netbeans-6.1 en el equipo de
trabajo ya sea en la casa o en el equipo del laboratorio en el cual desea
trabajar.
Laboratorio virtual de redes neuronales, con su material de
apoyo: Contar con el archivo que contiene el laboratorio virtual
de redes neuronales, con su respectivo material de apoyo en el
equipo de trabajo ya sea en la casa o en el equipo del laboratorio en
el cual desea trabajar.
Gua de laboratorio: Contar con la gua de laboratorio que le indica
que debe hacer y como debe reportar sus resultados.

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.

DEL ENTORNO DE TRABAJO


7.1. INSTALACION

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

Cree una carpeta de trabajo y


copie en ella el contenido de la
carpeta Dist del CD.

Consultar al monitor sobre los


permisos para realizar esta laboratorio.

Tabla 7.1: Procedimiento de instalacion

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

CAPITULO 7. GUIAS DE LABORATORIOS (ESTUDIANTE)

7.2. UNA NEURONA DE ENTRADA

401

Universidad del Quindo


Facultad de Ingenieras
Programa de Ingeniera de Sistemas y Computaci
on
Gua Educativa N
umero: 002
Fecha de Entrega: Ocho das despues de la fecha asignada
Duraci
on Estimada: 60 Minutos
Asignatura: Redes Neuronales / Inteligencia Artificial
Profesor: Julian Esteban Gutierrez Posada

7.2.

Una neurona de entrada

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.

CAPITULO 7. GUIAS DE LABORATORIOS (ESTUDIANTE)

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.

Explore las opciones activadas


por defecto del laboratorio.
Seleccione la opcion Iniciar
laboratorio.
Acepte la advertencia.

3
4
5

Escriba el nombre o nombres de


los autores del laboratorio.

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.

Tabla 7.2: Crear un nuevo laboratorio


Pasos
1

Descripci
on
Seleccione dos veces la opcion
Crear neurona.

Seleccione la opcion Obtener


nombre y seleccione la variable
b.
Seleccione la opcion Obtener
valor de salida y seleccione
la variable b.
Seleccione la opcion Asignar
valor de salida y repita el
paso 3.

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.

Tabla 7.3: Manipulacion de neuronas de entrada

7.2. UNA NEURONA DE ENTRADA


Pasos
1

Descripci
on
Seleccione dos veces la opcion
Crear monitor.

Seleccione la opcion Obtener


nombre y seleccione la variable
b.
Seleccione la opcion Obtener
valor de salida y seleccione
la variable b.
Seleccione la opcion Asignar
valor de salida y repita el
paso 3.
Asigne los monitores a las neuronas referenciadas por las variables a y b respectivamente.
Realice un cambio en una de las
neuronas de entrada.
Defina un nuevo monitor llamado MonitorDeDisco.

6
7

Asigne el monitor llamado


MonitorDeDisco a ambas
neuronas.
Seleccione la opcion Crear
monitor y seleccione el tipo
usuario.monitor.neurona.entrada.MonitorDe
Disco.

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

Tome nota de lo sucedido.


El monitor debe registrar
en
un
archivo,
llamado
NEntrada.csv y separado por punto y coma, todos los
datos que se visualizan en la
ventana del monitor.
Realice cambios en ambas neuronas y tome nota de lo sucedido.
Ubiquela en la opcion Neurona
de Entrada,
indique
como nombre de la variable
monitorDisco

Tabla 7.4: Manipulacion de monitores a neuronas de entrada

Taller:
1. Cuales son las opciones de los men
us del LabVirtualRNA.jar que se
encuentran activadas por defecto?

404

CAPITULO 7. GUIAS DE LABORATORIOS (ESTUDIANTE)

2. Cual es la advertencia que se muestra cuando se solicita iniciar laboratorio?


3. Cual es el mensaje que se muestra en la zona de reporte de actividades
una vez creado el laboratorio?
4. Cuales son las opciones de los men
us del LabVirtualRNA.jar que se
encuentran activas despues de iniciar un laboratorio?
5. Cual es el mensaje que se muestra en la zona de reporte de actividades
una vez creada la primera neurona de entrada?
6. Que sucede cada vez que se selecciona una variable en la ventana
Obtener nombre?
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)?
8. Que sucede cada vez que se selecciona una variable en la ventana
Obtener valor de salida?
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)?
10. Que sucede cuando utiliza la opcion Asignar valor de salida y
Obtener valor de salida?
11. Cual es el nombre del tipo de monitor por defecto para una neurona
de entrada?
12. Cual es el mensaje que se muestra en la zona de reporte de actividades
una vez creado un monitor a una neurona de entrada (monitor1)?
13. Que sucede si el nombre para las variables no corresponden a un
identificador valido seg
un el estandar de codificacion de Java?
14. Cual es el mensaje que se muestra en la zona de reporte de actividades
una vez asignado un monitor (monitor2)?
15. Que sucede cuando se realiza un cambio en un neurona que tiene
asignada un monitor por defecto?
16. Se puede asignar mas de un monitor a una neurona de entrada?

7.2. UNA NEURONA DE ENTRADA

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

CAPITULO 7. GUIAS DE LABORATORIOS (ESTUDIANTE)

7.3. UNA NEURONA DE RETARDO

407

Universidad del Quindo


Facultad de Ingenieras
Programa de Ingeniera de Sistemas y Computaci
on
Gua Educativa N
umero: 003
Fecha de Entrega: Ocho das despues de la fecha asignada
Duraci
on Estimada: 60 Minutos
Asignatura: Redes Neuronales / Inteligencia Artificial
Profesor: Julian Esteban Gutierrez Posada

7.3.

Una neurona de retardo

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.

CAPITULO 7. GUIAS DE LABORATORIOS (ESTUDIANTE)

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.

Seleccione la opcion Obtener


nombre y seleccione la variable
d.
Seleccione la opcion Obtener
valor de salida y seleccione
la variable d.
Seleccione la opcion Asignar
valor de salida y repita el
paso 3.

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.

Tabla 7.5: Manipulaci


on de neuronas de retardo 1
Pasos
1
2

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.

El nuevo tipo debe leer de un


archivo de texto y de forma
cclica los datos a procesar, uno
por lnea.

Tabla 7.6: Manipulaci


on de neuronas de retardo 2

7.3. UNA NEURONA DE RETARDO


Pasos
1

Descripci
on
Seleccione dos veces la opcion
Crear monitor.

Seleccione la opcion Obtener


nombre y seleccione la variable
c.
Seleccione la opcion Obtener
valor de salida y seleccione
la variable c.
Seleccione la opcion Asignar
valor de salida y repita el
paso 3.
Asigne los monitores a las neuronas referenciadas por las variables c y d respectivamente.
Realice un cambio en una de las
neuronas de entrada.
Defina un nuevo monitor llamado MonitorDeDisco.

6
7

Asigne el monitor llamado


MonitorDeDisco a ambas
neuronas.
Seleccione la opcion Crear
monitor y seleccione el tipo
usuario.monitor.neurona.retardo.MonitorDe
Disco.

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

Tome nota de lo sucedido.


El monitor debe registrar
en
un
archivo,
llamado
NRetardo.csv y separado por punto y coma, todos los
datos que se visualizan en la
ventana del monitor.
Realice cambios en ambas neuronas y tome nota de lo sucedido.
Ubiquela en la opcion Neurona
de Entrada,
indique
como nombre de la variable
monitorDisco

Tabla 7.7: Manipulacion de monitores a neuronas de retardo

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

CAPITULO 7. GUIAS DE LABORATORIOS (ESTUDIANTE)

3. Que sucede cada vez que se selecciona una variable en la ventana


Obtener nombre?
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)?
5. Que sucede cada vez que se selecciona una variable en la ventana
Obtener valor de salida?
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)?
7. Que sucede cuando utiliza la opcion Asignar valor de salida y
Obtener valor de salida?
8. Que sucede cuando utiliza la opcion Asignar valor futuro y Obtener
valor futuro?
9. Que sucede cuando utiliza la opcion Actualizar valor presente?
10. Que sucede cuando utiliza la opcion Actualizar valor futuro?
11. Cual es el mensaje que se muestra en la zona de reporte de actividades
una vez creado el nuevo tipo de valor futuro?
12. Cual es el nombre del tipo de monitor por defecto para una neurona
de retardo?
13. Cual es el mensaje que se muestra en la zona de reporte de actividades
una vez creado un monitor a una neurona de retardo (monitor4)?
14. Que sucede si el nombre para las variables no corresponden a un
identificador valido seg
un el estandar de codificacion de Java?
15. Cual es el mensaje que se muestra en la zona de reporte de actividades
una vez asignado un monitor (monitor3)?
16. Que sucede cuando se realiza un cambio en un neurona que tiene
asignada un monitor por defecto?
17. Se puede asignar mas de un monitor a una neurona de retardo?
18. Que sucede cuando hay cambios en las neuronas y ellas estan siendo
monitoreadas por el mismo monitor?

7.3. UNA NEURONA DE RETARDO

411

19. Cual es el mensaje que se muestra en la zona de reporte de actividades


una vez creado el nuevo monitor?
20. Que sucedio despues de realizar los cambios en las neuronas y de
tener asignado el nuevo monitor?

412

CAPITULO 7. GUIAS DE LABORATORIOS (ESTUDIANTE)

7.4. UNA NEURONA DE PROCESO

413

Universidad del Quindo


Facultad de Ingenieras
Programa de Ingeniera de Sistemas y Computaci
on
Gua Educativa N
umero: 004
Fecha de Entrega: Ocho das despues de la fecha asignada
Duraci
on Estimada: 60 Minutos
Asignatura: Redes Neuronales / Inteligencia Artificial
Profesor: Julian Esteban Gutierrez Posada

7.4.

Una neurona de proceso

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.

CAPITULO 7. GUIAS DE LABORATORIOS (ESTUDIANTE)

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.

Seleccione la opcion Obtener


nombre y seleccione la variable
f.
Seleccione la opcion Obtener
valor de salida y seleccione
la variable f.
Seleccione la opcion Asignar
valor de salida y repita el
paso 3.

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.

Tabla 7.8: Manipulaci


on de neuronas de proceso 1
Pasos
1
2

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.

Tabla 7.9: Manipulaci


on de neuronas de proceso 2

7.4. UNA NEURONA DE PROCESO


Pasos
1

Descripci
on
Seleccione dos veces la opcion
Crear monitor.

Seleccione la opcion Obtener


nombre y seleccione la variable
e.
Seleccione la opcion Obtener
valor de salida y seleccione
la variable e.
Seleccione la opcion Asignar
valor de salida y repita el
paso 3.
Asigne los monitores a las neuronas referenciadas por las variables e y f respectivamente.
Realice un cambio en una de las
neuronas de entrada.
Defina un nuevo monitor llamado MonitorDeDisco.

6
7

Asigne el monitor llamado


MonitorDeDisco a ambas
neuronas.
Seleccione la opcion Crear
monitor y seleccione el tipo
usuario.monitor.neurona.proceso.MonitorDe
Disco.

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

Tome nota de lo sucedido.


El monitor debe registrar
en
un
archivo,
llamado
NProceso.csv y separado por punto y coma, todos los
datos que se visualizan en la
ventana del monitor.
Realice cambios en ambas neuronas y tome nota de lo sucedido.
Ubiquela en la opcion Neurona
de Entrada,
indique
como nombre de la variable
monitorDisco

Tabla 7.10: Manipulacion de monitores a neuronas de proceso

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

CAPITULO 7. GUIAS DE LABORATORIOS (ESTUDIANTE)

2. Que sucede cada vez que se selecciona una variable en la ventana


Obtener nombre?
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)?
4. Que sucede cada vez que se selecciona una variable en la ventana
Obtener valor de salida?
5. Cuales son las funciones por defecto en una neurona proceso para la
funcion base, funcion de activaci
on y funcion de transferencia?
6. Por que el valor del umbral de activaci
on coincide con el valor de
salida de la neurona?
7. Que sucede cuando utiliza la opcion Cambiar umbral de activaci
on,
use el valor de 4.5, y Obtener umbral de activaci
on?
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)?
9. Cual es el nombre del tipo de monitor por defecto para una neurona
de proceso?
10. Cual es el mensaje que se muestra en la zona de reporte de actividades
una vez creado un monitor a una neurona de proceso (monitor6)?
11. Que sucede si el nombre para las variables no corresponden a un
identificador valido seg
un el estandar de codificacion de Java?
12. Cual es el mensaje que se muestra en la zona de reporte de actividades
una vez asignado un monitor (monitor5)?
13. Que sucede cuando se realiza un cambio en un neurona que tiene
asignada un monitor por defecto?
14. Se puede asignar mas de un monitor a una neurona de proceso?
15. Que sucede cuando hay cambios en las neuronas y ellas estan siendo
monitoreadas por el mismo monitor?
16. Cual es el mensaje que se muestra en la zona de reporte de actividades
una vez creado el nuevo monitor?

7.4. UNA NEURONA DE PROCESO

417

17. Que sucedio despues de realizar los cambios en las neuronas y de


tener asignado el nuevo monitor?

418

CAPITULO 7. GUIAS DE LABORATORIOS (ESTUDIANTE)

7.5. RED MONOCAPA CON CONEXIONES HACIA ADELANTE

419

Universidad del Quindo


Facultad de Ingenieras
Programa de Ingeniera de Sistemas y Computaci
on
Gua Educativa N
umero: 005
Fecha de Entrega: Ocho das despues de la fecha asignada
Duraci
on Estimada: 60 Minutos
Asignatura: Redes Neuronales / Inteligencia Artificial
Profesor: Julian Esteban Gutierrez Posada

7.5.

Red monocapa con conexiones hacia adelante

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.

CAPITULO 7. GUIAS DE LABORATORIOS (ESTUDIANTE)

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

Cree un enlace desde cada una


de las entradas de las neuronas
de proceso a las respectivas
neuronas de entrada

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.

Tabla 7.11: Creaci


on manual de la red
Pasos
1

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.

Indique que se quieren 3 neuronas de entrada y 5 neuronas


de proceso.
Tome nota de lo imprime.

Tabla 7.12: Definicion de una nueva red

7.5. RED MONOCAPA CON CONEXIONES HACIA ADELANTE

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

CAPITULO 7. GUIAS DE LABORATORIOS (ESTUDIANTE)

7.6. RED MULTICAPA CON CONEXIONES HACIA ADELANTE 423


Universidad del Quindo
Facultad de Ingenieras
Programa de Ingeniera de Sistemas y Computaci
on
Gua Educativa N
umero: 006
Fecha de Entrega: Ocho das despues de la fecha asignada
Duraci
on Estimada: 60 Minutos
Asignatura: Redes Neuronales / Inteligencia Artificial
Profesor: Julian Esteban Gutierrez Posada

7.6.

Red multicapa con conexiones hacia adelante

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.

CAPITULO 7. GUIAS DE LABORATORIOS (ESTUDIANTE)

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.

Cada neurona conecta todas las


neuronas de la capa anterior.

Tabla 7.13: Creaci


on manual de la red

7.6. RED MULTICAPA CON CONEXIONES HACIA ADELANTE 425


Pasos
1

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

Ejecute la red creada

Comentario
Use los nombre Nei y Npcj
para las neuronas de entrada
y de proceso respectivamente.
Valide los datos de entrada.

Indique que se quieren 2 neuronas de entrada, 3 capas y respectivamente 4, 2 y 3 neuronas


de proceso.
Tome nota de lo imprime.

Tabla 7.14: Definici


on de una nueva red

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

CAPITULO 7. GUIAS DE LABORATORIOS (ESTUDIANTE)


7.7. RED MONOCAPA CON RETROALIMENTACION

427

Universidad del Quindo


Facultad de Ingenieras
Programa de Ingeniera de Sistemas y Computaci
on
Gua Educativa N
umero: 007
Fecha de Entrega: Ocho das despues de la fecha asignada
Duraci
on Estimada: 60 Minutos
Asignatura: Redes Neuronales / Inteligencia Artificial
Profesor: Julian Esteban Gutierrez Posada

7.7.

Red monocapa con retroalimentaci


on

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.

CAPITULO 7. GUIAS DE LABORATORIOS (ESTUDIANTE)

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

Cree un enlace desde cada una


de las neuronas de retardo a cada neuronas de proceso y desde
cada neurona de proceso a las
otras neuronas de retardo, salvo la que la enlaza a ella

Comentario
El n
umero de entradas de las
neuronas de proceso debe coincidir con la cantidad de neuronas de retardo - 1.
Topologa de Hopfield.

Tabla 7.15: Creaci


on manual de la red
Pasos
1

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.

Indique que se quieren 5 neuronas.


Tome nota de lo imprime.

Tabla 7.16: Definicion de una nueva red


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

CAPITULO 7. GUIAS DE LABORATORIOS (ESTUDIANTE)

GUIAS DE LABORATORIOS
(DOCENTE)

432

CAPITULO 8. GUIAS DE LABORATORIOS (DOCENTE)

DEL ENTORNO DE TRABAJO


8.1. INSTALACION

433

Universidad del Quindo


Facultad de Ingenieras
Programa de Ingeniera de Sistemas y Computaci
on
Gua Educativa N
umero: 001
Asignatura: Redes Neuronales / Inteligencia Artificial
Profesor: Julian Esteban Gutierrez Posada

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

2. Cual es la ruta en donde queda instalado Java 6.0 update 3 y la


respectiva documentacion?
R./
C:\Archivos de programa\Java\jdk1.6.0_03
C:\Archivos de programa\Java\jdk1.6.0_03\doc

3. Que contiene la carpeta Dist y explique brevemente cada uno?


R./
La carpeta javadoc que contiene la documentaci
on del c
odigo fuente del laboratorio
virtual de redes neuronales.
La carpete lib que contiene las librerias necesarias: nimrodlf.jar y usuario.jar.
El archivo A_TrabajoDeAscenso.pdf que contiene el proceso de ingeniera de la elaboraci
on del laboratorio virtual, al iguales que las guas de laboratorio.
El archivo LabVirtualRNA.jar que es el ejecutable del laboratorio virtual.
El archivo README.TXT que contiene recomendaciones de la forma de ejecutar el
archivo jar.

4. Consulte en Internet para que se utiliza el archivo nimrodlf.jar.


R./

El archivo nimrodlf.jar es NimROD Look & Feel, utilizado para personalizar la

apariencia de los componentes gr


aficos de java.

434

CAPITULO 8. GUIAS DE LABORATORIOS (DOCENTE)

8.2. UNA NEURONA DE ENTRADA

435

Universidad del Quindo


Facultad de Ingenieras
Programa de Ingeniera de Sistemas y Computaci
on
Gua Educativa N
umero: 002
Asignatura: Redes Neuronales / Inteligencia Artificial
Profesor: Julian Esteban Gutierrez Posada

8.2.

Una neurona de entrada

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

2. Cual es la advertencia que se muestra cuando se solicita iniciar laboratorio?


R./
<Todos los datos no guardados se perder
an si contin
ua!

3. Cual es el mensaje que se muestra en la zona de reporte de actividades


una vez creado el laboratorio?
R./
/*
LABORATORIO VIRTUAL DE REDES NEURONALES
Autores: Juli
an Esteban Guti
errez Posada
Fecha: 08-08-2008 / 11:24 AM
*/

CAPITULO 8. GUIAS DE LABORATORIOS (DOCENTE)

436

4. Cuales son las opciones de los men


us del LabVirtualRNA.jar que se
encuentran activas despues de iniciar un laboratorio?
R./
Archivo

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

5. Cual es el mensaje que se muestra en la zona de reporte de actividades


una vez creada la primera neurona de entrada?
R./
NeuronaDeEntrada a;
a = new NeuronaDeEntrada ( "Ne1");

6. Que sucede cada vez que se selecciona una variable en la ventana


Obtener nombre?
R./
Se actualiza el campo "Nombre de la neurona:" en la ventana.

8.2. UNA NEURONA DE ENTRADA

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"

8. Que sucede cada vez que se selecciona una variable en la ventana


Obtener valor de salida?
R./
Se actualiza el campo "Nombre de la neurona:" en la ventana.

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

10. Que sucede cuando utiliza la opcion Asignar valor de salida y


Obtener valor de salida?
R./
La neurona se comporta como una variable, en un lenguaje de programaci
on, y toma
el valor asignado. Luego entrega dicho valor cuando se le solicita

11. Cual es el nombre del tipo de monitor por defecto para una neurona
de entrada?
R./
neuronal.monitor.MonitorDeNeuronaDeEntrada

12. Cual es el mensaje que se muestra en la zona de reporte de actividades


una vez creado un monitor a una neurona de entrada (monitor1)?
R./
neuronal.monitor.MonitorDeNeuronaDeEntrada monitor1;
monitor1 =new neuronal.monitor.MonitorDeNeuronaDeEntrada();

CAPITULO 8. GUIAS DE LABORATORIOS (DOCENTE)

438

13. Que sucede si el nombre para las variables no corresponden a un


identificador valido seg
un el estandar de codificacion de Java?
R./
Se obtiene el mensaje de error "El formato no corresponde al de un identificador
v
alido"

14. Cual es el mensaje que se muestra en la zona de reporte de actividades


una vez asignado un monitor (monitor2)?
R./
b.asignarMonitor( monitor2 );

15. Que sucede cuando se realiza un cambio en un neurona que tiene


asignada un monitor por defecto?
R./
Se muestra un ventana llamada "Ventana Monitor de neurona", por cada monitor, con
la siguiente informaci
on: el tiempo en nanosegundos, el nombre de la neurona que
se modifico y su respectivo valor de salida.

16. Se puede asignar mas de un monitor a una neurona de entrada?


R./
S
, en cuyo caso la actualizaci
on se hace en todas las ventanas que pertenezcan
a los monitor asignados.

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

8.2. UNA NEURONA DE ENTRADA

439

18. Cual es el mensaje que se muestra en la zona de reporte de actividades


una vez creado el nuevo monitor?
R./
/* Variables modelo:
java.io.FileWriter archivo;
java.io.BufferedWriter buffer;
java.io.PrintWriter impresor;
*/
/* Constructor:
try
{
archivo = new java.io.FileWriter ( "NEntrada.csv");
buffer = new java.io.BufferedWriter ( archivo );
impresor = new java.io.PrintWriter ( buffer );
}
catch ( Exception e )
{
adicionarTexto ( e.toString() );
}
*/
/* Funcionamiento:
impresor.print( System.nanoTime()+ "; ");
impresor.print( neuronaModificada.obtenerNombre ()+"; ");
impresor.print( neuronaModificada.obtenerValorDeSalida ());
impresor.println();
impresor.flush();
*/
/* Destructor:
impresor.close();
buffer.close();
archivo.close();
*/

19. Que sucedio despues de realizar los cambios en las neuronas y de


tener asignado el nuevo monitor?
R./
Se cre
o el archivo "NEntrada.csv" con los datos de las neuronas modificadas.

440

CAPITULO 8. GUIAS DE LABORATORIOS (DOCENTE)

8.3. UNA NEURONA DE RETARDO

441

Universidad del Quindo


Facultad de Ingenieras
Programa de Ingeniera de Sistemas y Computaci
on
Gua Educativa N
umero: 003
Asignatura: Redes Neuronales / Inteligencia Artificial
Profesor: Julian Esteban Gutierrez Posada

8.3.

Una neurona de retardo

Taller:
1. Cual es el nombre del tipo de neurona de retardo por defecto?
R./
neuronal.neurona.NeuronaDeRetardo

2. Cual es el mensaje que se muestra en la zona de reporte de actividades


una vez creada la primera neurona de retardo?
R./
neuronal.neurona.NeuronaDeRetardo c;
c = new neuronal.neurona.NeuronaDeRetardo ( "Nr1");

3. Que sucede cada vez que se selecciona una variable en la ventana


Obtener nombre?
R./
Se actualiza el campo "Nombre de la neurona:" en la ventana.

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"

5. Que sucede cada vez que se selecciona una variable en la ventana


Obtener valor de salida?
R./
Se actualiza el campo "Nombre de la neurona:" en la ventana.

CAPITULO 8. GUIAS DE LABORATORIOS (DOCENTE)

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

7. Que sucede cuando utiliza la opcion Asignar valor de salida y


Obtener valor de salida?
R./
La neurona se comporta como una variable, en un lenguaje de programaci
on, y toma
el valor asignado. Luego entrega dicho valor cuando se le solicita

8. Que sucede cuando utiliza la opcion Asignar valor futuro y Obtener


valor futuro?
R./
La neurona se comporta como una variable, en un lenguaje de programaci
on, y toma
el valor asignado. Luego entrega dicho valor cuando se le solicita

9. Que sucede cuando utiliza la opcion Actualizar valor presente?


R./
Toma el valor futuro y lo asigna como valor de salida

10. Que sucede cuando utiliza la opcion Actualizar valor futuro?


R./
Por defecto toma el valor de entrada de la neurona y lo asigna como valor futuro,
o realiza un procedimiento definido por el usuario, como por ejemplo tomar los datos
del disco.

11. Cual es el mensaje que se muestra en la zona de reporte de actividades


una vez creado el nuevo tipo de valor futuro?
/* Variables modelo:
java.io.FileReader archivoDeLectura;
java.io.BufferedReader bufferDeLectura;
String linea;
*/

8.3. UNA NEURONA DE RETARDO

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

13. Cual es el mensaje que se muestra en la zona de reporte de actividades


una vez creado un monitor a una neurona de retardo (monitor4)?
R./
neuronal.monitor.MonitorDeNeuronaDeRetardo monitor4;
monitor4 =new neuronal.monitor.MonitorDeNeuronaDeRetardo();

CAPITULO 8. GUIAS DE LABORATORIOS (DOCENTE)

444

14. Que sucede si el nombre para las variables no corresponden a un


identificador valido seg
un el estandar de codificacion de Java?
R./
Se obtiene el mensaje de error "El formato no corresponde al de un identificador
v
alido"

15. Cual es el mensaje que se muestra en la zona de reporte de actividades


una vez asignado un monitor (monitor3)?
R./
c.asignarMonitor( monitor3 );

16. Que sucede cuando se realiza un cambio en un neurona que tiene


asignada un monitor por defecto?
R./
Se muestra un ventana llamada "Ventana Monitor de neurona", por cada monitor, con
la siguiente informaci
on: el tiempo en nanosegundos, el nombre de la neurona que
se modifico, valor de salida, valor futuro, siguiente valor futuro, estado del enlace,
el nombre de la neurona enlazada (si hay) y relaciones de la neurona (si las tiene).

17. Se puede asignar mas de un monitor a una neurona de retardo?


R./
S
, en cuyo caso la actualizaci
on se hace en todas las ventanas que pertenezcan
a los monitor asignados.

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

8.3. UNA NEURONA DE RETARDO

445

19. Cual es el mensaje que se muestra en la zona de reporte de actividades


una vez creado el nuevo monitor?
R./
/* Variables modelo:
java.io.FileWriter archivo;
java.io.BufferedWriter buffer;
java.io.PrintWriter impresor;
*/
/* Constructor:
try
{
archivo = new java.io.FileWriter ( "NRetardo.csv");
buffer = new java.io.BufferedWriter ( archivo );
impresor = new java.io.PrintWriter ( buffer );
}
catch ( Exception e )
{
adicionarTexto ( e.toString() );
}
*/
/* Funcionamiento:
try
{
impresor.print( System.nanoTime()+ "; ");
impresor.print( neuronaModificada.obtenerNombre ()+"; ");
impresor.print( neuronaModificada.obtenerValorDeSalida ()+"; ");
impresor.print( neuronaModificada.obtenerValorFuturo ()+"; ");
impresor.print( neuronaModificada.obtenerSiguienteValorFuturo ()+"; ");
impresor.print( neuronaModificada.obtenerEstadoDelEnlace ()+"; ");
impresor.print( neuronaModificada.obtenerNombreDeLaNeuronaEnlazada ()+"; ");
impresor.print( neuronaModificada.obtenerConQuienSeRelaciona () );
}
catch ( Exception e )
{
adicionarTexto ( e.toString() );
}
impresor.println();
impresor.flush();
*/
/* Destructor:
impresor.close();
buffer.close();
archivo.close();
*/

CAPITULO 8. GUIAS DE LABORATORIOS (DOCENTE)

446

20. Que sucedio despues de realizar los cambios en las neuronas y de


tener asignado el nuevo monitor?
R./
Se cre
o el archivo "NRetardo.csv" con los datos de las neuronas modificadas.

8.4. UNA NEURONA DE PROCESO

447

Universidad del Quindo


Facultad de Ingenieras
Programa de Ingeniera de Sistemas y Computaci
on
Gua Educativa N
umero: 004
Asignatura: Redes Neuronales / Inteligencia Artificial
Profesor: Julian Esteban Gutierrez Posada

8.4.

Una neurona de proceso

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 );

2. Que sucede cada vez que se selecciona una variable en la ventana


Obtener nombre?
R./
Se actualiza el campo "Nombre de la neurona:" en la ventana.

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"

4. Que sucede cada vez que se selecciona una variable en la ventana


Obtener valor de salida?
R./
Se actualiza el campo "Nombre de la neurona:" en la ventana.

CAPITULO 8. GUIAS DE LABORATORIOS (DOCENTE)

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.

6. Por que el valor del umbral de activaci


on coincide con el valor de
salida de la neurona?
R./
Dado que la neurona no tiene neuronas conectadas, se asume como 0.0 el valor
de cada entrada.
El valor para la entrada asociada al umbral es 1.0
Como la funci
on base es lineal y las entradas son cero, el
unico valor es
el del umbral de activaci
on.
Como la funci
on de activaci
on es la funci
on identidad, el valor coincide con
el valor de la funci
on base.
Como la funci
on de transferencia es la funci
on identidad, el valor coincide
con el valor de la funci
on de activaci
on.

7. Que sucede cuando utiliza la opcion Cambiar umbral de activaci


on,
use el valor de 4.5, y Obtener umbral de activaci
on?
R./
La neurona se comporta como una variable, en un lenguaje de programaci
on, y toma
el valor asignado (4.5). Luego entrega dicho valor cuando se le solicita

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

8.4. UNA NEURONA DE PROCESO

449

10. Cual es el mensaje que se muestra en la zona de reporte de actividades


una vez creado un monitor a una neurona de proceso (monitor6)?
R./
neuronal.monitor.MonitorDeNeuronaDeProceso monitor6;
monitor6 = new neuronal.monitor.MonitorDeNeuronaDeProceso();

11. Que sucede si el nombre para las variables no corresponden a un


identificador valido seg
un el estandar de codificacion de Java?
R./
Se obtiene el mensaje de error "El formato no corresponde al de un identificador
v
alido"

12. Cual es el mensaje que se muestra en la zona de reporte de actividades


una vez asignado un monitor (monitor5)?
R./
e.asignarMonitor( monitor5 );

13. Que sucede cuando se realiza un cambio en un neurona que tiene


asignada un monitor por defecto?
R./
Se muestra un ventana llamada "Ventana Monitor de neurona", por cada monitor, con
la siguiente informaci
on: el tiempo en nanosegundos, el nombre de la neurona que
se modifico, valor de salida, funci
on base, funci
on de activaci
on, funci
on de transferencia,
potencial de activaci
on, valor de activaci
on, umbral de activaci
on, n
umero de entradas,
y por cada entrada: peso del enlace, estado de la conexi
on y nombre de la neurona
enlazada (si hay).

14. Se puede asignar mas de un monitor a una neurona de proceso?


R./
S
, en cuyo caso la actualizaci
on se hace en todas las ventanas que pertenezcan
a los monitor asignados.

CAPITULO 8. GUIAS DE LABORATORIOS (DOCENTE)

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

16. Cual es el mensaje que se muestra en la zona de reporte de actividades


una vez creado el nuevo monitor?
R./
/* Variables modelo:
java.io.FileWriter archivo;
java.io.BufferedWriter buffer;
java.io.PrintWriter impresor;
*/
/* Constructor:
try
{
archivo = new java.io.FileWriter ( "NProceso.csv");
buffer = new java.io.BufferedWriter ( archivo );
impresor = new java.io.PrintWriter ( buffer );
}
catch ( Exception e )
{
adicionarTexto ( e.toString() );
}
*/
/* Funcionamiento:
String estado;
int numeroDeEntradas;
try
{
impresor.print(
impresor.print(
impresor.print(
impresor.print(
impresor.print(
impresor.print(
impresor.print(
impresor.print(
impresor.print(

System.nanoTime()+ "; ");


neuronaModificada.obtenerNombre ()+"; ");
neuronaModificada.obtenerValorDeSalida ()+"; ");
neuronaModificada.obtenerFuncionBase ()+"; ");
neuronaModificada.obtenerFuncionDeActivacion ()+"; ");
neuronaModificada.obtenerFuncionDeTransferencia ()+"; ");
neuronaModificada.obtenerPotencialDeActivacion ()+"; ");
neuronaModificada.obtenerValorDeActivacion ()+"; ");
neuronaModificada.obtenerUmbralDeActivacion ()+"; ");

numeroDeEntradas = neuronaModificada.obtenerNumeroDeEntradas ();


impresor.print( numeroDeEntradas +"; ");

8.4. UNA NEURONA DE PROCESO

451

for ( int i = 0 ; i <numeroDeEntradas ; i++ )


{
impresor.print( i +"; ");
estado = neuronaModificada.obtenerEstadoDelEnlaceDeLaEntrada ( i );
if ( estado.equals( ((Conectado>") == true )
{
impresor.print( neuronaModificada.obtenerNombreNeuronaEnlazada (i)+";" );
}
}
}
catch ( Exception e )
{
adicionarTexto ( e.toString() );
}
impresor.println();
impresor.flush();
*/
/* Destructor:
impresor.close();
buffer.close();
archivo.close();
*/

17. Que sucedio despues de realizar los cambios en las neuronas y de


tener asignado el nuevo monitor?
R./
Se cre
o el archivo "NProceso.csv" con los datos de las neuronas modificadas.

452

CAPITULO 8. GUIAS DE LABORATORIOS (DOCENTE)

8.5. RED MONOCAPA CON CONEXIONES HACIA ADELANTE

453

Universidad del Quindo


Facultad de Ingenieras
Programa de Ingeniera de Sistemas y Computaci
on
Gua Educativa N
umero: 005
Asignatura: Redes Neuronales / Inteligencia Artificial
Profesor: Julian Esteban Gutierrez Posada

8.5.

Red monocapa con conexiones hacia adelante

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 ) { }
}

CAPITULO 8. GUIAS DE LABORATORIOS (DOCENTE)

454

entrada = new NeuronaDeEntrada [ numeroDeEntradas ];


proceso = new NeuronaDeProceso [ numeroDeNeuronas ];
for ( int i = 0 ; i <numeroDeEntradas ; i++ )
{
entrada [ i ] = new NeuronaDeEntrada( "Ne"+ i );
}
try
{
for ( int i = 0 ; i <numeroDeNeuronas ; i++ )
{
proceso [ i ] = new NeuronaDeProceso( "Np"+ i, numeroDeEntradas );
for ( int j = 1 ; j <= numeroDeEntradas ; j++ )
{
proceso[ i ].enlazarNeurona( entrada[ j - 1 ], j );
}
}
}
catch ( Exception e ) { }
*/

/* 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 );
}
*/

8.5. RED MONOCAPA CON CONEXIONES HACIA ADELANTE


2. Cual es el resultado al ejecutar la red?
R./
Np0
Entrada 1: "Ne0"
Entrada 2: "Ne1"
Entrada 3: "Ne2"
"Np0"(1) ->"Ne0" "Np0"(2) ->"Ne1" "Np0"(3) ->"Ne2"
Np1
Entrada 1: "Ne0"
Entrada 2: "Ne1"
Entrada 3: "Ne2"
"Np1"(1) ->"Ne0" "Np1"(2) ->"Ne1" "Np1"(3) ->"Ne2"
Np2
Entrada 1: "Ne0"
Entrada 2: "Ne1"
Entrada 3: "Ne2"
"Np2"(1) ->"Ne0" "Np2"(2) ->"Ne1" "Np2"(3) ->"Ne2"
Np3
Entrada 1: "Ne0"
Entrada 2: "Ne1"
Entrada 3: "Ne2"
"Np3"(1) ->"Ne0" "Np3"(2) ->"Ne1" "Np3"(3) ->"Ne2"
Np4
Entrada 1: "Ne0"
Entrada 2: "Ne1"
Entrada 3: "Ne2"
"Np4"(1) ->"Ne0" "Np4"(2) ->"Ne1" "Np4"(3) ->"Ne2"

455

456

CAPITULO 8. GUIAS DE LABORATORIOS (DOCENTE)

8.6. RED MULTICAPA CON CONEXIONES HACIA ADELANTE 457


Universidad del Quindo
Facultad de Ingenieras
Programa de Ingeniera de Sistemas y Computaci
on
Gua Educativa N
umero: 006
Asignatura: Redes Neuronales / Inteligencia Artificial
Profesor: Julian Esteban Gutierrez Posada

8.6.

Red multicapa con conexiones hacia adelante

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 );
}

CAPITULO 8. GUIAS DE LABORATORIOS (DOCENTE)

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 ) { }
*/

8.6. RED MULTICAPA CON CONEXIONES HACIA ADELANTE 459


/* Funcionamiento:
String texto, nombre;
try
{
for ( int k = 0 ; k <proceso.length ; k++ )
{
texto = "Capa " + k + ": \n";
for ( int j = 0 ; j <proceso[ k ].length ; j++ )
{
texto += " " + proceso[ k ][ j ].obtenerNombre() + "\n";
for ( int i = 1 ; i <proceso[ k ][ j ].obtenerNumeroDeEntradas() ; i++)
{
nombre = proceso[ k ][ j ].obtenerNombreNeuronaEnlazada( i );
texto += "Entrada(" + i + "):" + nombre + "\n";
}
}
JOptionPane.showMessageDialog ( null , texto );
}
}
catch ( Exception e ) { }
*/

2. Cual es el resultado al ejecutar la red?


R./
Capa 0:
Np0,0
Entrada(
Entrada(
Np0,1
Entrada(
Entrada(
Np0,2
Entrada(
Entrada(
Np0,3
Entrada(
Entrada(

1 ): "Ne0"
2 ): "Ne1"
1 ): "Ne0"
2 ): "Ne1"
1 ): "Ne0"
2 ): "Ne1"
1 ): "Ne0"
2 ): "Ne1"

460

CAPITULO 8. GUIAS DE LABORATORIOS (DOCENTE)


Capa 1:
Np1,0
Entrada(
Entrada(
Entrada(
Entrada(
Np1,1
Entrada(
Entrada(
Entrada(
Entrada(
Capa 2:
Np2,0
Entrada(
Entrada(
Np2,1
Entrada(
Entrada(
Np2,2
Entrada(
Entrada(

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

Universidad del Quindo


Facultad de Ingenieras
Programa de Ingeniera de Sistemas y Computaci
on
Gua Educativa N
umero: 007
Asignatura: Redes Neuronales / Inteligencia Artificial
Profesor: Julian Esteban Gutierrez Posada

8.7.

Red monocapa con retroalimentaci


on

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 ] );
}

CAPITULO 8. GUIAS DE LABORATORIOS (DOCENTE)

462

for ( int i = 0 ; i <numeroDeNeuronas ; i++ )


{
k = 0;
for ( int j = 1 ; j <= numeroDeNeuronas - 1; j++ )
{
if ( i == j - 1 ) { k++; }
proceso[ i ].enlazarNeurona( retardo [ k ], j );
k++;
}
}
}
catch ( Exception e ) { }
*/
/* Funcionamiento:
String texto = "";
for ( int j = 0 ; j <proceso.length ; j++ )
{
texto = "Retardo: " + retardo[ j ].obtenerNombre() + ": ";
try
{
texto += retardo[ j ].obtenerNombreDeLaNeuronaEnlazada( ) + "\n";
}
catch( Exception e )
{
texto += "<Libre>\n";
}
texto += proceso[ j ].obtenerNombre() + "\n";


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 );
}
*/

2. Cual es el resultado al ejecutar la red?


R./
Retardo: Nr0: "Np0"
Np0
Entrada( 1 ): Nr1
Entrada( 2 ): Nr2
Entrada( 3 ): Nr3
Entrada( 4 ): Nr4
Retardo: Nr1: "Np1"
Np1
Entrada( 1 ): Nr0
Entrada( 2 ): Nr2
Entrada( 3 ): Nr3
Entrada( 4 ): Nr4
Retardo: Nr2: "Np2"
Np2
Entrada( 1 ): Nr0
Entrada( 2 ): Nr1
Entrada( 3 ): Nr3
Entrada( 4 ): Nr4

463

CAPITULO 8. GUIAS DE LABORATORIOS (DOCENTE)

464

Retardo: Nr3: "Np3"


Np3
Entrada( 1 ): Nr0
Entrada( 2 ): Nr1
Entrada( 3 ): Nr2
Entrada( 4 ): Nr4


8.8. PROYECTOS DE PROGRAMACION

465

Universidad del Quindo


Facultad de Ingenieras
Programa de Ingeniera de Sistemas y Computaci
on
Tema: Lista de proyectos de programacion
Asignatura: Redes Neuronales / Inteligencia Artificial
Profesor: Julian Esteban Gutierrez Posada

8.8.

Proyectos de programaci
on

Modifique el codigo fuente del Laboratorio Virtual (LabVirtualRNA.jar)


para agregar las siguientes redes neuronales a problemas particulares.
1. Perceptron.
2. Adaline.
3. Madaline.
4. Perceptron multinivel.
5. Backpropagation.
6. Hopfield.

COMO YA DEBE SER DE SU CONOCIMIENTO, ESTAS

NO SON LAS UNICAS


REDES NEURONALES, PERO SI
POPULARES.
SON LAS REDES NEURONALES MAS

466

CAPITULO 8. GUIAS DE LABORATORIOS (DOCENTE)

Bibliografa

[1] Adenso DIAZ. Optimizaci


on heurstica y redes neuronales en direcci
on
de operaciones e ingeniera. Editorial Paraning, Espa
na, 1996.
[2] Andrzej CICHOCKI, Rolf UNBEHAUEN. Neural networks for optimization and signal processing 1 Wiley, Canada, 1993.
[3] Bonifacio Martn del BRIO, Alfredo Sanz MOLINA. Redes neuronales
y istemas difusos. Segunda edicion, Alfaomega - Ra-Ma, Mexico, 2002.
[4] David B. FOGEL, Evolutionary Computation, toward a new philosophy
of machine intelligence. IEEE Press Marketing, New York, 1995.
[5] Elaine RICH y Kevin KNIGHT. Inteligencia artificial. Segunda Edicion. Mc Graw Hill, Espa
na, 1994.
[6] Evoling artificial neural networks to combine financial forecasts in evolutionary computation. IEEE. April 1997.
[7] J. FREEMAN y D. SKAPURA. Redes neuronales: algoritmos, aplicaciones y tecnicas de programaci
on. Addison Wesley. 1993.
[8] J. HILERA y V. MARTIINEZ. Redes neuronales artificiales: fundamentos, modelos y aplicaciones. Addison Wesley. 1995.
[9] J.-S.R. JANG, C.-T.SUN, E.MIZUTANI. Neuro-fuzzy and soft computing, a computational approach to learning and machine intelligence.
Matlab Curriculum Series, Prentice Hall, 1997.
[10] L. FAUSETT, Fundamentals of neural networks, architectures, algorithms, and applications. Pentice Hall, New Jersey, 1994.
1
Libro que hace explcita la existencia de las neuronas de entrada, las neronas de
retardo y las neuronas de proceso. Tambien hace explicita la necesidad de las funciones
de activaci
on y las funciones de transferencia.

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.

Redes de neuonas arti[12] Pedro Isasi VINUELA,


Ines M. Galvan LEON.
ficiales, un enfoque pr
actico. Prentice Hall, Espa
na, 2004.
[13] P. WINSTON. Inteligencia artificial. Addison Wesley. 1993.
[14] V. RAO y H. RAO. C++ neural networks and fuzzy logic. Second Edition. M & T Books. 1995.
[15] Stuart RUSSELL, Peter NORVIG. Inteligencia artificial, un enfoque
moderno. Prentice Hall, Mexico, 1996.
[16] ROSENBERG, Doug. STEPHENS, Matt: Use case driven object modeling with UML Apress. 2007.
[17] ROSENBERG, Doug. SCOTT, Kendall: Appling use case driven object
modeling with UML, An Annotated E-Commerce Example Addison
Wesley. 2001.
[18] Simon HAYKIN. Neural networks, a comprehensive foundation 2 Second
Edition. Prentice Hall, New Jersey, 1999.
[19] Timothy MASTERS. Advanced algorithms for neural netwoks a C++.
Wiley, Canada, 1995.

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

obtener nombre . . . . . . . . 150


obtener num. entradas . 150
obtener peso . . . . . . . . . . . 154
obtener potencial . . . . . . 165
obtener relaciones . . . . . . 153
obtener umbral . . . . . . . . 162
obtener v. activaci
on . . . 165
obtener v. salida . . . . . . . 167
neurona de retardo
actualizar valor futuro . 138
actualizar valor presente137
asignar monitor . . . . . . . . 144
asignar valor de salida . 137
cargar monitor . . . . . . . . . 147
crear monitor . . . . . . . . . . 144
crear neurona . . . . . . . . . . 135
definir n. monitor . . . . . . 147
definir nuevo v. futuro.138,
141
desasignar monitor . . . . .147
desenlazar neurona . . . . 141
enlazar neurona . . . . . . . . 141
obtener estado enlace . . 141
obtener nom. enlazada . 144
obtener nombre . . . . . . . . 135
obtener relaciones . . . . . . 141
obtener valor de salida . 135
obtener valor futuro . . . 138
red neuronal
cargar red neuronal . . . . 174
crear red. . . . . . . . . . . . . . .173
definir red . . . . . . . . . . . . . 173
ejecutar red . . . . . . . . . . . . 174
generar aplicacion . . . . . 174
obtener nombre . . . . . . . . 173
S
secuencia
archivo
cargar laboratorio. . . . . .187
guardar laboratorio . . . . 187

INDICE ALFABETICO

iniciar laboratorio. . . . . .187


neurona de entrada
asignar monitor . . . . . . . . 198
asignar valor de salida . 195
cargar monitor . . . . . . . . . 203
crear monitor . . . . . . . . . . 196
crear neurona . . . . . . . . . . 191
definir monitor. . . . . . . . .200
desasignar monitor . . . . .199
obtener nombre . . . . . . . . 193
obtener valor de salida . 194
neurona de proceso
asignar monitor . . . . . . . . 265
cambiar f. activacion . . . 247
cambiar f. base . . . . . . . . 241
cambiar f. transferencia 253
cambiar peso . . . . . . . . . . 239
cambiar umbral . . . . . . . . 259
cargar f. activacion . . . . 251
cargar f. base . . . . . . . . . . 245
cargar f. transferencia . . 257
cargar monitor . . . . . . . . . 270
crear monitor . . . . . . . . . . 263
crear neurona . . . . . . . . . . 229
definir f. activacion . . . . 248
definir f. base . . . . . . . . . . 242
definir f. transferencia. .254
definir monitor. . . . . . . . .267
desasignar monitor . . . . .266
desenlazar neurona . . . . 234
enlazar neurona . . . . . . . . 233
obtener estado enlace . . 235
obtener f. actualizacion 246
obtener f. base . . . . . . . . . 240
obtener f. transferencia 252
obtener nom. enlazada . 237
obtener nombre . . . . . . . . 231
obtener num. entradas . 232
obtener peso . . . . . . . . . . . 238
obtener potencial . . . . . . 260

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

Você também pode gostar