5
Entorno y Estrategias de Combate Introducción al Entorno de Robocode y Estrategias de Combate Inteligencia en Redes de Comunicaciones 1. Introducción 2. Proceso de Diseño e Implementación 2.1 Lucha Uno vs. Uno y Mele: Dr. Jekyll and Mr. Hyde 2.2 Lucha de Equipos: Hormiguero 3 Conclusiones 1. Introducción En esta práctica se nos plantea el diseño y la implementación de un robot que sea capaz de ganar al resto de robots, es decir, que no encontramos ante el punto de desarrollo de agentes inteligentes, como sistemas autónomos dotados de ciertas capacidades. Todo esto se desarrolla bajo un entorno de simulación de guerras de robots, llamado Robocode. En el que nuestro tanque debe estar programado en Java para poder pelear en el campo de batalla contra tanques programados por otros jugadores, ganando el último que quede vivo. Al comienzo del juego se empieza con una determinada vida, que se mide en energía que posee el tanque y de ahí en adelante va variando la energía y mueres cuando te quedas sin energía. Como se ve las causas de la variación de la energía son muy importantes así que vamos a entrar un poco en ello para comprender posteriormente mejor el desarrollo de nuestro robot. Las variaciones de la energía se deben a las siguientes situaciones: Al producir un disparo, cuando se dispara se te penaliza quitándote una determinada energía dependiendo de cuanta energía hayas empleado en el disparo. Chocarte contra un robot. Si durante el transcurso de la batalla te chocas con algún robot pierdes una cierta cantidad de energía. Recibir un impacto. Si eres dado por una bala (enemiga o amiga) se quita una cantidad importante de energía. Esta es la mayor penalización que se tiene. Utilización intensiva del radar. Si pasa mucho tiempo y no se produce ninguna acción se sufre una penalización de energía disminuyendo ésta según transcurre el tiempo. Si una bala tuya acierta sobre un tanque enemigo se te suma una cantidad de energía. El escenario de batallas que se nos plantea, en nuestra competición interna es de tres tipos: a) Uno contra uno: En este tipo de contienda deberemos enfrentarnos sólo a un único tanque oponente y destruirlo antes de que nos destruya él. b) Mele: Todos contra todos, en esta situación estamos rodeados de enemigos y mis enemigos son enemigos del resto de los enemigos, esta es una situación de la que nos deberemos aprovechar. c) Lucha de equipos: Ahora se tendrá que trabajar en colaboración con otros tanques para destruir a uno o varios tanques enemigos. En nuestro caso va a ser otro equipo formado por 5 tanques. Ya que conocemos el escenario en el que tenemos que desarrollar y los tipos de batalla en los que vamos a luchar estamos en condiciones de pasar al siguiente punto que va a ser el diseño de

Tutorial Estrategia Robocode

Embed Size (px)

DESCRIPTION

,mkl

Citation preview

Page 1: Tutorial Estrategia Robocode

Entorno y Estrategias de Combate

Introducción al Entorno de Robocode y Estrategias de Combate

Inteligencia en Redes deComunicaciones

1. Introducción2. Proceso de Diseño e Implementación 2.1 Lucha Uno vs. Uno y Mele: Dr. Jekyll and Mr. Hyde 2.2 Lucha de Equipos: Hormiguero3 Conclusiones

1. IntroducciónEn esta práctica se nos plantea el diseño y la implementación de un robot que sea capaz de ganar al resto de robots, es decir, que no encontramos ante el punto de desarrollo de agentes inteligentes, como sistemas autónomos dotados de ciertas capacidades.Todo esto se desarrolla bajo un entorno de simulación de guerras de robots, llamado Robocode. En el que nuestro tanque debe estar programado en Java para poder pelear en el campo de batalla contra tanques programados por otros jugadores, ganando el último que quede vivo.

• Al comienzo del juego se empieza con una determinada vida, que se mide en energía que posee el tanque y de ahí en adelante va variando la energía y mueres cuando te quedas sin energía.

• Como se ve las causas de la variación de la energía son muy importantes así que vamos a entrar un poco en ello para comprender posteriormente mejor el desarrollo de nuestro robot.

• Las variaciones de la energía se deben a las siguientes situaciones: • Al producir un disparo, cuando se dispara se te penaliza quitándote una determinada

energía dependiendo de cuanta energía hayas empleado en el disparo. • Chocarte contra un robot. Si durante el transcurso de la batalla te chocas con algún

robot pierdes una cierta cantidad de energía. • Recibir un impacto. Si eres dado por una bala (enemiga o amiga) se quita una

cantidad importante de energía. Esta es la mayor penalización que se tiene. • Utilización intensiva del radar. • Si pasa mucho tiempo y no se produce ninguna acción se sufre una penalización de

energía disminuyendo ésta según transcurre el tiempo. • Si una bala tuya acierta sobre un tanque enemigo se te suma una cantidad de energía.

El escenario de batallas que se nos plantea, en nuestra competición interna es de tres tipos:a) Uno contra uno: En este tipo de contienda deberemos enfrentarnos sólo a un único tanque oponente y destruirlo antes de que nos destruya él.b) Mele: Todos contra todos, en esta situación estamos rodeados de enemigos y mis enemigos son enemigos del resto de los enemigos, esta es una situación de la que nos deberemos aprovechar.c) Lucha de equipos: Ahora se tendrá que trabajar en colaboración con otros tanques para destruir a uno o varios tanques enemigos. En nuestro caso va a ser otro equipo formado por 5 tanques.Ya que conocemos el escenario en el que tenemos que desarrollar y los tipos de batalla en los que vamos a luchar estamos en condiciones de pasar al siguiente punto que va a ser el diseño de

Page 2: Tutorial Estrategia Robocode

nuestros tanques.

2. Proceso de Diseño e ImplementaciónPara diseñar nuestros tanques partimos de una idea general, que la historia nos ha demostrado en infinitas ocasiones, la adaptabilidad. Realmente como se puede de ver en los campos de batalla o en la naturaleza (que se puede entender como la lucha por la supervivencia) gana siempre el que esta mejor adaptado. Un individuo que esté adaptado a la nieve no debería tener ningún problema de encontrar alimento y soportar temperaturas bajas, sobreviviendo sin problemas.Como nos encontramos ante una situación de incertidumbre, ya que no sabemos como va a ser nuestro contrincante no sabemos como debemos estar adaptados, siguiendo con el ejemplo de la naturaleza no se si voy a vivir en la nieve o en el desierto, ya que puede que mi contrincante me evite o vaya a un enfrentamiento directo para el cual yo no estoy preparado.Lo primero que cabría pensar es estar preparado para todo, pero estando preparado para todo puedes fácilmente caer en no estar preparado para nada y un enemigo bien preparado en un determinando elemento nos podría derrotar con cierta facilidad.Así que nuestra idea fue desarrollar distintas estrategias, para “la lucha en nieve” y parala “lucha en el desierto” e ir cambiando a ellas según la situación que nos encontráramos. Evidentemente el desarrollo de una multitud de estrategia es una cantidad ingente de trabajo, así que lo que hicimos fue aprovechar el código ya escrito en foros de Robocode1 y desarrollar una estrategia de control que establezca cuál es el escenario en que nos encontramos, haciendo evaluaciones periódicas o en situaciones que consideremos que debemos de cambiar.Viendo la idea fundamental sobre la que hemos intentado desarrollar nuestros robots vamos a pasar a ver como la podemos implementar en cada caso y los problemas que nos hemos encontrado al intentar desarrollarla.

2.1 Lucha Uno vs. Uno y Mele: Dr. Jekyll and Mr. Hyde

Como el titulo de la novela, vamos a tener diferentes personalidades, pero a diferencia de ésta en todas ellas trataremos de destruir a nuestros enemigos, aunque en una de las personalidades de una forma más activa (Mr. Hyde) y en otra estaremos más preocupados en que no nos destruyan (Dr. Jekyll).Tendremos una estrategia de control que nos va a ir diciendo qué personalidad debemos de trabajar y si en esa personalidad no estamos cómodos (están apunto de matarnos) cambiaremos de personalidad.La idea es ir pasando por una serie de estados (distintas personalidades) el paso de estados esta regido por una estrategia de control que utiliza unas reglas para pasar entre personalidades hasta llegar al estado final que es la victoriaLa idea inicial era haber tenido tres o cuatro personalidades, y la estrategia de control haber tenido las siguientes variables:

• Energía que tuviéramos(vida), • Número de oponentes que hubiera en la batalla. • Disparos acertados • Disparos fallados • Disparos recibidos.

Empezar con una personalidad medianamente ofensiva ya que empezamos con bastante vida y según estos datos variar a una más ofensiva u otra más defensiva según como estuviéramos nosotros de energía. También habíamos pensado utilizar algún método de entrenamiento para hallar los umbrales del algoritmo de evaluación ya que Robocode te da estadísticas y tiene ejemplos de

Page 3: Tutorial Estrategia Robocode

estrategias muy puras donde se puede evaluar tu robot.

El diagrama de flujo sería del estilo del siguiente:

Para realizar esto nos hemos encontrado ante dos grandes problemas, el primero fue que al intentar adaptar los códigos de distintos robots hemos tenido que rechazar muchos candidatos porque no podíamos juntarlos o al juntarlos daban muchos problemas que solo podíamos solucionar con grandes dificultades. Este problema ha derivado en el segundo: nos hemos quedado sin tiempo y lo peor ha sido que acuciaba el primer problema ya que no podíamos dedicar más tiempo adaptando el código o mejorando el algoritmo de evaluación.Así que se ha quedado en este algoritmo de evaluación:

Page 4: Tutorial Estrategia Robocode

Se evalúa cada cierto tiempo o si la situación de vida corre peligro o si estamos en una situación muy buena para entrar en una confrontación directa. En este último caso si estamos en un estado defensivo cambiamos a ofensivo.Así que tenemos que decidir entre dos estados:

• Mr. Hyde Es una estrategia de ariete, que es la más agresiva que hay. Consiste en ir contra el robot enemigo o perseguirle en su caso. De esta manera es muy difícil fallar, disparando con toda la fuerza que se puede (pierdes mas energía) pero también es fácil que te den, así que lo que se hace es entrar en este estado solo cuando tu nivel de energía es lo suficientemente bueno para en una confrontación directa tener muchas posibilidades de ganar.

• Dr. Jekyll: Esta no es una estrategia puramente defensiva (a estas se la conocen como “evitadotes” y consiste en moverse perpendicularmente al cañón del enemigo). Es una estrategia un poco más agresiva de lo que nos hubiera gustado poner, tiene cálculo de trayectorias y también evita recibir muchos impactos al intentar moverse perpendicularmente al eje que nos une con el enemigo, aunque quizás lo haga demasiado cerca del enemigo.

2.2 Lucha de Equipos: HormigueroLa lucha de equipo, varía mucho con el caso anterior, ya que los robots no pueden hacer cosas que antes podían (los droides no pueden escanear por ejemplo) y tienen cosas nuevas como:

• Paso de mensajes. • Mayor cantidad de energía.

Aquí hemos optado por una búsqueda heurística, gracias a la experiencia que habíamos adquirido en la lucha en Melé intentando también aprovechar las nuevas oportunidades que nos dan el trabajar en equipo como:

• Evitar que te den, cosa muy fácil cuando hay muchos tanques disparando.

Page 5: Tutorial Estrategia Robocode

• Moviéndote evitas que te disparen directamente. • Estando quietos dispara mucho mejor.

Nos basamos en la idea de un hormiguero o una colmena en la que hay una reina que es la que “manda” y un montón de hormigas que contribuyen a la comunidad.La reina, en nuestro caso, sólo tiene la misión de buscar enemigos y evitar morir. Para ello evita gastar energía disparando y evita que la den moviéndose constantemente.Cuando localiza un enemigo calcula la posición de dicho enemigo y se las pasa a sus hormigas obreras para que lo intenten eliminar. También en el caso de morir se lo comunica a sus súbditos.Las hormigas, lo primero que hacen es colocarse en una posición defensiva es decir al lado de las paredes para reducir el ángulo por donde pueden ser alcanzadas. Una vez allí esperan que la reina le comunique la posición de los enemigos y empiezan a disparar.En el caso de ser alcanzadas por un proyectil varían un poco su posición y si la reina llega a morir, empiezan a disparar aleatoriamente, pero nunca repiten la dirección del disparo, ya que gira el cañón en un ángulo no divisor de 360º, tratando en un intento desesperado de alcanzar al enemigo.

3 ConclusionesLa principal conclusión que hemos llegado es la importancia de dar una respuesta adecuada a la situación. Para eso hay que evaluar periódicamente, poniendo sensores que nos avisen si estamos en una situación de alarma, eligiendo la respuesta que ofrecemos al entorno. Aprovechar el escenario. Por ejemplo en el caso de la Melé es mejor intentar pasar desapercibido yéndote a una esquina y espera a que el resto se mate para luego entrar ya en la batalla. Aquí nos volvemos a encontrar con una situación de evaluación y otra de decisión.En una situación colaborativa es fundamental una labor de coordinación, para evitar que se entorpezcan entre los miembros de un equipo, como que un tanque se encuentre en una trayectoria de tiro.

Gracias a estos alumnos por ayudarnos a comprender más este programa. Grupo DB2 UG Nea Argentina

Autores: Carlos Rubio Prieto Juan Santaella Vallejo