Nota del autor

Si la entrada que estás leyendo carece de imágenes, no se ve el vídeo que teóricamente lleva incrustado o el código fuente mostrado aparece sin formato, podéis conocer los motivos aquí. Poco a poco iré restableciendo la normalidad en el blog.
Este blog es un archivo de los artículos situados previamente en Lobosoft.es y ha dejado de ser actualizado. Las nuevas entradas pueden encontrarse en www.lobosoft.es. Un saludo,
Lobosoft.

martes, 18 de octubre de 2011

La #ormiga de Langton

Uno de mis objetivos durante el presente curso académico es profundizar en algunos campos en los que la informática supone un importante apoyo para el estudio del medio ambiente y la biología. Por ejemplo, desarrollando aplicaciones que hagan uso de sistemas de información geográfica para representar la evolución de poblaciones en un determinado entorno físico. El uso de la inteligencia y la vida artificial para modelar sistemas siempre me ha interesado sobremanera y, ya que Ecología es una de las asignaturas que cursaré en Ambientales durante 2011-2012, espero poder sacar partido a mis conocimientos en la materia para adquirir otros mucho más profundos e interesantes.

Un primer paso lo ha supuesto entretenerme durante la tarde de ayer en programar un algoritmo muy básico dentro del mundo de los autómatas celulares: la hormiga de Langton. Esta primera aproximación la he desarrollado sobre un mundo bidimensional y he implementado dos tipos de malla, una cuadrada que es la que puede verse en el vídeo de ejemplo y una hexagonal, representable en el modo de texto pero de forma no muy intuitiva.

Primera versión de la hormiga de Langton (C# con un visor en modo texto)

Para quienes no la conozcáis, la hormiga de Langton consiste en un sistema determinista, dinámico y discreto, que puede entenderse como un autómata celular, una máquina de Turing bidimensional o un sistema de agentes. Aunque la versión más básica de la misma consiste en un mundo bidimensional infinito (aunque por motivos de representación suelen hacerse simulaciones con toros finitos, como es el caso de mi ejemplo, con el borde izquierdo “unido” al derecho y el superior al inferior) en el que se mueve nuestra hormiga cambiando el color de la celda sobre la que se sitúa en cada momento del tiempo, lo cierto es que resulta interesante extender las características de la hormiga para mostrar movimientos y comportamientos más complejos, como colorear de distinto modo las celdas o moverse según otros patrones o en mundos más complejos. También es posible incluir más hormigas en el sistema, por supuesto.

El comportamiento más básico de la hormiga es el siguiente:
  • Situamos la hormiga en un mundo representado por una malla cuadrada cuyas casillas pueden estar coloreadas de blanco o negro.
  • La hormiga pude moverse en la dirección de cualquiera de los cuatro puntos cardinales, siempre según las siguientes reglas (conjunto básico):
    • Si la hormiga está en una casilla blanca, gira 90º a la derecha, cambia el color de la casilla y se mueve adelante una unidad.
    • Si la hormiga está en una casilla negra, gira 90º a la izquierda, cambia el color de la casilla y se mueve adelante una unidad.
La hormiga fue descubierta al mundo en un artículo de la revista Physica D en 1986 escrito por el especialista en vida artificial (es uno de los padres fundadores de esta línea de investigación) Christopher Langton, que estudiaba por aquel entonces modelos de autómatas simples dotados de comportamientos complejos.

Un par de años después, el entonces estudiante de informática Greg Turk propuso varios ejemplos de máquinas de Turing bidimensionales que “caminaban” sobre su cinta en lugar de hacer que esta se moviese bajo las mismas. Una de esas máquinas resultó ser la hormiga de Langton, y en conjunto recibieron el evocativo nombre de turmites (“turmitas”, algo así como termitas de Turing). El matemático y divulgador A.K. Dewdney dedicó uno de sus artículos en Scientific American a este tema.

Nuestra hormiga hizo una tercera aparición dentro de los modelos para la simulación de dinámica de fluidos a niveles microscópicos en Física. Uno de estos modelos, en concreto el de de Ruijgrok-Cohen, se corresponde con el de una partícula que se mueve entre desviadores que cambian su trayectoria y que pueden ser modificados por los impactos de la misma, igual que ocurre con la hormiga de Langton y el comportamiento que presenta en la malla que comprende su mundo.

El comportamiento de la hormiga es muy curioso. Después de un periodo en el que describe unos movimientos aparentemente caóticos comienza a construir una "autopista" siguiendo un patrón que comprende 104 avances o pasos. En el vídeo que incluyo como demostración esto ocurre a partir de veinte segundos.

Mi intención es liberar el código fuente (está en C#, de ahí lo de #ormiga) que vaya generando a lo largo de mis aventuras en estos mundos virtuales, incluso el de este “periodo de repaso” a algunos sistemas realmente simples, pero lo cierto es que creo que esperaré un poco más antes de publicar el de la hormiga de Langton, ya que me gustaría hacerla mucho más configurable. Ahora mismo es posible cambiar el tipo de rejilla y usar más de un agente en ella, pero no especificar reglas de movimiento para la hormiga o, tal y como me gustaría, tener un mundo tridimensional por el que pueda moverse.

Espero que os interese el tema y que, además, sirva de punto de arranque para una serie de entradas que posiblemente se espacien pero también prolonguen en el tiempo.

2 comentarios:

  1. Hola!

    Aunque llego un mes tarde :( , me ha resultado muy interesante la entrada. Yo no soy ningún experto en autómatas celulares, y sin duda carezco de la pericia informática necesaria para programar alegremente uno de ellos. Pero es un asunto de máximo interés para mi, y estoy aprendiendo (tengo en camino el libro "A New Kind of Science", de Stephen Wolfram: http://www.wolframscience.com/nksonline/toc.html que es un tratado sobre autómatas celulares).

    El proyecto en el que estoy trabajando (y en el que espero poder trabajar un par de años) implica diseñar autómatas celulares y sistemas multi-agente para replicar el comportamiento migratorio del robledal en Sierra Nevada. Espero que en alguna de nuestras sesiones de desvirtualización podamos hablar del asunto!.

    Un abrazo

    Blas

    ResponderEliminar
  2. Muy buenas, Blas.

    Me alegra leerte por aquí, por supuesto, nada tarde. El que tarda en publicar soy yo, pero bueno, es algo de lo que me vengo quejando respecto a mis blogs (es una queja conmigo mismo :)) y a la que espero poner remedio.

    Este mundillo es para mí de lo más interesante. Es más, si lo hubiese descubierto antes posiblemente habría supuesto un cambio en el enfoque que dí a la informática durante mis estudios, pero no fue así, ya que me encontré con ellos una vez terminada la carrera. Estuve estudiándolos un tiempo, y ahora que creo que puedo sacarles más partido junto a los estudios de Ambientales he decidido retomarlos.

    Me encantaría charlar sobre este proyecto en el que trabajas (y trabajarás, ambos lo esperamos) durante un tiempo, ya que es de lo más interesante. Estuve leyendo parte de tu tesis poco antes del periodo de exámenes de septiembre, y tuve que dejarla entonces, pero el uso combinado de SIG, autómatas celulares y sistemas multiagente constituye uno de mis objetivos a corto/medio plazo, a título personal, en algunos proyectos que tengo en mente.

    Dentro de las limitaciones de tiempo que me condicionan, aunque imagino que en el equipo contáis con personal preparado estos menesteres tecnológicos (me consta que sí, pero no sé hasta qué punto puede estar para todo), si os puedo echar una mano en algo contad conmigo: te aseguro que este altruismo vendrá más que recompensado con lo que pueda aprender de vosotros. :)

    Sea como fuere, va a ser un placer charlar contigo de todo esto cuando nos podamos ver en persona.

    Un abrazo.

    ResponderEliminar