Dealing with Noisy Fitness in the Design of a RTS Game Bot

This paper is a part of my Final Degree Project and it’s the result of our participation in the Google AI Contest of 2010. It’s also my first presentation in an conference, and the first time in English. In this paper we talk about the design of a bot that can play (and win) to the game Planet Wars. In this post we can read the rules of the contest and the game.

In this paper, we study the impact of the noisy fitness in the desing of the bot, because the choose of a bad fitness can make useless the genetic algorithm.

The presentation can be found here:
http://www.slideshare.net/antaress/dealing-with-noisy-fitness-in-a-rts-game-bot-design

This paper was accepted in the EvoGame and was nominated for the best paper.

MorAnts. Mi primera investigación ‘rentable’

Pues si. :D

Recientemente y compaginando, por una parte el I Hackatón del reto de inteligencia artificial de Google en la UGR, propuesto por la Oficina de Software Libre de dicha universidad, y por otra el Google AI Challenge 2011, me decidí a participar en ambos ‘concursos’, creando un bot capaz de jugar de forma autónoma (y combatir contra otros rivales) al juego ANTS, implementado para la ocasión por el Computer Science Club de la Universidad de Waterloo.

Grosso modo, se trata de un juego de estrategia en tiempo real en el que debemos dirigir a una serie de hormigas en mapas generalmente laberínticos, con el objetivo de eliminar a todas sus rivales, principalmente los nidos de los que salen. Para ello deberemos buscar comida (para generar nuevas hormigas), sortear obstáculos en el mapa y aplicar reglas algo complejas en los enfrentamientos, para los que es conveniente moverse en grupos.

En la siguiente presentación, que yo mismo hice durante la introducción a dicho Hackaton, se pueden ver los pormenores de la competición:

En definitiva, a pocos días de la finalización del plazo de ambos concursos, diseñé un bot con una sencilla máquina de estados finitos, en la cual se tenían 4 estados básicos. A modo de resumen:

  •  Explorando -> estado en el que las hormigas se mueven de forma pseudoaleatoria, ya que según su ID (módulo 4) se mueven en una dirección, consiguiendo que éstas se agrupen al tiempo que exploran zonas diferentes del mapa.
  •  Ir hacia comida -> las hormigas se mueven hacia la unidad de comida más cercana.
  •  Ataque a enemigo -> todas las hormigas que lo vean se dirigen hacia un enemigo.
  •  Ataque a colinas -> todas las hormigas que la vean se dirigen hacia una colina enemiga.

En dichos estados se hacían varias consideraciones, como evitar obstáculos (con movimientos simples) o evitar el choque entre hormigas propias (que supone la ‘muerte’ de las mismas).

El bot lo bautizé como MorAnts (original, ¿verdad? :D) y lo liberé con una licencia GPL en la Forja de Rediris, dado que era requisito imprescindible del concurso de la OSL-UGR. ;)
El paquete con los fuentes, así como varios ejemplos de uso y el juego ANTS, se puede decargar -> aquí <-

Por falta de tiempo (en gran parte debido a los requititos de mi nenita, Julia :)), no pude hacer una mejor aproximación, dejando para un futuro mejoras (sustanciales) de los estados, como por ejemplo: búsqueda de caminos mínimos, rodear obstáculos, evaluar enemigos antes de atacar (número, agrupación), etc.

Además, como ‘buenos’ investigadores que somos, queda pendiente la aplicación de técnicas de las que a nosotros nos gustan, es decir, cosicas de Soft Computing (Algoritmos Genéticos, Algoritmos basados en Colonias de Hormigas o Redes Neuronales, por ejemplo). :D

Finalmente y yendo a la parte pragmática del trabajo, el caso es que aún siendo mi bot bastante ‘regulero’ (en comparación con otros del AI Challenge de Google), conseguí ganar el concurso propuesto por la Oficina de Software Libre de la UGR, cuyo premio consistía en un cheque regalo para coger ‘material’ en una tienda de informática. :D

Para los interesados diré que mis regalos fueron un e-reader y un disco duro multimedia, Yuhuuuuuu! :D

Así da gusto investigar. ;)

Estudio de un Operador de Mutación para Algoritmos Genéticos Basado en la Teoría de la Criticalidad Auto-Organizada

Our studies on the sandpile mutation operator were extended, presented at MAEB2012 and published in the proceedings (in spanish). The abstract:

La mutación montón de arena es un operador para Algoritmos Genéticos basado en un modelo de Criticalidad Auto-Organizado con el mismo nombre. El operador ha sido desarrollado con el objetivo de resolver problemas con función objetivo variable. Este artículo propone un estudio del operador y la optimización de su desempeño, experimentando diferentes estrategias que conectan el modelo auto-organizado y el Algoritmo Genético. Las pruebas sobre el algoritmo se desarrollan con un gran conjunto de problemas dinámicos, diseñados con un generador de problemas a partir de funciones-base no dinámicas. Las mejores configuraciones del algoritmo son comparadas con dos AGs recientemente propuestos para optimización dinámica. Demostramos que un AG con el operador de mutación montón  de arena es eficiente para el conjunto de pruebas que es propuesto.

From Emergence to Emergency (exit)

Despite the hotel’s firealarm, which forced us all to leave the room, out to the “pleasant” New Orleans’ weather, when I was on slide 12, I eventually finished the presentation of this paper in the 2011 Congress on Evolutionary Computation:

Fernandes, Isidoro, Barata, Merelo, Rosa, From Pherographia to Color Pherographia – Color Sketching with Artificial Ants

Abstract—Ant algorithms are known to return effective results in those problems that may be reduced to finding paths through a graph. However, this class of bio-inspired heuristics have raised the interest of the artistic community as well, namely of the artists that work on the blurred border between art and science. This paper describes an extension of an ant algorithm that, although has been designed as an edge detection tool and a model for collective perception, has also been used for creating artworks that were exhibited to a heterogeneous audience. The algorithm is a self-organized and stigmergic social insects’ model that is able to evolve lines along the contours of an image, in a decentralized and local manner. The result is the emergence of global patterns called pheromone maps. These maps – which were later named with the term pherographia – are grayscale sketches of the original black-and-white image on top of which the model evolves. This work goes beyond grayscale images and addresses colored pherographia, by proposing several image transformation and border selection methods based on behavioral variations of the basic algorithm.

Paper Seminar: Evolutionary Computing and Autonomic Computing: Shared Problems, Shared Solutions?

This Friday, March 11th, we will discuss the paper Evolutionary Computing and Autonomic Computing: Shared Problems, Shared Solutions? by Prof. A.E. Eiben in our Friday Paper Seminar. Quite a position paper about Self* properties in Evolutionary Algorithms and the other way around; Evolutionary Algortihms in Self* Computing.

You are welcome to attend the chat on Sala de Juntas at the ETSIIT.



View Larger Map

Google AI Challenge 2010

La Universidad de Waterloo Computer Science Club con la colaboración de Google organizan un año más el Google AI Challenge. Este año, el objetivo es crear un algoritmo que juegue a Planet Wars de la forma más inteligente posible.

Problema:

Planet Wars es un juego de estrategia en el espacio exterior. El objetivo es conquistar todos los planetas del mapa o eliminar todas las naves enemigas. Podemos ver un ejemplo de juego en el siguiente vídeo.

Planet Wars está inspirado en Galcon, un popular juego de Iphone, Android y PC. Puedes jugar a Galcon aquí para hacerte una idea del juego y sus estrategias. Es un juego basado en turnos. El bot a implementar es una función que recibe la lista de planetas y flotas y devuelve una lista de órdenes.

Cada planeta, tiene los siguientes campos o propiedades:

  • Coordenadas (x,y)
  • ID del propietario
  • Número de naves alojadas
  • Tasa de crecimiento

Los planetas neutrales tienen un ID de cero, mientras que los de tu bot tiene el ID de 1 y los enemigos el ID de 2. Tras cada turno, el número de naves en los planetas no neutrales aumenta de acuerdo a la Tasa de crecimiento de dicho planeta.

Las flotas son los números de colores que vuelan entre los planetas. Cuando una flota llega a su planeta de destino, pueden suceder dos cosas. Si el planeta del destino pertenece al bot, las naves se añaden como refuerzos al planeta. En caso contrario, las naves de la flota se restan a las naves que ocupan en ese momento el planeta. Si el resultado es menor que cero, entonces el bot gana el control del planeta. Si el resultado es exactamente 0, entonces el control del planeta no cambia.

Las flotas tienen los siguientes campos o propiedades:

  • ID del propietario
  • Número de náves
  • ID Planeta de origen
  • ID Planeta de destino
  • Longitud total del viaje
  • Número de turnos hasta la llegada

El bot puede emitir tantas órdenes como quiera durante el turno. Cada orden especifica un planeta de origen, un planeta de destino y un número de naves. Una vez que la orden se ejecuta, el número determinado de naves abandona el planeta para ir hacia su destino.

El juego termina cuando solo queda un solo jugador o se excede un determinado número de turnos.

Timeline:

  • 1 Septiembre 2010: publicación del material oficial.
  • 10 Septiembre 2010: Fecha de inicio oficial.
  • 27 Noviembre 2010: Fecha límite de entrega.
  • 1 Diciembre 2010: Los resultados finales y la clasificación final se darán a conocer.

Reglas:

  • La clasificación final se determinará mediante un torneo computerizado diseñado por la organización. El ranking actual en la clasificación no son los oficiales y pueden no ser representativos de los resultados finales.
  • Solo se puede poseer una cuenta. Si usted mantiene el control efectivo sobre más de una cuenta incluso si las cuentas son nominalmente propiedad de otra persona, las cuentas serán descalificadas.
  • Su programa no puede tomar más de un segundo en hacer cualquier jugada personal. Si se quieren hacer cálculos intensivos, asegúrese de agregar código que compruebe el tiempo a intervalos regulares para que no sobrepase la cuota de un segundo. Si el programa viola la cuota de tiempo, será suspendido.
  • Los mecanismos que se consideren que violan el espíritu de la competencia leal y deportiva será descalificado sin ninguna posibilidad de apelación. En particular, la exploración de memoria, perder juegos de forma intencionada y la conducta condicionada al ID del oponente están prohibidos.
  • El código no puede escribir en archivos. Sin embargo, puede leer archivos en el directorio de representación, que será el directorio actual.
  • El uso de múltiples procesos o hilos está prohibido.
  • Cualquier intento de perturbar el funcionamiento normal del software de los servidores del concurso dará lugar a la intervención de los agentes del orden.
  • Queda reservado el derecho a modificar estas reglas en cualquier momento y sin previo aviso.

Paquetes iniciales de software:

La organización proporciona unos paquetes de software inciales. Cada paquete es un archivo ZIP que contiene:

  • Una entrada sencilla y funcional para ser usada como punto incial.
  • Las herramientas que permiten ejecutar el bot y un entorno gráfico de ejecución.
  • Algunos oponentes para testear nuestros bots.
  • Un centenar de mapas generados al azar para testeo.

Los paquetes iniciales se encuentran disponibles para C++, Java, Python y C#.

En la web de la organización pueden encontrarse la especificación funcional de las herramientas así como guías de estrategias y decisiones sobre el problema.

Web oficial: http://ai-contest.com

Especificación oficial: http://ai-contest.com/specification.php

Foro del contest: http://ai-contest.com/forum/

Play Galcon Online: http://www.galcon.com/flash

My dreamed conference (CIG 2010)

Well,

I have come back from one of the best conferences I have ever attended… The IEEE Computer Intelligence in Games 2010 (CIG 2010).

The reasons are two.

On one side, a whole conference mixing the world of videogames and the scientific research is a dream for me (a videogamer since I was born :D).

Born2Play

On the other side, the place where the conference has been celebrated:

The IT University of Copenhagen (Denmark), in the Center for Computer Games Research… :O :O

No glass, no party

Yes! That's a Ping-Pong Table...

Game Lab - For researching in multiplayer mode

Scroll Bar - Funny name and excellent cocktails

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . I wonder if anybody studies in that Center, since all the ‘studying’ facilities (the Game Lab, the ping-pong table, two football tables, one arcade machine, and a Playstation 3) are for free… :O :O

Well, let’s go to speak about the topic of the post… XD

In this conference I have presented two works:

The first has been “Assessing efficiency of different evolutionary strategies playing MasterMind“, acepted as a poster, and presented in just 1 minute (it was recognized as the best presentation, or the most accurate, since it took exactly 60 seconds). ;) :D

Where an evolutionary algorithm, using a new fitness function, has been applied to solve this classical game.

You can see the presentation in the Live Stream of the conference (Poster Madness at CIG 2010).

The second work is called “Evolving the Cooperative Behaviour in Unreal Bots“.

In which genetic algorithms have been used to evolve a set of parameters, that determines the behaviour of a Bot inside a Team, in the PC videogame Unreal Tournament.

Here you are the amazing presentation (Yes, I’m proud of it :D, and even some people congratulated me for the slides). ;)

Enjoy it!!! ;) :D