Escolar Documentos
Profissional Documentos
Cultura Documentos
+
(
|
|
.
|
\
|
=> =
+
(
|
|
.
|
\
|
=> =
2
1 2
2 2
1
2
1 1
2 2
1
) ( 1 ,
0
) ( 1 ,
b
b c
b c
b x x si
a
a b
a b
a x x si
x
(3)
Salinidad
Fg
g
1
-1
c
b
0
a
28
A medida que se vayan presentando las iteraciones y las retroalimentaciones del
sistema que se est modelando, nos mostrar cuales son los eventos, acciones, o
procedimientos y cual es su comportamiento a travs del tiempo, partiendo de un
punto inicial.
Por medio de una matriz se mantiene la informacin de las conexiones entre
nodos. Los cambios en la matriz de adyacencia del sistema modelado, se generan
por la accin de un vector de entrada, el cual nos brindar la informacin que se
necesite para las salidas de los mapas cognitivos, que se obtienen por medio de
una multiplicacin matricial por el vector de entrada, el cual no es ms que el
vector de la salida anterior. El ciclo lmite muestra como se comportar el sistema
de acuerdo a la entrada proporcionada.
1.2 EJERCICIO Y FUNCIONAMIENTO DE LA FASE DE APRENDIZAJE
En el siguiente ejercicio se muestra la representacin de los principales factores
que afectan al ecosistema del manglar (fig.1.3), en esta intervienen cinco variables
bsicas: mangle C1, temperatura C2, salinidad C3, tala C4, y organismos C5. Los
arcos indican las relaciones causales entre cada variables, los pesos el grado de
afectacin de un nodo sobre otro y los signos indican si la relacin es directamente
proporcional, (signo positivo) o inversamente proporcional (signo negativo),
tambin se muestran los nodos que cuentan con variables difusas, los cuales
tomaran valores positivos o negativos dependiendo de la funcin de activacin que
se este usando, en este caso se us una funcin de tipo triangular, para hallar las
relaciones directamente proporcionales o inversamente proporcionales que
pueden tener los nodos difusos de la temperatura C2 y salinidad C3.
29
Figura 1.3 Mapa cognitivo difuso del manglar
Como se puede apreciar en el ejemplo de la figura 1.3, a medida que hay una
disminucin en el mangle C1, causa directamente una disminucin en los
organismos C5 que habitan en este, de lo contrario aumenta, por otra parte el
aumento de la tala C4 disminuye considerable a el mangle C1, la temperatura C2
y la salinidad C3 por ser nodos difusos, tendrn efectos positivos o negativos
sobre el mangle C1, dependiendo del resultado de la funcin de activacin.
Para apreciar y registrar la influencia que tiene un nodo sobre otro, se consulta a
entidades ambientales e ingenieros forestales especialista en el manejo y
desarrollo del ecosistema de manglar, al los cuales se les plantean una serie de
preguntas acerca de que tanto afectan cada uno de los factores que intervienen,
en el mantenimiento del ecosistema del manglar.
30
La representacin de las relaciones entre nodos del mapa anterior, se muestra
mediante la siguiente matriz de adyacencia (Tabla 1.1).
Tabla 1.1 Matriz de adyacencia
C1 C2 C3 C4 C5
C1 0 0 0 0 0.7
C2 Difuso 0 0 0 0
C3 Difuso 0 0 0 0
C4 -0.8 0 0 0 0
C5 0 0 0 0 0
Al someter los nodos difusos de temperatura C2 y salinidad C3, a la funcin de
activacin triangular que se muestra en las figuras 1.1 y 1.2, da como resultado
que para una temperatura de 22*C el nodo C2 toma un valor de 0.7 con efecto
positivo sobre el mangle C1, y para una salinidad de 49 00 / 0 el nodo C3 toma un
valor de 0.6 con efecto igualmente positivo sobre el mangle C1. Estos valores
obtenidos pueden ser reemplazados en el mapa cognitivo y en la matriz de
adyacencia (tabla 1.2), para su posterior uso en los clculos de dicho mapa.
Tabla 1.2 Matriz de adyacencia (nodos difusos calculados)
C1 C2 C3 C4 C5
C1 0 0 0 0 0.7
C2 0.7 0 0 0 0
C3 0.6 0 0 0 0
31
C4 -0.8 0 0 0 0
C5 0 0 0 0 0
1.2.1. Etapa de aprendizaje.
Figura 1.4 Representacin Matriz de adyacencia
M = =
En los mapas cognitivos, la fase de aprendizaje es muy sencilla, ya que solo se
necesita llenar la base de conocimiento, con los respectivos valores que el
especialista o la entidad competente designa a cada factor, que interviene en la
situacin o mbito a evaluar (figura 1.4). Siendo esta una gran ventaja, ya que no
se deben utilizar complicados y largos mtodos de aprendizaje.
1.2.2. Etapa de funcionamiento En el inicio de la etapa de funcionamiento, se
necesitan de patrones de entrada que permitirn estimular el sistema. Por
ejemplo, Sea el vector de entrada.
C = [C
1
C
2
C
3
C
4
C
5
]
C = [0.3 0.8 0.6 0.1 0.1]
0.0 0.0 0.0 0.0 0.0 0.7
0.7 0.0 0.0 0.0 0.0 0.0
0.6 0.0 0.0 0.0 0.0 0.0
-0.8 0.0 0.0 0.0 0.0 0.0
0.0 0.0 0.0 0.0 0.0 0.0
W
11
W
12
W
13
W
14
W
15
W
16
W
21
W
22
W
23
W
24
W
25
W
26
W
31
W
32
W
33
W
34
W
35
W
36
W
41
W
42
W
43
W
44
W
45
W
46
W
51
W
52
W
53
W
54
W
55
W
56
32
Donde:
C
1
=0.3, Determina un estado aceptable del mangle.
C
2
=0.8 Muestra un alto nivel de temperatura que beneficia al mangle.
C
3
=0.6 Muestra un nivel medio de salinidad que afectara positivamente al mangle.
C
4
=0.1 Establece un efecto negativo mnimo de la tala sobre el mangle
C
5
=0.1 Determina una baja presencia de organismos en el mangle.
Con el anterior vector de entrada se analizaran dos tipos resultados e iteraciones,
obtenidas sobre la reaccin y estimulo que este vector tiene sobre la matriz de
adyacencia del mapa cognitivo, para esto se utilizara la funcin de activacin
sigmoidal con la operacin de agregacin OR y posteriormente con la T-Corona de
Hamacher.
Utilizando la funcin de activacin sigmoidal de la ecuacin (1) y la operacin de
agregacin MAX (OR), se obtiene los siguientes resultados:
Figura 1.5 Multiplicacin Matricial Ej. 1
i=0, C*W[i][j] = *
=
Se toma el vector de entrada y se multiplican sus elementos por cada columna
de la matriz de adyacencia, como se muestra la figura 1.5 en la primera iteracin.
0.3 0.8 0.6 0.1 0.1
0.0 0.0 0.0 0.0 0.7
0.7 0.0 0.0 0.0 0.0
0.6 0.0 0.0 0.0 0.0
-0.8 0.0 0.0 0.0 0.0
0.0 0.0 0.0 0.0 0.0
0.0 0.0 0.0 0.0 0.0
0.0 0.56 0.36 -0.8 0.0
33
Luego de que se han obtenido los vectores del producto matricial de la matriz de
adyacencia y el vector de entrada, en este caso 5 vectores, se verifica si todos los
elementos de cada vector son ceros, de ser as, el elemento del vector de salida
ser igual a el del vector de entrada en esa misma posicin, de lo contrario, se
utiliza la operacin de agregacin MAX (OR) en cada vector resultante, con el fin
de obtener el mximo valor de este vector. Aplicando este proceso en el primer
vector producto de la multiplicacin matricial, y reemplazndolo en la funcin de
activacin sigmoidal, se obtiene el primer elemento del primer vector resultante
as:
MAX =
MAX = 0.56
Sigmoidal = 636453 . 0
1
1
56 . 0
=
+
e
De igual forma se repite el anterior proceso para los vectores resultantes en cada
iteracin, tomando como nuevo vector de entrada el vector resultante anterior, y
deteniendo el proceso cuando el vector de entrada y salida sean iguales
Las iteraciones y el vector resultante para el ejemplo anterior, utilizando los
mximos de cada vector y la funcin de activacin sigmoidal, se muestran en la
siguiente tabla 1.3.
Vector de entrada inicial: [0.3 0.8 0.6 0.1 0.1]
0.0 0.56 0.36 -0.8 0.0
34
Tabla 1.3 Tabla resultados Ej. 1
Iteracin Vector de entrada Vector de Salida
1 [0.3 0.8 0.6 0.1 0.1] [0.636453 0.8 0.6 0.1 0.552308]
2 [0.636453 0.8 0.6 0.1 0.552308] [0.636453 0.8 0.6 0.1 0.609573]
3 [0.636453 0.8 0.6 0.1 0.609573] [0.636453 0.8 0.6 0.1 0.609573]
Los resultados muestran (figura 1.3) que hubo un incremento en el nodo C1 de
Mangle gracias a la temperatura y salinidad favorable, actuando de esta forma
positivamente los nodos difusos C2 y C3 sobre el mangle C1, a su vez los
organismos C5 aumentaron debido al incremento del mangle C1, la tala C4 no
afect de forma contundente al mangle C1, ya que su valor fue mnimo en el
vector de entrada y en las iteraciones. La salinidad, temperatura y tala,
mantuvieron sus valores constantes desde la primera iteracin, debido a que estos
nodos no tienen relacin de dependencia con ningn otro nodo del mapa.
Grficamente los resultados obtenidos en las iteraciones quedan de la siguiente
forma:
35
Figura 1.6 Grafica iteraciones Ej. 1
Grafica Iteraciones
0
0,1
0,2
0,3
0,4
0,5
0,6
0,7
0,8
0,9
1 2 3
Mangle
Temperatura
Salinidad
Tala
Organismos
Tomando para el siguiente caso la funcin de activacin sigmoidal ecuacin (1) y
la T-Corona de Hamacher, ecuacin (2), se obtienen los siguientes resultados:
Figura 1.7 Matriz de adyacencia Ej. 2
i=0, C*W[i][j] = *
=
0.3 0.8 0.6 0.1 0.1
0.0 0.0 0.0 0.0 0.7
0.7 0.0 0.0 0.0 0.0
0.6 0.0 0.0 0.0 0.0
-0.8 0.0 0.0 0.0 0.0
0.0 0.0 0.0 0.0 0.0
0.0 0.0 0.0 0.0 0.0
0.0 0.56 0.36 -0.08 0.0
36
Al igual que en el anterior ejercicio donde se utiliz la operacin MAX (OR), se
toma el vector de entrada y se obtienen los valores del vector de salida, producto
de la multiplicacin matricial entre este vector de entrada y cada columna de la
matriz de adyacencia. Luego de que se hayan obtenido los vectores de cada
multiplicacin matricial, se verifica que todos sus elementos no sean ceros, y se
aplica la T-Corona de Hamacher a cada vector resultante de la multiplicacin,
como se muestra en la ecuacin (4):
0 ,
]) 1 [ * ] [ * ) 1 ( 1 (
] 1 [ * ] [ ) 2 ( ] 1 [ ] [ (
>
+
+ + +
=
i v i v
i v i v i v i v
Hamacher
(4)
Siendo V[i] el vector resultante de la multiplicacin matricial, del vector de entrada
por la matriz de adyacencia.
Tomando el primer vector de la primera iteracin, y evalundolo con la T-Corona
de Hamacher, posteriormente aplicndole la funcin de activacin sigmoidal, da
como resultado el primer elemento del primer vector resultante:
Hamacher , =1:
56 . 0
) 56 . 0 * 0 * ) 1 1 ( 1 (
56 . 0 * 0 * ) 1 2 ( 56 . 0 0 (
=
+
7184 . 0
) 36 . 0 * 56 . 0 * ) 1 1 ( 1 (
36 . 0 * 56 . 0 * ) 1 2 ( 36 . 0 56 . 0 (
=
+
695872 . 0
) 08 . 0 * 7184 . 0 * ) 1 1 ( 1 (
08 . 0 * 7184 . 0 * ) 1 2 ( 08 . 0 7184 . 0 (
=
+
0.0 0.56 0.36 -0.08 0.0
37
695872 . 0
) 0 * 695872 . 0 * ) 1 1 ( 1 (
0 * 695872 . 0 * ) 1 2 ( 0 695872 . 0 (
=
+
Funcin Sigmoidal = 667272 . 0
1
1
695872 . 0
=
+
e
De igual forma se continuar con el mismo proceso con el resto de vectores,
(vectores del producto matricial) aplicacin de la T-Corona de Hamacher a sus
elementos, y posteriormente, el valor resultante de cada vector ser sometido a la
funcin de activacin sigmoidal (ecuacin (5)).
] [
1
1
.
i v
e
Sigmoidal f
+
=
(5)
Siendo V[i] el elemento resultante de la T-Corona de Hamacher, y a su vez un
elemento del vector resultante, cuando posteriormente haya pasado por la funcin
de activacin sigmoidal.
Las iteraciones y el vector resultante para el ejemplo anterior utilizando la T-
Conorma de Hamacher y la funcin de activacin sigmoidal son:
Vector de entrada inicial: [0.3 0.8 0.6 0.1 0.1]
38
Tabla 1.4 Tabla resultados Ej. 2
Iteracin Vector de entrada Vector de Salida
1 [0.3 0.8 0.6 0.1 0.1] [0.667272 0.8 0.6 0.1 0.552308]
2 [0.667272 0.8 0.6 0.1 0.552308] [0.667272 0.8 0.6 0.1 0.614695]
3 [0.667272 0.8 0.6 0.1 0.614695] [0.667272 0.8 0.6 0.1 0.614695]
El proceso termina cuando el vector de salida es igual al vector de entrada, siendo
el resultado final: [0.667272 0.8 0.6 0.1 0.614695]
Los resultados al igual que en el ejercicio anterior muestran un aumento en el
nodo C1 , los organismos C5 aumentaron debido al incremento del mangle C1, la
tala C4 no afect de forma contundente al mangle C1, debido a su mnimo valor
en el vector de entrada. Igualmente la salinidad, temperatura y tala mantuvieron
sus valores constantes. Sin embargo tomando como referencia los resultados
obtenidos anteriormente con la operacin MAX (OR) y los actuales con la T-
Corona de Hamacher, observamos que T-Corona de Hamacher proporciona
resultados ms precisos y reales, ya que evala los elementos negativos del
vector, contrario a la operacin MAX (OR) que excluye los elementos negativos
sin importar lo significativo que estos podran ser. En este caso con la T-Corona
de Hamacher se tom en cuenta el valor -0,08 de la matriz de adyacencia, al igual
que el resto de valores positivos inferiores a 0.56, los cuales habran sido
ignorados por la operacin MAX (OR) en la primera resolucin.
39
Grficamente los cambios en los nodos se pueden observar de la siguiente forma:
- Mangle C1
Figura 1.8 Grafica mangle Ej. 2
Mangle C1
0
0,1
0,2
0,3
0,4
0,5
0,6
0,7
0,8
1 2
Mangle
- Temperatura C2
Figura 1.9 Grafica temperatura Ej. 2
Temperatura C2
0
0,1
0,2
0,3
0,4
0,5
0,6
0,7
0,8
0,9
1 2
Temperatura
40
- Salinidad C3
Figura 1.10 Grafica salinidad Ej. 2
Salinidad C3
0
0,1
0,2
0,3
0,4
0,5
0,6
0,7
1 2
Salinidad
- Tala C4
Figura 1.11 Grafica tala Ej. 2
Tala C4
0
0,02
0,04
0,06
0,08
0,1
0,12
1 2
Tala
41
- Organismos C5
Figura 1.12 Grafica organismos Ej. 2
Organismos C5
0
0,1
0,2
0,3
0,4
0,5
0,6
0,7
1 2 3
Organismos
- Grafica general de resultados
Figura 1.13 Grafica resultados Ej. 2
0
0,1
0,2
0,3
0,4
0,5
0,6
0,7
0,8
0,9
1 2 3
Mangle
Temperatura
Salinidad
Tala
Organismos
42
2. SISTEMAS REACTIVOS Y ANIMACION REACTIVA
2.1 SISTEMAS ESTTICOS Y DINMICOS
Los sistemas estticos describen un sistema en trminos de ecuaciones
matemticas, donde el efecto potencial de cada alternativa es evaluada a travs
de ecuaciones. La actuacin del sistema es determinada sumando los efectos
individuales. Los sistemas estticos ignoran las variaciones en el tiempo, en estos
todos sus elementos permanecen estables, al contrario, los sistemas dinmicos
complejos estn compuestos por un gran nmero de variables, algunas son
difusas, otras son el resultado de un proceso de entrada de datos, cambiando
estas repetidamente su valor en cada entrada o digitacin de informacin. Lo cual
hace que estos sistemas eleven su complejidad, ya que en ellos se presenta un
gran flujo de informacin, necesitndose de esta forma de herramientas
adecuadas para su tratamiento.
Debido a la enorme complejidad de estos sistemas la propiedad fundamental que
los caracteriza es que poseen un comportamiento impredecible. Slo somos
capaces de prever su evolucin futura hasta ciertos lmites, siempre suponiendo
un margen de error muy creciente con el tiempo. Para realizar predicciones ms o
menos precisas de un sistema dinmico complejo, frecuentemente se han de usar
mtodos matemticos como la estadstica, la probabilidad o las aproximaciones
numricas como los nmeros aleatorios.
43
2.2 SISTEMAS REACTIVOS
El trmino sistema complejo se ha popularizado en los ltimos aos, habindose
difundido en estudios sobre sistemas ambientales, biolgicos, autmatas
celulares, etc. y convergiendo en un rea denominada vida o inteligencia artificial.
Sin embargo existe aun una clase ms problemtica de sistemas dinmicos
complejos, dichos sistemas estn compuestos por una gran carga de control o
manejo de eventos. Siendo estos los llamados sistemas reactivos, debido a que
su papel es el de reaccionar a varios tipos de eventos, seales y condiciones de
diversas formas complejas. Su aspecto ms significativo, es que no existe una
pregunta o control, para que el proceso que se est llevando a cabo en estos
sistemas, llegue a un lgico final. Sin embargo el sistema mantiene una constante
interaccin con su ambiente, arrojando en tiempo real los diferentes resultados y
cambios que se presentan en el sistema.
Los sistemas reactivos interaccionan continuamente con el entorno, recibiendo
estmulos del mismo y produciendo salidas en respuesta a los mismos. El orden
de los eventos en un sistema reactivo no es predecible, viene determinado
externamente, es decir, el orden de ejecucin de las instrucciones puede venir
determinado por la ocurrencia de eventos externos. Un ejemplo tpico de sistema
reactivo es un sistema de tiempo real. En los sistemas de tiempo real los eventos
deben ser tratados en instantes de tiempo predeterminados.
2.2.1 Caractersticas de los sistemas reactivos. En general, todos los sistemas
reactivos comparten una serie de caractersticas comunes, independientemente
de la aplicacin final a la que se destinen. Entre estas caractersticas podemos
encontrar las siguientes:
Paralelismo: Los sistemas reactivos se ejecutan en paralelo con otros sistemas.
Adems, ellos mismos, posiblemente, estn constituidos por una serie de mdulos
funcionando en paralelo (Ej.: un mdulo de animacin y un mdulo lgico). Esto es
44
muy habitual, dado que simplifica notablemente el diseo de sistemas, la
posibilidad de dividirlo en un conjunto determinado de mdulos, que funcionan en
paralelo y que cooperan para obtener el comportamiento deseado.
Condicionantes temporales: Como se mencion anteriormente, los sistemas
reactivos tienen que responder a los estmulos de entrada instantneamente.
Independientemente del tipo de sistema que se trate, los condicionantes
temporales dependiendo de cada caso, son un punto importante a tener en cuenta
a la hora de desarrollar y de verificar la correccin del sistema. Estos estados
temporales nos muestra el desarrollo, ya sea negativo o positivo del sistema que
se este controlando, as como tambin las variaciones que sufren sus
componentes a lo largo del tiempo.
Confiabilidad: La mayor parte de los sistemas reactivos, se emplean en
situaciones donde un error puede resultar crtico. Esto hace que sean necesarios
mtodos de desarrollo y verificacin rigurosa para poder detectar antes de su
implementacin cualquier posible anomala que pueda darse, para de esta forma
evitar que el sistema y la aplicacin reactiva que lo controla, arroje resultados
falsos o errneos.
Determinismo: Otra de las caractersticas importantes que todo programa
reactivo debe tener es el determinismo. Un programa se considera determinista
cuando produce las mismas secuencias de salida ante las mismas secuencias de
entradas. Esta caracterstica hay que considerarla con su justo valor: los sistemas
reactivos deterministas son ms fciles de especificar, depurar y analizar que los
no deterministas.
45
2.2.2 Sistemas reactivos y sus tipos de eventos: La gran difusin y uso de
sistemas que deben reaccionar rpidamente ante eventos generados por su
entorno, como por ejemplo sistemas de control industrial, hizo que a mediados de
los aos 80 se afrontara su desarrollo de una manera diferente al del resto de los
sistemas. Apareci el concepto de sistema reactivo. Dadas las especiales
caractersticas que presentan este tipo de sistemas mencionadas anteriormente,
pronto se vio que las tcnicas y herramientas de desarrollo que tradicionalmente
se estaban utilizando para otros tipos de sistemas, no eran adecuadas para el
desarrollo de sistemas reactivos, sino que stos precisaban de tcnicas de
desarrollo especficas.
Siendo los sistemas reactivos parte de los denominados sistemas dirigidos por
eventos, denotando de esta manera que la evolucin del sistema viene
determinada por la ocurrencia de eventos. Los eventos son sucesos que en cada
momento pueden aparecer o estar ausentes. Por ejemplo, cuando se pulsa un
botn determinado en cualquier sistema, el evento asociado a ese botn estar
activo; cuando el botn no est pulsado el evento estar ausente.
En general, en todos los sistemas reactivos su evolucin se va a ver condicionada
por los eventos que vaya generando el entorno. De la misma manera, la reaccin
del sistema ser comunicada al entorno por medio de eventos. Ms an la
comunicacin entre las distintas partes del sistema en s suele llevarse a cabo en
muchos casos por medio de eventos. A este tipo de eventos, que son los ms
utilizados para guiar la evolucin de los sistemas reactivos, y que en un momento
determinado pueden estar presentes o ausentes se les denomina eventos
discretos. Su nica caracterstica es su presencia o ausencia. No tienen ningn
valor ni tipo asociado.
46
Adems de stos, suelen aparecer otros tipos de eventos en los sistemas
reactivos. Los primeros son valores de determinado tipo que estn siempre
presentes. Por ejemplo, la medida de la temperatura que ofrece un sensor
termomtrico es un valor que est siempre presente y que va variando a lo largo
del tiempo. La evolucin de los sistemas reactivos tambin puede estar
condicionada por eventos de este estilo. Denominaremos eventos continuos.
El ltimo tipo de eventos a considerar es una mezcla de los dos anteriores, son
eventos que aparecen o no estn activos en determinados momentos, pero tienen
una caracterstica adicional: A la presencia del evento estn acompaados por
algn o algunos valores de un determinado tipo. Sern los eventos discretos con
parmetros.
2.2.3 Aplicaciones de los sistemas reactivos: Los sistemas reactivos pueden
ser relativamente pequeos, como celulares, PDAs, y relojes digitales, o mucho
ms complejos, como sistemas autnomos y aplicaciones aeroespaciales. Los
sistemas reactivos pueden ser sistemas para controlar redes telefnicas y
controladores de comunicacin, el trfico areo, y robots industriales, o a mayor
escala interactuar con paquetes interactivos de software, como procesadores de
palabras y programas de e-mail. Al igual estos sistemas se pueden presentar en
los sistemas biolgicos, como el cerebro y el sistema inmunolgico, estos pueden
ser vistos como un sistema reactivo complejo, ya que estn sujetos a constantes
variaciones, las cuales son controladas y representadas por nuestro propio
organismo, por ejemplo cuando nos enfermamos nuestros signos vitales se
encuentra en constante variacin y mostramos ciertos cambios en tiempo real en
nuestro organismo y apariencia externa.
De cualquier forma, tamao o funcin, todos los sistemas reactivos deben
mantener una relacin compleja y dinmica con su ambiente, reaccionando de
47
forma apropiada y a tiempo, en el caso de aplicaciones informticas al clic de
Mouse, oprimidas de botones, cambios de temperatura, movimientos de cursores
o en el caso de los mapas cognitivos, en el cambio de valores de las variables
difusas o pesos.
2.3 PROGRAMA REACTIVO
La caracterstica principal de un sistema reactivo es no limitarse a producir un
valor final al terminar, sino permanecer en interaccin constante con su ambiente.
Por esta razn la animacin de un sistema reactivo requiere unas caractersticas
ms exigentes que una interfaz grfica de usuario. De esta forma un programa
reactivo se caracterizara por su permanente interaccin con el entorno,
reaccionando a las entradas provenientes de ste y envindole al mismo, las
salidas oportunas para generar nuevos resultados constantemente.
Un programa reactivo se define de la misma manera que un sistema reactivo. Un
programa reactivo se caracteriza por su permanente interaccin con el entorno,
reaccionando a las entradas provenientes de ste y envindole al mismo las
salidas oportunas. Los programas reactivos son el componente fundamental de los
sistemas reactivos.
Otro trmino importante en el mbito de las aplicaciones y programas reactivos es
el de programacin reactiva. Con este concepto se hace referencia al proceso de
realizar programas reactivos. Estando formada la estructura general de un
programa reactivo por tres niveles bsicos:
Un interfaz con el entorno, que se encarga de recibir las entradas de ste y de
generar las salidas. Realiza la transformacin entre los eventos fsicos que genera
el entorno y los eventos lgicos que realiza el resto del sistema.
48
Un ncleo reactivo que contiene la lgica del programa. Como su nombre indica
es la parte ms importante del sistema dado que se encarga de decidir en cada
momento qu es lo que hay que hacer.
Una capa de manejo de datos, cuya misin es realizar el procesamiento de datos
clsico a peticin del ncleo.
Por lo general cuando se estudian los sistemas reactivos, se limita a analizar solo
el ncleo reactivo, dado que las dos capas restantes son aspectos habituales en
cualquier tipo de programa, y se suelen implementar en cualquier tipo de lenguaje
tradicional.
2.4 ANIMACIN REACTIVA
La animacin reactiva no es una nueva forma de animar algoritmos, esta no
pretende introducir un nuevo mtodo para traducir complejidad algortmica en una
animacin abstracta de esta. Al contrario, la animacin reactiva usa unas
interfaces y animaciones dinmicas para el usuario, de tal forma que estas
representen la operacionalidad del sistema y su conducta de forma realstica. De
esta manera, la animacin reactiva, une los esfuerzos realizados por los
desarrolladores, en el diseo del sistema (system desing) y la portada (front-end
desing).
Por medio de la animacin reactiva se combina el estado del arte de la reactividad
y el estado del arte de la animacin, uniendo estas avanzadas herramientas en
dos reas. Una formada por el desarrollo e implementacin del sistema dinmico
complejo, y otra que hace parte del diseo de la interfaz, que va servir de puente
entre la apariencia del sistema y lo que este va hacer. En esencia la animacin
reactiva tiene dos brazos; uno compuesto por las diferentes herramientas y
mtodos propios de los sistemas reactivos, siendo esta parte el ncleo principal,
49
para realizar una rigurosa especificacin del sistema reactivo a tratar. La otra parte
esta compuesta por las herramientas propias de la animacin, las cuales sirven
para representar las especificaciones y variaciones del sistema reactivo, de forma
controlable y animada en la portada (front- end). La unin de estas dos ramas (el
comportamiento reactivo del diseo y su portada) que a simple vista no coinciden,
pero que conectadas y con una cooperacin mutua de recursos e informacin, se
convierten en una herramienta esencial para entender y facilitar el estudio de
sistemas complejos.
2.4.1 Diagrama conceptual animacin reactiva: En el siguiente diagrama
(Fig.2.1) se muestra como se relacionan los dos componentes esenciales (Diseo
del sistema y animacin) que hacen posible la animacin reactiva de un sistema
complejo
Figura 2.1 Diagrama conceptual animacin reactiva
En la siguiente imagen (FIg.2.2) se muestran la forma fsica y real de los
componentes de una animacin reactiva, tomando como referencia, el ejemplo de
50
un sistema dinmico complejo del ecosistema del manglar, anteriormente descrito
y evaluado mediante mapas cognitivos difusos, que vienen siendo a su vez la
parte de diseo del sistema de la animacin reactiva
Figura 2.2 Grafica interaccin MCD y animacin
51
3. ANALISIS Y DISEO DEL SOFTWARE
3.1. MODELO DE DESARROLLO DE MCD SIMULATOR
En el desarrollo de MCD SIMULATOR se emple el modelo de desarrollo
Incremental, basndose en los principios de este modelo, en los cuales se
desarrolla y entrega el software en partes pequeas pero utilizables (incrementos),
fueron necesarios para la consecucin de los objetivos y requerimientos del
sistema 5 incrementos:
1. Diseo interfaz grfica
2. Manejo de datos y clculos del sistema
3. Creacin y carga de animacin
4. Inicio y cerrado de sesin de usuarios
5. Conexiones para guardar y abrir animacin - datos.
Debido a la complejidad de disear y desarrollar una aplicacin basada en
animacin reactiva, la cual esta formada por un componente lgico y otro de
animacin, fue indispensable y de gran ayuda la utilizacin del modelo
incremental, ya que es una forma de reducir los riesgos de errores graves,
cuando las partes lgicas y animadas se unieran, de esta forma los incrementos
de los dos mdulos (lgico y animado) fueron ejecutados y probados en pequeas
aplicaciones independientes, las cuales luego de correcciones y ajustes, fueron
integradas en el sistema final.
3.2. MODELADO DE REQUISITOS
3.2.1 Descripcin del problema: Para la simulacin de sistemas dinmicos
complejos, es necesario emplear grandes variables de informacin, que en la
mayora de los eventos est revestida de dudas, por lo cual el empleo de tcnicas
52
comunes, como las ecuaciones diferenciales que no representan una opcin
viable en este tipo de simulacin.
Es as por lo que se recurre al uso de los Mapas cognitivos difusos MCD. Ya que
en estos no se necesitan largos clculos matemticos complejos, para obtener
nuevos estados, conociendo acciones futuras que afecten directamente al
sistema.
La creacin de un software de modelamiento de sistemas dinmicos complejos,
utilizando mapas cognitivos difusos y animacin reactiva, permitir a el usuario
analizar y observar de forma clara los estados que se presentan en este tipo de
sistemas, arrojando como resultado una animacin en tiempo que real que refleja
los cambios y efectos que se presentan en estos, los cuales son establecidos
previamente por el usuario, pudiendo tener estos, efectos positivos o negativos en
el sistema dinmico en evaluacin.
El sistema presenta en su pantalla principal, la opcin de inicio de sesin,
dependiendo del usuario, siendo este administrador o invitado, podr tener acceso
a las siguientes operaciones del programa:
Usuario administrador:
- Calcular vector de salida
- Generar animacin
- Guardar animacin datos
- Resetear animacin
- Abrir animacin
53
El usuario como administrador controla todas las operaciones del programa, de
esta forma puede analizar y observas los cambios que se presentan en el MCD y
la animacin, segn los valores iniciales que este digite como entrada del sistema
Usuario invitado:
- Abrir y visualizar la animacin
El usuario como invitado podr visualizar los cambios que se presenten en el MCD
mediante una animacin, y a su vez obtener los datos de las iteraciones realizadas
en los clculos del sistema
3.2.2 Modelo de caso de uso. En la figura 3.1 se describe la secuencia de
eventos que intervienen en el sistema cuando esta siendo utilizado.
54
Figura 3.1 Diagrama de Casos de Uso
55
3.2.2.1 Documentacin diagramas de caso de uso
- Actores
Tabla 3.1 Actor Usuario
Actor Usuario
Caso de Uso Digitar datos, enviar animacin.
Tipo Primario
Descripcin Actor principal, el cual ejecuta el software y maneja todas operaciones de este
Tabla 3.2 Actor Usuario2
Actor Usuario2
Caso de Uso Ver Animacin, Establecer conexin.
Tipo Secundario
Descripcin
Actor secundario, el cual observa la animacin generada por el sistema y
enviada por el Usuario.
Este usuario solo es un observador de la simulacin, no puede hacer ningn
cambio sobre los clculos realizados por el sistema.
Tabla 3.3 Actor Sistema
Actor Sistema
Caso de Uso Calcula v. salida, calcular temperatura, calcular salinidad, generar animacin.
Tipo Secundario
Descripcin Realiza todas las operaciones, clculos y animaciones propias del software.
56
- Casos de Uso
Tabla 3.4 Caso de uso digitar datos
Caso de Uso Digitar datos
Actores Usuario
Tipo Bsico
Propsito
Le permite al usuario establecer los valores iniciales con los que va ha
realizar las operaciones y animaciones el sistema.
Resumen
El usuario digita el vector de entrada inicial, llena los campos de la matriz
de adyacencia, correspondientes a las variables difusas de temperatura y
salinidad, y establece el valor de la variable landa.
Pre-condiciones Ninguna
Flujo Principal Ninguno
Subflujos
S.1. Principal. La pantalla principal del programa presenta la opcin de
digitar todos los datos requeridos, para que el sistema ejecute las
operaciones necesarias y obtenga un resultado final del proceso.
S.2. Digitar datos Se muestra en la pantalla principal una fila compuesta
por una serie de Inputs (campos de entrada de datos), en los que se
ingresan los valores iniciales del vector de entrada. Al igual que se cuenta
con un campo aparte donde se podr digitar el valor de la variable Landa.
Excepciones
E.1. Datos numricos. Los datos digitados deben ser solo numricos,
comprendidos desde 0 hasta 1, con un mximo de 5 caracteres
incluyendo el punto, no se permite el ingreso de nmeros negativos.
Tabla 3.5 Caso de uso Guardar datos - animacin
Caso de Uso Guardar Datos - Animacin
Actores Usuario, Sistema, Usuario2
Tipo Bsico
Propsito El usuario puede enviar la animacin a otro PC
Resumen
El usuario establece una conexin con otro PC y enva la animacin
generada por el sistema a un usuario2
Pre-condiciones
Es necesario que el sistema halla calculado el vector de salida y
generado la animacin
Flujo Principal
Luego que el sistema calcula el vector de salida (caso de uso Calcular V.
Salida) y genera la animacin correspondiente a este calculo (caso de
uso Generar animacin), le es permitido al usuario guardar la animacin y
los datos de esta, por medio de la activacin del botn Guardar, dando
como resultado la ejecucin del caso de uso Guardar datos animacin.
Subflujos
S.1. Principal. La pantalla principal del programa muestra el botn
Guardar donde el usuario puede enviar los valores finales del vector de
salida hacia otro PC, para generar la animacin.
Excepciones
E.1. Calcular vector de salida. El vector de salida debe haber sido
calculado por el sistema, si este calculo no se ha efectuado, no se podr
enviar los datos hacia el otro PC, y el botn Guardar aparece desactivado
57
Tabla 3.6 Caso de uso Ver animacin
Caso de Uso Ver animacin
Actores Usuario2, Usuario
Tipo Bsico
Propsito Permite mostrar la animacin enviada por el usuario
Resumen El usuario2 visualiza la animacin enviada por el usuario en otro PC
Pre-condiciones
Se necesita que los datos resultantes de los clculos hallan sido enviados
por el usuario y se establezca una conexin entre las dos maquinas
Flujo Principal
El usuario principal por medio del botn Guardar ejecuta el caso de uso
Guardar animacin datos, posterior a esto escoge la direccin dentro
del servidor donde va ha ser guardado el archivo con la animacin y los
datos. Permitiendo de esta forma que el usuario2 pueda acceder a la
animacin y los resultados obtenidos por el programa, ejecutndose as el
caso de uso Ver animacin
Subflujos
S.1. Principal La pantalla principal del programa instalado en el otro PC,
mostrara un botn de Abrir , el que permite recibir los datos enviados por
el usuario principal y de acuerdo estos generar la animacin
Excepciones
E.1. Envi de datos. Para que el ususario2 pueda ver la animacin es
necesario que los datos hayan sido guardados en una direccin del
servidor, donde el ususario2 pueda ubicar y abrir el archivo con la
animacin y los datos.
Tabla 3.7 Caso de uso Establecer conexin
Caso de Uso Establecer conexin
Actores Usuario, Usuario2
Tipo Inclusin
Propsito Establecer la conexin entre los dos PCs
Resumen
Se realiza la conexin entre los dos PCs del Usuario y Usuario2, para que
el Usuario2 pueda recibir los datos de la animacin por parte del PC del
usuario principal.
Pre-condiciones Ninguno
Flujo Principal Ninguno
Subflujos Ninguno
Excepciones Ninguno
58
Tabla 3.8 Caso de uso Generar animacin
Caso de Uso Generar animacin
Actores Sistema
Tipo Bsico
Propsito Generar la animacin de acuerdo a los cambios en el v de salida.
Resumen Muestra la animacin y sus cambios al usuario
Pre-condiciones Calculo del vector de salida por parte del sistema
Flujo Principal
El sistema realiza los clculos e iteraciones necesarias para obtener el
vector de salida final (ejecucin Caso de uso Calcular v salida), para de
esta forma generar la animacin y ejecutar el caso de uso Generar
animacin
Subflujos
S.1. Principal La pantalla principal del programa muestra los cambios del
vector de salida por medio de una animacin
Excepciones Ninguno
Tabla 3.9 Caso de uso Calcular V. Salida
Caso de Uso Calcular V. Salida
Actores Sistema, Usuario
Tipo Bsico
Propsito
Realizar los clculos e iteraciones necesarias para obtener un resultado final
del estado del MCD
Resumen Realiza una serie de iteraciones hasta encontrar un vector de salida ideal.
Pre-condiciones
Es necesario que el usuario previamente digite los valores del MCD, vector de
entrada, landa y variables difusas de salinidad y temperatura, para que luego el
sistema realice los clculos e iteraciones necesarias para encontrar un estado
final de la animacin y sus transiciones.
Flujo Principal
El usuario principal digita los datos en los campos requeridos (Ejecucin del
caso de uso digitar datos), para que el sistema pueda realizar lo clculos e
iteraciones necesarias, y de esta forma generar un vector de salida final.
Subflujos
S.1. Principal Los valores resultantes del vector de salida final se presentan al
usuario, as como tambin las iteraciones y valores que se calcularon para
llegar a este vector final.
Excepciones
E.1. Informacin incompleta. Todos los campos de entrada (Inputs) deben
estar llenos, en caso de que falte alguno(s), se mostrara un mensaje
solicitando ingresar todos los datos y no se ejecutara la operacin indicada por
el usuario en ese momento hasta que estn todos llenos.
59
Tabla 3.10 Caso de uso Calcular nivel de temperatura
Caso de Uso Calcular nivel temperatura
Actores Sistema
Tipo Inclusin
Propsito
Dependiendo del valor de temperatura que digite el usuario, el sistema
calculara su valor correspondiente y efecto que este tiene en el MCD
Resumen
Al ser un nodo difuso la temperatura puede tener valores positivos o
negativos, lo cual hace necesario un previo calculo de su valor y efectos
sobre el MCD
Pre-condiciones
Digitar el valor de la temperatura, en la ubicacin establecida para esta
en la matriz.
Flujo Principal
El usuario principal digita un valor en el campo requerido para la
temperatura, (Ejecucin del caso de uso digitar datos), para que
posteriormente el sistema pueda calcular el nivel de la temperatura, y
ejecute de esta forma el caso de uso Calcular nivel de temperatura
Subflujos
S.1. Principal En la pantalla principal se encuentra el campo de entrada
especifico para calcular en nivel de temperatura, junto con el resto de
variables que intervienen en los clculos del MCD
Excepciones
E.1. Informacin incompleta. El campo de entrada (Input) de la
temperatura debe estar lleno, para que el sistema pueda transformar el
valor digitado a su correspondiente en el MCD
E.2. Datos numricos. Los datos digitados deben ser solo numricos.
Tabla 3.11 Caso de uso Calcular nivel de salinidad
Caso de Uso Calcular nivel salinidad
Actores Sistema
Tipo Inclusin
Propsito
Dependiendo del valor de salinidad que digite el usuario, el sistema
calculara su valor correspondiente y efecto que este tiene en el MCD
Resumen
Al ser un nodo difuso la salinidad puede tener valores positivos o
negativos, lo cual hace necesario un previo calculo de su valor y efectos
sobre el MCD
Pre-condiciones
Digitar el valor de la salinidad, en la ubicacin establecida para esta en la
matriz.
Flujo Principal
El usuario principal digita un valor en el campo requerido para la
salinidad, (Ejecucin del caso de uso digitar datos), para que
posteriormente el sistema pueda calcular el nivel de la salinidad, y ejecute
de esta forma el caso de uso Calcular nivel de salinidad.
Subflujos
S.1. Principal En la pantalla principal se encuentra el campo de entrada
especifico para calcular en nivel de salinidad, junto con el resto de
variables que intervienen en los clculos del MCD
Excepciones
E.1. Informacin incompleta. El campo de entrada (Input) de la salinidad
debe estar lleno, para que el sistema pueda transformar el valor digitado a
su correspondiente en el MCD
E.2. Datos numricos. Los datos digitados deben ser solo numricos.
60
3.2.3 Modelo de Interfaz. Se muestran a continuacin las principales pantallas
diseadas para MCD Simulator, las cuales se clasifican segn el tipo de usuario,
que puede ser; administrador o invitado
Pantallas de inicio y cerrado de sesin
Figura 3.2 Pantalla de inicio de sesin
61
Pantalla de inicio de sesin (Fig.3.2), el usuario en esta pantalla tiene dos
opciones, ingresar como administrado o como invitado, dependiendo del password
que digite.
Figura 3.3 Pantalla de cerrado de sesin
En la pantalla de cerrado de sesin (Fig.3.3) el usuario puede cambiar su estado
dependiendo de las operaciones que desee hacer, sean estas como administrador
o invitado.
62
Pantallas de administrador
Figura 3.4 Pantalla principal de administrador
En pantalla del administrador (Fig.3.4), el usuario puede realizar todas las
operaciones que ofrece el programa. Como son: Calcular vector de salida y
generar animacin (botn calcular), guardar animacin datos (botn guardar),
resetear animacin (botn reset) y abrir animacin (botn abrir). Para realizar las
operaciones anteriores, el usuario como administrador puede digitar en los
campos de entrada establecidos, (inputs) los valores del vector de entrada,
variables difusas de temperatura, salinidad y de la variable Landa
63
Figura 3.5 Pantalla guardar animacin
La pantalla de guardar animacin (Fig.3.5) le presenta al usuario administrador,
un campo de entrada en el que podr especificar el nombre, con el cual va ha
guardar el archivo que va ha contener la animacin y los datos de esta.
64
Pantallas de invitado
Figura 3.6 Pantalla principal invitado
En esta pantalla (Fig.3.6), el usuario como invitado, puede abrir y visualizar la
animacin junto con los datos del vector de salida (botn abrir), que han sido
generados y guardados en el servidor por el administrador.
65
Figura 3.7 Pantalla abrir animacin
La pantalla de abrir animacin (Fig 3.7) le presenta al usuario invitado, un campo
de entrada en el que podr especificar el nombre, con el cual va ha abrir el
archivo que va ha contener la animacin y los datos de esta.
66
3.3. MODELADO DE ANALISIS
3.3.1 Diagrama de estado
Figura 3.8 Diagrama de estado
67
3.4 MODELADO DE DISEO
3.4.1 Diagrama de flujo
Figura 3.9 Diagrama de flujo
68
Figura 3.10 Continuacin A Diagrama de Flujo
Figura 3.11 Continuacin B Diagrama de Flujo
69
4. ASPECTOS DE INFRAESTRUCTURA
4.1 RECURSOS HUMANOS
- Director: Ing. Juan Antonio Contreras Montes
- Asesores: Ing. Lisbeth Urueta, Ing. Juan Pablo Paz.
- Investigadores: David Amaya, Antonio Pinedo.
4.2 DESCRIPCIN DE EQUIPOS Y/O LABORATORIOS REQUERIDOS
- Laboratorio de Robtica
- Equipos de cmputo con sistema operativo Windows 98 o superior, y
maquina virtual de Java.
- Lenguaje Flash (Action Script)
4.3 FUENTES DE FINANCIACIN Y PRESUPUESTO
Tabla 4.1 Fuente de financiacin y presupuesto
No Descripcin
Unidad Cantidad
Valor
unitario
Valor
parcial
Subtotal
RECURSOS FISICOS
1 Papelera y
varios
Global 1 500.000 500.000
2 Impresin Global 1 160.000 160.000
3 Computador Horas 160 1.500 240.000
4 Transporte Global 1 90.000 50.000
COSTO TOTAL DEL PROYECTO 950.000
70
4.4 CRONOGRAMA DE ACTIVIDADES.
Tabla 4.2 Cronograma de actividades
Actividades
(tiempo en
semanas)
MARZO ABRIL MAYO JUNIO JULIO AGOSTO
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24
Recopilacin
informacin del
manglar
Recopilar
informacin
sobre MCD y
sus aplicaciones
Caractersticas
de un sistema
reactivo
Diseo de
sistema
modelacin
mediante MCDs
Desarrollo de un
modelador de
sistemas
dinmicos junto
a una animacin
Implementacin
y simulacin de
MCDs
71
5 CONCLUSIONES
Los mapas cognitivos difusos se establecen en la actualidad, como una poderosa
herramienta para analizar relaciones entre conceptos, y modelar sistemas
reactivos con dinmicas extremadamente complejas, que son prcticamente
imposibles de modelar mediante ecuaciones matemticas, debido al gran numero
de variables, y relaciones que ocurren entre estas.
La implementacin de sistemas reactivos en la evaluacin y observacin de
ambientes y fenmenos, permite percibir de una forma fcil y sencilla, la
interaccin que se presenta entre los diferentes componentes que hacen parte de
este tipo de entornos, en donde, el sistema reactivo recibe los estmulos del
entorno en evaluacin y a su vez produce salidas en respuesta a estos estmulos
recibidos. El orden de estos eventos sucede de forma impredecible, estando
determinados externamente, es decir, el orden de ejecucin de las instrucciones
puede venir establecido por la ocurrencia de eventos o estmulos externos.
La creacin de un programa reactivo, se fundamenta en el desarrollo y diseo de
dos componentes bsicos. Conformado por un sistema de modelacin y otro de
animacin, el uno y el otro trabajan cada componente de forma independiente,
trayendo esto, ventajas notables en el progreso del sistema, ofreciendo cierta
flexibilidad e independencia a los diseadores y desarrolladores. Sin embargo, es
de gran importancia definir previamente y con sumo cuidado las caractersticas de
cada componente, con el fin de que cada uno sea el complemento ideal del otro.
72
BIBLIOGRAFA
- EFRONI, S., HAREL, D., COHEN, I. Reactive Animation: Realistic Modeling
of Complex Dynamic Systems. IEEE Computer Society, 2005. vol. 38, pp.
38 47.
- FULLR, Robert. Neural Fuzzy Systems, Abo Akademy University, 1995.
- HARARY, F. On The Measurement of Structural Balance, Behavior
Science, 1959. vol. 4, pp.316-323.
- KOSKO, Bart. Fuzzy Thinking. Hyperion, 1998.
- NAKAMURA, K. Decision Support Using Causation Knowledge Base,
IEEE Transactions on Systems Man And Cybernetics, 1982 vol. 12, pp.765-
777
- TSADIRAS, A., MARGARITIS, K. A New Balance for Fuzzy Cognitive
Maps, Department of Applied Informatics, University of Macedonia, 1998.
73
74
75
MANUAL DE USUARIO
REQUERIMIENTOS DEL SISTEMA
MCD SIMULATOR v1.0, es una aplicacin creada para poder observar la
simulacin de un sistema dinmico complejo especifico (ecosistema de manglar),
y as saber cuales son los factores que lo afectan lo favorecen en determinada
zona.
Requerimientos del sistema
Procesador de 1.5 Ghz superior.
Memoria RAM de 256MB superior.
Unidad de lectura de discos.
60 MB libres en disco.
Flash Player 8 Plug-in.
Windows 98-XP o superiores.
Servidor PHP local o externo.
76
COMO UTILIZAR MCD SIMULATOR v1.0
Al ejecutar MCD SIMULATOR v1.0 se desplegar una pantalla de inicio de
sesin, la cual permitir entrar de dos maneras: como usuario invitado o
administrador, tal como se muestra en la figura 1.
Figura 1. Login.
Password nico para acceder como
invitado o administrador
Nota: Password invitado: user
Password administrador: admin
Botn de ingreso
Nombre de la
aplicacin
77
1. MODO DE USUARIO INVITADO
Accediendo a la aplicacin en modo usuario invitado, se podr ver como se crea o
carga el primer ecosistema manglar que aparece por defecto, seguido de la
pantalla de trabajo del invitado. Tal como se muestra en la figura 2.
Figura 2. Carga de mapa en modo usuario invitado
Carga de mapa del ecosistema
78
Al ser usuario invitado tendr la opcin de Abrir un Archivo existente, el cual
contendr clculos que se hallan hecho en el sistema con su respectiva
animacin, para visualizar los cambios sufridos por el ecosistema, tambin tendr
la opcin de Salir del sistema. Adems aparecer un cuadro de texto que muestra
la informacin de los clculos realizados, tal como se observa en la figura 3.
Situando el cursor sobre el mapa, se muestra la ubicacin de un punto sobre la
animacin del ecosistema.
Figura 3. Pantalla principal en modo usuario invitado.
Botn de salida/ cierre de sesin
Botn para abrir
Cuadro de visualizacin
de operaciones
Ubicacin en el mapa
79
Si escogi la opcin Abrir aparecer la pantalla que se muestra en la figura 4, en
la cual deber digitar el nombre del archivo con la extensin *.MCD en caso de
conocerlo, de lo contrario al hacer click sobre la opcin Buscar se desplegar una
ventana de bsqueda en la cual ubicar el nombre del archivo, el cual por defecto
se ubica en la carpeta files, tal como se muestra en la figura 5.
Como se muestra en la figura 4, luego de conocer el nombre del archivo deber
pulsar el botn Abrir para cargar la animacin y los datos contenidos en el archivo,
tal como aparece en la figura 6.
Figura 4. Abrir.
Botn para Volver a
la pantalla principal
Nombre del archivo Botn de
apertura del
archivo
Botn de
bsqueda
80
Figura 5. Bsqueda de archivo
.
Tendr la opcin de cancelar el proceso de carga de la animacin del mapa,
haciendo click sobre el botn cancelar que aparece en la figura 6.
Extensin
del archivo
Cuadro de
bsqueda
81
Figura 6. Carga o de un nuevo mapa.
Al terminar la carga del mapa se mostrarn las iteraciones necesarias para la
creacin del nuevo mapa, como se observa en la figura 7.
Cancelacin de un mapa que se
este cargando
Carga del nuevo mapa
82
Figura 7. Mapa cargado con su tabla de resultados.
S despus de haber observado la animacin y los datos, desea salir del sistema
deber pulsar el botn Salir, donde aparecer la pantalla que se muestra en la
figura 8, la cual muestra las opciones de Cerrar sesin o Salir del sistema. La
primera opcin permite regresar a la animacin y a los datos calculados, la
segunda opcin es para cerrar la sesin y permitirle el acceso a otra persona, y la
ltima es para cerrar la aplicacin.
Cuadro de resultados de
los calculo hechos en el
mapa cargado
83
Figura 8. Salir.
Botn para
Volver a la
pantalla principal
Cerrar sesin
Cerrar aplicacin en la
forma de ejecucin
84
2. MODO DE USUARIO ADMINISTRADOR
En el modo administrador, usted deber ejecutar el archivo mcd_v1.html
acompaado en la misma ubicacin por los archivos crearMCDFile.php,
mcd_v1.swf y una carpeta llamada files (donde se guardaran los archivo *.MCD),
desde un servidor PHP local o externo, y abrir la aplicacin en un explorador de
Internet.
Inicialmente se cargar la animacin que contiene el mapa del ecosistema, que se
observa en la figura 9.
Figura 9. Carga del mapa del sistema
.
Carga del mapa del ecosistema
85
Luego de haber cargado el mapa, aparecern las opciones de Calcular, Guardar,
Reset, Abrir y Salir, al igual que los campos de entrada de informacin
correspondiente al vector inicial, variables difusas de temperatura y salinidad, y
landa
Figura 10. Pantalla principal de modo administrador.
Campos de
entrada de datos
Ayuda para la utilizacin
de este factor
Descripcin de campos e indicador
de campos faltantes
Cuadro de ayuda
Variable Landa
86
Despus de haber digitado la informacin necesaria en los campos de entrada,
podr realizar los clculos haciendo click sobre el botn Calcular y de esta forma
observar la animacin e iteraciones realizadas por el sistema, como se muestra en
la figura 11.
Figura 11. Clculos.
El botn de expansin que se seala en la figura 11, le permitir ampliar la tabla
de las iteraciones resultantes, como se observa en la figura 12.
Vector de resultados
Resultado de las
operaciones
Botn de expansin
del cuadro de
resultados
87
Figura 12. Cuadro expandido.
Para guardar la animacin deber presionar el botn Guardar, donde aparecer
un campo de entrada, en el cual usted deber digitar el nombre del archivo a
guardar, como se observa en la figura 13.
Botn para contraer el
cuadro de resultados
88
Figura 13. Guardar
Si escogi la opcin Abrir, aparecer la pantalla que se muestra en la figura 14, en
la cual deber digitar el nombre del archivo con la extensin *.MCD en caso de
conocerlo, de lo contrario al hacer click sobre la opcin Buscar se desplegar una
ventana de bsqueda en la cual se ubicar el nombre del archivo, el cual por
defecto se ubica en la carpeta files, tal como se muestra en la figura 15.
Como se muestra en la figura 14, luego de conocer el nombre del archivo deber
pulsar el botn Abrir para cargar la animacin y los datos contenidos en el archivo,
tal como aparece en la figura 16.
Botn para guardar Nombre del archivo
a guardar
89
Figura 14. Abrir.
Botn para
Volver a la
pantalla principal
Nombre del
archivo
Botn de
apertura del
archivo
Botn de
bsqueda
90
Figura 15. Bsqueda de archivo
.
Tendr la opcin de cancelar el proceso de carga de la animacin del mapa,
haciendo click sobre el botn cancelar que aparece en la figura 16.
Extensin
del archivo
Cuadro de
bsqueda
91
Figura 16. Carga de un nuevo mapa.
Al terminar la carga del mapa se mostrarn las iteraciones necesarias para su
creacin, como se observa en la figura 17.
Cancelacin de un mapa que se
este cargando
Carga del nuevo mapa
92
Figura 17. Mapa cargado con su tabla de resultados.
S despus de haber observado la animacin y los datos, desea salir del sistema
deber pulsar el botn Salir, donde aparecer la pantalla que se muestra en la
figura 18, la cual muestra las opciones de Cerrar sesin o Salir del sistema. La
primera opcin permite regresar a la animacin y a los datos calculados, la
segunda opcin es para cerrar nuestra sesin y permitirle el acceso a otra persona
y la ltima es para cerrar la aplicacin.
Cuadro de resultados de
los calculo hechos en el
mapa cargado
93
Figura 18. Salir.
En la pantalla que se muestra en la figura 19, aparecen los nombres de las
personas que fueron participes durante el desarrollo de MCD SIMULATOR 1.0.
Botn para
Volver a la
pantalla principal
Cerrar sesin
Cerrar aplicacin en la
forma de ejecucin
94
Figura 19. Crditos.
Acerca de MCD
95
3. RESTRICCIONES DE MCD SIMULATOR 1.0
En la pantalla de login o inicio de sesin, el password debe ser escrito en letras
minsculas, siendo este para el administrador admin y para el invitado user. Fig.20
Figura 20. Pantalla de inicio de sesin
Password aceptado solo en
letras minsculas
96
Dentro de la pantalla principal de administrador, todos los campos de entrada
(vector de entrada y Variable landa) deben estar llenos en su totalidad, con el valor
o dato aceptado por el sistema como se muestra e la figura 21, para una buena
realizacin de los clculos e iteraciones del MCD.
Figura 21. Restricciones pantalla principal Administrador
Campos de entrada solo
aceptan nmeros
positivos de 0 a 1.
Campos de entrada solo
aceptan valores numricos
Valores de landa numricos
comprendidos entre 0 y 1.
Botones Reset y Guardar
desactivados, hasta previa
ejecucin del botn guardar
97
En la pantalla de administrador de guardar archivo, el nombre del archivo a
guardar debe contener al menos 4 caracteres. Fig. 22.
Figura 22. Restricciones guardar archivo
Nombre de archivo a guardar
mnimo de 4 caracteres.
98
Para abrir un archivo (figura 23) el invitado necesita digitar el nombre correcto de
este, junto con su extensin. Ej. Mapa1.mcd, de lo contrario aparece un mensaje
de error en la apertura del archivo.
Figura 23. Abrir archivo
Se digita el nombre del archivo a
abrir con su extensin (*.mcd).
99
100
MANUAL DE SISTEMA
El diseo y codificacin de MCD Simulator se bas en dos componentes
principales: uno Lgico, donde se incluyen todas las operaciones, clculos
matemticos e iteraciones que realiza el sistema, y un componente visual o
grfico, el cual se encarga de la interfaz visual y la animacin del MCD,
dependiendo de los resultados de los clculos que este reciba.
A continuacin se describen el cdigo y funciones principales de los dos
componentes anteriormente mencionados.
Codificacin componente lgico
1. Variables:
//========================DECLARACION DE VARIABLES================================
var numero:Number; // Variable que almacena datos de los inputs al vector de entrada
var gridSize:Number = 9; // variable que contiene el tamao de los arreglos utilizados
var i:Number; // Contador utilizado en diversos ciclos
var j:Number; // Contador utilizado en diversos ciclos
var vmin:Array = new Array(gridSize); // Arreglo que almacena el producto matricial
var ve:Array = new Array(gridSize); // Arreglo que almacena el vector de entrada
var vr:Array = new Array(gridSize); // Arreglo que almacena el vector resultante
var h:Number; // variable que almacena los clculos de Hamacher
var landa:Number; // variable que interviene en la T-Conorma de Hamacher
var cont:Number; // Contador de elementos iguales entre el vector de entrada y el resultante
var ite:Number = 1; // Contador de iteraciones
var sc:Number; // variable que almacena la sumatoria del producto matricial
var tep:Number; // almacena el valor inicial de la temperatura digitado por el usuario
var py:Number; // almacena el resultado del calculo del nuevo valor de la temperatura
var auxi:Number; // variable auxiliar para el calculo de la temperatura
var salini:Number; // almacena el valor inicial de la salinidad digitado por el usuario
var py2:Number; // almacena el resultado del calculo del nuevo valor de la salinidad
101
var auxi2:Number; // variable auxiliar para el calculo de la salinidad
var cinp:Number; // contador utilizado en el ciclo de llenado del vector de entrada
var hi:Number; // contador utilizado en el ciclo impresin del vector resultante en la 3era fila de ouputs
2. Funciones
calcularDatos: Realiza todas la operaciones necesaria para calcular las
iteraciones y el vector resultante del MCD.
Funcin:
//-----------------------------------------------------
//Calcula todas las operaciones
//-----------------------------------------------------
_global.calcularDatos = function() {
//************* Llenado de los valores en las posiciones de la matriz, en donde existen relaciones del MCD.*************
mat[0][1] = form1["campo"+0].mytf.text;
mat[0][2] = form1["campo"+1].mytf.text;
mat[2][0] = form1["campo"+2].mytf.text;
mat[3][0] = form1["campo"+3].mytf.text;
mat[6][0] = form1["campo"+6].mytf.text;
mat[7][3] = form1["campo"+7].mytf.text;
mat[8][0] = form1["campo"+8].mytf.text;
mat[8][1] = form1["campo"+8].mytf.text;
mat[9][3] = form1["campo"+9].mytf.text;
//*****************************************************************************************
//******************* Calculo del valor de variable difusa temperatura*********************
tep = Number(form1["campo"+4].mytf.text);
if ((tep<5) || (tep>45)) { // Valores < 5 o > 45 la temperatura tendr un efecto negativo de -1 sobre el mangle
py = -1;
} else {
if ((tep<25) && (tep>=5)) { // Valores < 25 y >=5 tendrn una rango de -1 a 0.9 de efecto en el mangle
auxi = (tep-5)*0.1;
py = auxi-1;
}
if ((tep>=25) && (tep<=45)) ( // Valores >= 25 y <=45 tendrn una rango de 1 a -1 de efecto en el mangle
102
auxi = (tep-45)*-0.1;
py = auxi-1;
}
}
//*****************************************************************************************
mat[4][0] = py; // Se almacena el valor calculado en la posicin correspondiente a la temperatura en la matriz
form1["campo"+4].mytf.text = py;
//******************* Calculo de variable difusa de temperatura*********************
salini = Number(form1["campo"+5].mytf.text);
if ((salini<25) || (salini>65)) { // Valores < 25 o > 65 la salinidad tendr un efecto negativo de -1 sobre el mangle
py2 = -1;
} else {
if ((salini<45) && (salini>=25)) { // Valores < 45 y >=25 tendrn una rango de -1 a 0.9 de efecto en el mangle
auxi2 = (salini-25)*0.1;
py2 = auxi2-1;
}
if ((salini>=45) && (salini<=65)) { // Valores >= 45 y <=65 tendrn una rango de 1 a -1 de efecto en el mangle
auxi2 = (salini-65)*-0.1;
py2 = auxi2-1;
}
}
//*****************************************************************************************
mat[5][0] = py2; // Se almacena el valor calculado en la posicin correspondiente a la temperatura en la matriz
form1["campo"+5].mytf.text = py2;
//****************** Imprime los valores de la matriz en el output ********************
for (i=0; i<=gridSize; i++) {
for (j=0; j<=gridSize; j++) {
a = a+mat[i][j]+" ";
output.mytf.text = a;
}
a = a+"\n";
}
//******************************************************************************************
//*************** Se llena el vector de entrada *****************************************
cinp = 0;
for (i=10; i<=19; i++) {
numero = Number(form1["campo"+i].mytf.text);
ve[cinp] = numero;
cinp++;
103
}
*******************************************************************************************
//*************** Se crea la tabla de va ha contener el vector resultante y las iteraciones**********
//output.mytf.text += "\n"+date_str2+"\n";
output.mytf.text += "\n"+"ITERACIONES: "+"\n";
output.mytf.text += " "+""+"\n";
output.mytf.text += " "+" C1C2C3C4C5C6C7C8C9C10"+"\n";
output.mytf.text += " "+""+"\n";
*************************************************************************************************************
***************************************CALCULOS PRINCIPALES DEL MCD ***************************
do {
for (j=0; j<=gridSize; j++) {
//**************** MULTIPLICACIN MATRICIAL ENTRE EL VECTOR DE ENTRADA Y LA MATRIZ *****************
for (i=0; i<=gridSize; i++) {
vmin[i] = Number(ve[i]*mat[i][j]);
}
//******************VALIDA SI UN VECTOR ESTA COMPUESTO SOLO POR CEROS**********************************
sc = 0;
for (i=0; i<gridSize; i++) {
sc = sc+vmin[i]; // Sumatoria de lo elementos del arreglo
}
if (sc != 0) {
//Si la sumatoria no es cero, se aplica la t conorma de hammacher en el arreglo
//******************************** T-CONORMA DE HAMACHER*********************************************************
landa = Number(form1.ye.mytf.text);
h = vmin[0];
for (i=1; i<=gridSize; i++) {
h = (h+vmin[i]-(2-landa)*h*vmin[i])/(1-(1-landa)*h*vmin[i]); // calculo t-conorma de hamacher
}
//*******************************************FUNCIN SIGMOIDAL********************************************************
vr[j] = 1/(1+Math.exp(Number(-h)));
} else {
vr[j] = ve[j];
}
}
//*********************************************************DETENER*********************************************************
cont = 0;
(ite<10) ? output.mytf.text += "0"+ite+" " : output.mytf.text += ite+" ";
for (i=0; i<=gridSize; i++) {
if (ve[i] == vr[i]) {// Compara los elementos del vector de entrada y el resultante
104
cont++; // Si existen elementos iguales se incrementa en contador
}
ve[i] = vr[i]; // Vector resultante se convierte en el prximo vector de entrada
//************************DIVISIONES DE LA TABLA QUE CONTIENE A LAS ITERACIONES***************************
if ((length(vr[i])>=1) and (length(vr[i])<3)) {
tamLinea = " ";
}
if ((length(vr[i])>=3) and (length(vr[i])<=4)) {
tamLinea = " ";
}
if (length(vr[i])>=19) {
tamLinea = " ";
}
if ((length(vr[i])>=15) and (length(vr[i])<=18)) {
tamLinea = " ";
}
output.mytf.text += +vr[i]+tamLinea;
}
//***********************************************************************************************************************************
if (cont>=10) { // Si el cont>=10 el vector resultante es igual al de entrada y se detienen las iteraciones
output.mytf.text += "\n"+" "+""+"\n";
output.mytf.text += "\n"+" Total de Iteraciones: "+ite+"\n";
ite = 0;
} else {
output.mytf.text += "\n"+" "+""+"\n";
}
ite++;
} while (cont<10); // Si cont<10 el vector resultante es diferente al de entrada y deben continuar las iteraciones
hi = 20;
for (i=0; i<=gridSize; i++) {
form1["campo"+hi].toOutput(vr[i]); // Se imprime los elementos del vector final en la 3er fila de outputs
hi++;
}
};
reemplazo: Funcin que se encarga de reasignar un nuevo valor a los elementos
de la matriz que crea la animacin del mapa, para cuando se presente un cambio
en la animacin, los elementos de esta cambien dependiendo del valor que le es
asignado en el reemplazo.
105
Funcion:
//-----------------------------------------------------
//Reasignacion de datos
//-----------------------------------------------------
_global.reemplazo = function() {
for (i=0; i<36; i++) {
for (j=0; j<84; j++) {
if (matrix[i][j] == 1) {
matrix[i][j] = 50;
}
if (matrix[i][j] == 2) {
matrix[i][j] = 60;
}
if (matrix[i][j] == 3) {
matrix[i][j] = 70;
}
if (matrix[i][j] == 4) {
matrix[i][j] = 80;
}
if (matrix[i][j] == 5) {
matrix[i][j] = 90;
}
if (matrix[i][j] == 6) {
matrix[i][j] = 55;
}
if (matrix[i][j] == 7) {
matrix[i][j] = 65;
}
if (matrix[i][j] == 8) {
matrix[i][j] = 75;
}
if (matrix[i][j] == 9) {
matrix[i][j] = 85;
}
if (matrix[i][j] == 10) {
matrix[i][j] = 95;
}
}
}
};
106
cambios: Esta funcin realiza los cambios en la matriz de la animacin,
cambiando los valores de los elementos de la matriz que forman el dibujo de la
animacin, dependiendo del resultado del vector resultante.
Funcion:
//-----------------------------------------------------
//Cambios de datos
//-----------------------------------------------------
_global.cambios = function(vect) {
// ***********************************************DISMINUCION DEL MANGLE****************************************************
var vrRound = vect; // Captura y redondea el valor final del estado del mangle para su posterior evaluacin
if ((vrRound>=40) && (vrRound<=49)) { // Dependiendo del valor de vrRound realiza los cambios en la animacin
for (i=0; i<36; i++) {
for (j=0; j<84; j++) {
if (matrix[i][j] == 50) {
matrix[i][j] = 2;
}
if (matrix[i][j] == 60) {
matrix[i][j] = 3;
}
if (matrix[i][j] == 70) {
matrix[i][j] = 4;
}
if (matrix[i][j] == 80) {
matrix[i][j] = 5;
}
if (matrix[i][j] == 90) {
matrix[i][j] = 6;
}
if (matrix[i][j] == 55) {
matrix[i][j] = 7;
}
if (matrix[i][j] == 65) {
matrix[i][j] = 8;
}
if (matrix[i][j] == 75) {
matrix[i][j] = 9;
}
107
if (matrix[i][j] == 85) {
matrix[i][j] = 10;
}
if (matrix[i][j] == 95) {
matrix[i][j] = 10;
}
}
}
}
if ((vrRound>=30) && (vrRound<=39)) {
for (i=0; i<36; i++) {
for (j=0; j<84; j++) {
if (matrix[i][j] == 50) {
matrix[i][j] = 3;
}
if (matrix[i][j] == 60) {
matrix[i][j] = 4;
}
if (matrix[i][j] == 70) {
matrix[i][j] = 5;
}
if (matrix[i][j] == 80) {
matrix[i][j] = 6;
}
if (matrix[i][j] == 90) {
matrix[i][j] = 7;
}
if (matrix[i][j] == 55) {
matrix[i][j] = 8;
}
if (matrix[i][j] == 65) {
matrix[i][j] = 9;
}
if (matrix[i][j] == 75) {
matrix[i][j] = 10;
}
if (matrix[i][j] == 85) {
matrix[i][j] = 10;
}
if (matrix[i][j] == 95) {
matrix[i][j] = 10;
}
}
108
}
}
if ((vrRound>=20) && (vrRound<=29)) {
for (i=0; i<36; i++) {
for (j=0; j<84; j++) {
if (matrix[i][j] == 50) {
matrix[i][j] = 4;
}
if (matrix[i][j] == 60) {
matrix[i][j] = 5;
}
if (matrix[i][j] == 70) {
matrix[i][j] = 6;
}
if (matrix[i][j] == 80) {
matrix[i][j] = 7;
}
if (matrix[i][j] == 90) {
matrix[i][j] = 8;
}
if (matrix[i][j] == 55) {
matrix[i][j] = 9;
}
if (matrix[i][j] == 65) {
matrix[i][j] = 10;
}
if (matrix[i][j] == 75) {
matrix[i][j] = 10;
}
if (matrix[i][j] == 85) {
matrix[i][j] = 10;
}
if (matrix[i][j] == 95) {
matrix[i][j] = 10;
}
}
}
}
if ((vrRound>=10) && (vrRound<=19)) {
for (i=0; i<36; i++) {
for (j=0; j<84; j++) {
if (matrix[i][j] == 50) {
matrix[i][j] = 5;
109
}
if (matrix[i][j] == 60) {
matrix[i][j] = 6;
}
if (matrix[i][j] == 70) {
matrix[i][j] = 7;
}
if (matrix[i][j] == 80) {
matrix[i][j] = 8;
}
if (matrix[i][j] == 90) {
matrix[i][j] = 9;
}
if (matrix[i][j] == 55) {
matrix[i][j] = 10;
}
if (matrix[i][j] == 65) {
matrix[i][j] = 10;
}
if (matrix[i][j] == 75) {
matrix[i][j] = 10;
}
if (matrix[i][j] == 85) {
matrix[i][j] = 10;
}
if (matrix[i][j] == 95) {
matrix[i][j] = 10;
}
}
}
}
if ((vrRound>=0) && (vrRound<=9)) {
for (i=0; i<36; i++) {
for (j=0; j<84; j++) {
if (matrix[i][j] == 50) {
matrix[i][j] = 8;
}
if (matrix[i][j] == 60) {
matrix[i][j] = 8;
}
if (matrix[i][j] == 70) {
matrix[i][j] = 9;
}
110
if (matrix[i][j] == 80) {
matrix[i][j] = 9;
}
if (matrix[i][j] == 90) {
matrix[i][j] = 10;
}
if (matrix[i][j] == 55) {
matrix[i][j] = 10;
}
if (matrix[i][j] == 65) {
matrix[i][j] = 10;
}
if (matrix[i][j] == 75) {
matrix[i][j] = 10;
}
if (matrix[i][j] == 85) {
matrix[i][j] = 10;
}
if (matrix[i][j] == 95) {
matrix[i][j] = 10;
}
}
}
}
// ***********************************************AUMENTO DEL MANGLE***************************************
if ((vrRound>=51) && (vrRound<=60)) {
for (i=0; i<36; i++) {
for (j=0; j<84; j++) {
if (matrix[i][j] == 50) {
matrix[i][j] = 1;
}
if (matrix[i][j] == 60) {
matrix[i][j] = 1;
}
if (matrix[i][j] == 70) {
matrix[i][j] = 2;
}
if (matrix[i][j] == 80) {
matrix[i][j] = 3;
}
if (matrix[i][j] == 90) {
matrix[i][j] = 4;
111
}
if (matrix[i][j] == 55) {
matrix[i][j] = 5;
}
if (matrix[i][j] == 65) {
matrix[i][j] = 6;
}
if (matrix[i][j] == 75) {
matrix[i][j] = 7;
}
if (matrix[i][j] == 85) {
matrix[i][j] = 8;
}
if (matrix[i][j] == 95) {
matrix[i][j] = 9;
}
}
}
}
if ((vrRound>=61) && (vrRound<=70)) {
for (i=0; i<36; i++) {
for (j=0; j<84; j++) {
if (matrix[i][j] == 50) {
matrix[i][j] = 1;
}
if (matrix[i][j] == 60) {
matrix[i][j] = 1;
}
if (matrix[i][j] == 70) {
matrix[i][j] = 1;
}
if (matrix[i][j] == 80) {
matrix[i][j] = 2;
}
if (matrix[i][j] == 90) {
matrix[i][j] = 3;
}
if (matrix[i][j] == 55) {
112
matrix[i][j] = 4;
}
if (matrix[i][j] == 65) {
matrix[i][j] = 5;
}
if (matrix[i][j] == 75) {
matrix[i][j] = 6;
}
if (matrix[i][j] == 85) {
matrix[i][j] = 7;
}
if (matrix[i][j] == 95) {
matrix[i][j] = 8;
}
}
}
}
if ((vrRound>=71) && (vrRound<=80)) {
for (i=0; i<36; i++) {
for (j=0; j<84; j++) {
if (matrix[i][j] == 50) {
matrix[i][j] = 1;
}
if (matrix[i][j] == 60) {
matrix[i][j] = 1;
}
if (matrix[i][j] == 70) {
matrix[i][j] = 1;
}
if (matrix[i][j] == 80) {
matrix[i][j] = 1;
}
if (matrix[i][j] == 90) {
matrix[i][j] = 2;
}
if (matrix[i][j] == 55) {
matrix[i][j] = 3;
}
if (matrix[i][j] == 65) {
matrix[i][j] = 4;
}
if (matrix[i][j] == 75) {
matrix[i][j] = 5;
113
}
if (matrix[i][j] == 85) {
matrix[i][j] = 6;
}
if (matrix[i][j] == 95) {
matrix[i][j] = 7;
}
}
}
}
if ((vrRound>=81) && (vrRound<=100)) {
for (i=0; i<36; i++) {
for (j=0; j<84; j++) {
if (matrix[i][j] == 50) {
matrix[i][j] = 1;
}
if (matrix[i][j] == 60) {
matrix[i][j] = 1;
}
if (matrix[i][j] == 70) {
matrix[i][j] = 1;
}
if (matrix[i][j] == 80) {
matrix[i][j] = 1;
}
if (matrix[i][j] == 90) {
matrix[i][j] = 1;
}
if (matrix[i][j] == 55) {
matrix[i][j] = 2;
}
if (matrix[i][j] == 65) {
matrix[i][j] = 3;
}
if (matrix[i][j] == 75) {
matrix[i][j] = 4;
}
if (matrix[i][j] == 85) {
matrix[i][j] = 5;
}
if (matrix[i][j] == 95) {
matrix[i][j] = 6;
}
114
}
}
}
};
resetMap: Reinicia los valores que trae por defecto el mapa, lo cual hace que la
animacin vuelva a su estado original
Funcin:
//-----------------------------------------------------
//Resetea el mapa
//-----------------------------------------------------
_global.resetMap = function() {
_global.mapa = _root["world"+1];
for (i=0; i<36; i++) {
for (j=0; j<84; j++) {
_root.world2[i][j] = _root.world1[i][j]; /* Reemplaza los elementos de la matriz con los cambios,
con los de la matriz original, que es una copia de los que tenia antes la matriz que cambio */
}
}
};
myStatus: Imprime el mensaje de ayuda en la barra de estado, junto con la hora
en el que se mostr en pantalla.
Parmetros:
- mytext: Cadena de caracteres que contiene el mensaje de ayuda.
115
Funcion:
//-----------------------------------------------------
//Barra d estado
//-----------------------------------------------------
_global.myStatus = function(mytext) {
statusBar.khead(date_str2+mytext, "", 3, 10); //Muestra la hora seguido del mensaje en la barra de estado
};
enviarDatos: Crea y guarda el archivo que contiene los resultados de las
iteraciones y el vector resultante, los cuales van a establecer los cambios en la
animacin. Ej.: mapa.mcd
Funcin:
//-----------------------------------------------------
//Guardar archivo
//-----------------------------------------------------
function enviarDatos() {
valor = path.vr[0]; // valor almacena el contenido del vector resultante y la ruta donde se encuentra (path)
valorIter = path.output.mytf.text // valorIter almacena el contenido de las iteraciones y su ruta (path)
envio.vect = Math.round(valor*100); // captura el valor del vector resultante en el archivo php
envio.iter = valorIter; // captura el valor de las iteraciones en el archivo php
envio.action = "crear";
// ********Crea y guarda un archivo con extencion *.MCD con el contenido del v,resultante y las iteraciones*********
envio.file = "files/"+saveAs.mytf.text+".mcd";
envio.sendAndLoad("crearMCDFile.php", recibir, "POST");
}
openFileMCD: Luego de que se abre el archivo, esta funcin llama las funciones
que se encargan de generar y hacer los cambios en la animacin del mapa
(descritas anteriormente), de esta forma el invitado puede visualizar la animacin y
los datos del MCD.
Parmetros:
- vect:. Contiene el valor que indica el estado del mangle.
116
- Iter: Contiene la tabla con las iteraciones que han sido realizadas
Funcion:
//-----------------------------------------------------
//Operaciones abrir archivo
//-----------------------------------------------------
_global.openFileMCD = function(vect, iter) {
resetMap(); // Llamado a la function que reinicia la animacin del mapa
matrix = _root["world"+2]; // Se abre la matriz que contiene la animacin del mapa
reemplazo(); // Llamado a la funcin que reemplaza los valores de la matriz del mapa
cambios(vect); // Se realizan los cambios en la matriz del mapa, segn el valor recibido de vect
_global.mapa = matrix;
renderNewMap(); // Se carga la animacin
output.khead(iter, "", 3, 10);
};
onLoad: verifica la existencia del archivo, lee su contenido y lo envia llamando a
la funcion openFileMCD (descrita anteriormente), para que esta realice los
cambios correspondientes en el mapa.
Funcion:
//-----------------------------------------------------
// onLoad
//-----------------------------------------------------
this.importXML.onLoad = function() {
if (success) { // valida el xito en la carga del archivo
xmlNode = this.firstChild; // busca la primera posicin del contenido capturado en php
vect = xmlNode.childNodes[0].attributes.ve; // lee los atributos del contenido del vector resultante
iter = xmlNode.childNodes[0].attributes.out;// lee los atributos del contenido de las iteraciones
back.mrelease();
openFileMCD(vect, iter); /* llama a la function anteriormente descrita (openFileMCD) y esta ejecuta las operaciones para
cargar el MCD, dependiendo del valor de vect (vector resultante) e iter (iteraciones) que le enve */
} else { // Si no existe el archivo muestra el siguiente mensaje de error en la barra de estado
statusBar.khead("Error de carga o archivo inexistente", "", 3, 10); //
}
};
117
CODIFICACION DE COMPONENTE GRAFICO
1. FUNCIONES GLOBALES
Estas funciones son utilizadas por otras funciones las cuales son llamadas desde
cualquier parte del programa; se utilizan para construir el entorno grafico y los
elementos que se incluyen en este como: inputs, ouputs, mensajes, ventanas
emergentes, efectos de animacin, entre otros.
DotRun: Esta funcin se utiliza para indicar que se esta ejecutando un proceso
del programa durante un tiempo determinado, ejemplo: guardando...
Parmetros:
- mydottext: recibe una cadena de caracteres
- char: recibe un carcter
Funcin:
// --------------------------------------------------------------
// Puntos corriendo
// --------------------------------------------------------------
MovieClip.prototype.dotrun = function(mydottext, char) {
if (char == undefined) {
char = ".";
}
this.maxdot = 4;
this.dots = 0;
this.dotdir = 1;
this.onEnterFrame = function() {
this.dots += this.dotdir;
if (this.dots>=this.maxdot) {
this.dotdir = -1;
} else if (this.dots<1) {
this.dotdir = 1;
}
118
this.tempdots = "";
for (dc=0; dc<this.dots; dc++) {
this.tempdots += char;
}
this.mytf.text = mydottext+this.tempdots;
};
};
khead: Esta funcin sirve para escribir una cadena de caracteres de forma
animada, desde su inicio hasta llegar al ltimo carcter, es usada para imprimir los
mensajes de la barra de estado.
Parmetros:
- newtext: Indica el texto que se va ha imprimir
- oldtext: Indica el texto que va a ser sobrescrito
- lspeed: Velocidad en la que aparece el newtext
- blinkdelay: Duracin del efecto intermitente en la escritura del texto
- shadowtext: Texto oculto
- sethtml: Activa los tags html
Funcin:
// --------------------------------------------------------------
// Escribir texto
// --------------------------------------------------------------
MovieClip.prototype.khead = function(newtext, oldtext, lspeed, blinkdelay, shadowtext, sethtml) {
if (sethtml == undefined) {
sethtml = true;
}
this.temptext = oldtext;
this.i = oldtext.length;
if (lspeed == null) {
lspeed = 1;
}
if (blinkdelay == null) {
blinkdelay = 31;
119
}
this.temptext = "";
this.counter = 0;
this.onEnterFrame = function() {
for (mylspeed=0; mylspeed<lspeed; mylspeed++) {
this.temptext += newtext.charAt(this.i);
if ((newtext.charAt(this.i) == "<") and (sethtml)) {
htmlend = newtext.indexOf(">", this.i);
htmladd = htmlend-this.i;
this.i += htmladd;
this.temptext = newtext.substr(0, this.i);
} else {
this.i++;
}
}
this.mytf.htmlText = this.temptext+"_";
if (shadowtext) {
this.mytf2.htmlText = this.temptext+"_";
}
if (this.i>=newtext.length) {
this.mybool = 1;
this.onEnterFrame = function() {
this.counter++;
this.mybool = !this.mybool;
if (this.mybool == true) {
this.mytf.htmlText = this.temptext+"_";
if (shadowtext) {
this.mytf2.htmlText = this.temptext+"_";
}
} else {
this.mytf.htmlText = this.temptext;
if (shadowtext) {
this.mytf2.htmlText = this.temptext;
}
}
if (this.counter>=blinkdelay) {
this.mytf.htmlText = this.temptext;
if (shadowtext) {
this.mytf2.htmlText = this.temptext;
}
this.counter = 0;
delete this.onEnterFrame;
this.finifunc();
120
this.done = true;
}
};
}
};
};
createoutput: Crea dinmicamente un campo de salida de informacin y le
agrega dos barras de desplazamiento en su borde lateral derecho e inferior.
Parmetros:
- outputname: El nombre de la instancia
- x: Posicin en el eje x
- y: Posicin en el eje y
- w: Ancho
- h: Alto
- d: Profundidad
- mytextformat: Formato de texto
- mylabel: Titulo de la etiqueta
Funcin:
// --------------------------------------------------------------
// Crear un output
// --------------------------------------------------------------
MovieClip.prototype.createoutput = function(outputname, x, y, w, h, d, mytextformat, myLabel) {
this.createEmptyMovieClip(outputname, d);
var _local1 = this[outputname];
_local1._x = x;
_local1._y = y;
_local1.w = w;
_local1.h = h;
// dibuja un cuadrado alrededor del campo de texto
_local1.drawbounds();
// importa un clip de la librera y se usa como color de fondo
_local1.setinputback();
121
// crea el campo de texto, aplica el formato, y adjunta las barras de
desplazamiento
_local1.setoutput(mytextformat);
// crea un campo de texto para la etiqueta y le aplica el formato.
_local1.createLabel(myLabel, mytextformat, require);
};
createinput: Crea dinmicamente un campo de entrada y lo configura para que
este pueda ser utilizado en las operaciones posteriores.
Parmetros
:
- inputname: Es el nombre de la instancia del campo de entrada
- x: Posicin en el eje x
- y: Posicin en el eje y
- w: Ancho
- h: Alto
- d: Profundidad
- mytextformat: Formato de texto aceptado en el campo de entrada
- multiline: Verifica si el texto es multilnea
- maxchars: Mximo de caracteres de entrada
- isNum: Verifica si el texto de entrada es numrico
- mytext: Texto que saldra por defecto
- pass: Verifica si es un password en texto de entrada
- mylabel: Titulo de la etiqueta
- help: Crea un clip con el smbolo de ayuda (ayuda de variables difusas)
- disable: Cuando no se pude escribir nada, asigna un color diferente al texto
122
Funcin:
// --------------------------------------------------------------
// Crear Input
// --------------------------------------------------------------
MovieClip.prototype.createinput = function(inputname, x, y, w, h, d, mytextformat, multiline, maxchars, isNum, mytext, pass,
myLabel, help, disable) {
this.createEmptyMovieClip(inputname, d);
var _local1 = this[inputname];
_local1._x = x;
_local1._y = y;
_local1.w = w;
_local1.h = h;
// dibuja un recuadro en alto relive cuando este est activado
_local1.createoutline("outline", 5);
// dibuja un cuadrado alrededor del campo de texto
_local1.drawbounds();
// importa un clip de la librera y se usa como color de fondo
_local1.setinputback();
// crea el campo de texto, aplica el formato
_local1.setinput(mytextformat, multiline, maxchars, isNum, mytext, pass,
disable);
if (myLabel) {
// crea un campo de texto para la etiqueta y le aplica el formato.
_local1.createLabel(myLabel, mytextformat, help);
}
};
createpopbox: Funcin que se encarga de crear un texto emergente de ayuda.
Parmetros:
- n: Nombre de la instancia
- d: Nivel en el que aparece la ventana de ayuda ( nivel superior delante de
todos los elementos del programa)
- w: Ancho
- tmargin: margen
- tcontent: contenido, cadena de texto.
123
- delay: Retrazo en el tiempo en que aparecer la ventana de ayuda.
- tformat: Formato del texto
- big: Cuando requiere ms de una lnea
Funcion:
// --------------------------------------------------------------
// tooltip
// --------------------------------------------------------------
MovieClip.prototype.createpopbox = function(n, d, w, tmargin, tcontent, delay, tformat, big) {
if (tformat == undefined) {
tformat = standardformat;
}
embedfonts = tformat.embedFonts;
this.createEmptyMovieClip(n, d);
this[n]._alpha = 0;
if ((delay == undefined) || (!delay)) {
this[n].createTextField("mytf", 5, tmargin, tmargin, w-tmargin*2, 100);
this[n].mytf.html = true;
this[n].mytf.embedFonts = true;
this[n].mytf.autoSize = true;
if (big) {
this[n].mytf.multiline = true;
this[n].mytf.wordWrap = true;
}
this[n].mytf.htmlText = tcontent;
this[n].mytf.selectable = false;
this[n].mytf.setTextFormat(tformat);
if ((w == 0) || ((w+tmargin*2)>this[n].mytf.textWidth)) {
w = this[n].mytf.textWidth+tmargin*2+4;
this[n].mytf._width = this[n].mytf.textWidth+4;
}
this[n].attachMovie("inputback", "back", 3, {_x:1, _y:1});
// dibuja un recuadro
this[n].mcreateoutline("outline", w, this[n].mytf._height+tmargin*2, 4, 0x333333);
this[n].back._width = w-2;
this[n].back._height = this[n].mytf._height+tmargin*2-2;
// dibuja la sombra
this[n].popshadow(w, h, tmargin);
// aplica una disolvencia
this[n].mfade({_alpha:100}, 2);
124
// se mueve con el mouse
this[n].initpopdrag();
} else {
// lo que debe demorar en aparecer el tip
this[n].popwait(n, d, w, tmargin, tcontent, delay);
}
};
renderNewMap: Esta funcin se encarga de activar una ventana emergente la
cual permite la creacin y cancelacin de un nuevo mapa.
Funcin:
//-----------------------------------------------------
//render new map
//-----------------------------------------------------
_global.renderNewMap = function() {
// esta es la ventana emergente
path.attachMovie("renderCancel", "win_cancelWin", path.getNextHighestDepth(), {_x:0, _y:660});
// cuando se termina de crear la venta llama la funcion createNewMap
path.win_cancelWin.tween("_ry", 492, 0.5, "easeOutExpo", null, createNewMap);
};
createNewMap: Esta funcin se activa despus de ser llamada por
renderNewMap, y se encarga de crear el mapa.
Funcin:
//-----------------------------------------------------
//Creacion del mapa dinamicamente
//-----------------------------------------------------
_global.createNewMap = function() {
// crea un movieclip vacio y lo pone en el nivel que tiene incre
path.createEmptyMovieClip("mapon"+incre, incre);
// adjunta un clip de la librera y lo mente en mapon
eval("mapon"+incre).attachMovie("mapa", "maponCompleto", path.getNextHighestDepth(), {_x:0, _y:60});
// arranca el render
eval("mapon"+incre).maponCompleto.gotoAndPlay("on");
125
// lo convierte en mapas de bits
eval("mapon"+incre).cacheAsBitmap = true;
removeMapOld: Esta funcin se encarga de borrar el mapa ms antiguo despus
de haber creado un nuevo mapa a partir de un nuevo calculo o por efecto de
reinicio de operaciones en el mapa y la animacin (Reset)
Funcin:
//-----------------------------------------------------
// borra el mapa antiguo
//-----------------------------------------------------
_global.removeMapOld = function() {
removeMovieClip(eval("mapon"+(incre-2)));
};
126
127
MODELAMIENTO REALSTICO DE SISTEMAS DINMICOS
COMPLEJOS MEDIANTE MAPAS COGNITIVOS DIFUSOS
David Amaya Beltrn
Antonio Pinedo Herrera
Juan Contreras Montes
Corporacin Universitaria Rafael Nez
Centro, Calle del Tejadillo, No. 38-71
davidamaya24@yahoo.com
tojose@gmail.com
epcontrerasj@ieee.org
Cartagena de Indias
Abstract: se describe un sistema de modelamiento y animacin de sistemas dinmicos
complejos desarrollando en dos componentes: uno consistente en el cdigo para la
modelacin, mediante la implementacin de mapas cognitivos difusos; y el otro consistente
en el mdulo de representacin visual desarrollado en Flash, el cual, ms que una simple
interfaz grfica de usuario, permite una animacin reactiva del sistema de acuerdo al cdigo
recibido del componente de modelacin. Ambos componentes son conectados utilizando el
protocolo de comunicacin TCP/IP, lo que permite que trabajen en mquinas separadas. Se
muestra la representacin de un ambiente de manglar en la que se genera una animacin,
mediante las relaciones y factores que intervienen en este ambiente, para predecir cmo
estas variables afectan la vida y el desarrollo del ecosistema.
Keywords: Mapa cognitivo difuso, efecto causal, animacin reactiva, matriz de Adyacencia
1. Introduccin
En el mundo cada vez es ms importante el manejo de la informacin y la manera cmo
esta puede ayudar a predecir el comportamiento y efectos futuros que pueden presentarse
sobre determinados ambientes o situaciones, por lo que se requiere de avances
significativos en los procesos tecnolgicos para anlisis y procesamiento de las variables y
factores que intervienen, negativa o positivamente, en determinada situacin, con el fin de
conseguir conocimiento a priori de una forma segura y controlada, en un mnimo de
tiempo, que conlleve a
tomar decisiones acertadas y con la anticipacin requerida.
Existen situaciones en donde los modelos matemticos basados en ecuaciones diferenciales
resultan muy tiles para analizar cada una de las variables que intervienen en un
determinado sistema, o proceso, y simular o predecir los cambios que se presenten ante una
excitacin o afectacin del entorno.
128
Sin embargo existen sistemas muy complejos que requiere el empleo de muchas variables y
se posee informacin incierta. Por ejemplo, en el caso del manglar es sabido que la
salinidad tiene un gran efecto sobre su desarrollo; sin embargo, resulta difcil precisar la
relacin exacta que permita plantear una ecuacin concreta. El empleo de las tcnicas
clsicas para la resolucin de estos problemas resulta poco efectivo.
Para la modelacin de sistemas dinmicos complejos, los mapas cognitivos difusos [1]
constituyen una herramienta valiosa para analizar relaciones inexactas que se presentan
entre las variables en diversas situaciones. De esta manera se pueden modelar una gran
variedad de sistemas con un alto grado de complejidad en su dinmica, solucionando as los
inconvenientes o la poca practicidad que se presenta con los mtodos clsicos. En este
documento se presenta como ejemplo la modelacin de un ecosistema de manglar.
Los ecosistemas de manglares en Colombia abarcan aproximadamente 379.954 hectreas
que se reparten entre la Costa Pacifica y la Regin Caribe. Los manglares se desarrollan de
manera natural, en las franjas intermareales de las costas tropicales y subtropicales del
planeta, constituyndose de estas manera en un ecosistema complejo por la interaccin de
cientos de especies de todo los niveles taxonmicos, desde microorganismos hasta especies
de mamferos grandes, incluyendo entre todas estas cientos de clases de peces que son el
sustento de muchas comunidades. El mangle es un ecosistema muy frgil y susceptible al
deterioro por factores externos negativos, entre los que se destacan: el dficit hdrico, la
construccin de obras civiles, la expansin de las fronteras urbanas, desarrollo e
implantacin agrcola e industrial, la contaminacin por hidrocarburos y plsticos y la tala,
entre otros. Se destacan dos factores ambientales muy importantes en la dinmica de los
manglares, estos son la salinidad y la temperatura, ya que de los niveles que tengan estos y
de su interaccin, depende de gran manera la vida del ecosistema manglar. Las altas
temperaturas, en combinacin con una alta radiacin solar y la obstruccin de flujos
hdricos, aumentan la evapotranspiracin y por lo tanto aumenta los niveles de salinidad del
suelo, condicin que resulta perjudicial para el desarrollo del mangle.
2. Mapas cognitivos difusos
Los mapas cognitivos difusos MCDs son grafos dirigidos, en los cuales los nodos
representan los conceptos y los arcos las influencias causales entre estos. La ponderacin de
los arcos indica que tanta influencia ejerce un nodo sobre el otro. Si el valor de la
ponderacin es cero el nodo antecesor no tiene ninguna influencia sobre el nodo
predecesor. Si la ponderacin es positiva existir una relacin causal directamente
proporcional, de manera tal que si hay un aumento o disminucin en la valoracin del nodo
antecesor habr un aumento o disminucin proporcional en la valoracin del nodo
predecesor. Si por el contrario, la ponderacin es negativa, indicar una relacin causal
inversa o negativa.
129
Actualmente se ha recurrido al uso de los Mapas Cognitivos difusos MCD, ya que en estos
no se requiere de extensivos clculos matemticos complejos para obtener nuevos estados,
prediciendo acciones futuras que afecten directamente al sistema. Sin embargo esta
tecnologa algunas veces puede dar datos inexactos o errneos e incluso el sistema puede
entrar en ciclos ilimitados por lo que se necesita de herramientas que eviten dichos
problemas. Una de las soluciones a la posible no convergencia del mapa cognitivo difuso
consiste en buscar mtodos para balancear o equilibrar el mapa antes de su implementacin.
Un mapa cognitivo difuso se considera equilibrado si se encuentran dos o ms lazos entre
dos nodos que tengan relacin causal de signos iguales. En caso contrario, se consideran
desbalanceados o desequilibrados. Para calcular el efecto total que un nodo tiene sobre otro
se deben considerar las relaciones directas y las indirectas que puedan existir. Existen
varias propuestas para calcular el grado de balance del mapa, como las de Nakamura [2] y
Harary [3]. En este proyecto se ha implementado el propuesto por Tsadiras y Margaritis [4],
dado por la ecuacin:
Donde pm es el nmero de semiciclos positivos en el grafo que tienen longitud m, nm es el
nmero de semiciclos negativos que tienen longitud m, y f(m) es una funcin monotnica.
La figura 1 muestra la representacin resumida de un problema en el que intervienen cinco
variables: inversin extranjera C1, nivel de empleo C2, leyes de regulacin C3,
conflictividad social C4 y estabilidad del gobierno C5. Los arcos indican las relaciones
causales entre cada variables, los pesos el grado de afectacin de un nodo sobre otro y los
signos indican si la relacin es directamente proporcional (signo positivo) o inversamente
proporcional (signo negativo).
130
Figura 1. Mapa cognitivo de un problema socio poltico.
La representacin del mapa mediante una matriz de adyacencia se muestra en la figura 2.
Figura 2. Representacin del mapa cognitivo difuso de un problema socio poltico con
matriz de adyacencia
Si el mapa cognitivo de la figura 1 es alimentado con la entrada dada por:
Es decir, una inversin extranjera alta (C1) y una conflictividad social alta (C4). Los
resultados arrojados por el mapa luego de 29 iteraciones est dada en la figura 3
131
Figura 3. Dinmica del problema socio poltico
Los resultados vislumbran que la alta inversin extranjera ocasionar una mejora
considerable de la tasa de empleo (C2), una disminucin de la conflictividad social (C4),
una considerable estabilidad del gobierno (C5) y un efecto nulo sobre las leyes de
regulacin. Adems, la inversin extranjera permanecer en un alto valor fruto de la
mejora en la situacin poltica del gobierno.
3. Implementacin del sistema de modelacin y animacin
La caracterstica principal de un sistema reactivo [5] es que este no se limita a producir un
valor final al terminar sino que est en permanente interaccin con su ambiente, semejante
a un sistema en tiempo real. Por esta razn la animacin de un sistema reactivo requiere
unas caractersticas ms exigentes que una interfaz grfica de usuario.
En este proyecto se ha pretendido desarrollar un sistema integrado por un componente
modelador de sistemas dinmicos y un componente de animacin, los cuales se comunican
utilizando el protocolo de comunicacin TCP/IP, en caso de trabajar en maquinas
separadas. Adems, cada componente es desarrollado independientemente uno del otro por
un grupo de ingenieros de modelacin y diseadores del panel frontal de animacin,
buscando combinar la precisin en el modelo con el panel frontal animado.
Figura 4. Estructura bsica del sistema de modelacin y animacin
132
El componente de modelacin ha sido desarrollado, en una primera fase, en lenguaje C++,
empleando mapas cognitivos difusos. La razn del uso de esta tcnica de modelacin es
sustentada por la gran cantidad de variables que intervienen y la imprecisin, manifestada
por los expertos, de las relaciones causales entre cada una de las variables.
Para el caso del sistema de manglar, las variables que se han considero son: manglar (C0),
fauna (C1), sedimentacin del canal del Dique (C2), tala (C3), desechos industriales (C4),
complejos tursticos (C5), Invasiones (C6), Pobreza (C7), Fenmenos naturales (C8),
precipitaciones (C9), salinidad (C10), flujos hdricos (C11), temperatura (C12) y vas y
muelles (C13). La figura 5 muestra una primera aproximacin de un mapa cognitivo difuso
para un sistema de manglar. Los pesos y signos de las relaciones causales han sido
obtenidas por medio de entrevistas con personal experto y a partir de informacin
estadstica proveniente de la Corporacin Autnoma Regional del Canal del Dique
CARDIQUE, ubicada en Cartagena, Colombia, la cual se encarga, entre otras actividades,
del monitoreo del ecosistema local.
Figura 5. Sistema de manglar representado con mapa cognitivo difuso.
133
Se ha considerado el empleo de la funcin de activacin sigmoidal, de tal manera que los
cambios de estado se hagan de forma continua y permita un ambiente virtual ms ameno.
Tambin es necesario cambiar la operacin de agregacin (OR) MAX por la T- Conorma
propuesta por Hamacher [6]:
donde a y b son dos elementos consecutivos de la columna de la matriz de adyacencia que
se est evaluando, luego de haber sido afectada por el vector de entrada o el vector
resultante de la iteracin inmediatamente anterior.
La T-Conorma de Hamacher evita el problema del operador MAX cuando existen efectos
causales negativos y positivos sobre determinado nodo, ya que este ltimo operador elimina
cualquier valor negativo. Adems, se logran modificaciones ms suaves entre cada
iteracin, consiguiendo un ambiente virtual sin sobresaltos repentinos. Note que si y se
hace igual a cero, la T - Conorma se convierte en la Suma Algebraica. A pesar de que
existen otras TNormas paramtricas, la planteada por Hamacher presenta una mejor
respuesta cuando se trata con valores diversos en el rango [-1,1] Los clculos parciales
arrojados por el mapa cognitivo difuso en cada iteracin son enviados al componente de
animacin, hecho en Flash. Para una entrada representada con un alto valor de sedimentos
del canal del dique (C2) y un crecimiento en los niveles de pobreza en la poblacin (C7)
transforma la imagen inicial del manglar vista en la figura 6 en la imagen final vista en la
figura 7, en una forma gradual muy suave producto de cada iteracin del mapa.
Figura 6. Manglar en buenas condiciones
134
Figura 7. Zona de manglar afectada por alta sedimentacin e invasiones
El sistema (en caso de simulacin) provee informacin sobre las variables, el componente
de modelacin, mediante el mapa cognitivo difuso calcula las variaciones en cada nodo y
enva la informacin al componente de animacin, que se encarga de presentar en forma
visual las afectaciones ocasionadas por cambios en las variables.
4. Conclusiones
Los mapas cognitivos difusos constituyen una herramienta valiosa para analizar relaciones
entre conceptos y para modelar sistemas reactivos con dinmicas tan complejas que son
prcticamente imposibles de modelar mediante ecuaciones matemticas.
Trabajar el sistema de modelacin y animacin de forma independiente tiene ventajas
notables en el tiempo de desarrollo del sistema y da cierta flexibilidad e independencia a los
diseadores y desarrolladores. Sin embargo, requiere definir previamente y con sumo
cuidado las caractersticas de cada componente.
El sistema desarrollado puede ser manejado de forma local, en la misma mquina, o de
manera remota, en mquinas separadas con comunicacin TCP/IP.
Modificaciones ligeras a los pesos de las relaciones causales ocasionan pequeas
modificaciones en los resultados finales. Una seleccin inadecuada de pesos y signos puede
causar desbalance en el mapa, lo cual es detectado por los algoritmos planteados para el
balanceo del MCD.
135
Bibliografa
1. KOSKO, Bart, (1998). Fuzzy Thinking. Hyperion
2. NAKAMURA, K, (1982), Decisin Support Using Causation Knowledge Base, IEEE
Transactions on Systems Man And Cybernetics, vol. 12, pp.765-777
3. HARARY, F., (1959), On The Measurement of Structural Balance, Behavior Science,
vol. 4, pp.316-323.
4. TSADIRAS, A., MARGARITIS, K., (1998), A New Balance for Fuzzy Cognitive
Maps, Department of Applied Informatics, University of Macedonia
5. EFRONI, S., HAREL, D., COHEN, I. (2005).Reactive Animation: Realistic Modeling of
Complex Dynamic Systems. IEEE Computer Society, vol. 38, pp. 38 47.
6. FULLR, Robert, (1995), Neural Fuzzy Systems, Abo Akademy University.