Académique Documents
Professionnel Documents
Culture Documents
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 in-
teligencia artificial que pueden ser utilizadas en la creación y programación de
robots en Robocode. Estos permiten seleccionar la mejor estrategia para vencer
a los adversarios en una batalla. Entre estos se encuentran: uso de redes neu-
ronales, algoritmos genéticos, vecino mas cercano (K-NN), arboles de decisión,
etc.
2 Abstract
Different algorithms and strategies related with the field of the artificial intelli-
gence 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
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
Usualmente es utilizada la distancia Euclidiana como medida para calcular
la cercanı́a de los robots respecto al nuestro.
El radar del robot gira de forma simple, método bastante simple e inefectivo
en luchas uno a uno.
3.3 CLUSTERING
El Clustering dinámico es una técnica para encontrar entradas en un registro
similar a la situación actual, es básicamente un algoritmo K-NN. La idea básica
es guardar un estado o situación en cada entrada de un registro con información
medible. Por ejemplo si guardamos información sobre la distancia de un ene-
migo, podemos usar estos datos para encontrar la distancia del estado actual y
de los estados pasados.
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.
”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
la mejor).
Los algoritmos genéticos permiten tratar cualquier secuencia de bits como si
fuera un genoma. La complicación viene en decidir qué significa esa secuencia de
5
bits e interpretar el genoma. La técnica de una programación genética permite
obtener mejores robots a través de mecanismos de evolución. Se comienza con
una población generada aleatoriamente, se seleccionan los mejores elementos.
La mutación y el cruce son los responsables de que aparezcan nuevos por lo que
en cada generación el comportamiento medio debe mejorar.
4 ESTRATEGIAS
Algunos ejemplos de estrategias en robocode son:
• LinearMovement: Movimiento en lı́nea recta, simple y con gran vulnera-
bilidad 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 apun-
tamiento 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ı́a
de los apuntamientos pero consigue bonus extras por ram (arrollar).
• StopAndGo: Reacciona ante fuego enemigo. Es efectivo frente a apun-
tamiento lineal y circular pero es vulnerable ante Pattern Matching y
GuessFactorTargeting.
6
5 DESCRIPCION DE LA ESTRATEGIA SE-
LECCIONADA
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:
7
5.1 ESTRATEGIA WALLS
Estrategia utilizada cuando existe gran cantidad de enmigos.
17 busqueda ( ) ;
19 }
...
8
Trabajando con netbeans.
...
2
4 i f ( cantEnemigos <3){
6 busqueda ( ) ;
disparo () ;
8 execute () ;
}
10 else {
modoWalls=true ;
12 peek = true ;
ahead ( moveAmount ) ;
14 peek = f a l s e ;
turnRight (90) ;
16
}
18 . . .
9
public void busqueda ( ) {
2 i f ( tengoEnemigo == f a l s e ) {
4 scanAngle = 360;
} else {
6
8 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.
• 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
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 es-
tructuras 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
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.
7 Bibliografı́a
[1 ]: ”Sistemas Basados en Conocimiento: Robocode”. By Javier Jiménez,
Rubén Gómez.
[2 ]: ”Arbol de Decisiones” By Wikipedia.
[3 ]: ”K-NN Algorithm” By Robowiki.
[4 ]: ”Radar” By Robowiki.
11