ROBOCODE - FASE#3

Carlos Andres Barrios Gonzalez caanbago@gmail.com Ing. Huber Flores

Guatemala, Guatemala Universidad de San Carlos de Guatemala Facultad de Ingenier´ ıa. Escuela de Ciencias y Sistemas. Junio, 2009

1

Resumen

Existen distintos algoritmos y estrategias relacionadas con el campo de la inteligencia artificial que pueden ser utilizadas en la creaci´n y programaci´n de o o robots en Robocode. Estos permiten seleccionar la mejor estrategia para vencer a los adversarios en una batalla. Entre estos se encuentran: uso de redes neuronales, algoritmos gen´ticos, vecino mas cercano (K-NN), arboles de decisi´n, e o etc.

2

Abstract

Different algorithms and strategies related with the field of the artificial intelligence can be used in the creation and programming in Robocode. These allow to select the best strategy to conquer the opponents in a battle. Some of these they: use of netral networks, genetic algorithms, k-nearest neighbors (K-NN), decision trees, etc. 1

3

ROBOCODE - Algoritmos y Estrategias

Build the best. Destroy the rest!

3.1

ARBOLES DE DECISION

Un ´rbol de decisi´n es un modelo de predicci´n utilizado en el ´mbito de la a o o a inteligencia artificial. En base a la informaci´n se construyen diagramas de o construcciones l´gicas utilizados para categorizar y representar distintas condio ciones. Por medio de los distintos sensores que cada robot posee en Robocode, podemos obtener informaci´n sobre nuestros enemigos, el entorno y nosotros o mismos. Entre esta informaci´n se encuentra: o • El total de robots participantes. • Nuestra cantidad de energ´ y de los enemigos. ıa • Tasa de aciertos. • Frecuencia de disparos. • Patrones de movimiento. Para codificar el ´rbol de decisiones en Robocode, utilizamos la estructura a de control if-else y switch en Java. Toda la informaci´n que obtengamos podeo mos utilizarla para generar distintas condiciones y decisiones basadas en esta informaci´n, como por ejemplo: o
1 S i ( numeroDeEnemigos > 5 ) { esconderse () 3 } sino { Si ( energiaDelEnemigo > 10) { 5 disparar (1) ; sino { 7 disparar (3) ; } 9 }

2

DIAGRAMA DE UN ARBOL DE DECISION:

3.2

´ VECINO MAS CERCANO

Poder encontrar a los robots enemigos es uno de los aspectos vitales para ganar una batalla en Robocode. Mediante el uso del radar podemos encontrar a nuestros adversarios para poder encontrarlos y dispararles. Este m´todo clasie fica objetos bas´ndoos en la cercan´ de un punto en el espacio. El algoritomo a ıa K-NN es uno de los mas simples de todos los algoritmos de aprendizaje para las maquinas El radar pude escanear robots a 1200 unidades de distancia, cada vez que se detecta alg´n robot con el arco del radar es enviado al m´todo onu e ScannedRobot(). La estrategia consiste en escanear con el radar el enemigo mas cercano y aplicar un ataque. Dependiendo de la distancia, ajustar la potencia del disparo optima para evitar la perdida de energ´ innecesaria. ıa

3

Usualmente es utilizada la distancia Euclidiana como medida para calcular la cercan´ de los robots respecto al nuestro. ıa

Ejemplo: radar giratorio El radar del robot gira de forma simple, m´todo bastante simple e inefectivo e en luchas uno a uno.
1 public void run ( ) { // . . . 3 do { 5 turnRadarRightRadians ( Double . POSITIVE INFINITY ) ; } while ( true ) ; 7 }

3.3

CLUSTERING

El Clustering din´mico es una t´cnica para encontrar entradas en un registro a e similar a la situaci´n actual, es b´sicamente un algoritmo K-NN. La idea b´sica o a a es guardar un estado o situaci´n en cada entrada de un registro con informaci´n o o medible. Por ejemplo si guardamos informaci´n sobre la distancia de un eneo migo, podemos usar estos datos para encontrar la distancia del estado actual y de los estados pasados.

3.4

REDES NEURONALES

Las redes de neuronas artificiales (RNA o ANN) son un paradigma de aprendizaje y procesamiento autom´tico inspirado en la forma en que funciona el a sistema nervioso de los animales. Esta formado por un conjunto de interconexiones que colaboran para producir una salida.

4

En robocode el uso de redes neuronales permite predecir el movimiento de los enemigos e ir aprendiendo para orientarse de la mejor forma y atacar. La evoluci´n permite que el robot aprenda, evite objetos y mejore su navegaci´n. o o

3.5

ALGORITMOS GENETICOS

RobocodeJGAP es un enfoque que permite evolucionar robots en robocode por medio de programaci´n de algoritmos gen´ticos. Esta es una herramienta open o e source que provee un framework basado en JGAP.

”http://jgap.sourceforge.net/doc/robocode/robocode.html”. JGAP es tan simple de utilizar y solo requiere que los desarrolladores definan una funci´n fitness (una funci´n encargada de evaluar a las soluciones y elegir o o la mejor). Los algoritmos gen´ticos permiten tratar cualquier secuencia de bits como si e fuera un genoma. La complicaci´n viene en decidir qu´ significa esa secuencia de o e 5

bits e interpretar el genoma. La t´cnica de una programaci´n gen´tica permite e o e obtener mejores robots a trav´s de mecanismos de evoluci´n. Se comienza con e o una poblaci´n generada aleatoriamente, se seleccionan los mejores elementos. o La mutaci´n y el cruce son los responsables de que aparezcan nuevos por lo que o en cada generaci´n el comportamiento medio debe mejorar. o

4

ESTRATEGIAS
• LinearMovement: Movimiento en l´ ınea recta, simple y con gran vulnerabilidad al apuntamiento lineal • Oscillators: Movimiento en un conjunto de patrones que se repiten. Es vulnerable al Pattern Matching. • CircleBots: Robots que se mueven en circulos. Son vulnerables a apuntamiento circular. • WallBots: Se mueven a lo largo de los muros, trantando de mantenerse alejados y en movimiento, son vulnerable a LinearTargeting, excepto cerca de las esquinas. • RamBots: Se mueven en direcci´n del enemigo. Vulnerable a la mayor´ o ıa de los apuntamientos pero consigue bonus extras por ram (arrollar). • StopAndGo: Reacciona ante fuego enemigo. Es efectivo frente a apuntamiento lineal y circular pero es vulnerable ante Pattern Matching y GuessFactorTargeting.

Algunos ejemplos de estrategias en robocode son:

La estrategia seleccionada debe de variar dependiendo de distintas variables del entorno, como: cantidad de enemigos, nuestro nivel de energia, etc. 6

5

DESCRIPCION DE LA ESTRATEGIA SELECCIONADA

Luego de realizar varias batallas de prueba con los robots de ejemplo incluidos en robocode y de algunos mas avanzados descargados de internet, se obtuvieron las siguientes observaciones para el dise˜o de la estrategia: n • Al iniciar una batalla con gran cantidad de enemigos, es mejor alejarse y mantenerse en movimiento, como el robot Walls. Debido a la gran cantidad de robots en la arena, mientras nos mantengamos en movimiento constante, esperamos a que los dem´s robots se eliminen entre ellos. a • La estrategia de Walls no es ofensiva, y la energ´ de los disparos es conıa stante, por lo que se debe de calcular la distancia al robot que se dispara mientras se encuentra detenido en una esquina. Dependiendo de la distancia al enemigo, aplicar distintas potencias al disparo • Si la cantidad de robots es de alrededor de 3 o en una batalla uno a uno, la estrategia de walls puede ser efectiva si el oponente no posee buenos mecanismos de apuntamiento, por lo que al haber pocos enemigos, escoger una estrategia de b´squeda a un enemigo especifico. Dependiendo de la u distancia al enemigo, disparar con distintas potencias (mientras mas cerca estamos, mas potencia). • Si alguno de los dem´s robots de la arena nos ataca y acierta cierto numero a de balas, cambiar al enemigo actual, alejarse y atacar de nuevo.

Definicion de una estrategia en base a la cantidad de enemigos al iniciar la batalla

7

5.1

ESTRATEGIA WALLS

Estrategia utilizada cuando existe gran cantidad de enmigos.

La seleccion de la estrategia por medio del arbol de decision seria:
1 3 5 i f ( e s t r a t e g i a W a l l s=true ) // u s a r e s t r e t e g i a w a l l s } else { // u s a r e s t r a t e g i a de b u s q u e d a y a t a q u e }

Agregando el codigo para dirigirse a las paredes y disparar:
1 i f ( e s t r a t e g i a W a l l s=true ) double d i s t a n c i a ; 3 distancia = e . getDistance () ; i f ( d i s t a n c i a <=250){ 5 f i r e (3) ; setBodyColor ( Color . white ) ; 7 } else { f i r e (1) ; 9 setBodyColor ( Color . black ) ; } 11 i f ( peek ) { 13 scan ( ) ; } 15 } e l s e { 17 19 } ... busqueda ( ) ;

8

Trabajando con netbeans.

”Videotutorial que incluye como integrar robocode con Netbeans”.
... 2 4 i f ( cantEnemigos <3){ 6 8 10 12 14 16 } 18 . . . busqueda ( ) ; disparo () ; execute () ; } else { modoWalls=true ; peek = true ; ahead ( moveAmount ) ; peek = f a l s e ; turnRight (90) ;

5.2

ESTRATEGIA BUSQUEDA Y ATAQUE

Estrategia utilizada en batallas uno a uno o con pocos adversarios.

9

2 4 6 8

public void busqueda ( ) { i f ( tengoEnemigo == f a l s e ) { scanAngle = 360; } else {

s c a n A n g l e = n o r m a l R e l a t i v e A n g l e ( g e t H e a d i n g ( )− getRadarHeading ( )+enemigo . p o i n t s T o B e a r i n g ( getX ( ) , getY ( ) , g e t H e a d i n g ( ) )+d i r e c c i o n ∗ ) ; }

10 setTurnRadarRight ( s c a n A n g l e ) ; 12 }

6

CONCLUSIONES
• La estrategia de nuestro robot debe de ser adaptable a ciertas variables y par´metros que cambian en el entrono para lograr vencer la batalla. a • Cuando existe gran cantidad de enemigos, es mejor esperar que se eliminen entre ellos manteni´ndose en constante movimiento y alejado de los dem´s e a robots. • En combate uno a uno o con un numero reducido de robots, es mejor buscar un blanco especifico y atacarlos con una potencia que dependa de la distancia al enemigo. • En robocode, podemos implementar arboles de decisiones mediante las estructuras de control switch e if-then-else de java. Esto permite categorizar 10

y representar las distintas condiciones y variables del entrono. Utilizar una estrategia de clustering permite predecir una posible situaci´n en base a o situaciones similares que han pasado con anterioridad. • El uso de redes neuronales en los robots de robocode permite que estos aprendan y logren decidir la mejor estrategia de ataque. • RobocodeJGAP permite evolucionar robots en robocode por medio de programaci´n de algoritmos gen´ticos. Esta t´cnica permite obtener mejores o e e robots a trav´s de mecanismos de evoluci´n. e o

7

Bibliograf´ ıa
[1 ]: ”Sistemas Basados en Conocimiento: Robocode”. By Javier Jim´nez, e Rub´n G´mez. e o [2 ]: ”Arbol de Decisiones” By Wikipedia. [3 ]: ”K-NN Algorithm” By Robowiki. [4 ]: ”Radar” By Robowiki. [5 ]: Dynamic Clustering By Robowiki [6 ]: An Artificial Neural Network for a Tank Targeting System By HansW. Guesgen, Xiao Dong Shi. [7 ]: Red Neuronal By Wikipedia.

11

Sign up to vote on this title
UsefulNot useful