INSTITUTO POLITÉCNICO NACIONAL
ESCUELA SUPERIOR DE CÓMPUTO
SUBDIRECCIÓN ACADÉMICA
No.
de serie: TTR050
Serie: Amarilla
Mayo de 2001
Trabajo Terminal
Mundo Artificial Basado
en Sistemas Evolutivos
http://paoneri.terrashare.com/TTdoc.htm
paoneri@mail.com
http://paoneri.terrashare.com
En este trabajo, se presenta el desarrollo de Mundo Artificial. Una aplicación de los Sistemas Evolutivos, los autómatas celulares y las matrices evolutivas al campo de la Vida Artificial, el cual se enfoca a generar ecosistemas simulados por computadora. Algunas posibles áreas de aplicación de este tipo de sistema, se encuentran en el modelado de ecosistemas reales y en el desarrollo de videojuegos evolutivos, los cuales generen nuevos personajes, no planeados, durante el desarrollo del juego.
Su funcionamiento se basa en
el uso de matrices evolutivas, generadas a partir de valores aleatorios, las cuales representan insectos virtuales.
La interacción constante entre insectos produce cambios permanentes en las
matrices que describen los insectos, y, en algunos casos, estos cambios
generan nuevas entradas en las matrices, con lo que se pueden representar
bichos nuevos, no predefinidos, creados con características nuevas basadas en
las características de los padres. Estos cambios en las matrices es lo que le da el carácter de evolutivo al
sistema
Palabras clave: Sistemas Evolutivos, Vida Artificial, Autómatas Celulares, Matrices Evolutivas, Juego de la Vida, insectos virtuales.
CAPÍTULO 2
2.2 Análisis de Mundo
Artificial
2.3 Descripción del
Funcionamiento
CAPÍTULO 3
3.6 Diagrama Integrado de Nivel 2
CAPÍTULO 4
Existen varios artículos que describen la teoría de los
Sistemas Evolutivos, la cual estudia el cambio en los sistemas, producido por
el flujo de información, materia y/o energía y su aplicación a distintas áreas del conocimiento [13], como por ejemplo, al desarrollo de sistemas enfocados al
análisis, reconocimiento y tratamiento de imágenes, así como al desarrollo de
sistemas y/o aplicaciones capaces de modificar su estructura de conocimiento.
Este proyecto propone la aplicación de los sistemas
evolutivos al campo de la Vida Artificial, la cual pretende modelar el comportamiento que siguen los seres vivos
durante su desarrollo y al relacionarse entre ellos y con su entorno.
Apoyándose en la utilización de matrices evolutivas, se representan seres virtuales, que habitan un espacio
simulado por computadora, donde, tanto los seres virtuales, como las reglas que
los rigen, están en constante evolución.
Mundo Artificial, permite visualizar el funcionamiento de
los Sistemas Evolutivos y en especial, el comportamiento y desarrollo de las matrices
evolutivas [10], a través de los seres virtuales vistos en pantalla.
Algunas de sus posibles aplicaciones
son, monitoreo de ecosistemas reales, diseño de simuladores de eventos y modelación de videojuegos evolutivos. Esta
última aplicación se revisa en el artículo
Reseña Cronológica de los Videojuegos y Aplicación de los Sistemas
Evolutivos para su Creación [12].
El documento consta de cuatro partes principales. En la
primera parte, se estudian los antecedentes, explicando brevemente las bases de
la Vida Artificial, la definición de los autómatas celulares, la teoría de
Sistemas Evolutivos, la definición de matrices evolutivas y algunos sistemas
evolutivos existentes. En la segunda
parte, se hace un análisis del funcionamiento de Mundo Artificial, con
ayuda de algunos ejemplos descriptivos. En la tercera parte se presenta el diseño
del sistema, con apoyo de un diagrama de flujo de datos, para explicar el
funcionamiento interno de Mundo Artificial. Y por último, en la cuarta
parte, se presentan la implementación y ejemplos del funcionamiento del
sistema.
Desde la aparición de las primeras computadoras, el hombre
ha soñado con implementar sistemas que sean capaces de reaccionar de manera similar a la de un ser
vivo. Así se crea la Vida Artificial.
“La Vida Artificial
pretende modelar el comportamiento que siguen los seres vivos durante su
desarrollo y al relacionarse entre
ellos y con su entorno” [8]. Un ejemplo de esto, es El juego de la vida, un
problema clásico de la programación creado en 1970 por John H. Conway, el
cual intenta modelar el desarrollo de una población con el uso de puntos
llamados “células”, los cuales interaccionan usando unas cuantas reglas
preestablecidas.
El juego de la vida no es el único ejemplo, otros sistemas
como presa-depredador, peces en un cardúmen
o sistema inmunológico, también son problemas clásicos en el modelado de Vida Artificial [9].
Cuando John H. Conway creo el juego de la vida, muchos
programadores se emocionaron al ver cuantos patrones de movimiento podían
encontrarse al cabo de algunas iteraciones. Los desplazamientos en “manada”,
surgen a la vista sin una aparente
programación previa.
La simple idea de ser creadores de un “mundo propio”
fascinó y sigue fascinando a una gran
multitud de personas dispuestas a escribir unas cuantas líneas de reglas,
alterarlas y más tarde observar el resultado.
En Octubre de 1993, en el VI Congreso Internacional sobre
Informática y Computación, los investigadores Angélica García V., Angélica
Muñoz Meléndez y el Dr. José Negrete presentaron el proyecto Propuesta de un
Mundo Sintético Fundado en Metodologías Basadas en el Comportamiento [11]. Un trabajo que
simula el desarrollo de una criatura en su medio ambiente y el proceso de
adaptación al mismo. Para realizar este proyecto, se dotó de atributos a un ser sintético y se le
programó para ser capaz de
reconocer los elementos que
forman parte del espacio creado para él (como agua, tierra y comida) y
“reaccionar” de manera distinta ante cada uno de estos elementos.
En el
libro Vida Simulada en el Ordenador, la Nueva Ciencia de la Inteligencia
Artificial [16] de Claus Emmeche, se
mencionan los siguientes siete puntos
principales que describen la Vida Artificial:
1) “La biología de lo posible. La Vida Artificial no se restringe a la
vida creada con carbono y es el objeto
de la biología experimental.
2) Método Sintético. Intento de la Vida Artificial por sintetizar
los procesos y comportamientos vitales, por medio de un ordenador.
3) Vida real (artificial). La conducta y los procesos generalizados,
son tan genuinos como la conducta exhibida por los organismos de la vida real.
Lo artificial, de la Vida Artificial descansa en los chips de silicio y
demás componentes del ordenador, que fueron creados por el hombre y no en el
comportamiento, lo cual es producido por la misma naturaleza.
4) Toda la Vida es forma. La vida es un proceso y es la forma
de este proceso, no la materia, lo que constituye la esencia de la vida.
Uno puede ignorar por lo tanto el material y en cambio, abstraer de él la lógica
que gobierna el proceso, tomándolo de la forma material concreta que
conocemos. En consecuencia se puede lograr la misma lógica en otro
revestimiento o sustrato material. La vida es fundamentalmente independiente
del medio
5) Construcción de abajo hacia arriba. En la programación de abajo hacia
arriba, se definen pequeñas unidades y unas pocas y sencillas reglas para su
interacción interna, puramente local, de esta interacción, surge un comportamiento coherente
“global”, no programado previamente. La programación de abajo hacia arriba,
surge del hecho de que nuestras proteínas están “programadas”, en forma
relativamente explícita por el ADN, pero, no hay un gen que especifique
directamente la forma de la cara o el número de dedos.
6) Procesamiento paralelo. El principio de procesamiento de
información en la Vida Artificial, se basa en el paralelismo masivo que ocurre
en la vida real. En la vida real, las células nerviosas del cerebro trabajan
una al lado de la otra, sin esperar a que su vecina “termine su trabajo”.
7) Facilidad de emergencia. La palabra emergencia, se usa para
designar el fascinante todo que se crea cuando muchas unidades semisimples
interactúan unas con otras de una manera compleja”.
En
este mismo libro, se mencionan las Propiedades de la Vida, y son las siguientes:
1) “La vida es una configuración en el
espacio-tiempo.
2) La vida ama la autorreproducción.
3) La vida está asociada con el acopio de información, para su autorrepresentación.
4) La vida prospera con la ayuda del
metabolismo.
5) La vida participa en interacciones
funcionales con el ambiente.
6) Las partes de los seres vivos tienen una
crítica dependencia interna de unas respecto de las otras.
7) La vida exhibe una estabilidad dinámica
frente a perturbaciones.
8) La vida, no la individual, sino, su
linaje, tiene la capacidad de evolucionar”.
En Introduction to Artificial Life [6], Christoph Adami plantea
la simulación de vida desde un punto de vista más abstracto. Para esto, utiliza
herramientas como autómatas celulares y algunas ecuaciones fractales.
Una de
las herramientas mas utilizadas en el desarrollo de sistemas en el área de la
Vida Artificial es el Autómata Celular, propuesto originalmente por el Dr. Von Newman en los
años cuarenta.
En la
página web Autómatas Celulares y Vida Artificial [2], Francisco
Jiménez Morales describe a los
autómatas celulares como retículos que pueden contener un valor, donde
el espacio y el tiempo son cantidades discretas y por lo tanto, son sistemas
dinámicos discretos y pueden definirse en términos del estado o valor de las celdas, la vecindad y la regla local.
El estado o valor, es el dato que contienen, el más común es el de 0 ó 1.
La vecindad, se refiere a los elementos más cercanos al
retículo en estudio, por ejemplo, en un
vector, para un elemento i, sus vecinos son i-1 e i+1.
Los dos tipos más comunes de vecindad son la Vecindad de
Von Newman o vecindad de cuatro
puntos, donde un elemento i, tiene por vecinos a los elementos i+1, i-1, i+n e i-n.
|
|
i-n |
|
|
i-1 |
i |
i+1 |
|
|
i+n |
|
Figura 1.1.1. Elementos vecinos
a i en la Vecindad de Von Newman.
Y la Vecindad de Moore, o de ocho puntos, que considera
no solo a los cuatro anteriores, sino también a los elementos i+n+1, i+n-1,
i-n+1 e i-n-1.
|
i-n-1 |
i-n |
i-n+1 |
|
i-1 |
I |
i+1 |
|
i+n-1 |
I+n |
i+n+1 |
Figura
1.1.2. Elementos vecinos
a i, en
la Vecindad de Moore.
Las reglas, se refieren a
la forma en que se relacionan dos
autómatas celulares, por ejemplo, cambiar de estado cuando
se encuentren dos autómatas con el mismo contenido.
Para entender mas
claramente el papel que juegan las reglas, veamos el ejemplo del Juego de la
Vida.
El juego de la vida, desarrollado por John Conway, intenta modelar
el desarrollo de una población con el uso de puntos llamados “células”, los
cuales interaccionan usando tres reglas
preestablecidas.
1.-Cada elemento permanece vivo, si tiene
dos o tres vecinos (necesita compañía para vivir).
2.-Un elemento muere,
si tiene más de tres vecinos (por sobrepoblación).
3.-Un elemento nace, en un espacio vacío, si tiene
exactamente tres vecinos.
En la figura 1.2.1,
las literales representan células que viven en esta posición.
Así, “A” es una célula que vive en la posición (2,2).
|
|
1 |
2 |
3 |
|
1 |
V |
V |
V |
|
2 |
V |
A |
V |
|
3 |
V |
V |
V |
Figura 1.2.1. Vecindad del elemento “A”.
Se consideran vecinos de “A” a los elementos representados
con “V”, los cuales ocupan una posición
adyacente de “A”. Cada elemento tiene la posibilidad de rodearse de un máximo
de ocho elementos vecinos (Vecindad de Moore).
Para visualizar las reglas mencionadas anteriormente,
partiremos de la situación que aparece en la figura 1.2.2.
|
|
1 |
2 |
3 |
4 |
5 |
6 |
7 |
|
1 |
A |
|
|
A |
|
|
|
|
2 |
|
A |
|
A |
A |
|
A |
|
3 |
|
|
|
|
|
A |
A |
|
4 |
|
|
|
|
|
|
|
Figura 1.2.2. Generación aleatoria de células usando el algoritmo
del Juego de la Vida.
Ahora se analizará la vecindad de cada uno de los elementos
de la figura 1.2.2, siguiendo las reglas citadas anteriormente.
Revisando el elemento “A” de la posición (1,1) de la figura
1.2.2, vemos que tiene un solo vecino y por tanto, para el siguiente estado
(figura 1.2.3), esta posición quedará vacía, pues el elemento morirá por falta
de vecinos (regla no. 1).
|
|
1 |
2 |
|
1 |
|
|
|
2 |
|
A |
Figura 1.2.3. El elemento (1,1)
muere, dejando su espacio vacío.
Podemos adelantar que sucederá lo mismo con el elemento
“A” de la posición (2,2) de la figura 1.2.2, pues también tiene
un solo vecino.
|
|
1 |
2 |
|
1 |
|
|
|
2 |
|
|
Figura 1.2.4. El elemento (2,2)
muere, dejando su espacio vacío.
Para la coordenada (3,1) de la figura 1.2.2, será el caso
contrario, es decir, como el elemento “A”(3,1) de la figura 1.2.2, tiene exactamente
tres vecinos (regla no.3) que son (4,1), (4,2) y (2,2), en la siguiente ronda
(figura 1.2.6) la casilla (3,1) aparecerá llena.
|
|
1 |
2 |
3 |
4 |
|
1 |
A |
|
|
A |
|
2 |
|
A |
|
A |
|
3 |
|
|
|
|
Figura 1.5. Vista parcial de la figura 1.2.2.
La coordenada (3,1) es un espacio vacío,
susceptible de contener una nueva célula,
al tener exactamente tres vecinos.
|
|
1 |
2 |
3 |
4 |
|
1 |
A |
|
A |
A |
|
2 |
|
A |
|
A |
|
3 |
|
|
|
|
Figura 1.2.6. Ahora (3,1) contiene a un nuevo
elemento “A”.
La casilla (4,1) de la figura 1.2.2, permanecerá llena en
la siguiente ronda, al contar con dos vecinos (5,2) y (4,2).
|
|
1 |
2 |
3 |
4 |
5 |
|
1 |
A |
|
|
A |
|
|
2 |
|
A |
|
A |
A |
|
3 |
|
|
|
|
|
Figura 1.2.7. El elemento con posición (4,1), cuenta con
dos vecinos que le permitirán mantenerse vivo
durante la siguiente ronda.
Siguiendo el mismo principio con los demás elementos de la figura
1.2.2, se obtiene como resultado la
figura 1.2.8
|
|
1 |
2 |
3 |
4 |
5 |
6 |
7 |
|
1 |
|
|
A |
A |
A |
|
|
|
2 |
|
|
A |
A |
A |
A |
|
|
3 |
|
|
|
|
|
A |
|
|
4 |
|
|
|
|
|
|
|
Figura 1.2.8. Estado siguiente del mapa propuesto en la figura 1.2.2.
Así se puede continuar indefinidamente, o hasta que ya no
existan elementos.
En la dirección electrónica ./software/jgovida.html
se encuentra un applet que simula el clásico juego de la vida.
Hemos visto que en el Juego de la Vida, las reglas que
controlan el comportamiento de las células están predefinidas. Una posible
modificación sería el permitir que estas reglas cambiaran durante la realización de una partida. El área que estudia a los sistemas capaces
de cambiar sus reglas, procesos y/o estructura, es la de los Sistemas Evolutivos.
A continuación se presentará una breve introducción a este
tema.
Los Sistemas Evolutivos se han desarrollado en varias áreas con muy buenos resultados. Principalmente se aplican al campo de los algoritmos geneticos, las redes neuronales y los automatas celulares.
Durante los años 80’s surgio en México una escuela propia sobre el tema, que tiene entre otros antecedentes [5] los conceptos de Redes Neuronales (1943), Máquinas que Aprenden (1966), Lingüística Matemática (1957) y Fractales de Mandelbrot (inicios de los años 60’s).
A principios de los años 80’s Fernando Galindo Soria inició
el desarrollo de los Sistemas Evolutivos. Fué en 1983 cuando consolidó la
idea y en septiembre de 1986 publicó el artículo Sistemas
Evolutivos [13], en el Boletín de Política Informática del INEGI-SPP, en
la Cd. de México, donde presentó la Teoría de los Sistemas Evolutivos, la
cual actualmente plantea que los sistemas evolucionan como resultado del
constante cambio producido por el flujo de materia, energía e información que los cruza.
Aplicando este enfoque al ámbito de la programación, los
Sistemas Evolutivos estudian la forma de construir sistemas capaces de
modificar sus reglas, procesos, datos, y/o estructura, cada vez que nueva
información ingresa al mismo.
En mi artículo Introducción a la Evolución y los
Sistemas Evolutivos [7] hago una analogía de los seres humanos y los Sistemas
Evolutivos para entender el funcionamiento de estos últimos. En este artículo
describo al ser humano como un Sistema Evolutivo constituido a su vez por
varios sistemas (circulatorio, respiratorio, digestivo, etc.) que trabajan con
un fin común; que el hombre permanezca vivo.
La analogía es la siguiente:
“Cuando un niño toma entre sus manos un
vaso de cristal por primera vez, puede suceder que el vaso resbale o incluso
caiga de sus manos. Esto es a causa del
desconocimiento de la presión que debe ejercer la mano sobre el vaso.
Si esta actividad fuera ejecutada por un
brazo mecánico, ciertamente primero sería necesario “enseñarle” cual es la
presión indicada que debe ejercer para no tirar ni destrozar el vaso.
En
el caso del niño, este conocimiento es absorbido de manera tan
transparente que no es necesario que alguien le haga saber cuanta presión debe
ejercer la próxima vez que tome un vaso de cristal.
Esta capacidad del Sistema (niño) de
modificar su estructura de conocimiento (presión a ejercer) causada por el
hecho de estar en contacto con nueva información, materia y/o energía (vaso de
cristal), es lo que lo hace un Sistema Evolutivo.”
Fernando Galindo Soria menciona en su artículo Sistemas
Evolutivos [13], las siguientes cinco características principales de los
Sistemas Evolutivos:
1) “El sistema debe contener algún mecanismo
que le permita captar la realidad que lo rodea, ya que necesita conocer y estudiar el
ambiente con el fin de detectar las diferencias y cambios que requiere para
poder adaptarse y evolucionar en este medio.
2) El sistema debe ser capaz de almacenar y
representar el conocimiento,
con el fin de construir su propia representación de la realidad y poderla
explorar.
3) El sistema debe ser capaz de “generar”
nuevo conocimiento, a
partir del que tiene almacenado y el
que capta del exterior, con el fin de que pueda proponer cambios o
modificaciones a su imagen de la realidad incluyendo ese nuevo conocimiento.
4) El sistema debe ser capaz de abstraer, a partir de un conjunto de conocimientos
y reglas generales que los representan en forma sintética.
5) El sistema debe ser capaz de establecer un
diálogo con el exterior, con
el fin de que pueda transmitir su conocimiento y propicie el cambio en el
exterior y la retroalimentación de ese cambio hacia el interior.”
Durante
1986, se comenzaron a construir los primeros Sistemas Evolutivos,
principalmente por investigadores de licenciatura en Ciencias de la Informática de la UPIICSA del Instituto
Politécnico Nacional y más tarde en el CENIDET-DGIT de Cuernavaca, Morelos.
Como
ejemplo de estos sistemas, tenemos al Agente Evolutivo Manejador del
Conocimiento [1]
creado en 1997 por el investigador Jesús
Olivares Ceja, el cual se presentó en el X Congreso de la ANIEI sobre
Informática y Computación. Este es un Sistema Evolutivo, encargado de obtener
información de algún texto y extraer de él la información sustanciosa que
produce conocimiento.
En
1993 Fernando Galindo Soria escribió el artículo Matrices Evolutivas
[10], el cual se publicó en Abril de 1998 en la Revista
Científica de la Escuela Superior de
Ingeniería Mecánica y Eléctrica del Instituto Politécnico Nacional. En él,
define a una matriz evolutiva, como un espacio n-dimensional que
permanentemente está cambiando de la siguiente manera: “Originalmente, la matriz evolutiva
está vacía, por lo que el espacio que representa también lo está. Más adelante
cuando llegan las primeras reglas o
imágenes, surgen los primeros puntos, pero estos no están fijos, ya que, cuando
una regla de la matriz evolutiva se modifica, el punto que la representa
también cambia de posición, con lo que, en forma natural, el espacio se está
afinando y evolucionando”.
Como ejemplos de Sistemas Evolutivos que utilizan matrices evolutivas para su desarrollo tenemos los siguientes.
El trabajo Sistemas Evolutivos Generadores de Escenarios Fractales [14], desarrollado por el investigador José Armando Medina May y presentado en el X Congreso Nacional ANIEI sobre Informática y Computación, es un sistema que crea escenarios basados en paisajes que evolucionan bajo el concepto de matrices evolutivas.
En Aplicación de los Sistemas Evolutivos en el Análisis
de Espectros de Rayos Gamma [4], los investigadores Luis E. Torres Hernández, Luis C.
Longoria G., Antonio Rojas Salinas, investigadores del Instituto Tecnológico de
Toluca, diseñaron en 1995 un sistema que utiliza matrices evolutivas, para
analizar espectros gamma y generar huellas de comportamiento a partir de
varios archivos de datos con formatos ASCII. Para ello, se representa al
espectro como un vector, que al agruparlo con otros, forma una matriz. La
operación que se realiza sobre estos vectores depende de sus valores, de manera
que nuevos vectores pueden ser agregados a la matriz.
El Sistema Evolutivo de Reconocimiento de Formas en Dos
Dimensiones [15], desarrollado también en 1995 en la Escuela Superior de
Cómputo del Instituto Politécnico Nacional por los investigadores Karla García
García, Sergio Salcido Bustamante, Alfonso Ventura Silva, está diseñado para
reconocer formas en dos dimensiones, sin que el sistema posea archivos
predefinidos de imágenes, sino, que, almacena los datos que le envía el
digitalizador en memoria y terminado este proceso, compara la forma recibida
con todas las formas que ya conoce, las cuales están enlistadas en un archivo.
En caso de que la forma sea nueva, este aprende bajo la definición que el
usuario proporcione y lo almacena en un archivo nuevo. Por otro lado, cuando la
forma presenta gran similitud con alguna conocida, se crea una nueva, que
contiene características que se suman de cada una de ellas.
En 1999 Horacio Alberto García Salas presentó en la Unidad
Profesional Interdisciplinaria de Ingeniería Ciencias Sociales y
Administrativas del Instituto Politécnico Nacional, la Tesis de Lic. en
Informática titulada Aplicación de los Sistemas Evolutivos a la Composición
Musical. Éste, es un Sistema Evolutivo capaz de crear música basándose en
obras existentes de uno o varios autores. El sistema lee el archivo de música y
obtiene de él la información que lo distingue y lo integra en una matriz
evolutiva. Con esta información, genera una nueva pieza que deja ver matices
del o los autores originales.
Objetivo: Se pretende obtener un
Sistema Evolutivo capaz de manejar elementos programados llamados “seres virtuales”, los cuales vivan, crezcan, se reproduzcan y mueran
basándose en reglas iniciales que serán
modificadas por el propio sistema mientras éste se encuentra en ejecución
(tiempo real).
Requerimientos del sistema:
Para la creación del núcleo del Sistema Evolutivo será necesario contar con
información sobre:
-Teoría y programación de Sistemas Evolutivos
-Información sobre matrices evolutivas
-Control de varios elementos en un programa en ejecución
-Algún lenguaje de programación
Para la creación de los seres virtuales será necesario
contar con información sobre:
-Vida Artificial
-Programación del problema clásico del juego de la vida
-Información sobre autómatas celulares
-Detección de características y atributos inherentes a un
ser
Basado en el contexto de la Vida Artificial y los Sistemas
Evolutivos, se crea el proyecto Mundo Artificial Basado en Sistemas
Evolutivos, el cual es un espacio simulado por computadora donde existen
toda clase de seres parecidos a
insectos llamados “bichos”, los cuales poseen características que los
distinguen como forma, color y tiempo de vida.
Los bichos pueden
nacer, alimentarse, reproducirse y morir dentro de un ambiente simulado llamado
mapa.
Un bicho, posee diferentes características que lo
distinguen, como forma, color, tiempo de vida, madurez reproductiva y fuerza de
ataque. Todas estas características, definen una especie.
Dos bichos de la misma especie pueden reproducirse y crear
otro bicho idéntico a ellos. Y también,
dos bichos de diferente especie pueden reproducirse para generar una
nueva especie. Debido a lo anterior,
habrá especies que desaparezcan y otras nuevas que surjan con el paso del
tiempo haciendo que las especies de bichos se mantengan en constante evolución.
Las reglas que rigen a los bichos para reproducirse y
alimentarse, dependen directamente de las características de la especie a la
que pertenecen. Como los bichos, son
evolutivos, las reglas que los rigen, se establecen cada vez que una nueva
especie es creada, así, estas reglas y las características de cada bicho, están
en constante evolución.
Al igual que en el juego de la vida, en Mundo Artificial se
crea una matriz que almacena la ubicación
de cada bicho en pantalla, a la que llamaremos mapa.
Una vez que un bicho ha sido activado o marcado con
el estado “vivo” dentro del mapa, su contador de tiempo de vida se decrementa
en una unidad por cada ciclo, al igual que la ingesta o cantidad de comida que
se supone tiene al iniciar. Desde este
momento, el bicho debe mantener su ingesta arriba de 0, para evitar morir de
hambre. Una vez que su contador de tiempo de vida o ingesta llegue a 0, el
bicho pasa al estado “muerto” y la celda que lo contiene se vacía, quedando
libre para almacenar a un nuevo bicho.
Nota: La vecindad
que se utilizará, será la de ocho, vecinos.
Dentro del mapa, a cada bicho le pueden ocurrir tres cosas:
- Que se alimente
- Que se reproduzca
- Que muera
Alimentación
Se considera que el bicho requiere alimento si su ingesta
actual (cantidad de alimento ingerido hasta ese momento), es menor a la ingesta
máxima (cantidad máxima de alimento que puede ingerir, determinada por la
especie a la que pertenece). Si no tiene
hambre no comerá.
Para poder alimentarse un bicho debe:
-tener hambre
-encontrar una presa en su vecindad
-tener permitido alimentarse de la especie a la que
pertenece su presa.
Para ejemplificar esto,
se ha seleccionado al bicho de especie “A”, que se encuentra en la
posición (1,1), en la figura 2.3.1.
En la figura 2.3.1, los bichos son representados con
letras. Letras iguales simbolizan
bichos de especies iguales y letras diferentes, simbolizan bichos de especies
diferentes.
En la posición (1,1),
“A” representa un bicho de especie “A”, vecino a un bicho de
especie “B”.
|
|
1 |
2 |
|
1 |
A |
|
|
2 |
|
B |
Figura 2.3.1. A y “B” son dos
bichos vecinos de diferentes
especies
En este ejemplo, suponemos que al analizar el atributo de
Fuerza de ataque, se descubre que “A”tiene mayor fuerza que “B”.
Siendo “B” más débil que “A”, entonces, “A”se alimenta
de “B”, eliminándolo de la celda que lo contiene y moviéndose a este lugar.
|
|
1 |
2 |
|
1 |
|
|
|
2 |
|
A |
Figura 2.3.2
“A”se alimenta de “B”
y se desplaza a la posición de “B”.
Si por el contrario, se encuentra que “B” es más fuerte que “A”, entonces, “A” intenta
alejarse para evitar ser devorado.
En la figura 2.3.3,
“A”es más débil que “B”.
|
|
1 |
2 |
3 |
|
1 |
|
A |
|
|
2 |
|
|
B |
Figura 2.3.3. “A”tiene menor fuerza
de ataque que “B”
Al ser “A”una posible presa de “B”, “A”busca una espacio,
que se encuentre en su propia vecindad,
y que a la vez, se encuentre lejos de “B”.
En la figura 2.3.4, “A”se aleja de “B” para no morir.
|
|
1 |
2 |
3 |
|
1 |
A |
|
|
|
2 |
|
|
B |
Figura 2.3.4. “A”que antes estaba en
la posición (2,1) se ha mudado a la
posición (1,1) para evitar servir de
alimento a “B”
En estos casos en que uno bicho es mas fuerte que el otro,
“A”y “B” tienen la posibilidad de interactuar, porque las reglas de
alimentación lo han permitido, pero,
puede suceder que, aunque “A”sea más fuerte que “B”, las reglas establecidas al crearse la
especie, no permitan que “A”se alimente de “B”.
En la figura 2.3.5,
“A”es más débil que “B”.
|
|
1 |
2 |
3 |
|
1 |
|
A |
|
|
2 |
|
|
B |
Figura 2.3.5. “A”se mantiene en su posición,
al no estar en peligro de ser alimento de “B”.
Suponemos que al analizar las reglas de Alimentación, se descubre que “B”
no puede alimentarse de “A”, entonces, el siguiente estado se verá
igual, pues “A”no puede realizar ningún
cambio.
Reproducción
Dos bichos se reproducen, cuando generan otro bicho nuevo,
a partir de los valores de sus propios atributos.
Para poder reproducirse, un par de bichos debe:
- haber alcanzado la madurez reproductiva
(determinada por las características de la
especie, es un valor que fluctúa entre 0 y el valor del máximo tiempo de
vida).
- ser compatibles
En la figura 2.3.6,
los bichos de las posiciones (1,1) y (2,2) son de la misma especie.
|
|
1 |
2 |
|
1 |
A |
|
|
2 |
|
A |
Figura 2.3.6. “A”(1,1) y “A”(2,2)
pertenecen a la misma especie.
Suponiendo que ambos bichos
han alcanzado la madurez reproductiva, es decir que ambos han rebasado el
tiempo de vida mínimo necesario para considerar que pueden reproducirse, se
procede analizar la compatibilidad entre ambos.
Para verificar la
compatibilidad se analizan las reglas de reproducción generadas al crearse la
especie “A”.
Suponiendo que son compatibles, ya que son de la misma especie, ahora pueden
crear otro bicho de la misma especie en un espacio vecino a ambos bichos.
En la figura 2.3.7, se ha
creado un nuevo bicho en la posición 2,1.
|
|
1 |
2 |
|
1 |
A |
A |
|
2 |
|
A |
Figura 2.3.7. “A”(2,1) es el
resultado de la reproducción
de “A”(1,1) y “A”(2,2).
Ahora veamos el caso en que se reproducen dos bichos de
especies diferentes.
En la figura 2.3.8,
“A”(1,1) y “B”(2,2) son de especies diferentes.
|
|
1 |
2 |
|
1 |
A |
|
|
2 |
|
B |
Figura 2.3.8 “A”y “B” son de
diferentes especies.
Al analizar la compatibilidad de “A”(1,1) y “B”(2,2)
suponemos que tienen permiso de reproducirse y entonces, “A”(1,1) y
“B”(2,2) generan la nueva especie “C”,
ubicada en (2,1).
|
|
1 |
2 |
|
1 |
A |
C |
|
2 |
|
B |
Figura 2.3.9 “A”y “B” se
reproducen generando
la nueva especie “C”.
El bicho de especie “C”,
no es idéntico a “A”ni a “B”, si no que es un bicho de una nueva especie producto de ambos
padres. Por lo tanto, tiene
características de ambos y a la vez, sus propias características.
Para realizar este proceso, se permite que los valores posibles de cada una de las características
que definen a la especie puedan caer en
uno de los siguientes casos:
-el valor sea idéntico al de la especie “A”
-el valor sea idéntico al de la especie “B”
-el valor sea un promedio de los valores de las especies
“A”y “B”
-el valor sea aleatorio
Este último, le
dará la oportunidad de contener información nueva.
Muerte
Se considera que un bicho muere, cuando:
-el tiempo de vida finaliza
-ha terminado su reserva de alimento
-es devorado por un depredador
En la figura 2.3.10,
“A”(1,1) esta a punto de finalizar su tiempo de vida.
|
|
1 |
2 |
|
1 |
A |
|
|
2 |
|
B |
Figura 2.3.10. El contador
de tiempo de vida de “A”,
esta a punto de llegar a 0.
Después de algún tiempo,
“A”(1,1) desaparece, pues su tiempo de vida ha terminado.
|
|
1 |
2 |
|
1 |
|
|
|
2 |
|
B |
Figura
2.3.11. “A”desaparece
al
finalizar su tiempo de vida.
Como se puede ver en el diagrama 3.1.1 de nivel 0, el sistema se encuentra en interacción permanente con tres almacenes de información, que son: el mapa de ubicación, las especies y las reglas.
De estos tres, obtiene la información necesaria para representar a cada uno de los insectos virtuales que existan en la pantalla, las características de la especie a la que pertenecen y las reglas que actúan sobre ellos, respectivamente.
Esta información al ser procesada, reingresa a su respectivo almacén, alterando el contenido existente y manteniéndose en constante evolución.
![]() |
Diagrama 3.1.1. Diagrama de nivel 0 de Mundo Artificial.
Cada especie tiene un
conjunto de características que distinguen a los bichos que forman parte de
ella y son:
Ø Identificador
de la especie
Ø Tiempo
Máximo de Vida
Ø Madurez
Reproductiva
Ø Fuerza
de Ataque
Ø Color
(RGB)
Ø Numero
de puntos que forman el cuerpo
Ø Numero
de patas
Ø Coordenadas
de los puntos que definen la forma del cuerpo
La especie se
almacena como un vector dentro de una matriz que contiene todas las
especies de bichos.
En la tabla 3.2.1 se presenta un ejemplo de almacén de especies de bichos. En ella se han guardado cuatro especies diferentes y los valores han sido adquiridos aleatoriamente.
|
Especie |
Características de la Especie |
|||||
|
Tiempo
de Vida |
Madurez
Reproductiva |
Fuerza
de Ataque |
Pares de patas |
Puntos
que forman el cuerpo |
Color
(RGB) |
|
|
1 |
4586 |
3586 |
78 |
4 |
8 |
123,233,25 |
|
2 |
1256 |
426 |
42 |
5 |
10 |
111,98,23 |
|
3 |
7851 |
3586 |
78 |
7 |
5 |
23,11,255 |
|
4 |
4256 |
3589 |
47 |
3 |
3 |
1,34,45 |
Tabla 3.2.1. Información de cuatro especies de insectos virtuales.
Ya que las características Tiempo de Vida, Madurez Reproductiva y Fuerza de Ataque, determinan el comportamiento del bicho, estas características establecen, las reglas de comportamiento del bicho.
Las figuras 3.2.1 a) a 3.2.1 f) muestran ejemplos de bichos generados con un applet generador de bichos que se encuentra en la dirección electrónica ./software/generabichos.html .
Figura 3.2.1 a) Figura 3.2.1 b)
Figura 3.2.1 c) Figura 3.2.1 d)
Figura 3.2.1 e) Figura 3.2.1 f)
Figuras 3.2.1 a) a 3.2.1 f) Especies de bichos creados con el applet generador de bichos.
Las reglas son la forma en
que interactúan dos bichos que se encuentran activos dentro del mapa, ya sean
de la misma especie, o de diferente especie, se determina de acuerdo a las
reglas generales que rigen el ambiente en que se desarrollan los bichos,
llamadas simplemente reglas. Estas pueden ser de alimentación o de
reproducción.
Las reglas se guardan en una matriz que contiene la información de la acción a realizar cuando dos bichos se encuentran.
En la tabla 3.3.1, se muestra la estructura de una regla de ambiente, que dará la información necesaria para realizar la acción correspondiente, cuando dos bichos de dos especies x y y se encuentren.
|
Regla 1 |
b1 |
b2 |
b3 |
b4 |
.. |
bn |
|
b1 |
|
|
|
|
|
|
|
b2 |
|
|
|
|
|
|
|
b3 |
|
|
|
|
|
|
|
b4 |
|
|
|
|
|
|
|
. . |
|
|
|
|
|
|
|
bn |
|
|
|
|
|
|
Tabla 3.3.1. Estructura general de que forma una regla. En ella se han creado n columnas
y renglones, relacionadas con n especies diferentes de bichos existentes en el
mapa de ubicación.
La tabla 3.3.1 contiene n columnas y renglones, correspondientes a n especies diferentes.
En general, una regla
contendrá tantas columnas y renglones como especies de bichos existan en el
mapa.
Las matrices mostradas en las figuras 3.3.1 a 3.3.4, fueron generadas con el applet generador de reglas que se encuentra en la dirección electrónica ./software/generareglas.html.
En ellas se muestra detalladamente, el contenido de la matriz cuando se agregan 1, 2, 4 y 6 elementos distintos. La matriz inicial no contiene elementos y conforme estos se insertan, la matriz aumenta sus dimensiones.
Figura 3.3.1 Matriz de un solo elemento. Figura 3.3.2 Matriz de dos elementos.
Figura 3.3.3 Matriz de cuatro elementos. Figura 3.3.4 Matriz de seis elementos.
La tabla 3.3.2, ejemplifica una matriz que guarda la información de las reglas que siguen los bichos para reproducirse, considerando la existencia previa de cuatro especies diferentes de bichos.
|
Reproducción |
b1 |
b2 |
b3 |
b4 |
|
b1 |
1 |
0 |
0 |
0 |
|
b2 |
0 |
1 |
0 |
0 |
|
b3 |
1 |
0 |
1 |
0 |
|
b4 |
0 |
1 |
0 |
1 |
Tabla 3.3.2. En esta tabla, se ha guardado la información necesaria
para realizar la regla de reproducción de cuatro especies de bichos.
En ella se muestra, que al relacionar b1 con b1, será posible la
reproducción, pero al relacionar b2 con b3, no será posible la
reproducción. No así con b1 y b3, los cuales podrán reproducirse.
En un inicio, las matrices
que contienen las reglas, se encuentran vacías, pero conforme aumentan las
especies de bichos, la matriz crece. Cuando las condiciones son propicias, dos
bichos de especies diferentes se unen para crear un nuevo bicho, haciendo que
también dos reglas iniciales se unan para crear una nueva regla. Es este
proceso el que hace que la matriz que
contiene las reglas sea una matriz evolutiva.
El mapa es una matriz que contiene información de los bichos que han sido activados, es decir que han “nacido”, en el sistema. Cada bicho es almacenado en un retículo que puede ser visto como un autómata celular de manera individual, pues cada bicho tiene un estado, vecinos y reglas que lo rigen.
Al nacer, el bicho es
registrado dentro de la matriz, con el estado “vivo”, guardando el
identificador de la especie a la que pertenece el bicho, el tiempo de vida y la
ingesta o cantidad de alimento de reserva, que varía de acuerdo a la especie a
la que pertenece. A partir de este
momento, el tiempo de vida y la ingesta
decrecen hasta el momento en que los contadores lleguen a 0. En ese
momento el bicho pasa al estado “muerto”.
La figura 3.4.1, representa una generación de bichos de diferentes especies que existen dentro del mapa.
|
b1 |
b3 |
b2 |
|
b4 |
|
B1 |
b4 |
|
b2 |
|
|
|
|
|
b3 |
|
B2 |
|
b1 |
|
|
b2 |
b4 |
b1 |
b4 |
|
|
|
b3 |
b4 |
b3 |
|
|
|
|
|
b4 |
|
B4 |
|
b4 |
|
|
b4 |
b3 |
b2 |
|
b2 |
|
B1 |
|
b3 |
b2 |
|
|
b1 |
|
b3 |
|
|
|
|
|
|
|
b3 |
|
|
|
|
|
B2 |
b1 |
b4 |
|
|
|
b4 |
|
b4 |
b1 |
|
|
|
|
b3 |
|
|
|
b1 |
|
|
|
B3 |
|
b2 |
|
|
b2 |
|
|
|
b2 |
B4 |
|
b4 |
|
b1 |
Figura 3.4.1. Mapa de ubicación que contiene cuarenta y cinco
bichos de cuatro especies diferentes.
Las figuras 3.4.2 a) y 3.4.2 b) son ejemplos de mapas creados con un applet generador de mapas que se encuentra en la dirección electrónica ./software/generamapa.html.
En las figuras se pueden observar dos mapas que contienen a varios bichos de distintas especies.
Figura 3.4.2 b)
Figuras 3.4.2 a) y 3.4.2 b) Ejemplos de mapas de ubicación creados con el applet generador de mapas.
En el diagrama 3.5.1 de nivel 1 se muestran los tres procesos principales que componen al sistema. Después de ejecutarse el Inicializado del Sistema, el Manejador del Desarrollo de los bichos y el Actualizador del Sistema se ejecutan en forma concurrente, es decir, simulando que se corren al mismo tiempo en un solo procesador, para permitir una mayor similitud con el mundo real.

Diagrama 3.5.1. Diagrama de nivel 1 de Mundo Artificial.
Inicializador del Sistema
Se encarga de generar las especies de bichos, el mapa de
ubicación y las reglas que operarán sobre los bichos.

Diagrama 3.5.2. Explosión del proceso Incializador del Sistema.
Actualizador del sistema
Decrementa el tiempo de vida y la ingesta actual (cantidad
de reserva de alimento) de cada uno de los bichos existentes en el mapa.
Depura a los bichos muertos del mapa, es decir, a los
bichos cuyo tiempo de vida o ingesta es nula y por tanto, pasan al estado muerto.
También se encarga de actualizar la imagen en pantalla de los bichos que
permanecen vivos.
Diagrama 3.5.3. Explosión del proceso Actualizador del Sistema.
Manejador del desarrollo de los bichos
Se encarga de seleccionar un bicho existente en el mapa y una regla del almacén de reglas, y aplicar esta última sobre el bicho. En
este paso se hace posible la modificación de las reglas, las especies y el
mapa, a través del proceso de
reproducción, que puede generar un bicho de una nueva especie, el cual
será insertado en el mapa y agregado como una nueva línea a cada una de las reglas existentes en el
almacén de reglas y como una nueva especie en el almacén de especies.
Diagrama 3.5.4. Explosión del proceso Manejador del Desarrollo
de los Bichos.
El siguiente diagrama, es la integración de los diagramas 3.5.2, 3.5.3 y 3.5.4.

Diagrama 3.6.1. Integración de los diagramas 3.5.2, 3.5.3 y 3.5.4.
En este capítulo se mostrarán algunos ejemplos del funcionamiento del sistema Mundo Artificial.
El sistema se implementó en el leguaje de programación Java. La razón es la facilidad que ofrece este lenguaje en la programación de hilos. Los hilos son herramientas que permiten ejecutar varios procesos de un programa, simulando que cada uno tiene su propio procesador para su ejecución.
En la dirección electrónica http://paoneri.terrashare.com/software/p1.html, se encuentra un applet que permite visualizar el sistema Mundo Artificial Basado en Sistemas Evolutivos.
En la figura 4.1, se ha creado una generación aleatoria de bichos, en un applet que corre en una ventana.
Figura 4.1. Generación de
bichos creada por el sistema “Mundo Artificial”.
Después de algún tiempo, la especie predominante ha rebasado en número a las demás especies.
Figura 4.2. Generación de
bichos obtenida después de algún tiempo
de ejecución del
sistema “Mundo Artificial”. La
especie predominante
ha acaparado el espacio.
Ahora se ha creado otro mapa con nueve especies distintas.
Si observamos a los dos bichos que se encuentran en la esquina superior izquierda, vemos que son vecinos.
Figura 4.3. Mapa generado con el sistema Mundo Artificial donde se ha
puesto especial atención a los dos bichos de la esquina superior izquierda.
Poco tiempo después, el bicho que se encontraba en la parte superior izquierda más alta de la figura 4.3, aparece en segundo lugar de arriba hacia abajo y de izquierda a derecha en la figura 4.4 y un nuevo bicho a ingresado en su posición anterior. Esto se debe a que los bichos vecinos mencionados al inicio, interactuaron como alimento uno de otro, moviéndose el depredador al lugar de la presa y dejando libre el espacio original del depredador para almacenar a un nuevo bicho.
Figura 4.4. Después de algún tiempo, los bichos han cambiado respecto
a la figura 4.3.
En el mapa de la figura 4.5, los bichos de la segunda columna “mueren “, dejando su espacio vacío como se ve en la figura 4.6, mientras que el bicho de la tercera columna de la figura 4.5, se desplaza a la segunda columna en la figura 4.6. Seguramente, esto se debe a que intenta huir de algún depredador que se encuentra en su vecindad.
Figura 4.5.Mapa generado con Mundo Artificial.
Figura 4.6. Los bichos de la segunda columna han desaparecido y el bicho de la tercera columna se ha desplazado a la segunda columna para mantenerse a salvo de algún depredador cercano.
Puesto que el bicho de la segunda columna en la figura 4.6 solo tenía un vecino en la figura 4.5, podemos saber que es precisamente este vecino depredador quien lo obligó a mudarse, recorriéndose una posición.
En
el presente trabajo se propuso la aplicación de la teoría de los Sistemas
Evolutivos y los automatas celulares al área de la Vida Artificial,
como una herramienta en la simulación de espacios de vida, usando en particular
las matrices evolutivas. Dando como resultado un espacio simulado donde
seres virtuales llamados bichos nacen, crecen, se reproducen y mueren bajo
el control de reglas que se crean y modifican constantemente.
Durante la ejecución del sistema fue posible distinguir los patrones de comportamiento de algunas especies. Por ejemplo, se encontraron algunas especies cuyo comportamiento era similar a la de una manada de leones, es decir, el número de bichos creados era relativamente pequeño mientras que la fuerza de ataque era grande, haciendo que la manada se separara del resto de los bichos, dejando un espacio claramente delimitado a su alrededor.
Algunos mapas concluyen con la muerte de todos los bichos, mientras que otros, logran establecer un equilibrio entre la reproducción y la alimentación de algunos grupos de especies. Este proceso es el que resulta mas parecido al funcionamiento que tiene un ecosistema en equilibrio, en donde, una especie produce suficientes crías como para no extinguirse cuando otra especie mas fuerte se alimenta de ella.
Memorias del X Congreso Nacional ANIEI sobre
Informática y Computación
Monterrey, N. L. Octubre 1997
Francisco Jiménez Morales.
http://complex.us.es/~jimenez/CA/ac/ac.html
Memorias de la Primera Conferencia de Ingeniería
Eléctrica CIE/95
CINVESTAV del IPN.
Cd. de México. Septiembre 1995
http://paoneri.terrashare.com/Articulos.htm
ESCOM del IPN
Cd. de México. Noviembre 2000
UPIICSA del IPN
Cd. de México. Noviembre 1989
Editorial Telos (http://www.telospub.com)
http://paoneri.terrashare.com/Articulos.htm
ESCOM del IPN
Cd. de México. Septiembre 2000
http://paoneri.terrashare.com/Articulos.htm
ESCOM del IPN
Cd. de México. Enero 2001
Pagina web con información descriptiva sobre el área
de la Vida Artificial
http://maloka.org/virtual/vida/evolucion.htm
Revista Científica num. 8
Editorial
de la ESIME del IPN
Cd.
de México. Marzo – Abril de 1998
Memorias del VI Congreso Nac. sobre informática y
computación organizada por la
Asociación Nac. de Instituciones de Educación en Informática (ANIEI)
Mérida,
Yucatán. Octubre 1993
http://paoneri.terrashare.com/Articulos.htm
ESCOM. del IPN
Cd.
de México. Octubre 2000
Boletín de Política Informática del INEGI- SPP.
Cd. de México.
Septiembre de 1986
Memorias del X Congreso nacional ANIEI sobre
Informática y Computación
Monterrey, N. L. Octubre 1997
Teoría y Práctica de los Sistemas Evolutivos
Editor Jesús
Olivares Ceja (www.jesusolivares.com)
Cd. de México, 1997
Colección Limites de la Ciencia
Editorial Gedisa (http://www.gedisa.com)
Octubre de 1988
PROYECTO DESARROLLADO EN LA
ESCUELA SUPERIOR DE CÓMPUTO DEL
INSTITUTO POLITECNICO NACIONAL
CD. DE MÉXICO, MÉXICO
MAYO 2001