Está en la página 1de 90

c Jes us Alberto Herrera de Le on, 2013

Evoluci on de una Red Neuronal para el Control de


Unidades en el Videojuego StarCraft utilizando el
algoritmo NEAT
Por
Ing. Jes us Alberto Herrera de Le on
TESIS
Presentada al Programa de Graduados de la Escuela de Ingeniera y Tecnologas de la
Informaci on
Este trabajo es requisito parcial para obtener el grado academico de Maestro en
Ciencias en Sistemas Inteligentes
Instituto Tecnologico y de Estudios Superiores de Monterrey
Campus Monterrey
Monterrey, Nuevo Leon Abril de 2013
Instituto Tecnologico y de Estudios Superiores de
Monterrey
Campus Monterrey
Escuela de Ingeniera y Tecnologas de la Informacion
Programa de Graduados
Los miembros del comite de tesis recomendamos que la presente tesis de Jes us
Alberto Herrera de Le on sea aceptada como requisito parcial para obtener el grado
academico de Maestro en Ciencias en:
Sistemas Inteligentes
Comite de Tesis:
Dr. Leonardo Garrido Luna
Asesor Principal
Dr. Manuel Valenzuela Rend on
Sinodal
Dr. Santiago E. Conant Pablos
Sinodal
Dr. Ramon Brena Pinero
Director de la Maestra en C. en
Sistemas Inteligentes
Abril 2013
A mis padres
Reconocimientos
Agradezco el apoyo incondicional de mis padres y mi hermano que fueron pilares
para lograr mi meta de cursar un postgrado. Quiero agradecer al Instituto Tecnologico
y Estudios Superiores de Monterrey, por la beca con la cual cumpl mi sue no de obtener
la Maestra en Ciencias. Tambien agradecer al Gobierno Federal de Mexico y al Consejo
Nacional de Ciencia y Tecnologa por el apoyo nanciero que me otorgaron.
Agradezco a mi asesor de tesis, el Dr. Leonardo Garrido Luna por aceptarme en
la Catedra de Agentes Aut onomos Inteligentes y darme la oportunidad de llevar a cabo
esta tesis en una de mis pasiones, los videojuegos. Tambien a mis colegas y compa neros
de clase, que en todo momento me apoyaron con sus ideas y entusiasmo.
Finalmente, quiero agradecer a todas aquellas personas que de alguna u otra forma
fueron inspiracion para la creacion y desarollo de este documento.
Jes

us Alberto Herrera de Le

on
Instituto Tecnol ogico y de Estudios Superiores de Monterrey
Abril 2013
v
Evoluci on de una Red Neuronal para el Control de
Unidades en el Videojuego StarCraft utilizando el
algoritmo NEAT
Jes us Alberto Herrera de Le on, M.C.
Instituto Tecnol ogico y de Estudios Superiores de Monterrey, 2013
Asesor de tesis : Dr. Leonardo Garrido Luna
En la actualidad, los videojuegos dependen de los avances de la Inteligencia Arti-
cial, puesto que en ellos se utilizan algunas tecnicas de la Inteligencia Articial para
imitar el razonamiento del ser humano. Sin embargo, tambien es un campo para imple-
mentar de forma experimental nuevos metodos para imitar el razonamiento humano,
que en un futuro pudieran ser los que se utilizaran de forma comercial. Con base en
la gran variedad de videojuegos y los distintos retos que cada uno ofrece para imitar el
razonamiento de un ser humano, el videojuego de estrategia en tiempo real StarCraft
es un ambiente id oneo para desarrollar agentes con inteligencia articial.
Una de las areas del videojuego StarCraft que presenta retos es el proceso de
toma de decisiones en tiempo real que logre imitar al ser humano. La clave para poder
ganar en este genero de videojuegos es tomar las decisiones correctas para derrotar
al enemigo de acuerdo con el ambiente que cambia a cada segundo. Las estrategias
generales en los videojuegos de estrategia en tiempo real se dividen en macromanagement
y micromanagement.
La mayora de los videojuegos del genero de estrategia en tiempo real no poseen
una inteligencia articial con la capacidad para tomar decisiones a nivel micromanagement
como un ser humano.
Anteriormente se ha tratado este problema con diferentes enfoques y en diferentes
videojuegos, como campos potenciales con integrales difusas, aprendizaje por refuerzo,
algoritmos geneticos, computaci on evolutiva, entre otros.
Para la solucion del problema se construira un agente inteligente que utilice una
red neuronal para toma de decisiones. Dicha red neuronal se utilizar a para elegir el
movimiento a realizar dependiendo del estado actual del ambiente en el videojuego
StarCraft. Finalmente se evaluar a el agente para poder determinar su nivel de rendi-
miento. Donde el objetivo del agente inteligente sera el de maximizar el da no al enemigo
y minimizar el da no recibido.
El algoritmo NEAT (NeuroEvolution of Augmenting Topologies) evolucionara la
red neuronal del agente. Utilizando una red neuronal con topologa predeterminada,
el algoritmo NEAT modicara la red neuronal para encontrar la red mejor adaptada
a la funci on objetivo. Dentro de los pasos del algoritmo NEAT se utilizan algoritmos
geneticos. El algoritmo genetico realiza cambios a la red neuronal con la nalidad de
mejorar la red con el paso de cada generacion. Para evaluar la red neuronal y determinar
su aptitud para el problema se pondra a prueba dentro del ambiente del videojuego
StarCraft.
El agente inteligente podra superar la inteligencia articial predeterminada dise nada
para el videojuego StarCraft. Los movimientos que realiz a el agente inteligente dentro
del videjuego StarCraft seran parecidos a los de un humano, adem as de adaptarse al
problema que enfrenta de una manera natural y generalizando las decisiones ante la
incertidumbre de una nueva situacion no antes vista.
vii

Indice general
Reconocimientos V
Resumen VI

Indice de tablas XI

Indice de guras XII


Captulo 1. Introduccion 1
1.1. Denici on del Problema . . . . . . . . . . . . . . . . . . . . . . . . . . 2
1.2. Hip otesis . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4
1.3. Objetivos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4
1.4. Organizaci on . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
Captulo 2. Marco Teorico 7
2.1. Algoritmos Geneticos . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
2.2. Redes Neuronales . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10
2.3. NEAT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
2.4. StarCraft . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21
2.4.1. Macromanagment . . . . . . . . . . . . . . . . . . . . . . . . . . 25
2.4.2. Micromanagment . . . . . . . . . . . . . . . . . . . . . . . . . . 27
2.4.3. Brood War Application Programming Interface . . . . . . . . . . 29
2.4.4. StarCraft Campaing Editor . . . . . . . . . . . . . . . . . . . . 31
2.5. Resumen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32
Captulo 3. Agente Micro NEAT 33
3.1. Arquitectura del Agente Micro NEAT . . . . . . . . . . . . . . . . . . . 33
3.2. Ambiente del Agente Micro NEAT . . . . . . . . . . . . . . . . . . . . 34
3.3. Red Neuronal del Agente Micro NEAT . . . . . . . . . . . . . . . . . . 37
3.4. Resumen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43
viii
Captulo 4. Experimentos 45
4.1. Ambiente de Experimentos . . . . . . . . . . . . . . . . . . . . . . . . . 45
4.2. Escenarios de Experimentacion . . . . . . . . . . . . . . . . . . . . . . 45
4.3. Desarrollo de Evolucion . . . . . . . . . . . . . . . . . . . . . . . . . . 50
4.3.1. Escenario I . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50
4.3.2. Escenario II . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50
4.3.3. Escenario III . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51
4.3.4. Escenario IV . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52
4.4. Resultados de Experimentos . . . . . . . . . . . . . . . . . . . . . . . . 52
4.4.1. Escenario I . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53
4.4.2. Escenario II . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53
4.4.3. Escenario III . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55
4.4.4. Escenario IV . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55
4.5. Resumen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 56
Captulo 5. Trabajos Relacionados 57
5.1. Micromanagment . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 57
5.1.1. Redes Bayesianas . . . . . . . . . . . . . . . . . . . . . . . . . . 57
5.1.2. Computacion Evolutiva . . . . . . . . . . . . . . . . . . . . . . . 58
5.1.3. Upper Condence Bound Tree . . . . . . . . . . . . . . . . . . . 59
5.1.4. Formaciones Din amicas . . . . . . . . . . . . . . . . . . . . . . . 59
5.1.5. Algoritmos Geneticos . . . . . . . . . . . . . . . . . . . . . . . . 59
5.1.6. Razonamiento Basado en Casos . . . . . . . . . . . . . . . . . . 59
5.2. Aplicaciones de NEAT . . . . . . . . . . . . . . . . . . . . . . . . . . . 60
5.2.1. rtNEAT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 60
5.2.2. cgNEAT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 60
5.2.3. hyperNEAT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 61
5.2.4. Aprendizaje Supervisado . . . . . . . . . . . . . . . . . . . . . . 61
5.2.5. Teora de Juegos . . . . . . . . . . . . . . . . . . . . . . . . . . 61
5.2.6. Videojuegos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 62
5.3. Resumen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 62
Captulo 6. Conclusiones 63
6.1. Conclusiones Generales . . . . . . . . . . . . . . . . . . . . . . . . . . . 63
6.2. Contribuciones . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 65
6.3. Trabajo Futuro . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 66
Apendice A. Apendice 68
Bibliografa 73
ix
Vita 77
x

Indice de tablas
2.1. Representaci on del genotipo, fenotipo y valor de aptitud de los individuos
1 y 2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
2.2. Lista de Neuronas de un Genoma utilizando la codicaci on del algoritmo
NEAT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
2.3. Lista de Conexiones de un Genoma utilizando la codicaci on del algo-
ritmo NEAT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
3.1. Ejemplo de la ecuaci on de aptitud con diferentes valores . . . . . . . . 36
3.2. Valor de las variables estaticas en el ejemplo . . . . . . . . . . . . . . . 36
3.3. Capa de Entrada de la Topologa Inicial . . . . . . . . . . . . . . . . . 38
3.4. Capa de Salida de la Topologa Inicial . . . . . . . . . . . . . . . . . . . 39
3.5. Ejemplo de valores sin ser normalizados para el vector de entrada a la
red neuronal . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40
3.6. Ejemplo de valores normalizados para el vector de entrada a la red neuronal 41
3.7. Ejemplo de vector de salida de la red neuronal . . . . . . . . . . . . . . 42
4.1. Promedio de la Relacion de Unidades Abatidas y Unidades Perdidas en
el Escenario II durante la fase de Prueba . . . . . . . . . . . . . . . . . 54
4.2. Promedio de la Relacion de Unidades Abatidas y Unidades Perdidas en
el Escenario IV durante la fase de Prueba . . . . . . . . . . . . . . . . . 55
A.1. Informacion detallada sobre las unidades utilizadas en el escenario I . . 68
A.2. Parametros utilizados para el algoritmo NEAT en el escenario I . . . . 69
A.3. Informacion detallada sobre las unidades usadas en el escenario II . . . 69
A.4. Parametros utilizados para el algoritmo NEAT en el escenario II . . . . 70
A.5. Informacion detallada sobre las unidades usadas en el escenario III . . . 70
A.6. Parametros utilizados para el algoritmo NEAT en el escenario III . . . 71
A.7. Informacion detallada sobre las unidades usadas en el escenario IV . . . 71
A.8. Parametros utilizados para el algoritmo NEAT en el escenario IV . . . 72
xi

Indice de guras
2.1. Genotipo del Individuo 1 . . . . . . . . . . . . . . . . . . . . . . . . . . 9
2.2. Genotipo del Individuo 2 . . . . . . . . . . . . . . . . . . . . . . . . . . 9
2.3. Ejemplo de cruce de un punto entre el Individuo 1 y el Individuo 2 . . 10
2.4. Ejemplo de Red Neuronal con tres entradas y una salida . . . . . . . . 12
2.5. Ejemplo del fenotipo de una red neuronal . . . . . . . . . . . . . . . . . 14
2.6. Fenotipo del Padre 1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16
2.7. Fenotipo del Padre 2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16
2.8. Ejemplo de cruce entre el Padre 1 y el Padre 2 . . . . . . . . . . . . . . 17
2.9. Captura de pantalla del videojuego StarCraft . . . . . . . . . . . . . . 25
2.10. Ejemplo de una build para el videojuego StarCraft . . . . . . . . . . . . 26
2.11. Ejemplo de Flanking, las unidades aliadas son representadas por cuadros
blancos y las unidades enemigas por cuadros grises . . . . . . . . . . . 28
2.12. Ejemplo de Surrounding, las unidades aliadas son representadas por cua-
dros blancos y las unidades enemigas por cuadros grises . . . . . . . . . 28
2.13. Ejemplo de Sandwiching, las unidades aliadas son representadas por cua-
dros blancos y las unidades enemigas por cuadros grises . . . . . . . . . 29
2.14. Ejemplo de Making a Concave, las unidades aliadas son representadas
por cuadros blancos y las unidades enemigas por cuadros grises . . . . 29
3.1. Comunicacion entre StarCraft y el agente Micro NEAT . . . . . . . . . 34
3.2. Captura de pantalla en el videojuego StarCraft en un mapa de experimento 35
3.3. Red neuronal inicial de la Poblaci on NEAT . . . . . . . . . . . . . . . . 39
4.1. Representacion del minimapa de los escenarios . . . . . . . . . . . . . 46
4.2. Resultados sobre el entrenamiento del Agente Micro NEAT en el Esce-
nario I . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51
4.3. Resultados sobre el entrenamiento del Agente Micro NEAT en el Esce-
nario II . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51
4.4. Resultados sobre el entrenamiento del Agente Micro NEAT en el Esce-
nario III . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52
4.5. Resultados sobre el entrenamiento del Agente Micro NEAT en el Esce-
nario IV . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53
xii
4.6. Resultados de Prueba sobre el Escenario I . . . . . . . . . . . . . . . . 54
4.7. Resultados de Prueba sobre el Escenario II . . . . . . . . . . . . . . . . 54
4.8. Resultados de Prueba sobre el Escenario III . . . . . . . . . . . . . . . 55
4.9. Resultados de Prueba sobre el Escenario IV . . . . . . . . . . . . . . . 56
xiii
Captulo 1
Introducci on
En la actualidad, los videojuegos han evolucionado y tambien la inteligencia ar-
ticial desde su nacimiento. Un videojuego est a conformado principalmente por tres
atributos: fsica dentro del videojuego, gr acos creados por computadora, e inteligencia
articial [21]. La inteligencia articial en videojuegos busca cumplir tres objetivos: la
habilidad de mover personajes, la habilidad de decidir hacia donde moverse y la ha-
bilidad de efectuar acciones coherentes de acuerdo a su entorno y objetivo [19]. Los
primeros videojuegos que salieron al mercado tienen una inteligencia articial muy
simple, dado que el mismo videojuego tiene una forma sencilla de jugar. Uno de los
ejemplos mas b asicos es el de Pac-Man, desarrollado y lanzado en el a no 1979. El com-
portamiento de la inteligencia articial en dicho juego no es muy sosticado a pesar
de ser un videojuego din amico. Al contrario, por ser un laberinto en dos dimensiones
-2D- los movimientos de los ghosts (los agentes inteligentes autonomos dise nados para
el videojuego) parecan iguales a los de un humano, siendo que cada uno de ellos tiene
una personalidad con una m aquina de estados nitos [3]. Con el paso del tiempo y la
evoluci on de las computadoras en velocidad y capacidad de procesamiento, los video-
juegos se reinventaron dando lugar a la tercera dimensi on -3D-. Este gran avance trajo
un nuevo desafo en el desarrollo de inteligencia articial para videojuegos, movimientos
m as parecidos a los de un ser humano y no tan robotizados debido al nuevo ambiente
en 3D. En este nuevo ambiente el lmite es la imaginacion de los dise nadores de video-
juegos. Sin embargo, a nivel comercial se busca un equilibrio o exagerar los atributos de
los videojuegos como un motor de fsica que logre imitar la realidad, gr acos avanzados
que logren un impacto visual muy llamativo, o una inteligencia articial competitiva
para cualquier jugador. Desafortunadamente, muy rara vez se exagera el atributo de la
inteligencia articial. Algunos de los motivos por los cuales no se desarrolla inteligencia
articial de forma comercial es por su alto costo computacional, disminuyendo potencia
a las consolas de videojuegos o computadoras.
El videojuego StarCraft fue desarrollado por Blizzard y lanzado al mercado en
1998. Dentro del videojuego StarCraft se logro un gran avance en el area de inteligencia
articial, la creaci on de rutas para las unidades dentro del ambiente del videojuego.
1
Sin embargo, la toma de decisiones en las batallas es regida por reglas que pueden ser
aprendidas por jugadores. La inteligencia articial que controla las unidades dise nada
por Blizzard sigue una simple regla, atacar al enemigo. Al igual que en la mayora de
los videojuegos, los jugadores crearon tecnicas para vencer la inteligencia articial. En
esta investigaci on se creo un agente inteligente con base en redes neuronales, las cuales
se har an evolucionar con el algoritmo NeuroEvolution Augmenting Topologies (NEAT)
y con ello se espera demostrar que el agente inteligente puede superar la inteligencia
articial con la que fue creado StarCraft.
1.1. Denicion del Problema
El problema principal es que la inteligencia provista por el videojuego StarCraft no
es competitiva. Con el paso del tiempo los jugadores fueron desarollando y adoptando
ciertas estrategias que sobrepasan la capacidad de la inteligencia articial desarrollada
(IADefault). Esto ocasiona que la IADefault no sea rival para jugadores con mucha
experiencia y gran habilidad. Cuando la IADefault da la orden a una unidad de atacar
cierta coordenada dentro del mapa, esta se movera hasta dicha coordenada y si du-
rante el transcurso del recorrido visualiza una unidad enemiga la atacara. A un si logra
observar mas unidades atacara la m as cercana, y en ning un momento se eval uan otros
posibles movimientos. Por esta raz on se desea desarrollar un agente inteligente que lo-
gre tomar decisiones de acuerdo al ambiente actual y realizar la acci on m as adecuada
para determinado estado actual dentro del videojuego. Un agente inteligente es una
entidad capaz de percibir su entorno, procesar tales percepciones y responder o actuar
en su entorno de manera racional, es decir, de manera correcta y tendiendo a maximizar
un resultado esperado. Un agente inteligente consta de sensores con los cuales obtiene
informaci on del ambiente en el cual trabaja. Ademas, actuadores para realizar acciones
dentro del ambiente.
La caracterizaci on del ambiente del videojuego StarCraft seg un Russell y Norvig,
en Performance, Environment, Actuators, Sensors [23], es el siguiente:
Parcialmente Observable: Ya que hay un factor en el juego donde los sensores del
agente no podr an obtener toda la informacion necesaria para llevar acabo la mejor
decisi on. Es por eso que se desea generalizar muchas de las tomas de decisiones
a un y con la incertidumbre.
No Determinista: Dado que las acciones del agente no le aseguran determinar el
siguiente estado del ambiente. El enemigo puede tambien decidir entre una gran
variedad de acciones, y a pesar de que la variedad de acciones son nitas es muy
improbable determinar el siguiente estado.
2
Secuencial: Por cada decisi on que tome el agente afectar a el curso de la partida de
forma permanente. Si el enemigo ataca un edicio vital que requiere de mucho
tiempo para construirla y logra destruirlo, se deben tomar medidas para con-
trarrestar el ataque. Esto puede llevar a acciones como reconstruir el edicio y
demorar otras tareas que se tenan planeadas antes del ataque.
Dinamico: Aunque el agente este computando que decision tomar, sigue el ambiente
cambiando. Suponiendo que el proceso de toma de decisiones requiere de un
segundo de procesamiento, durante el tiempo de procesamiento el videojuego
StarCraft sigue su curso. El tiempo sin tomar decisiones puede llevar a la derrota
del agente.
Agente

Unico: S olo tomando en cuenta el micromanagement. Sin embargo, para
crear un agente inteligente completo que pueda jugar una partida completa (cons-
trucci on, toma de decisiones, planeaci on de rutas, administrador de recursos, etc),
s debera de ser multiagente.
Para el manejo de micromanagement se requiere de analizar el ambiente y de
acuerdo con este tomar la decisi on con la que se maximice el da no al enemigo y mini-
mizar el da no recibido. El micromanagement se presenta en la mayora de los videojue-
gos del genero estrategia en tiempo real. Los videojuegos de estrategia en tiempo real
presentan un modo de juego donde uno o mas jugadores deben desarrollar un sistema
de recoleccion de recursos y crear un ejercito para derrotar a los enemigos. En esta tesis
se presenta una metodologa para resolver el problema de micromanagement.
Para efectos de la misma tesis, se delimitar a a los siguientes aspectos sobre el
ambiente del problema:
Videojuego StarCraft v1.16.1 para PC.
Un mapa plano, en el cual se situaran en lados opuestos los ejercitos. Para el
manejo del ejercito enemigo se usar a la IADefault.
El ejercito aliado constar a de unidades terrestres, en cada uno de los escenarios
para experimentacion varan las unidades. Cada unidad tiene sus propios atributos
como velocidad de movimiento, da no, rango de ataque, rango de visi on entre otras
cosas.
El ejercito enemigo estar a conformado tambien por unidades solamente terrestres,
respetando que sean de la misma raza y tambien con combinaciones diferentes de
unidades.
3
1.2. Hipotesis
Un ejercito conformado unicamente por unidades de ataque y al mismo tiempo
modelado a traves de un agente inteligente utilizando una red neuronal evolucionada
con el algoritmo NEAT podra superar el comportamiento de la IADefault. Las tareas
en este caso seran tomar decisiones dependiendo del ambiente, tratando de maximizar
el da no enemigo y minimizar el da no recibido. Mediante el uso del algoritmo NEAT
aplicado a una red neuronal se espera obtener un comportamiento parecido al de un
jugador humano, adem as de ser m as competitivo contra un ser humano y poder evolu-
cionar con el paso del tiempo.
La hipotesis propuesta busca darle respuesta a las preguntas de investigaci on:
Evolucionando una red neuronal con el algoritmo NEAT puede el agente inteli-
gente ser mejor que la IADefault incluida en StarCraft?
Puede el agente inteligente mostrar un razonamiento parecido al de de un jugador
humano en StarCraft?
1.3. Objetivos
El objetivo general de esta tesis es la de crear un agente inteligente para la ad-
ministraci on de ordenes de unidades en el videojuego StarCraft que pueda superar la
IADefault. Esto se pretende lograr a partir de la evoluci on de una red neuronal con
el algoritmo NEAT. La administraci on de ordenes a unidades individuales en el vi-
deojuego StarCraft tambien es conocido entre jugadores del mismo videojuego como
micromanagement. Las unidades por s solas dentro del videojuego reaccionan ante
un estmulo enemigo. Por ejemplo, cuando una o mas unidades enemigas entren en su
rango de visi on, se realiza un ataque en autom atico sin la necesidad de recibir la orden
del jugador humano. La reacci on autom atica de la unidad la hace vulnerable, porque
no reacciona todo el ejercito como conjunto sino individualmente. Los jugadores pro-
fesionales de StarCraft toman decisiones que dependen totalmente de la situacion en
el videojuego y administran de la mejor forma posible sus unidades para maximizar el
resultado. Es por est a raz on especica que se desarrollar a un agente inteligente con el
algoritmo NEAT como metodo de evolucion para la red neuronal.
Los objetivos particulares de la tesis a realizar ser an:
Demostrar que el comportamiento del agente inteligente presenta un mejor desempe no
que el comportamiento de la IADefault.
4
Demostrar que el comportamiento del agente inteligente es parecido al de un ser
humano.
Y para alcanzar estos objetivos se propone la siguiente metodologa:
Modelado de red neuronal que use la misma informacion que utiliza un jugador
humano para tomar decisiones.
Desarrollar un metodo de entrenamiento que se enfoque en el micromanagement.
Situaciones en las cuales se deben de tomar decisiones a nivel unidad.
Evaluacion del agente inteligente en un ambiente de pruebas contra IADefault
proporcionada por el videojuego StarCraft.
Evoluci on de la red neuronal utilizada por al agente inteligente.
1.4. Organizaci on
Las secciones posteriores est an organizadas de la siguiente manera. En el captulo
dos se da una explicacion detallada del estado del arte actual de los dominios que en-
vuelve el area de investigaci on. En este caso se cubre la teora de algoritmos geneticos,
redes neuronales y NEAT. Ademas, se describen las herramientas que se usaron durante
la investigacion, tales como los paquetes de programacion y el software necesario para
realizar las pruebas.
En el captulo tres se describe la metodologa propuesta para evolucionar la red
neuronal del agente. Ademas, se profundiza en el dise no de la red neuronal del agente.
Tambien se describe la forma en que se obtiene la informacion del ambiente para despues
ser procesada por la red neuronal as como la interpretacion de su salida. Se describe
de forma detallada el proceso con el que se eval ua la red neuronal dentro del ambiente
del videojuego StarCraft.
En el captulo cuatro se presenta el dise no de los escenarios de entrenamiento a
los que se sometio el agente. El desarrollo de los experimentos y los resultados son
presentados en una forma condensada del agente y la IADefault. Tambien se describen
los par ametros con los cuales se realizaron los experimentos y la evaluaci on del agente.
En el captulo cinco se estudian c omo trabajos relacionados han tratado de re-
solver el problema de micromanagement en ambientes parecidos. Adem as, se dividen
en categoras dependiendo de las tecnicas que se utilizaron para cada aspecto, en cada
proyecto de investigaci on. Tambien se mencionan otros trabajos relacionados que uti-
lizan como n ucleo del metodo de solucion el algoritmo NEAT, variando las areas de
5
aplicaci on.
Finalmente las conclusiones se presentan en el captulo seis. Se recapitulan y se
discuten los resultados obtenidos durante las pruebas realizadas. Adem as, se puntuali-
zan las aportaciones generadas al estado del arte y se establecen los trabajos a futuro
que se llevaran a cabo. Estos trabajos a futuro van encaminados a generalizar este
metodo para ejercitos con diferentes tipos de unidades.
6
Captulo 2
Marco Teorico
En la siguiente secci on se presentan a detalle las tecnicas de algoritmos geneticos,
redes neuronales y NEAT [10, 22, 26]. Adem as se presenta el videojuego StarCraft m as
a detalle, tanto el modo de juego como caractersticas del mismo. Tambien se presen-
tan las descripciones de micromanagment y macromanagment. Finalmente se detallan
las herramientas utilizadas en esta investigacion para el desarrollo de experimentos,
BWAPI y StarCraft Campaing Editor.
2.1. Algoritmos Geneticos
Un algoritmo es una serie de pasos organizados que describe el proceso que se debe
seguir para dar solucion a un problema especco. En los a nos 70s, fue John Henry
Holland quien desaroll o la idea sobre algoritmos geneticos para ser adoptada en el area
de inteligencia articial. Son llamados as porque se inspiran en la evoluci on biol ogica y
su base genetico-molecular. Estos algoritmos hacen evolucionar una poblaci on de indi-
viduos sometiendolos a operadores semejantes a los que act uan en la evolucion biologica
(mutaciones y recombinaciones geneticas), as como tambien a una seleccion de acuerdo
con alg un criterio. Este proceso decide cuales son los individuos m as adaptados en dicho
problema, los cuales sobreviven, y los menos aptos son descartados [10].
El algoritmo genetico simple se divide en 4 pasos: Evaluaci on, Seleccion, Cruce y
Mutaci on. Donde al inicio del algoritmo se crea la poblaci on inicial de forma aleato-
ria, y cada individuo de dicha poblacion representa una posible soluci on del problema.
Cada individuo es representado generalmente por una tira binaria de ceros y unos,
pero puede cambiarse la representacion por cualquier tipo de abecedario para facilitar
la evaluacion de cada individuo en el problema. Los individuos estan conformados por
un genotipo, un fenotipo y una funci on objetivo. El genotipo es cada uno de los valores
que contiene la tira y cada valor por separado es un gen. El fenotipo es la representaci on
del genotipo en el problema que se desea optimizar, la representacion puede variar de
problema a problema. La funci on objetivo es una forma de medici on del individuo en
7
el ambiente en el cual se desempe na, es un valor numerico que puede ser negativo o
positivo. De esta forma pueden no solo maximizar soluciones sino tambien minimizarlas.
A continuaci on se detallan las etapas del algoritmo genetico paso a paso:
Evaluaci on: Dada la poblaci on, se eval uan cada uno de los individuos en el problema
y se obtiene su valor de la funcion objetivo. Esto representa que tan apto es el
individuo. Algoritmos geneticos no se enfoca solamente en encontrar el mejor,
tambien puede ser utilizado para minimizar. Despues de ser evaluados, se obtiene
el mejor individuo adaptado al problema de la poblaci on para realizar un historial
con el paso de cada ciclo (generaci on) y observar la evoluci on de los individuos.
Seleccion: En esta fase se escogen los padres para la siguiente generaci on. La poblacion
de la siguiente generaci on sera reemplazada por nuevos individuos creados a par-
tir de la generacion actual. Los padres son escogidos a partir de su evaluaci on de
la funcion objetivo de forma proporcional a la aptitud con el problema. Existen
varias formas de seleccion como selecci on de ruleta, seleccion estoc astica de ru-
leta, seleccion por torneo, seleccion por ranqueo, entre otros. Cada uno de estos
operadores aseguran que para la siguiente generaci on se combinen los mejores
individuos de la poblaci on.
Cruce: Es la fase m as importantes del algoritmo, ya que asegura cubrir una amplia
area dentro del espacio de b usqueda en el cual esta denido el problema. Los
individuos que fueron seleccionados previamente ser an los padres, los cuales se
cruzar an para formar nuevos individuos llamados hijos. Los hijos son una com-
binaci on de los padres, donde las caractersticas de los padres pasan a los hijos.
Hay varios tipos de cruces como cruce de un punto, cruce de dos puntos, cruce de
n puntos, cruce uniforme, entre otros. Todos estos procesos comparten el mismo
procedimiento de determinar en los padres cuales genes ser an heredados a los
hijos. Se generan los cruces necesarios para generar una poblaci on del mismo
tama no que la inicial y los padres mueren. El caso en que los padres e hijos se
encuentran sobreviviendo en la misma generaci on sobreviviendo se llama traslape
generacional.
Mutacion: Para concluir con el ciclo, ahora en cada uno de los individuos se cam-
biar a con cierta probabilidad uno de los genes. Este paso es para poder cubrir
los espacios de b usqueda que el cruce no alcanza a recorrer. La probabilidad de
mutaci on por lo general es muy baja.
f(i) = (x
i
)
2
x
i
(2.1)
8
Figura 2.1: Genotipo del Individuo 1 Figura 2.2: Genotipo del Individuo 2
Genotipo Fenotipo Valor de Aptitud
Individuo 1 0110 6 30
Individuo 2 1100 12 132
Tabla 2.1: Representacion del genotipo, fenotipo y valor de aptitud de los individuos 1
y 2
En las guras 2.1 y 2.2 se muestra el ejemplo de genotipo de dos individuos dentro
de una poblaci on de algoritmos geneticos. Los individuos 1 y 2 tienen una longitud del
genotipo de 4 bits o genes. El genotipo debe ser interpretado a un fenotipo para poder
ser evaluado en el ambiente que se estan utilizando algoritmos geneticos. En este caso
de ejemplo el fenotipo de cada individuo es interpretando la tira binaria a un n umero
en base 10 y la funci on de aptitud del individuo i es la ecuacion 2.1. En la tabla 2.1 se
representa el genotipo, fenotipo y valor de aptitud de los individuos 1 y 2. Tambien en
la gura 2.3 se muestra el ejemplo del operador cruce de un punto para crear dos hijos
a partir de dos padres.
Existen dos criterios para detener el proceso de algoritmos geneticos, un m aximo
n umero de generaciones o cuando la poblaci on que tenemos es muy parecida entre s y
no hay cambios. Durante cada generaci on se obtiene el individuo mas apto para la
funci on objetivo y se guarda como el mejor encontrado. As sucesivamente en cada
generaci on para obtener al nal del algoritmo el mejor encontrado de todas las gene-
raciones. El algoritmo genetico simple requiere parametros para cada paso. Entre ellos
los mas importantes son la probabilidad de cruce y probabilidad de mutacion.
Con el paso del tiempo m as operadores se han agregado al algoritmo genetico
simple y diversas tecnicas basadas en algoritmos geneticos. Entre ellas se encuentran
elitismo, coevoluci on, reloj de mutaci on, entre otros. Los algoritmos geneticos tienen
diversas aplicaciones, aunque tambien tienen ciertas complicaciones, cuando la funci on
objetivo tiende a tener varios mnimos o maximos locales. Para este tipo de problemas
se han desarrollado distintas soluciones tales como nichos. Sin embargo, en lo general
es un buen metodo de soluci on cuando se tiene tiempo para evaluar cada individuo y
realizar cada una de las operaciones del algoritmo.
9
Figura 2.3: Ejemplo de cruce de un punto entre el Individuo 1 y el Individuo 2
2.2. Redes Neuronales
Son un paradigma de aprendizaje y procesamiento automatico inspirado en la
forma en como funciona el sistema nervioso de los animales. Se trata de un sistema
de nodos interconectados en una red que recibe una o varias entradas y devuelve una
o varias salidas dependiendo del n umero de nodos. El perceptron es un tipo de red
neuronal que fue presentada por Frank Rosenblatt en 1958 [22]. Es la base en las redes
neuronales multicapa o perceptron multicapa. Las redes neuronales consisten en una
simulaci on de las propiedades observadas en los sistemas neuronales biologicos a traves
de modelos matem aticos recreados mediante mecanismos articiales.
Una red neuronal se compone de nodos llamados neuronas. Cada neurona recibe
una serie de entradas a traves de interconexiones y emite una salida, cada una de sus
interconexiones tienen un valor numerico otante llamado peso. Existen tres tipos de
capas de neuronas: entrada, oculta y salida. A continuacion se detallan cada una de
ellas:
Capa de Entrada: Las neuronas de entrada poseen s olo una conexi on de entrada sin
peso y n interconexiones de salida, de la misma forma tienen una funcion de
activacion que enciende o apaga dicha neurona.
Capa Oculta: Estas neuronas tienen m interconexiones de entrada con peso y p in-
terconexiones de salida con peso.
Capa de Salida: Estas neuronas tienen q interconexiones de entrada con peso y solo
una interconexi on de salida sin peso que representa una de las salidas.
El valor de las interconexiones de salida de las neuronas son la sumatoria de los
pesos de entrada multiplicados por el valor de la neurona de entrada. La ecuacion 2.2
10
muestra c omo se obtiene la salida de una neurona y
k
, donde representa la funci on de
interpretaci on, w
kj
el peso de la conexi on de entrada correspondiente con la neurona j
y xj es el valor que contiene la neurona j. Esta salida viene dada por tres funciones:
1. Una funcion de propagacion, que por lo general consiste en la sumatoria de cada
entrada multiplicada por el peso de su interconexi on (valor neto). Si el peso es
positivo, la conexion se denomina excitadora; si es negativo, se denomina inhibi-
toria.
2. Una funci on de activaci on, que modica a la anterior. Puede no existir, siendo en
este caso la salida la misma funci on de propagaci on.
3. Una funcion de transferencia, que se aplica al valor devuelto por la funcion de
activacion. Se utiliza para acotar la salida de la neurona y generalmente viene
dada por la interpretaci on que queramos darle a dichas salidas. Algunas de las
m as utilizadas son la funcion sigmoidal (para obtener valores en el intervalo [0,1])
y la tangente hiperb olica (para obtener valores en el intervalo [-1,1]).
y
k
=
_
m

j=0
w
kj
xj
_
(2.2)
En la gura 2.4 se muestra el ejemplo de una red neuronal con dos entradas y
una salida. La capa de entrada contiene dos neuronas de entrada y una tercera neurona
de polarizacion interconectadas a la capa oculta. En la capa oculta se encuentran dos
neuronas con sus respectivas conexiones hacia la capa de salida. La capa de salida solo
tiene una salida. La red neuronal de ejemplo presentada puede ser entrenada a partir
de una base de datos que contengan las entradas y salidas correctas que debe entregar
la red neuronal.
La retropropagaci on es una algoritmo de aprendizaje supervisado dentro del area
de estudio de las redes neuronales [34]. El aprendizaje en las redes neuronales consiste
en proporcionar a la red neuronal datos como entrada a su vez que se le indica cual es la
salida (respuesta) esperada. En cada ciclo del algoritmo (epoca) se muestra la entrada
y la salida esperada, si la salida esperada no es igual a la salida deseada se realiza un
ajuste. El ajuste se realiza a los pesos de las conexiones tratando de minimizar el error.
Las epocas se repiten hasta que la salida esperada sea igual a la que se encuentra en la
base de datos con las mismas entradas.
Las redes neuronales dependen totalmente de su topologa, es decir el n umero de
neuronas en cada capa. La desventaja de las redes neuronales es el saber como crear la
topologa de la misma. No hay una forma predeterminada o con base te orica de c omo
11
Figura 2.4: Ejemplo de Red Neuronal con tres entradas y una salida
debe ser la topologa de la red para determinado problema. Una red neuronal puede
ser muy buena para un problema con determinada topologa, pero para otro problema
tardar mucho o nunca encontrar los pesos exactos para un optimo funcionamiento. Una
de las ventajas de las redes neuronales es el manejo de datos en punto otante.
Las redes neuronales han sido presentadas como soluciones para muchos proble-
mas. En areas como minera de datos, videojuegos entre otros. Sin embargo, una red
neuronal no asegura que pueda realizar su objetivo de la mejor forma. Esto se debe a
que la red neuronal debe tener una buena topologa para llegar a ser lo mas eciente
posible. La topologa es especicada por el usuario y por lo tanto el tener una mala
topologa puede llegar a ser contraproducente para la soluci on.
2.3. NEAT
El problema con el uso de redes neuronales es la topologa, pues el dise no de la
misma es crucial para poder obtener una red neuronal optima para el problema. La Neu-
roevoluci on (NE) abarca el tema sobre evoluci on articial de una red neuronal usando
algoritmos geneticos. Dada una red neuronal, con el algoritmo genetico se busca sobre
el espacio mismo de la red la topologa (neuronas, conexiones y pesos) que optimice el
objetivo de la red neuronal. NEAT busca los valores que optimicen la red neuronal en
12
espacios continuos y de alta dimensionalidad. Sin embargo, no cambian las capas de
entrada y salida de la red neuronal.
NEAT fue desarrollado por Kenneth Stanley Owen y Risto Miikkulainen en la
Universidad de Texas [26]. Fue dise nado con la nalidad de buscar y minimizar la di-
mensionalidad de la red neuronal al mismo tiempo que realiza la b usqueda de los pesos
correctos de las conexiones. Ademas se presentan aspectos innovadores en el area de
NE. Un aspecto de ellos es la forma en como se representa el genoma o cromosoma del
individuo ademas de introducir un historial de innovaciones. El historial de innovacio-
nes representa las modicaciones que cada red neuronal sufre en cada generacion con
el n de dar mas probabilidades de sobrevivir dichos cambios.
El algoritmo NEAT representa una combinaci on de algoritmos geneticos y redes
neuronales. En dicho algoritmo las redes neuronales representan la poblaci on del al-
goritmo genetico. Y los operadores del algoritmo genetico se utilizan para realizar la
b usqueda de la mejor red neuronal para el problema. El problema al que se enfrenta
NE es generar una codicaci on de la red neuronal optima para utilizar operadores de
algoritmos geneticos. Algunas de las codicaciones son directas o indirectas. La codi-
caci on directa signica que el genoma es fenotipo, sin ning un paso intermedio para
decodicarlo. En el caso de la codicacion indirecta, el genoma representa como cons-
truir la red neuronal. NEAT utiliza codicacion indirecta, donde el genoma representa
c omo construir la red neuronal a partir de listas de neuronas y conexiones.
La estructura de una neurona contiene la siguiente informaci on:
N umero de Identicacion: Un n umero unico para cada neurona creada durante la
ejecuci on del algoritmo.
Tipo de Neurona: El algoritmo NEAT contiene 4 tipos diferentes de neuronas. En-
trada, salida, oculta, bias y ninguno.
Recurrente: Variable booleana que indica si la neurona tiene una conexi on a s misma.
Valor de Curvatura: Un valor otante que determina la curvatura de la funci on
sigmoide encargada de la activaci on de la neurona.
La estructura de una conexion contiene la siguiente informaci on:
N umero de identicacion de neurona de salida: Desde cual neurona es que sale
la conexion.
N umero de identicacion de neurona de entrada: Hacia cual neurona es que en-
tra la conexi on.
13
Peso: Variable otante que indica el valor del peso de la conexi on. Valor del tipo
otante.
Habilitada: Variable booleana para denir si la conexion esta habilitada o no.
Recurrente: Variable booleana para denir si la conexi on es recurrente. En el sentido
contrario al de entrada-salida.
N umero de Innovaci on: Valor unico creado cada vez que una innovacion es intro-
ducida durante la ejecuci on del algoritmo.
En las tablas 2.2 y 2.3 se ejemplica el genoma de una red neuronal. La red neuro-
nal presenta en su capa de entrada dos neuronas de entrada y en su capa de salida solo
una neurona. La capa escondida tiene dos neuronas con varias conexiones. De toda la
lista de conexiones, solo la conexi on con innovacion 3 esta deshabilitada. En la gura
2.5 se muestra el fenotipo de una red neuronal construida a partir de las tablas 2.2 y 2.3.
Figura 2.5: Ejemplo del fenotipo de una red neuronal
En NEAT se utilizan cuatro operadores para mutaci on: una mutaci on para crear
una nueva conexi on al genoma, una mutaci on para a nadir una nueva neurona, una
mutaci on para cambiar los pesos de las conexiones, y una mutacion que puede alterar
la curva de la funci on de activaci on. Las innovaciones son eventos en los que agregan
nuevas estructuras al genoma como conexiones o neuronas. La funcion de la innovaci on
dentro de NEAT es llevar un historial de los cambios hechos a las redes neuronales. Al
momento de agregar una neurona o conexi on primero se verica si la innovacion no ha
14
N umero de Identicaci on Tipo de Neurona
1 Entrada
2 Entrada
3 Oculta
4 Oculta
5 Salida
Tabla 2.2: Lista de Neuronas de un Genoma utilizando la codicaci on del algoritmo
NEAT
Peso Neurona
de Salida
Neurona
de Entrada
Habilitada Recurrente N umero de
Innovacion
1.2 1 3 Verdadero Falso 1
-3 1 4 Verdadero Falso 6
0.7 2 4 Verdadero Falso 2
-2.1 3 4 Verdadero Falso 8
1.1 3 5 Falso Falso 3
0.8 4 5 Verdadero Falso 4
-1 5 3 Verdadero Verdadero 7
Tabla 2.3: Lista de Conexiones de un Genoma utilizando la codicacion del algoritmo
NEAT
sido creadas antes. En caso de haber sido creada antes tomara el mismo valor unico de
innovacion del historial, en caso contrario la innovacion es agregada al historial. El his-
torial de innovaciones es una forma para evitar la creaci on de redes neuronales inv alidas.
La operacion de cruce en NE es uno de los problemas mas grandes a enfrentar,
ya que en un cruce podemos producir una red neuronal no valida. Una red neuronal
inv alida es aquella que posee alguna discrepancia como dos neuronas repetidas o co-
nexiones que no tienen entrada o salida dado que la neurona no existe. En NEAT, se
identica en el genoma de las dos redes las neuronas padres todas las conexiones de
acuerdo a su innovaci on, y se identican los puntos donde dieren y los excesos. Reali-
zando varios puntos de cruce donde sean validos y creando a partir del genoma de los
padres un hijo que es una rede neuronale aceptable y heredando material genetico de
los padres.
En la gura 2.6 y 2.7 se muestran los fenotipos de dos padres y en la gura 2.8
c omo se realiza el cruce. El primer paso para realizar el cruce es poder alinear entre las
conexiones los n umeros de innovacion. Las conexiones en un cuadro gris indican que
est an inhabilitadas. Como se logra observar los padres poseen diferentes topologas.
Pero emparejando los n umeros de innovacion de las conexiones de ambos padres es
15
f acil saber donde realizar un cruce. Los genes que no se logran emparejar antes del
termino del genoma son llamados genes disjuntos. Los genes que no pueden ser empa-
rejados despues de terminar un genoma son llamados genes excesivos. El operador de
cruce es multipuntos, esto signica que en varios puntos de ambos padres se realiza el
cruce y se combinan. Los genes disjuntos y excesivos del padre m as apto son lo que
se usan para crear al hijo. De esta forma el algoritmo NEAT se asegura de crear solo
redes neuronales v alidas.
Figura 2.6: Fenotipo del Padre 1
Figura 2.7: Fenotipo del Padre 2
Adem as de las innovaciones y el metodo para la codicacion del genoma, NEAT
tiene la caracterstica de separar la poblaci on de redes neuronales en especies. Cuando
una red neuronal dentro del algoritmo NEAT es modicada por una innovaci on es muy
probable que la aptitud sea muy baja. Por ejemplo, si un individuo es mutado con una
neurona nueva su aptitud se ver a afectada. Sin embargo, a un no sabemos si dicha in-
novacion puede llevar a abrir un nuevo espacio de b usqueda donde se puede encontrar
la red neuronal optima para el problema. Para darle oportunidad al individuo afec-
tado por la mutacion, el algoritmo NEAT propone especiaci on. Esto signica separar
la poblacion en especies. Dentro del algoritmo NEAT se llama especie a una serie de
individuos con un alto grado de similitud en sus genomas. Utilizando especiacion solo
los individuos de la misma especie compiten contra los de la misma especie y no de
diferentes, as se protegen contra una extinci on prematura. Durante toda la ejecucion
del algoritmo NEAT se guarda un historial de las especies conforme van apareciendo en
las mutaciones. Al principio del algoritmo todos los individuos pertenecen a la misma
especie. La poblacion inicial contiene el mismo genoma en cuanto a neuronas y cone-
xiones, pero varan en los pesos que se asignan de forma aleatoria.
En cada una de las generaciones, cada uno de los individuos se compara con el
16
Figura 2.8: Ejemplo de cruce entre el Padre 1 y el Padre 2
mejor individuo de cada especie hasta el momento encontradas y se obtiene una dis-
tancia de compatibilidad. Si la distancia de compatibilidad del individuo se encuentra
dentro de un rango aceptable, el individuo es agregado a la especie del individuo contra
el que fue comparado. En caso de que el individuo haya sido comparado con todas las
especies y a un no logra formar parte de una especie, entonces se crea una nueva especie
y es agregado a ella. La forma de obtener la distancia de compatibilidad es a partir del
conteo de genes excesivos (E), genes disjuntos (D) y diferencia en los pesos de las co-
nexiones (W) entre los dos individuos a comparar. En la ecuacion 2.3 se muestra c omo
se obtiene la distancia de compatibilidad. Donde N representa el n umero de genes en el
genoma m as grande de los dos que se est an comparando con la nalidad de normalizar
por el tama no del genoma. Los valores de c
1
, c
2
y c
3
se utilizan para modicar el valor
nal de la distancia.
C.Dist. =
c
1
E
N
+
c
2
D
N
+ c
3
W (2.3)
Una vez asignado un individuo a una especie, s olo se puede cruzar con individuos
de su propia especie. Sin embargo, separar los individuos en especies no protege del
todo a las innovaciones que van apareciendo conforme el paso de las generaciones. El
algoritmo NEAT introduce una tecnica para poder ajustar la aptitud de cada indi-
viduo para ayudar a los individuos que acaban de mutar y mantenerlos activos por
17
un tiempo razonable. La tecnica se llama reparticion explcita de aptitud. El valor de
la aptitud de cada individuo se comparte con los miembros de su misma especie, se
suma el valor de todos los individuos en la misma especie y es dividida por el n umero
total de individuos antes de realizar la selecci on para la reproducci on. Entonces, las
especies m as grandes son penalizadas por su tama no, y las especies m as peque nas en
cuanto a cantidad tienen una ventaja para mejor desarrollo y supervivencia dentro de
la poblacion. Adem as del uso de la repartici on explcita de actitud, las especies que se
encuentran en un rango de edad bajo son consideradas jovenes y su aptitud recibe un
bono. Del mismo modo, si la especie tiene una edad dentro de un rango de edad alto
es considerada vieja y recibe una penalizacion en su aptitud antes de realizar el c alculo
de la reparticion explicita de aptitud. Tambien si una especie no muestra mejora en un
n umero determinado de generaciones es eliminada, en caso de que la especie contenga
el individuo mejor encontrado hasta el momento se le permite vivir.
Despues de realizar la especiaci on y la asignaci on de hijos para cada especie el
siguiente paso dentro del algoritmo NEAT es la epoca. Se le llama epoca a la fase donde
se realiza la reproducci on o el cruce entre individuos de la actual generaci on para crear
nuevos individuos con un gran parentesco a los padres y sean evaluados en la proxima
generaci on. Durante la epoca se llevan acabo varias operaciones. A continuaci on se
mencionaran cada una de ellas paso a paso:
Reinicio y Muerte: El primer paso es borrar cualquier fenotipo creado anteriormente
en la generaci on. Despues se examinan todas las especies y se eliminan de la es-
pecie todos los miembros excepto el mejor de cada especie. El individuo mejor
adaptado de cada especie o lder es utilizado para obtener la distancia de compa-
tibilidad. Si una especie no ha logrado mejoras en su aptitud durante determinado
n umero de generaciones es eliminada.
Actualizar Aptitud: Los valores de la aptitud para cada individuo dentro de la po-
blaci on son actualizados con los obtenidos en la ultima generaci on.
Ordenar y Guardar: Se ordenan los genomas de acuerdo a su aptitud aun no ajus-
tada y se guarda la aptitud del mas alto. Ademas, se guardan los genomas de
los n mejores individuos. El valor predeterminada es de guardar los mejores 3
individuos por generaci on.
Especiacion y Calculo de Hijos: El primer paso que se debe realizar es asignarles
a cada uno de los individuos la especie a la que pertenecen. A continuaci on se
calcula la repartici on explcita de aptitud para los individuos y despues obtener
el promedio de la aptitud de la especie. Con el valor promedio de la especie y
la aptitud ajustada de los individuos se obtiene el n umero de hijos o veces que
18
se reproducira el individuo. Finalmente, se suma el valor del n umero de hijos de
cada individuo en la especie y el total es el n umero de hijos que le corresponden a
la especie. Con la cantidad de hijos que le corresponden a cada especie se escogen
para la reproduccion solo cierto porcentaje de cada especie. El valor que utiliza el
algoritmo NEAT predeterminadamente es del 20 %. El valor del porcentaje puede
ser modicado dentro de los parametros del algoritmo NEAT.
Algoritmo 2.1 Implementaci on del algoritmo NEAT por Matt Buckland [5]
Entrada: Par ametros NEAT, Topologa Inicial, Criterio de Terminacion.
Salida: Historial de Innovaciones, Genoma del Mejor Encontrado.
Inicializar Poblaci on a partir de la Topologa Inicial
mientras Criterio de Terminaci on = Falso hacer
Evaluar Poblaci on
Efectuar Especiacion
Efectuar Reproduccion
Efectuar Mutacion
n mientras
Dependiendo de los parametros las redes neuronales pueden ser afectadas de distin-
tas formas, ya sea de modicandolas de una forma lenta o muy extrema. Los parametros
que utiliza el algoritmo NEAT son los siguientes.
Tama no de Poblacion: El tama no de poblaci on es un factor muy importante. Entre
m as grande sea, mayor es el espacio de b usqueda al cual el algoritmo genetico tiene
acceso. A diferencia de algoritmos geneticos simples, el algoritmo NEAT al realizar
una innovaci on sobre una red neuronal abre un espacio nuevo de b usqueda. Por lo
tanto, mayor poblaci on ayuda al algoritmo NEAT a encontrar una red neuronal
lo sucientemente capaz de desempe narse de manera optima en el problema o
ambiente.
Probabilidad de Cruce: Probabilidad que dos padres se crucen y los hijos pasen a
formar parte de la poblaci on. En caso de que no se realice cruce, los padres son
quienes pasan a formar parte de la poblacion.
Porcentaje de sobrevivencia: Despues de la fase de especiacion dentro del algo-
ritmo NEAT, solo cierto porcentaje de cada especie dentro de la poblaci on es
apta para procrear. Este par ametro indica el porcentaje de cada especie que
puede procrear.
N umero de generaciones permitidas sin mejora: Cuando una especie no logra
ninguna mejora despues de ciertas generaciones es eliminada por completo. Este
par ametro sirve para indicar despues de cuantas generaciones debe ser eliminada
una especie.
19
N umero maximo permitido de neuronas: Uno de los objetivos del algoritmo NEAT
es el de obtener una red neuronal optima con una topologa mnima. Este par ame-
tro es utilizado para determinar el n umero m aximo de neuronas. En caso de que
un individuo de la poblacion posea una red neuronal con mayor n umero de las
permitidas, se eliminan neuronas hasta que tenga el lmite permitido.
Probabilidad de agregar conexi on: Par ametro para denir la probabilidad de agre-
gar una conexi on en la red neuronal. Las conexiones pueden ser entre la misma
neurona, haciendo la conexi on recurrente.
N umero de intentos para agregar conexion: Dentro del algoritmo NEAT, cabe
la posibilidad que al agregar una conexi on entre dos neuronas ya exista. En estos
casos se intenta agregar de nuevo, este par ametro indica cu antos intentos deben
realizarse antes de desistir.
Probabilidad de agregar conexi on recurrente: Par ametro para denir la proba-
bilidad despues de agregar una conexi on, denir si debe ser recurrente o no.
Probabilidad de agregar neurona: Par ametro que dene la probabilidad de agre-
gar una neurona a la red neuronal. La neurona que se agregara a la red neuronal
puede aparecer entre la capa de entrada y salida, aun entre neuronas de la capa
oculta.
Probabilidad de perturbacion peso: Par ametro que dene la probabilidad en cada
uno de los pesos de las conexiones dentro de una red neuronal si deben ser per-
turbados o no. Perturbar el peso de una conexi on signica modicar el peso en
cierto rango.
Rango maximo de perturbaci on de Peso: Par ametro que dene el rango maximo
en el cual puede ser perturbado el peso de una conexion.
Probabilidad de reemplazar peso: Par ametro que dene la probabilidad de rem-
plazar por completo el peso de una conexi on. Al contrario de solo perturbarlo,
genera un nuevo peso aleatorio para el peso de la conexi on.
Probabilidad de perturbacion de funci on de activaci on: Par ametro que dene
la probabilidad de modicar la funcion de activaci on de una neurona.
Rango maximo de perturbaci on de funcion de activacion: Par ametro que de-
ne el rango maximo en el cual puede ser perturbado el valor de la funcion de
activacion de la neurona.
Rango de distancia de compatibilidad: Par ametro utilizado para denir si un in-
dividuo de la poblaci on pertenece a una especie o no.
20
Lmite maximo de edad de especie para ser considerada joven: Par ametro uti-
lizado para denir cuando una especie es joven. En el caso de entrar en el rango
0 y la edad lmite recibe una bonicaci on en su aptitud la especie completa.
Bonifacion en la funci on aptitud por ser especie joven: Par ametro que indica
cu anto es el porcentaje por el cual se bonica la funcion de aptitud para una
especie considerada joven.
Lmite maximo de edad de especie para ser considerada vieja: Par ametro uti-
lizado para denir cu ando una especie es vieja. En el caso de entrar en el rango
del par ametro y el innito, recibe una penalizacion en su aptitud la especie vieja.
Bonifacion en la funci on aptitud por ser especie vieja: Par ametro que indica cu anto
es el porcentaje por el cual se penaliza la funcion de aptitud para una especie
considerada joven.
Limite de n umero de especies: Par ametro que indica cuantas especies deben apa-
recer maximo en cada generaci on. En el caso de tener m as especies del lmite
establecido, las de menor aptitud son eliminadas.
Los pasos del proceso NEAT son muy parecidos a los del algoritmo genetico. El
algoritmo 2.1 representa de manera abstracta los pasos que se realizan sin entrar en
detalle en c odigo. El objetivo del algoritmo NEAT es modicar una red neuronal a
partir de una topologa mnima. Agregando neuronas, conexiones y modicando pesos
entre conexiones. Ademas de crear nuevas redes neuronales con algoritmos geneticos.
2.4. StarCraft
StarCraft es un videojuego de estrategia en tiempo real de ciencia cci on creado
por Blizzard Entertainment, lanzado al mercado en 1998 para PC [33]. Se encuentra
ambientado en el siglo XXVI, en el que tres razas provenientes de distintos lugares
del universo luchan por la supremaca y la supervivencia en alg un lugar del Sector
Korpulu: los Terran, humanos exiliados de la Tierra; los Zerg, una raza de insectoides
que buscan la perfeccion genetica absorbiendo razas enteras; y los Protoss, un pueblo
aliengena humanoide con un gran desarrollo tecnologico y capacidades psquicas. Cada
una de las razas tiene diversas ventajas y desventajas, que gracias a los creadores del
juego es la clave de un juego perfectamente balanceado y competitivo.
Para crear unidades y edicios, as como para investigar nuevas tecnologas, son
necesarios dos tipos de recursos: minerales y gas vespeno. Controlar y extraer estos
21
recursos rapidamente es la base de la economa del juego y as lograr parcialmente una
victoria. Los minerales (o Kristalis), es un recurso limitado. Las vetas de minerales exis-
tentes en los mapas no se regeneran. Una vez explotadas desaparecen, generando que
sea de vital importancia tener un ingreso seguro. Los Minerales son el recurso principal
para la construcci on de unidades y edicios, sin embargo los minerales no son inde-
pendiente del gas vespeno. Diferentes unidades y edicios requieren una combinaci on
de minerales y gas para ser creados. El gas vespeno escapa a la supercie en algunos
puntos del mapa por peque nos geiseres. El gas es toxico en su estado natural, por lo
que tiene que pasar por un proceso de renado antes de su uso. Es necesario que se
construyan plantas de procesamiento en los geiseres de vespeno, de donde es recogido
el gas por los obreros. No es un recurso completamente limitado, pero la cantidad de
gas que se extrae disminuye con el tiempo notoriamente tras pasar su lmite de reserva.
El gas vespeno es requerido cuando se deciden entrenar ciertas unidades, as como para
la investigaci on de tecnologas y construcci on de edicios avanzados.
En StarCraft, para mantener el juego equilibrado en cuanto a poblaci on de uni-
dades se utiliza un lmite de suministros para las unidades. El lmite de suministros es
200 y la forma de obtener el uso actual de suministros es sumar el suministro reque-
rido por cada unidad actual en el campo de batalla. Cada unidad tiene establecida un
suministro que es proporcional a su potencial de ataque y cada raza tiene un edicio o
unidad que aumenta los suministros. Por ejemplo, todos los obreros de todas las razas
tienen un suministro de 1, en cambio un Terran BattleCruiser tiene un suministro
de 6.
Todas las razas est an regidas por un TechTree o

Arbol de Tecnologas. Esto signi-
ca que para construir cierta unidad se requieren de satisfacer los requerimientos de esa
unidad en el arbol de tecnologas. Del arbol de tecnologas nacen las estrategias de cada
jugador y el macromanagement, dado que para entrenar cierta unidad solo se requieren
de ciertos edicios y no hay necesidad de construir otros edicios ni de entrenar las
dem as unidades. S olo creando los edicios necesarios para ciertas unidades se logran
utilizar los recursos y el tiempo de manera mas eciente. Estas estrategias son conocidas
entre los jugadores como builds, es un guion o una serie de pasos que el jugador sigue
al pie de la letra donde se especica que recursos debe de tener en un determinado
tiempo, que edicios debe tener construidos en determinado tiempo y que unidades
debe de haber entrenado en determinado tiempo. Existen muchas variaciones de estas
builds para cada raza y estilo de juego que pueden ser encontradas en internet. Para
este problema de planeaci on se han utilizado diferentes metodos para resolverlo. Una de
las soluciones propuestas es un algoritmo genetico dise nado para encontrar la build m as
optima y r apida para llegar a determinada situaci on (recursos, unidades y edicios) en
el videojuego StarCraft II, que es la secuela de StarCraft:BroodWar [14].
22
Todas las unidades y edicios reciben ordenes y poseen puntos de vida. Las uni-
dades y edicios Protoss por su gran desarrollo tecnologico son los unicos que poseen
escudos de plasma (Shield Points o Puntos de Escudo) que al no estar en batalla se
regeneran de forma normal, mas no los puntos de vida. La mayora de las unidades
Terran son biol ogicas, esto signica que pueden ser restaurados sus puntos de vida por
la unidad Terran Medic. Otras unidades y edicios son del tipo mec anico, pueden ser
reparadas y recuperar por completo sus puntos de vida por los obreros de los Terran,
los Terran SCV. Todas las unidades y edicios de los Zerg son biol ogicas y tienen la
habilidad de curarse automaticamente los puntos de vida por completo de la misma
forma que los escudos plasma. Pero tambien pueden las unidades ser curadas por el
Terran Medic. Los edicios reciben como ordenes la de entrenar cierta unidad con la
que este capacitado dicho edicio o investigar una nueva tecnologa para obtener ven-
taja en el campo de batalla.
Las unidades pueden ser terrestres o aereas. Las unidades reciben como ordenes
el Move, Patrol, Hold Position, Stop y Attack. A continuaci on ser an descritas cada
uno de los tipos de ordenes. La orden Move signica moverse a determinada coordenada
e ignorando enemigos cuando los vea, al llegar a la coordenada de destino recibir a la
orden Stop. Si la orden Move se realiza sobre un aliado, la unidad seguira a la unidad
lo mas cerca posible. La orden Patrol recibe dos argumentos, el primero es el donde
se encuentra la unidad y la segunda la coordenada en el mapa donde se hace clic, esta-
bleciendo la ruta mas corta entre los dos puntos y desplaz andose desde el primer punto
al segundo, en el caso de ver una unidad enemiga la atacar a. La orden Hold Position
detiene a la unidad al momento de dar la orden y atacara lo que este dentro de su
rango de ataque pero sin moverse del punto donde se detuvo. La orden Stop detiene
a la unidad y la deja en un estado inactivo, si observa una unidad enemiga autom ati-
camente intentar a seguirla y atacarla pero sin regresar al punto donde se encontraba
inicialmente antes de observar la unidad enemiga. La orden Attack puede realizarse de
dos formas, una es haciendo clic derecho sobre una unidad enemiga atacandola direc-
tamente y al destruirla recibir a autom aticamente la orden Stop, y la otra es dar clic en
el bot on Attack y despues dar clic izquierdo en el mapa, de esta forma las unidades se
desplazar an hasta el punto donde se hizo clic y si divisan uno o mas enemigos atacaran
el mas cercano de forma autom atica.
Las unidades para cada raza son diferentes, pero teniendo todas las unidades
siempre una contraparte o llamada counter que tiene ventaja contra esa unidad, por
ejemplo la contraparte de un Terran Marine es un Zerg Hydralisk, la de un Protoss
Zealot sera un Zerg Zergling. Todas las unidades tienen un tiempo de enfriamiento
(Cooldown) entre un ataque y otro. Las unidades terrestres se dividen en dos tipos, las
23
que poseen un ataque cuerpo a cuerpo (Melee) y las que atacan dentro de un rango de
ataque (Ranged). Las unidades Ranged tienen una determinada distancia lmite donde
pueden atacar. De una unidad a otra vara la distancia de ataque. Ciertas unidades
tienen habilidades especiales de acuerdo con su raza y de las tecnologas que mane-
jan, por ejemplo el Terran Siege Tank tiene la habilidad de plantarse en el suelo y
adquirir m as rango y poder de ataque pero sacricando la movilidad al quedar inmo-
vilizado. Otra unidad es el Protoss High Templar con la habilidad de provocar una
lluvia psquica sobre una parte del terreno y causar da no a las unidades que esten bajo
la lluvia. Otras formas de contraataque son los countermeasures, que son estrategias
contra ciertas unidades para poder destruirla de forma mas ecaz. Como por ejemplo
contra un Protoss Carrier hay varios metodos, uno puede ser usando la habilidad es-
pecial EMP Shockwave del Terran Science Veseel para agotar el escudo que poseen
todas las unidades Protoss y dejando vulnerables sus puntos de vida para que otras
unidades ataquen directamente el Protoss Carrier [16].
Para todas las razas hay investigaciones o mejoras de equipo. Mejoras como por
ejemplo el ataque de las unidades terrestres, mejorar la defensa de las unidades aereas
o mejorar el escudo plasma de la raza Protoss. Cada nivel de investigaci on tiene un
costo de minerales y gas que aumenta conforme al nivel de investigacion. Una mejora
de equipo en una batalla puede signicar la victoria o la derrota dependiendo de quien
posea la mejora. Ademas de las mejoras para todas las unidades en general, hay mejoras
unicas para algunas unidades. Como por ejemplo aumentar el rango de ataque de la
unidad Protoss Dragoon o la velocidad de ataque del Zerg Zergling.
El campo de batalla en StarCraft, tambien conocido como mapa, esta dividido en
dos tipos de terrenos: tierra y agua. Las unidades terrestres s olo pueden movilizarse
en tierra siempre y cuando esten conectados y nada obstaculice su ruta. Las unidades
aereas pueden estar en cualquier parte del mapa y moverse sin ninguna restricci on.
En tierra existen dos tipos de elevaciones de terreno, bajas y altas. Las unidades en
terreno elevado pueden atacar a las unidades que se encuentran en terreno bajo sin
poder ser atacadas desde terreno bajo. As mismo, para poder llegar a terreno elevado
hay rampas, estas rampas son conocidas como choke points por ser espacios angostos
y pueden ser facilmente defendidos siempre y cuando las unidades que deenden esten
en una posici on ventajosa.
En la gura 2.10 se presenta una captura de pantalla del videojuego StarCraft.
Se aprecia en la parte inferior la Interfaz Graca del Usuario, dividida en tres partes.
En la esquina inferior izquierda esta el minimapa donde el jugador puede observar
todo el mapa completo pero en miniatura con la topologa del terreno, las unidades y
edicios tanto como propios, aliados y enemigos. En la parte inferior central se observa
24
Figura 2.9: Captura de pantalla del videojuego StarCraft
la o las unidades seleccionadas con una representacion visual de sus puntos de vida, el
m aximo de unidades seleccionadas por un jugadores de 12. En la parte inferior derecha
se observan los comandos que puede realizar la o las unidades seleccionadas, simple-
mente dando clic al comando deseado o con su respectivo atajo en el teclado (hotkey).
En la parte central se logra observar el campo de batalla con ciertas unidades Protoss
atacando y algunos edicios Terran. En la esquina superior derecha se logra observar
los minerales, gas vespeno, suministros y limite de suministros actuales.
2.4.1. Macromanagment
En las partidas del tipo Melee o Free For All, los jugadores comienzan con un
Centro de Mando (Terran Command Center, Protoss Nexus o Zerg Hatchery, depen-
diendo de la raza con la que cada jugador elige jugar) y con 4 obreros o trabajadores.
Los trabajadores son las unidades que se utilizan principalmente para explotar los re-
cursos y construir edicios. Los edicios pueden ser utilizados para producir algunas
unidades, las actualizaciones de la investigaci on, para proporcionar un suministro o
una funci on como la defensa est atica. Algunos edicios desbloquean otros edicios m as
arriba en el arbol tecnologico. No m as de un trabajador puede extraer minerales de
25
una veta a la vez y dependiendo de la distancia entre la veta de minerales y el Centro
de Comando es cuantos trabajadores deben minar esa misma veta de minerales para
obtener la maxima eciencia. Poner enfasis en la extraccion de minerales es b asico para
un buen suministro de recursos. El gas se extrae de un geiser. Una vez que un jugador
ha encontrado un geiser, tiene que construir una planta de extracci on de gas en el antes
de ser capaz de extraer recursos. Un geiser tambien tiene una cantidad limitada de
gas disponible. La cantidad de trabajadores tambien depende de la distancia con el
Centro de Mando. Utilizando los recursos que los trabajadores recolectan, el jugador
puede utilizar a los trabajadores para construir edicios. Estos edicios desbloquean
algunas unidades, as como otros edicios. La construccion de edicios es con el n de
desbloquear a otros edicios especcos o unidades que se llama teching arriba.
Al entrenar unidades el jugador debe de tener en cuenta otro recurso: los sumi-
nistros. Ciertos edicios o unidades ofrecen al jugador un aumento de la cantidad de
suministros. Una vez que un jugador tiene sucientes minerales, gas y suministros para
la poblaci on de unidades, comenzar a a crear en grandes cantidades unidades para atacar
al enemigo. Siempre tratando de construir la mayor cantidad posible y de forma cons-
tante. Todas las instalaciones de producci on pueden establecer Rally Points, despues
de salir la unidad de dicho edicio al campo de batalla o mapa se dirigira autom atica-
mente a el Rally Point establecido para el edicio. Manteniendo siempre un ejercito
en constante movimiento y crecimiento, tratando de superar en n umero al enemigo,
pero dejando a las unidades atacar por la inteligencia articial con la que cuenta el
videojuego.
Figura 2.10: Ejemplo de una build para el videojuego StarCraft
26
2.4.2. Micromanagment
Micromanagment es la estrategia en la cual se controlan las unidades para pre-
servar sus puntos de vida y causar el mayor da no posible a las unidades rivales. Dar
ordenes a las unidades para atacar, moverse, patrullar, o mantener la posicion son todas
las formas generales de realizar micromanagment.
Las formas m as comunes de micromanagment a traves de ordenes se explicaran a
continuacion:
Ataque Micro: Por ejemplo cuando se tiene una unidad o un grupo de unidades a
disposicion y se desea realizar un ataque. Seleccionando el o las unidades se hace
clic en el boton Attack (A en el teclado) y despues dar clic izquierdo a un deter-
minado lugar en el mapa. De esta forma se puede lanzar ataques a varios puntos
del mapa de una forma r apida y sencilla.
Move Micro: Por ejemplo para dar ordenes r apidamente a varias unidades de moverse
a un punto en el mapa. Primero seleccionar las unidades y despues se hace clic
izquierdo en alguna parte del mapa o clic en el boton Move (M en el teclado).
Dando como resultado que se movilicen las unidades hacia el punto que se les in-
dic o pero sin atacar a cualquier cosa en su rango de visi on, dej andoles vulnerables
a ataques de unidades o edicios defensivos.
Hold Position Micro: Se trata de darle a una o mas unidades la orden de Move y
luego dar clic en el bot on Hold (H en el teclado) para detener el movimiento de
las unidades. Las unidades abren fuego contra la unidad m as cercana dentro de
su rango de alcance al recibir la orden de Hold. Esta tecnica se utiliza a menudo
con unidades que tienen un ataque de rango y una velocidad de movimiento mas
alta que el promedio de unidades.
Patrulla Micro: Consta de enviar una unidad en una direcci on para despues dar clic
en el boton Patrol (P en el teclado), directamente detras de dicha unidad que se
le orden o patrullar. A otra unidad se le ordena seguir atacando lo que este atras
de la unidad que se encuentra patrullando. Esta tecnica es usada com unmente
para eliminar unidades rivales con alto nivel de peligrosidad.
Otra forma de micromanagment que complementa al de ordenes es el basado en
formaciones, StarCraft no posee ning un algoritmo o herramienta que ayude a formar los
grupos de unidades, as que el jugador tiene que hacerlo de forma manual, a continuaci on
se explica en detalle algunas tecnicas que sugiere el equipo Team Liquid, que son
jugadores profesionales en StarCraft [15]:
27
Flanking: Es cuando se ordena a un grupo de unidades atacar al enemigo desde un
angulo para despues con otro grupo de unidades atacar desde otro angulo el grupo
de unidades enemigas. La gura 2.11 muestra un ejemplo de Flanking.
Figura 2.11: Ejemplo de Flanking, las unidades aliadas son representadas por cuadros
blancos y las unidades enemigas por cuadros grises
Surrounding: Es cuando se tiene un grupo de unidades y con simples movimientos
se rodea por completo al enemigo para no dejarlo escapar ni recibir refuerzos
dej andolo indefenso. Esta estrategia requiere de tener un mayor n umero de uni-
dades que el rival, se puede realizar con el mismo n umero de unidades pero no se
garantiza la victoria en la batalla. La gura 2.12 muestra un ejemplo de surroun-
ding.
Figura 2.12: Ejemplo de Surrounding, las unidades aliadas son representadas por cua-
dros blancos y las unidades enemigas por cuadros grises
Sandwiching: Es cuando se manda un grupo de unidades a atacar a las unidades
rivales y desde un angulo opuesto mandar otro grupo de unidades a atacar al
mismo tiempo. Se puede lograr encadenando ordenes. La gura 2.13 muestra un
ejempo de Sandwiching.
Making a Concave: Es cuando se forman las unidades en un semicrculo para hacer
m as difcil que el rival pueda atacar las unidades que se encuentran dentro del
semicrculo. Distribuyendo de cierta forma equitativamente el da no recibido y
28
Figura 2.13: Ejemplo de Sandwiching, las unidades aliadas son representadas por cua-
dros blancos y las unidades enemigas por cuadros grises
hacer que el rival reciba m as da no al atacarse la unidad rival mas cercana al
semicrculo. La gura 2.14 muestra un ejemplo de Making a Concave.
Figura 2.14: Ejemplo de Making a Concave, las unidades aliadas son representadas por
cuadros blancos y las unidades enemigas por cuadros grises
El jugador para obtener la victoria trata de balancear su atencion y acciones en
estas dos estrategias, micromanagment y macromanagment. S olo con entrenamiento
y el desarrollo de habilidades como planeaci on, capacidad de reaccion entre otras, el
jugador logra ser m as competitivo. Las estrategias presentadas en este apartado solo
representan unas cuantas de las que muchos jugadores alrededor del mundo han creado,
cada una adaptada a su estilo de juego, habilidad especca, build, raza, aliados, posicion
en el mapa, mapa, estado actual del juego, tiempo de juego, recursos, etc. Dando la
libertad a la imaginaci on para crearlas.
2.4.3. Brood War Application Programming Interface
Brood War Application Programming Interface [8] (o BWAPI por sus siglas en
ingles) es una interfaz de programaci on de aplicaciones para Starcraft: Broodwar con
licencia de uso libre. B asicamente es un conjunto de libreras y clases escritas en C++
que se distribuye como un proyecto para Microsoft Visual Studio. Este proyecto compila
una librera din amica (DLL) capaz de controlar unidades dentro del juego y recabar
29
informaci on del propio juego o de una repetici on guardada. Se puede utilizar como
apoyo al jugador humano o como un m odulo completo de inteligencia articial para un
juego completo.
Dada la naturaleza dinamica del ambiente, los metodos principales de BWAPI
son controlados a traves de eventos que disparan la ejecuci on de cada metodo. La clase
principal de BWAPI, Broodwar, compila los eventos posibles que pueden suceder du-
rante una partida de Starcraft. Estos metodos, adem as, estan dise nados de tal manera
que puedan ser usados cuando se programa para las tres razas. De entre todos estos
metodos, existen tres principales que controlan las tres fases de una partida: onStart(),
onEnd(bool) y onFrame().
Al inicio de todo juego, antes que la primera acci on para las unidades sea dictada,
el metodo onStart() se ejecuta. En este metodo se deben incluir todas las operaciones
necesarias para ajustar todos los par ametros que se vayan a utilizar durante la partida.
Adem as, dado que se ejecuta antes de la ejecuci on de la primera acci on, en este metodo
no se le puede dictar ning un movimiento a ninguna unidad. No obstante, puede hacerse
un analisis tanto del mapa en el que se esta jugando como de las unidades visibles que
se encuentren en el juego.
El metodo onEnd(bool) se ejecuta cada vez que un equipo resulta ganador o
cuando se reinicia la partida. Recibe como parametro una variable booleana que indica
si el jugador actual result o ganador o no. En este metodo se dictan todas las operaciones
necesarias que deben ejecutarse cuando la ultima acci on es realizada por las unidades.
Puede utilizarse para hacer un condensado de toda la informaci on recolectada durante
el juego, e incluso hacer an alisis previos de dicha informaci on.
Finalmente, el metodo onFrame() es la columna vertebral del m odulo de inteli-
gencia articial compilado con BWAPI. Este metodo se ejecuta cada vez que el estado
del juego se actualiza. Por esto mismo, este metodo incluye todas las operaciones de
toma de decisiones necesarias para dictarles a cada unidad que acciones debe llevar en
el siguiente estado del juego. Es precisamente en este m metodo donde se codican los
algoritmos de inteligencia articial para el modulo. Cuando un proyecto de BWAPI
es compilado, se crea una librera dinamica. Esta librera es cargada al juego a traves
de un programa externo que enlaza la ejecucion de la librera con Starcraft a traves
de la inyecci on de clics al juego. El programa utilizado para realizar esta conexi on es
ChaosLauncher [18]. Este programa funciona a traves de plugins que son ejecutados en
paralelo con el juego y que son capaces de modicar el funcionamiento de Starcraft.
Adem as, BWAPI utiliza ChaosLauncher para automatizar las partidas realizadas. A
traves de un archivo de texto, BWAPI es capaz de indicarle a ChaosLauncher las carac-
30
tersticas que deber a tener el juego que inicializara. Utilizando esta capacidad es posible
modicar el tipo de juego, el n umero de jugadores, la raza de los jugadores y el mapa
a utilizar. Ademas, tamben se puede indicar si se inicia otra partida automaticamente
cuando un jugador resulta ganador o si se reinicia el juego. De esta manera es posible
automatizar los juegos.
2.4.4. StarCraft Campaing Editor
Junto con el videojuego StarCraft se distribuye un editor de mapas llamado Star-
Craft Campaign Editor. Este editor permite al usuario crear mapas personalizados para
las partidas. Incluso permite modicar las reglas de juego para crear un nuevo tipo de
juego con un objetivo diferente. Estas modicaciones se realizan a traves de triggers
o condici on/acci on que generan una serie de acciones a realizar dependiendo de las
condiciones del estado actual del juego.
La creaci on de un mapa se puede dividir en tres partes: el dise no del terreno, uni-
dades iniciales para cada jugador, y el dise no del comportamiento del juego. Cada una
de estas partes constituye tambien una capa de dise no para el mapa. Para la primera
parte, el editor posee la ventaja de ser un editor del tipo arrastrar y soltar. Ya existen
elementos dise nados por Blizzard para poderlos usar durante la creaci on del terreno,
tales como obst aculos, materia prima para recolectar, tipo de suelo, etc.
En la segunda capa de dise no se colocan las unidades iniciales que participaran
durante el juego. De igual manera que el dise no del terreno, las unidades son las mismas
que dise no Blizzard para el videojuego StarCraft por lo que solamente hay que denir
su ubicaci on inicial. En esta parte adem as se establece el n umero de jugadores que
participar an durante la partida. Por otro lado, precisamente esta es la parte principal
donde se dise naron las pruebas para probar la veracidad de la hipotesis.
Finalmente, en la ultima parte se crean los triggers tendr a el mapa. Aqu es donde
se denen las reglas que seguir a el desarrollo de la partida. Como por ejemplo, bajo
que condiciones se elige al ganador. Como capa de dise no se utiliza para establecer
regiones dentro del mapa en el cual se ejecutar a alguna acci on. Las operaciones que se
deban realizar durante la ejecuci on de la partida se escriben a traves de un editor de
triggers que el mismo programa provee.
Con estas tres capas de dise no es posible construir mapas personalizados en los
cuales hacer pruebas de los m odulos creados con BWAPI. Adem as, permite controlar el
comportamiento de un ejercito enemigo sin necesidad de crear un nuevo modulo para
esto.
31
2.5. Resumen
En esta secci on se presentaron las tecnicas de algoritmos geneticos, redes neu-
ronales y NEAT. Algoritmos geneticos es un buen metodo para resolver problemas de
optimizaci on. Los algoritmos geneticos han sido empleados en muchas areas como dise no
de automatizaci on, optimizacion de espacio, problema del viajero, etc. Las redes neuro-
nales son un metodo para realizar distintas tareas en las que se tiene un conocimiento
o a un sin conocimiento. Las aplicaciones de las redes neuronales son reconocimiento
de texto, reconocimiento de patrones, identicaci on de blancos en radares, tambien en
videojuegos entre otros. El algoritmo NEAT presenta un gran aporte en el area de NE,
aplicando algoritmos geneticos para la b usqueda de una topologa optima de red neu-
ronal a partir de una topologa inicial. NEAT codica de una forma eciente el genoma
en una lista de neuronas y conexiones. Ademas NEAT protege los cambios que sufren
los individuos para darles oportunidad de explorar otras dimensionalidades del espacio
de b usqueda. Asimismo el algoritmo NEAT introduce especiacion para poder lograr
cruces entre redes neuronales produciendo redes neuronales v alidas. Igualmente se ha
explicado de forma amplia del videojuego StarCraft y sus detalles. Tambien se precisa-
ron las herramientas BWAPI y StarCraft Campaing Editor que fueron utilizadas para
el desarrollo de esta investigaci on. De esta forma, cubrimos a detalle las tecnicas que se
utilizaron para la creacion del agente inteligente y el ambiente en el cual se desarrolla.
32
Captulo 3
Agente Micro NEAT
En este captulo se detalla el agente Micro NEAT, creado con la nalidad de poder
responder las preguntas de investigacion e hip otesis que se plantearon en el captulo 1.
El algoritmo para toma de decisiones tambien es explicando a detalle a partir de las
entradas y salidas de la red neuronal que cada individuo posee. El ambiente en el cual
trabaja el agente ser a de la misma manera especicado en detalle.
3.1. Arquitectura del Agente Micro NEAT
El agente inteligente que se encargar a de tomar las decisiones dentro del video-
juego StarCraft ser a el Agente Micro NEAT, para rapidas referencias. El agente Micro
NEAT consta de una red neuronal, sensores y actuadores. Los sensores del agente Micro
NEAT cumplen el objetivo de obtener informaci on del ambiente para despues ser usada
por la red neuronal. La red neuronal cumple la funci on de procesar la entrada y regresar
una salida. La salida de la red neuronal del agente Micro NEAT es interpretada. La
interpretraci on de la salida de la red neuronal es la acci on que los actuadores realizaran
en el ambiente del videojuego StarCraft. Se determin o utilizar el algoritmo NEAT para
encontrar una red neuronal que sea lo sucientemente eciente en el problema de mi-
cromanagment utilizando el ambiente del videojuego StarCraft como area de pruebas.
Como se explic o en captulo 2, NEAT se inspira en la naturaleza para imitarla en un
ambiente computacional y desarrollar nuevas estructuras de redes neuronales. La po-
blaci on de NEAT esta formada por agentes Micro NEAT con redes neuronales unicas,
parecidas en topologa pero con pesos diferentes en sus conexiones. En cada ciclo del
algoritmo NEAT, los agentes son puestos a prueba en el ambiente StarCraft, d onde sus
decisiones son obtenidas a traves de sus redes neuronales. Al poner a prueba los agentes
Micro NEAT se obtiene la aptitud de cada uno de ellos en el problema de micromanag-
ment. Los agentes Micro NEAT mas aptos al ambiente tienen m as oportunidades de
heredar a la siguiente generaci on un modelo de toma de decisiones mejorado. El agente
Micro NEAT toma el control de cada unidad cuando observa una unidad enemiga den-
tro de su rango de visi on, esto con el n de reducir el tiempo de b usqueda de la unidad
33
enemiga. El agente Micro NEAT evoluciona por medio del algoritmo NEAT.
El agente fue desarrollado usando el lenguaje C++, mismo lenguaje en el que ha
sido programado Brood War Application Programming Interface (BWAPI ). BWAPI
es un puente de comunicacion entre el videojuego StarCraft y una biblioteca din amica.
StarCraft es una aplicaci on que genera gracos en cada cuadro, y en cada cuadro que
dibuja se ejecuta la funcion onFrame() de BWAPI. StarCraft dibuja alrededor de 25
cuadros por segundo, teniendo una fracci on de segundo para realizar todos los c alculos
necesarios. En la imagen 3.1 se muestra como es la comunicacion entre el videojuego
StarCraft y el agente Micro NEAT. BWAPI no s olo tiene la nalidad de programar
m odulos para ejecutarlos en partidas, sino tambien es una herramienta para analizar
repeticiones de partidas y obtener informaci on de los jugadores para entrenamiento de
agentes inteligentes.
Figura 3.1: Comunicacion entre StarCraft y el agente Micro NEAT
3.2. Ambiente del Agente Micro NEAT
El agente Micro NEAT tendra como ambiente el videojuego StarCraft, en el cual
su objetivo es causar el mayor da no posible al enemigo y minimizar los da nos recibi-
dos. En el videojuego StarCraft, las partidas se realizan en un mapa con dimensiones
est aticas, el cual posee recursos para economa, diferente topologa de terreno y puntos
estrategicos. Los mapas dise nados para los experimentos simulan un combate en campo
abierto sin obstaculos. En la gura 3.2 se muestra un mapa de experimentos, del lado
izquierdo el ejercito aliado y del lado opuesto el ejercito enemigo.
Para poder evaluar su desempe no se propone la ecuaci on 3.1. La ecuacion esta
formada de tres partes, en la primera se encuentra el n umero de ataques que la unidad
realiza, en la segunda el porcentaje de vida y escudo, y la tercera parte la relaci on de
movimientos invalidos. En el caso de atacar al unidad al enemigo y morir, el agente
34
Figura 3.2: Captura de pantalla en el videojuego StarCraft en un mapa de experimento
Micro NEAT obtiene una aptitud igual al n umero de ataques multiplicado por X
1
. En
el caso de morir, el agente Micro NEAT obtiene una aptitud de 0, en el caso contrario
en el cual sobrevive y no atac o al enemigo obtendra un valor de aptitud igual a X
2
.
Finalmente, se reduce la aptitud en relacion con los movimientos inv alidos o penaliza-
ciones. Las evaluaciones m as altas de la ecuacion 3.1 son los agentes Micro NEAT que
realicen mas da no al enemigo y sobrevivan con el menor da no posible.
Dentro de la ecuacion 3.1, la variable atk
i
representa el n umero de veces que ataca
la unidad durante el combate. Las variables hp
i
y shield
i
son los puntos de vida y de
escudo al nal de la batalla, hpTotal
i
y shieldTotal
i
son los puntos de vida maximos
y de escudo que puede poseer la unidad que controla el agente Micro NEAT. Ademas,
el factor Fouls representa el n umero de decisiones inv alidas que tom o el agente Micro
NEAT durante el combate. Las variables atk
i
, hp
i
, shield
i
, hpTotal
i
, shieldTotal
i
y
Fouls corresponden a atributos de la unidad que controla el agente Micro NEAT y las
acciones que decide el agente Micro NEAT.
f(i) =
_

_
X
1
(atk
i
) + X
2
_
hp
i
hpTotal
i
+
shield
i
shieldTotal
i
2
_
X
3
_
Fouls
FoulsMax
_
si la unidad posee escudo
X
1
(atk
i
) + X
2
_
hp
i
hpTotal
i
_
X
3
_
Fouls
FoulsMax
_
si la unidad no posee escudo
(3.1)
Las variables X
1
,X
2
y X
3
son la bonicaci on que representa cada uno de los tres
factores. Donde X
1
representa la bonifaci on que se le da al realizar da no al enemigo,
35
X
2
la bonicacion sobre sus puntos de vida y escudo y X
3
la penalizacion por acciones
inv alidas. Finalmente la variable FoulsMax el n umero m aximo esperado de decisiones
inv alidas. Las variables X
1
,X
2
, X
3
y FoulsMax corresponden a valores estaticos du-
rante la evolucion del agente Micro NEAT.
La tabla 3.1 se muestra el ejemplo del valor de aptitud de diferentes unidades
despues de una batalla. Cada una de las unidades mostradas en la tabla presentan
diferentes n umeros de ataques, puntos de vida, puntos de escudo, y n umero de decisio-
nes invalidas. El valor de las variables X
1
, X
2
,X
3
y FoulsMax que se utilizaron para
el ejemplo se muestran en la tabla 3.2. Las unidades con mayor aptitud son las que
causaron mas da no y al nal de la batalla sobrevivieron, las unidades Zerg Zergling
1 y Protoss Dragoon 1 obtuvieron los valores mas altos de aptitud. En cambio, las
unidades Zerg Zergling 3 y Protoss Dragoon 3 obtuvieron el peor valor de aptitud
de las 6 unidades. La unidad Zerg Zergling no posee escudo, es por ello que en la
columna de Puntos de Escudo y Puntos de Escudo Totales tiene 0.
Unidad
N umero
de
Ataques
Puntos
de Vida
Puntos
de Vida
Totales
Puntos
de
Escudo
Puntos
de Es-
cudo
Totales
Deci-
siones
Inv ali-
das
f(i)
Zerg Zergling 1 5 0 35 0 0 10 1495
Zerg Zergling 2 3 3 35 0 0 6 918.429
Zerg Zergling 3 0 0 35 0 0 100 -50
Protoss
Dragoon 1
4 10 100 24 80 4 1248
Protoss
Dragoon 2
2 66 100 0 80 10 677.5
Protoss
Dragoon 3
0 0 100 0 80 1300 -650
Tabla 3.1: Ejemplo de la ecuaci on de aptitud con diferentes valores
Variable Valor
X
1
300
X
2
250
X
3
500
FoulsMax 1000
Tabla 3.2: Valor de las variables estaticas en el ejemplo
36
3.3. Red Neuronal del Agente Micro NEAT
Como se mencion o en la secci on 3.1, el agente Micro NEAT posee una red neu-
ronal. Todos los individuos de la poblacion empiezan con la misma red neuronal pero
con diferentes pesos en las conexiones de cada una de las neuronas. En cada ciclo del
algoritmo NEAT, nuevos individuos aparecen en la poblaci on que superan a sus ante-
cesores por el proceso de seleccion natural que imita el algoritmo genetico. Tambien
en cada ciclo del algoritmo NEAT, nuevas conexiones o neuronas son agregadas a las
redes neuronales de los individuos.
Las neuronas de la red utilizan valores de punto otante, en un rango de 0 a 1,
por lo tanto las entradas deben ser normalizadas. Toda red neuronal posee tres tipos de
neuronas, de entrada, escondidas/intermedias y salida. En esta tesis se proponen como
neuronas de entradas las siguientes, dividas en tres areas:
Aliados: Las cinco unidades aliadas m as cercanas al individuo son la entrada, de ellas
se obtienen solo cuatro datos que son: puntos de vida, escudo, distancia y direcci on
en la cual est a viendo la unidad aliada. En el caso de no observar un total de cinco
unidades, se rellenan con ceros los datos faltantes del vector de entrada.
Enemigos: Las cinco unidades enemigas mas cercanas al individuo son parte de la
entrada. De ellas tambien se obtienen s olo cuatro datos que son: puntos de vida,
escudo, distancia y direccion en la cual est a viendo la unidad enemiga. Igualmente,
en el caso de no divisar cinco unidades se rellenan con ceros.
Unidad: Es informacion del propio individuo, de la cual solo se utiliza la vida, el
escudo, la direcci on en la cual esta viendo la unidad, el tiempo actual de Cooldown
del arma y una ultima neurona que se enciende o se apaga dependiendo si est a bajo
ataque o no.
El algoritmo NEAT maneja libremente la capa oculta de la red neuronal. Dentro
de los operadores del algoritmo genetico se encuentra el de agregar un nodo y agregar
conexiones. As que, en cada ciclo del algoritmo NEAT se agregan neuronas y conexio-
nes nuevas en la capa oculta con cierta probabilidad y en cualquier punto entre la capa
de salida y entrada.
Finalmente, la capa de salida propuesta para esta tesis consta de 9 neuronas. En
el videojuego StarCraft las acciones que puede tomar el jugador en una unidad son
b asicamente dos, Move y Attack. Las acciones Hold Position y Patrol son una com-
binaci on de las dos anteriores, por lo tanto no son parte de la capa de salida. Para la
acci on Move se requiere de un argumento, que son las coordenadas. En este caso se usan
37
dos neuronas para codicar dicha informacion. Y para la acci on Attack hay dos tipos.
Una es atacar una coordenada en el mapa o atacar a una unidad que esta dentro de
su rango de visi on. En la red neuronal propuesta, las cinco salidas corresponden a las
cinco unidades enemigas que ve a lo lejos.
Para poder obtener la salida de la red neuronal, se realizan sumatorias en cada una
de las entradas de las neuronas para obtener la salida de cada neurona. Comenzando
con la capa de entrada y as sucesivamente hasta llegar a la capa de salida. Al tener
los valores de salida de la red neuronal se realiza una comparacion entre las neuronas
Attack y Move. La que tenga mayor valor es la acci on que se realizar a, y a partir de
las otras neuronas de salida se decide a quien atacar o a donde moverse.
La gura 3.3 muestra un diagrama de la red neuronal inicial con sus conexiones y
las tablas 3.3 y 3.4 contienen en detalle las neuronas que conforman la capa de entrada
y salida. Cada agente es representado por la unidad i. La informaci on que sensa cada
unidad i de s misma son los puntos de vida, puntos de escudo en caso de poseerlos,
la direcci on en la cual est a mirando, el tiempo de recargar el arma y si se encuentra
bajo ataque. El total de aliados y enemigos que pueden ver cada unidad depende del
rango de vision y el tama no ocupa cada unidad en el campo de batalla. Sin embargo,
para nes de esta investigaci on fue denido como 5 el m aximo de unidades que puede
sensar la unidad i. As mismo, el n umero de unidades aliadas m y enemigas n que sensa
el agente es de 5. El m aximo de unidades que puede seleccionar un jugador dentro del
videojuego StarCraft a la vez es de 12. La informaci on que se obtiene del aliado m y el
enemigo n es la misma, los puntos de vida, puntos de escudo en caso de poseerlos, la
direcci on en la cual estan mirando y la distancia entre la unidad i y la unidad que se
est a sensando. Las neuronas en la capa de salida representan las dos acciones posibles
del agente, moverse y atacar. La neurona Atacar Enemigo n representa atacar al
enemigo n que se sens o en la capa de entrada. La neurona Distancia d y el angulo
denen en que distancia y angulo se movera la unidad.
Neuronas
Aliado m Puntos de Vida Enemigo n Puntos de Vida Unidad i Puntos de Vida
Aliado m Puntos de Escudo Enemigo n Puntos de Es-
cudo
Unidad i Puntos de Escudo
Aliado m Direcci on Enemigo n Direcci on Unidad i Direcci on
Aliado m Distancia Enemigo n Distancia
Unidad i Direcci on
Unidad i Recarga Arma
Unidad i Bajo Ataque
Tabla 3.3: Capa de Entrada de la Topologa Inicial
38
Figura 3.3: Red neuronal inicial de la Poblaci on NEAT
Neuronas
Atacar Moverse
Atacar Enemigo n
Distancia d

Angulo
Tabla 3.4: Capa de Salida de la Topologa Inicial
39
Por ejemplo, el individuo i, que es un Protoss Dragoon, sensa el mundo. Tiene 3
aliados Protoss Dragoon dentro de su rango de vision y 5 enemigos Zerg Zerglings.
En la tabla 3.5 se muestran los datos de los aliados, enemigos y propios de la unidad.
Aliados
Puntos de
Vida
Puntos de
Escudo
Distancia Direcci on
Aliado 1 80 60 100 250
Aliado 2 100 30 10 100
Aliado 3 24 60 100 250
Aliado 4 0 0 0 0
Aliado 5 0 0 0 0
Enemigos
Puntos de
Vida
Puntos de
Escudo
Distancia Direcci on
Enemigo 1 35 0 20 180
Enemigo 2 20 0 1 190
Enemigo 3 24 0 100 160
Enemigo 4 10 0 10 100
Enemigo 5 24 0 15 111
Unidad
Puntos de
Vida
Puntos de
Escudo
Direcci on Arma Bajo Ata-
que
Unidad 90 50 250 10 Verdadero
Tabla 3.5: Ejemplo de valores sin ser normalizados para el vector de entrada a la red
neuronal
Despues de obtener los datos, debemos de normalizarlos. En el caso de los puntos
de vida y escudo, es la divisi on entre el valor actual de puntos sobre el maximo de
la unidad. Los Protoss Draggon tienen 100 puntos de vida m aximos y 80 de escudo,
el Zerg Zergling tiene 35 puntos de vida [16]. Para la direcci on que es medida en
grados, tenemos el rango de 0 a 360 grados. Donde 0 o 360 grados signica que la
unidad esta mirando al lado derecho de la pantalla, y 180 grados al lado izquierdo de
la pantalla. Por lo tanto es la divisi on entre la direccion actual en la que ve la unidad
sobre 360. La distancia a la cual se encuentra la unidad tiene un valor m aximo igual al
rango de visi on de la unidad, en el caso del Protoss Dragoon es de 256. Finalmente,
el ultimo valor para normalizar es el tiempo de espera del arma, el cual es de 30 para
el Protoss Dragoon.
Por lo tanto obtenemos los siguientes valores que seran la entrada para la red
40
neuronal. Como s olo observ o dentro de su rango de visi on 3 aliados, algunos valores
ser an 0. En la tabla 3.6 se muestran los valores normalizados y organizados.
Aliados
Puntos de
Vida
Puntos de
Escudo
Distancia Direcci on
Aliado 1 0.8 1 0.39 0.69
Aliado 2 1 0.5 0.03 0.27
Aliado 3 0.24 1 0.39 0.69
Aliado 4 0 0 0 0
Aliado 5 0 0 0 0
Enemigos
Puntos de
Vida
Puntos de
Escudo
Distancia Direcci on
Enemigo 1 1 0 0.07 0.5
Enemigo 2 0.57 0 0.003 0.52
Enemigo 3 0.68 0 0.39 0.44
Enemigo 4 0.28 0 0.03 0.27
Enemigo 5 0.68 0 0.05 0.30
Unidad
Puntos de
Vida
Puntos de
Escudo
Direcci on Arma Bajo Ata-
que
Unidad 0.9 0.83 0.69 0.33 1
Tabla 3.6: Ejemplo de valores normalizados para el vector de entrada a la red neuronal
El c odigo desarrollado por Mat Buckland basado en el algoritmo NEAT tiene la
facilidad de obtener la salida de la red neuronal de cada individuo. Cada uno de los
individuos con el paso de las generaciones tiene la posibilidad de cambiar su red neuro-
nal de forma dr astica. A un as la metodologa para obtener la salida de la red neuronal
es la misma. La salida de la red neuronal son valores dentro del rango de 0 a 1 y del
tipo de coma otante. Para la salida de la red neuronal tenemos entonces 9 valores que
representan las salidas.
Como las salidas de la red son valores entre 0 y 1, deben ser interpretados para
tomar una decisi on. Para esta red neuronal se propone la siguiente forma de interpre-
traci on. Las dos acciones posibles en StarCraft son Move o Attack, en el caso de Move
s olo requiere el argumento posici on, que es una coordenada en el mapa actual. Para el
caso Attack se puede realizar de dos formas, dando como argumento una posici on o
una unidad. Generalmente los jugadores utilizan el metodo Micro Attack dando una
posicion en el mapa para explorar y cuando no se sabe la posici on del enemigo. En este
41
caso tenemos a el enemigo a la vista y sabemos cu al atacar, por lo tanto se interpreta
la orden como Attack mandando el argumento unidad. La salida Attack y la salida
Move indican que acci on tomar. Se comparan los valores de salida de las dos neuronas
y el valor mayor sera la acci on a elegir. Si la accion con mayor valor fue Atacar, se
comparan los valores de las neuronas Enemigo 1, Enemigo 2, Enemigo 3, Enemigo 4 y
Enemigo 5. La neurona que tenga el valor mayor entre los 5 Enemigos es el enemigo
a quien se atacar a. En el caso en que la unidad a atacar no exista, dado que por la
red neuronal pueden ocurrir por los pesos una salida inv alida, se penaliza al individuo
por una decisi on no v alida. En el caso de ser mayor la salida de la neurona Mover,
se interpretan las neuronas Distancia y

Angulo. El valor de la neurona Distancia in-
dica que tanta distancia debe moverse de un valor maximo y la neurona

Angulo en
que direccion, de esta forma conformando la coordenada dentro del mapa relativa con
su posici on a la que debe moverse.
Neurona de salida
1 2 3 4 5 6 7 8 9
Atacar Ene-
migo
1
Ene-
migo
2
Ene-
migo
3
Ene-
migo
4
Ene-
migo
5
Mover-
se
Dis-
tancia

Angulo
0.9 0.6 0.05 0.55 0.66 0.98 0.66 1 0.14
Tabla 3.7: Ejemplo de vector de salida de la red neuronal
En la tabla 3.7 tenemos un ejemplo de posible salida de la red neuronal. Si inter-
pretamos la salida, el primer paso es comparar la salida de la neurona 1 y 7, en este
caso la neurona 1 es mayor que la neurona 7. Por lo tanto la decision es Atacar, ahora
falta determinar a quien se debe atacar. Se comparan las neuronas de la 2 a la 6, en
este caso la mayor es la neurona 6. Entonces, la interpretraci on del vector de salida de
la red neuronal es atacar la unidad divisada n umero 5.
La entrada de la red neuronal no es toda la informacion que el ambiente StarCraft
ofrece, es s olo la informacion que se cree es necesaria para lograr tomar una decision. A
partir de la topologa propuesta de la red neuronal en conjunto con algoritmos geneti-
cos, el objetivo del algoritmo NEAT es encontrar la topologa mnima que maximice la
ecuacion 3.1.
El algoritmo que ejecuta el agente Micro NEAT durante su evaluaci on se pre-
senta en el algoritmo 3.1. El primer paso es vericar si el agente Micro NEAT no esta
realizando ninguna acci on. Es de primordial importancia determinar si el agente se en-
cuentra inactivo. BWAPI ejecuta el c odigo del agente Micro NEAT en cada cuadro que
42
dibuja StarCraft. Si el agente est a realizando una accion y al siguiente cuadro se calcula
de nuevo que acci on debe ejecutar, puede detener la acci on anterior y as sucesivamente
en cada cuadro y n unca terminar la accion.
La funcion SensarAmbiente() obtiene la informacion sobre las unidades aliadas,
enemigas y sobre la propia unidad para despues ser normalizada y crear el vector Input
que se usar a para actualizar la red neuronal.
La funci on ActualizarRedNeuronal() inserta en la capa de salida los valores
correspondientes con los del vector Input y regresa un vector Output de tama no igual
al n umero de neuronas en la capa de salida.
La funci on RealizarAccion() ejecuta la accion Moverse o Atacar a partir del
vector Output. Dependiendo de que accion ejecuta el agente, la funci on se asegura
que la acci on se logre ejecutar sin importar el tiempo de cuadros que requiera.
Por ejemplo, si en el cuadro n de ejecucion dentro del videojuego StarCraft, el
agente se encuentra en estado inactivo realizara lo descrito en el algoritmo 3.1. Despues,
el agente realizara la acci on que la funcion RealizarAccion() interpreta de la salida de
la red neuronal. La funci on RealizarAccion() se asegura que sin importar el n umero
de cuadros que necesite la acci on se lleve a cabo y guarda informaci on relevante para
la evaluaci on del agente. Cambiando el estado del agente a atacando o moviendose.
Al terminar la acci on, el agente vuelve a su estado inactivo y en el siguiente ciclo de
BWAPI volvera a entrar en el algoritmo 3.1.
Algoritmo 3.1 Implementaci on del Agente Micro NEAT dentro del ambiente Star-
Craft
si estado agente = inactivo entonces
SensarAmbiente()
ActualizarRedNeuronal()
RealizarAccion()
n si
3.4. Resumen
En el presente captulo se detall o que es el agente Micro NEAT. El agente Micro
NEAT consta de una red neuronal, sensores y actuadores. Se utiliza el algoritmo NEAT
para evolucionar la red neuronal del agente. La funcion de aptitud es desarrollada a
43
partir de los objetivos propuestos por micromanagment en los diferentes videojuegos
de estrategia en tiempo real. Utilizando la funci on de aptitud propuesta en esta in-
vestigaci on para medir dentro del ambiente StarCraft el desempe no del agente Micro
NEAT y determinando cu ales son los individuos m as aptos dentro de la poblaci on del
algoritmo NEAT. Cada individuo en la poblacion del algoritmo NEAT representa un
agente Micro NEAT. Se especico la metodologa que utilizan los sensores y actuado-
res del agente. El proceso para recibir la informaci on del agente Micro NEAT sobre
el ambiente y la forma en como procesa la informacion a partir de la salida de la red
neuronal para realizar acciones dentro del ambiente. Sin embargo, proponer una dife-
rente topologa inicial para el algoritmo NEAT, interpretar la salida de la red neuronal
de forma diferente a la presentada o utilizar una diferente ecuaci on de aptitud a la
propuesta causara un comportamiento totalmente diferente o una b usqueda mas corta
o larga para obtener los resultados deseados.
44
Captulo 4
Experimentos
En el presente captulo se detalla la metodologa para dar respuestas a la hip otesis
y preguntas de investigacion de esta tesis. Se precisa los escenarios usados para poner
a prueba al agente Micro NEAT y la IADefault (inteligencia articial del videojuego
StarCraft). Se describen los par ametros usados para el algoritmo NEAT con los cu ales
fueron realizados los experimentos. Ademas, se presentan los resultados obtenidos para
tener una base clara con la cual obtener conclusiones.
4.1. Ambiente de Experimentos
Para el desarrollo de los experimentos se utilizo el ambiente de videojuego Star-
Craft y el programa StarCraft Campaing Editor para crear los mapas con las carac-
tersticas necesarias. La gura 4.1 muestra un mapa vaci o sin unidades y s olo con el
terreno modicado. Los puntos rojos muestran d onde aparece el ejercito aliado, y en
los puntos azules donde aparece el ejercito enemigo. Este mismo mapa es utilizado para
los 4 escenarios. El mapa se dividio en secciones y cada secci on representa un escenario
de batalla. Entonces, en una generaci on del algoritmo NEAT se llevan a cabo varias
batallas del mismo escenario en todo el mapa. Cada escenario esta aislado del resto.
En cada escenario s olo cambia la combinaci on de unidades. Para poder manejar las
unidades dentro del videojuego se utiliz o BWAPI, una librera desarrollada en C++
con licencia General Public License. As mismo, el codigo del algoritmo NEAT imple-
mentado en esta tesis es el de Mat Buckland [5], tambien desarrollado para Windows
en C++. Buckland realiz o una adaptacion del codigo original del algoritmo NEAT de
Kenneth Stanley [27] desarrollado para C++ en Linux. La versi on de StarCraft usada
es la 1.16.1, la ultima version que ofrecio Blizzard.
4.2. Escenarios de Experimentaci on
En el algoritmo 4.1 se muestra por completo la automatizaci on de los experimentos
dentro del ambiente BWAPI. Los argumentos necesarios para poder realizar un expe-
45
Figura 4.1: Representacion del minimapa de los escenarios
rimento es denir el lmite de rondas, los par ametros que utiliza el algoritmo NEAT,
el n umero de neuronas de las capas de entrada y salida. La funci on CreacionPobla-
cion() crea una poblaci on de individuos para el algoritmo NEAT con las neuronas de
entrada y salida indicadas por las variables NumeroNeuronasEntrada y Nume-
roNeuronasSalida respectivamente, y se guardan los cerebros o redes neuronales de
cada individuo dentro de la ListaCerebros. Cada ronda esta dividida en tres fases,
PreRonda, EnRonda y PostRonda. En cada fase se realizan diferentes tareas pare
poder llevar a cabo todos los pasos necesarios para el experimento. En la fase Pre-
Ronda la funci on AsignarCerebros() realiza la tarea de asignar a cada uno de los
agentes Micro NEAT la red neuronal que les corresponde de acuerdo a la ListaCe-
rebros previamente creada. Al concluir la asignaci on de redes neuronales, la funci on
OrdenMoverEjercito() les ordena a todos los agentes moverse al punto donde se en-
cuentra el ejercito enemigo. Tambien el ejercito recibe la orden de atacar el punto donde
se encuentran los agentes. En cada uno de los escenarios los ejercitos se localizan en
extremos opuestos del mapa de pruebas. Al momento en que una unidad aliada observe
una unidad enemiga se procede a la siguiente fase, EnRonda. En la fase EnRonda,
cada una de las unidades tomar a decisiones a partir de su red neuronal utilizando el
algoritmo 3.1 y la informaci on que observe en la ronda. En cada cuadro del videojuego
StarCraft que se ejecuta BWAPI, se cuentan las unidades enemigas avistadas y si el
total de unidades avistadas es igual a 0 signica que no hay m as enemigos que atacar
o todas las unidades aliadas han sido abatidas cambiando la variable RondaEstado a
PostRonda. En la ultima fase PostRonda se eval ua el desempe no de todos los agentes
de acuerdo a la ecuacion 3.1. Esta tarea la ejecuta la funci on EvaluarAgentes(). En
seguida se guarda la aptitud de cada agente Micro NEAT, las unidades enemigas aba-
tidas y unidades perdidas en combate en un archivo para posterior an alisis. La funci on
GuardarDatos() realiza esta tarea. Despues se ejecuta la epoca del algoritmo NEAT
46
sobre la lista de cerebros de acuerdo con su lista de aptitud. La funci on EfectuarE-
pocaNEAT(ListaAptitud, ParametrosNEAT) recibe como argumentos la lista de
aptitud de la poblacion y los par ametros que utiliza el algoritmo NEAT. Finalmente
se verica si el total de rondas ha sido cumplido. En caso de no llegar al lmite a un se
reinicia la ronda. La funcion ReiniciarRonda() realiza la tarea de eliminar todas las
unidades a un existentes en el mapa y se colocan el mismo n umero de unidades iniciales
del escenario en cada ejercito.
Se proponen cuatro escenarios de experimentaci on diferentes los cuales usar an
el mismo mapa o terreno pero con diferentes unidades. Cada uno de los escenarios
est an dise nados con una desventaja para el ejercito aliado. Dicha desventaja puede
ser f acilmente contrarrestada con tecnicas de micromanagment. En cada uno de los
escenarios un humano puede f acilmente aprender o preparar una estrategia que lo lleve a
la victoria, obteniendo el menor n umero de unidades perdidas en combate y eliminando
el ejercito enemigo. Sin embargo, el objetivo de los escenarios es el de poner a prueba
la IADefault y el agente Micro NEAT para poder obtener un punto de comparacion.
Para esta tesis se dise naron 4 escenarios, donde se representa del I al IV situaciones
de forma ascendentemente mas difciles. Esto signica que el escenario I y II presentan
situaciones que requieren de muchas ordenes a las unidades para poder realizar el mayor
da no posible, tales como mover s olo una unidad o dos y volver a atacar. El escenario
III y IV presenta una situaci on que requiere de ordenes muy precisas a las unidades,
tales como mover la unidad que se encuentra bajo ataque en crculos alrededor de la
segunda unidad mientras esta ataca. Los cuatro escenarios propuestos abarcan de forma
generalizada todas las tecnicas de micromanagment que un jugador experto aprende
con el paso del tiempo jugando StarCraft. A continuacion se detallan cada uno de los
escenarios:
Escenario I: Los ejercitos constan de 4 Protoss Dragoons contra 9 Zerg Zerglings.
El Protoss Dragoon es una unidad de la raza Protoss que tiene la capacidad
de atacar unidades aereas y terrestres a distancia ademas de poseer un escudo y
sus puntos de vida. La unidad Zerg Zergling es una unidad de la raza Zerg que
tiene solo la capacidad de atacar unidades terrestres cuerpo a cuerpo. Su costo de
producci on es muy barato. Las diferencias entre estas dos unidades son bastante
amplias. El Dragoon Protoss ataca a distancia y el Zerg Zergling cuerpo a
cuerpo, por lo cual este ultimo debe acercarse para atacar. El poder de ataque
de cada unidad es diferente. La velocidad de movimiento tambien es diferente.
El n umero de unidades para la IADefault es mucho mayor que para el agente
Micro NEAT. La diferencia en tama no y velocidad de ataque por parte del Zerg
Zergling proporciona una amplia ventaja al ejercito de la IADefault sobre el
ejercito aliado. Sin embargo, usando tecnicas de micromanagment se puede lograr
47
Algoritmo 4.1 Automatizaci on para Experimentos en BWAPI
Entrada: NumeroTotalRondas, NumeroNeuronasEntrada, NumeroNeuronasSalida,
ParametrosNEAT
1: Rondas = 1
2: EstadoRonda = PreRonda
3: ListaCerebros = CreacionPoblacion()
4: si Rondas NumeroTotalRondas entonces
5: si RondaEstado = PreRonda entonces
6: AsignarCerebros(ListaCerebros)
7: OrdenMoverEjercito()
8: UnidadesDivisadas = 0
9: UnidadesDivisadas = ObtenerUnidadesDivisadas()
10: si UnidadesDivisadas = 0 entonces
11: EstadoRonda = EnRonda
12: n si
13: n si
14: si RondaEstado = EnRonda entonces
15: EjecutarAgenteNEAT()
16: UnidadesDivisadas = 0
17: UnidadesDivisadas = ObtenerUnidadesDivisadas()
18: si Unidades Divisadas = 0 entonces
19: EstadoRonda = PostRonda
20: n si
21: n si
22: si RondaEstado = PostRonda entonces
23: ListaAptitud = 0
24: ListaAptitud = EvaluarAgentes()
25: GuardarDatos()
26: ListaCerebros = EfectuarEpocaNEAT(ListaAptitud, ParametrosNEAT)
27: ReiniciarRonda()
28: Rondas = Rondas + 1
29: n si
30: si no
31: TerminarPartida()
32: n si
48
una victoria en contra de la IADefault.
Escenario II: Los ejercitos constan de 3 Terran Vultures contra 9 Zerg Zerglings.
El Terran Vulture es una unidad de la raza Terran que tiene s olo la capacidad
de atacar unidades terrestres a distancia. Pero tiene un bono de velocidad de
movimiento muy alto con la desventaja de tener muy pocos puntos de vida. El
Zerg Zergling comparado con un Terran Vulture es m as lento. Sin embargo
el n umero de Zerg Zerglings es mucho mayor en una raz on de 3 a 1, dando
ventaja a la IADefault. En este escenario se depende totalmente de de tecnicas
de micromanagment, pues solo atacando la unidad mas cercana o la m as debil no
es suciente para poder ganar la batalla. Se requieren de realizar maniobras como
tomar siempre distancia con el enemigo y atacar lo m as rapido posible.
Escenario III: Los ejercitos constan de 2 Terran Marines contra 2 Terran Marines.
En este escenario se trata de demostrar que utilizando como medio de razona-
miento una red neuronal que evoluciona a partir del algoritmo NEAT se logra un
mejor comportamiento al de la IADefault. Al ser las fuerzas iguales la victoria
depende totalmente de las acciones y no del ejercito.
Escenario IV: Los ejercitos constan de 2 Terran Marines contra 2 Zerg Zerglings.
El Terran Marine es una unidad de la raza Terran que tiene la capacidad de
atacar unidades aereas y terrestres a distancia. Comparando las dos unidades,
el Zerg Zergling sigue siendo a un m as barato que el Terran Marine. Pero el
Terran Marine tiene la ventaja de tener la capacidad de atacar a distancia. El es-
cenario presenta una situaci on tpica en la cual se puede realizar micromanagment
y realizar el mayor da no a las unidades enemigas ademas de preservar las propias.
El videojuego StarCraft, al igual que el resto de videojuegos del genero estrategia
en tiempo real, hace uso de la caracterstica Fog of War. Esto signica que s olo se
logra divisar en el mapa lo que las unidades pueden ver. Cada unidad tiene un rango
de visi on y de ataque distinto. Las mediciones de distancia del rango de vision y ata-
que son en pixeles dentro de BWAPI. Por ejemplo, un Terran Marine tiene rango de
visi on de 224 y de ataque de 128. El Terran Siege Tank posee un rango de visi on de
320 y de ataque de 384, el rango de ataque mas grande de entre todas las unidades de
las tres razas. Cada unidad dentro del videojuego StarCraft posee diferentes cualidades.
Para comprobar la hipotesis propuesta en esta tesis se realizaron dos tipos de
experimentos, denominados Entrenamiento y Prueba. Los experimentos denominados
Entrenamiento son aquellos en los cuales se utilizo el algoritmo NEAT para evolucionar
el agente Micro NEAT. Los experimentos tipo Prueba son aquellos en los cuales se uti-
liz o en un ejercito el mejor agente Micro NEAT encontrado durante el Entrenamiento
49
y comparandolo con la IADefault. Se proponen estos dos tipos de experimentos para
tener un punto de comparaci on entre la IADefault y el agente Micro NEAT, comba-
tiendo contra el mismo enemigo.
4.3. Desarrollo de Evoluci on
Para cada escenario se utilizaron distintos parametros para el algoritmo NEAT.
Cada unidad posee diferentes cualidades, por lo tanto los parametros deben variar
tambien de acuerdo a la unidad. A partir de un muestreo de 30 experimentos del tipo
Entrenamiento en cada escenario con distintos parametros, se escogieron los parame-
tros que logran un mejor desempe no para el agente Micro NEAT.
En las siguientes subsecciones se muestran los resultados obtenidos durante su
evoluci on. Los mejores individuos encontrados en cada fase de Entrenamiento fueron
utilizados en la fase de Prueba.
4.3.1. Escenario I
El escenario I presenta una situaci on donde el jugador debe de realizar pocos mo-
vimientos para lograr la victoria. La unidad Protoss Dragoon posee la ventaja t actica
ante la unidad Zerg Zergling, pero en este caso tienen una desventaja numerica. En
la gura 4.2 se muestran la aptitud del mejor individuo encontrado y el promedio de
aptitud por generaci on. Durante el entrenamiento el promedio de aptitud por gene-
raci on muestra muy poca variacion a partir de la generacion 101. El mejor individuo
fue encontrado en la generaci on 565 y fue el utilizado para la fase de Prueba.
4.3.2. Escenario II
En el escenario II se presenta una situacion que requiere de realizar la misma or-
den en todo el ejercito para lograr la victoria. La unidad Terran Vulture tiene ventaja
t actica ante el Zerg Zergling. Sin embargo para poder obtener la victoria debe hacer
uso de dicha ventaja tactica para ganar. En la tabla 4.3 se muestran el promedio de
aptitud por generaci on y la aptitud del mejor individuo encontrado. Durante el entre-
namiento el agente Micro NEAT no logr o encontrar una estrategia con la que fuera
capaz de obtener la victoria. El mejor individuo encontrado aparecio en la poblacion
de la generaci on 131 de un total de 1000 generaciones que se efectuaron. A pesar de
aparecer de manera prematura el mejor individuo en la poblacion el algoritmo NEAT
no encontro uno que pudiera superarlo. Adem as, el promedio de la poblacion por ge-
50
0
1000
2000
3000
4000
5000
6000
7000
8000
9000
1 101 201 301 401 501 601 701 801 901
V
a
l
o
r

d
e

A
p
+
t
u
d

Generacin
EscenarioIEntrenamiento
Ap.tudMejorEncontrado PromedioGeneracin
Figura 4.2: Resultados sobre el entrenamiento del Agente Micro NEAT en el Escenario
I
neraci on mantuvo su valor muy bajo porque el algoritmo NEAT no encontr o un mejor
individuo con el paso de las generaciones.
0
500
1000
1500
2000
2500
3000
1 101 201 301 401 501 601 701 801 901
V
a
l
o
r

d
e

A
p
+
t
u
d

Generacin
EscenarioIIEntrenamiento
Ap.tudMejorEncontrado PromedioGeneracin
Figura 4.3: Resultados sobre el entrenamiento del Agente Micro NEAT en el Escenario
II
4.3.3. Escenario III
En el escenario III se presenta una situaci on con ejercitos iguales en ambos bandos,
dos Terran Marines. La estrategia para poder ganar yace en la toma de decisiones
totalmente. Ninguno de los dos ejercitos tiene ventaja. En la gura 4.4 se muestran
el promedio de aptitud por generaci on y la aptitud del mejor encontrado durante el
entrenamiento. El promedio de aptitud por generacion se mantuvo de forma muy rapida
de forma estable a partir de la generacion 50. Tambien el mejor individuo encontrado
51
durante las 1000 generaciones fue encontrado en la generacion 968, sin embargo el
segundo mejor individuo encontrado apareci o de forma rapida en la generacion 34
teniendo como efecto el mantener el promedio de la aptitud de la poblaci on muy estable
a partir de dicha generaci on.
0
1000
2000
3000
4000
5000
6000
7000
1 101 201 301 401 501 601 701 801 901
V
a
l
o
r

d
e

A
p
+
t
u
d

Generacin
EscenarioIIIEntrenamiento
Ap.tudMejorEncontrado PromedioGeneracin
Figura 4.4: Resultados sobre el entrenamiento del Agente Micro NEAT en el Escenario
III
4.3.4. Escenario IV
El escenario IV es el m as difcil de los 4 propuestos en esta investigaci on. Se
presenta la situaci on de dos Terran Marine en contra de dos Zerg Zergling. La es-
trategia mas eciente en este caso es muy complicada y requiere de dar ordenes exactas
a la unidad exacta. En la gura 4.5 se muestra la aptitud promedio por generaci on y
la aptitud del mejor encontrado. El promedio de aptitud por generacion se mantuvo
muy estable durante todo el entrenamiento. Sin embargo, el mejor individuo encontrado
apareci o en la poblaci on en la generacion 303, el segundo mejor individuo encontrado
apareci o de forma prematura en la poblacion en la generacion 7.
4.4. Resultados de Experimentos
Los resultados obtenidos de la fase de Prueba para cada escenario son presenta-
dos en esta secci on. Para comparar el agente Micro NEAT y la IADefault se propuso
efectuar una muestra de 50 partidas de cada escenario enfrent andose el agente Mi-
cro NEAT contra la IADefault y la IADefault en contra de la IADefault. Donde se
tomo tom o parametro de comparaci on las partidas ganadas, perdidas y empatadas.
Entiendase como partida ganada en la que el ejercito enemigo es derrotado y el ejercito
aliado a un posee unidades, partida perdida en la que el ejercito aliado es abatido y
52
0
500
1000
1500
2000
2500
3000
3500
4000
4500
5000
1 101 201 301 401 501 601 701 801 901
V
a
l
o
r

d
e

A
p
+
t
u
d

Generacin
EscenarioIVEntrenamiento
Ap.tudMejorEncontrado PromedioGeneracin
Figura 4.5: Resultados sobre el entrenamiento del Agente Micro NEAT en el Escenario
IV
partida empatada en el caso de que los dos ejercitos sean abatidos. Utilizar la funci on
de aptitud sera una manera inv alida, ya que la IADefault solamente toma la decision
de atacar y avanzar hacia el punto, sin recibir penalizaciones.
4.4.1. Escenario I
En el escenario I el agente Micro NEAT super o a la IADefault en el n umero de
victorias, la gura 4.6 muestra los resultados sobre la fase de pruebas del escenario I.
Durante las partidas se observo que el agente Micro NEAT adopta una estrategia que
cualquier jugador humano tomara. Tratando de mantenerse siempre en movimiento
y atacando al enemigo a distancia, haciendo uso de la ventaja t actica de la unidad
Protoss Dragon. La IADefault obtuvo 41 partidas perdidas de un total de 50. Este
resultado era el esperado ya que la IADefault no toma en cuenta otras opciones m as que
atacar a la unidad m as cercana. Las dos partidas empatadas por el agente Micro NEAT
se deben a que una o mas unidades enemigas no pudieron ser abatidas y manteniendo
el agente Micro NEAT una o m as unidades aliadas vivas. Esto se debe a que la unidad
enemiga nunca fue divisada durante la batalla.
4.4.2. Escenario II
En el escenario II el agente Micro NEAT obtuvo un resultado muy parecido al
de la IADefault. En la gura 4.7 se muestran los resultados de la fase de pruebas
en el escenario II. El agente Micro NEAT obtuvo solo una victoria de 50 partidas,
mientras que la IADefault perdio las 50 partidas de muestra. Sin embargo, el objetivo
de micromanagment es el de maximizar el n umero de bajas enemigas y minimizar el
53
30
18
2
9
41
0
0
5
10
15
20
25
30
35
40
45
Victorias Derrotas Empates
EscenarioIPrueba
AgenteMicroNEAT
IADefault
Figura 4.6: Resultados de Prueba sobre el Escenario I
n umero de bajas aliadas. En la tabla 4.1 se muestra el promedio de la relaci on de
unidades abatidas enemigas y unidades perdidas aliadas durante las 50 partidas. El
resultado obtenido por el agente Micro NEAT y la IADefault es muy parecido en el
aspecto de partidas ganas, perdidas y empatadas. Sin embargo utilizando el criterio de
la relacion entre unidades abatidas y perdidas el agente Micro NEAT logra superar a
la IADefault. Esto signica que a un perdiendo la partida el agente Micro NEAt logra
causar mas bajas al ejercito aliado en comparacion con la IADefault.
1
47
2
0
50
0
0
10
20
30
40
50
60
Victorias Derrotas Empates
EscenarioIIPrueba
AgenteMicroNEAT
AIDefault
Figura 4.7: Resultados de Prueba sobre el Escenario II
Agente Micro NEAT IADefault
1.36 1.22
Tabla 4.1: Promedio de la Relaci on de Unidades Abatidas y Unidades Perdidas en el
Escenario II durante la fase de Prueba
54
4.4.3. Escenario III
En el escenario III el agente Micro NEAT obtuvo un resultado bastante favorable
logrando obtener la victoria el doble de veces que la IADefault. La gura 4.8 muestra
los resultados obtenidos durante la fase de prueba para el escenario III. Durante la fase
de pruebas se observo que el agente Micro NEAT adoptaba siempre la estrategia de
enfocar los ataques en una sola unidad. Mientras que la IADefault atacaba a la primera
unidad que lograba observar, siendo no necesariamente la mejor opci on.
48
2
0
22
28
0
0
10
20
30
40
50
60
Victorias Derrotas Empates
EscenarioIIIPrueba
AgenteMicroNEAT
IADefault
Figura 4.8: Resultados de Prueba sobre el Escenario III
4.4.4. Escenario IV
En el escenario IV el agente Micro NEAT no pudo superar a la IADefault. La
gura 4.9 muestra los resultados obtenidos de la fase de prueba entre el agente Micro
NEAT y la IADefault. El escenario IV presenta una situaci on muy compleja donde se
requiere de ordenes muy exactas y coordinacion entre dos unidades. La IADefault no
esta programada para aplicar tecnicas de micromanagment, sin embargo el agente Micro
NEAT no logro encontrar durante la fase de entrenamiento una estrategia que fuera
100 % efectiva. El agente Micro NEAT adopta una estrategia de atacar a la unidad
m as debil, sin embargo la unidad Zerg Zergling tiene la ventaja t actica en contra
de la unidad Terran Marine. La tabla 4.2 muestra la relaci on de unidades abatidas
enemigas y unidades perdidas durante combate. El agente Micro NEAT obtuvo una
mejor relacion de unidades abatidas durante la fase de prueba que la IADefault.
Agente Micro NEAT IADefault
0.46 0.38
Tabla 4.2: Promedio de la Relaci on de Unidades Abatidas y Unidades Perdidas en el
Escenario IV durante la fase de Prueba
55
10
40
0
11
39
0
0
5
10
15
20
25
30
35
40
45
Victorias Derrotas Empates
EscenarioIVPrueba
AgenteMicroNEAT
IADefault
Figura 4.9: Resultados de Prueba sobre el Escenario IV
4.5. Resumen
En la presente secci on se detallo la metodologa con la cual se llevaron a cabo
los experimentos. Se especicaron las circunstancias en las cuales fue puesto a prueba
el agente Micro NEAT. Se detallaron los 4 escenarios dise nados para tener una base
para responder a las preguntas de investigaci on y la hip otesis de esta tesis. Tambien
se mostro el entrenamiento para el agente Micro NEAT utilizando el algoritmo NEAT.
Adem as se compar o el comportamiento del agente Micro NEAT despues del entrena-
miento y la IADefault en los 4 escenarios propuestos. Los resultados muestran que el
agente Micro NEAT puede adoptar estrategias que lo lleven a la victoria siempre y
cuando la situaci on en la que se encuentra no requiera de ordenes muy complicadas y
precisas.
56
Captulo 5
Trabajos Relacionados
El presente trabajo de investigaci on se enfoca en el problema de micromanagment
dentro del ambiente StarCraft. Las decisiones que se deben de tomar en el campo de
batalla dependen totalmente del entorno y sus atributos, tales como d onde se encuen-
tra el enemigo, si un aliado se encuentra en peligro, si se esta esta dentro del rango
del enemigo, si es la unidad m as efectiva contra una unidad enemiga, si se tiene una
unidad con habilidades especiales, entre otras situaciones. El modelo propuesto para
poder resolver el problema de micromanagment a traves de tecnicas de inteligencia
articial utiliza como n ucleo el algoritmo NEAT. En este algoritmo se evoluciona una
red neuronal que sea lo mejor adaptada para el problema de micronamagment. El al-
goritmo NEAT tambien ha recibido modicaciones que han creado nuevas variaciones
para distintas aplicaciones. La mayora de las aplicaciones del algoritmo NEAT han
sido en el area de videojuegos.
5.1. Micromanagment
El micromanagment en los videojuegos de estrategia en tiempo real es desarrollado
por los jugadores con la experiencia. Al igual que cualquier otro videojuego depende
de la capacidad de reacci on del jugador para responder ante los cambios constantes
del campo de batalla generados tanto por decisiones propias como del enemigo. Varias
investigaciones han tratado de simular las decisiones que toma el ser humano por me-
dio de diferentes tecnicas de inteligencia articial, tales como neuroevoluci on, modelos
bayesianos, algoritmo UCT de Monte Carlo y sistemas clasicadores.
5.1.1. Redes Bayesianas
Synnaeve y Bessi`ere [28] propusieron un programa bayesiano para el manejo de
unidades de forma independiente en StarCraft. A traves de probabilidades determinar
cual es la mejor accion a realizar dependiendo del entorno, y llevarla a cabo. Prob andolo
contra la inteligencia articial desarrollada del juego y dos variaciones de su programa
57
bayesiano.
Parra y Garrido [20] propusieron un metodo de soluci on con base en redes baye-
sianas. A partir de una serie de repeticiones del videojuego StarCraft se crea una base
de datos. Con la base de datos y una red bayesiana propuesta, se modican los valores
dentro de la red. De esta forma se trata de imitar el razonamiento humano a partir de
una serie de repeticiones.
5.1.2. Computaci on Evolutiva
Shantia, Begue y Wiering [24] utilzaron redes neuronales con aprendizaje por re-
fuerzo para un agente que controla s olo un tipo de unidad para StarCraft. Aplicando
Neural-Fitted Sarsa (NFS) y compar andolo contra el aprendizaje Sarsa en lnea. La
red neuronal tiene dos salidas o decisiones para la unidad, que puede ser atacar a una
unidad enemiga o retirarse a un lugar seguro. Siendo la informacion de entrada para
la red neuronal toda la informacion que logra sensar cada unidad. Se descompone la
informaci on en varias capas que representan un tipo de informaci on del campo de ba-
talla (aliados, enemigos, rango de fuego enemigo, etc.).
Jang et al. [12] tambien utilizaron el algoritmo NEAT como n ucleo del modelo de
soluci on. Propusieron para el videojuego Conqueror que cada unidad a traves de su
red neuronal votara por el mejor movimiento dada su perspectiva del mundo. Despues
de que cada unidad votara por la mejor soluci on, por medio de un tipo de votacion se
dene la estrategia ganadora para aplicarla en el campo de batalla. Una de las ventajas
de NEAT es que se logra maximizar la estructura de la red neuronal al controlar las
conexiones y los nodos. Adem as, un algoritmo genetico controla dichas propiedades de
la red neuronal .
Tsapanos, Chatzidimitriou y Mitkas [31] propusieron para el videojuego Open Real
Time Strategy un agente que utiliza aprendizaje por refuerzo combinado con algoritmos
geneticos y un clasicador de reglas, Zeroth-Level Classier, para construir polticas o
reglas ganadoras para el videojuego. Crearon reglas para el agente de un juego completo,
incluyendo micromanagment y un administrador de recursos, para despues codicarlas
en codigo binario y ser usadas por el modelo de soluci on propuesto. Cada una de las
reglas posee una precondicion y postcondicion. Las reglas son creadas a traves del al-
goritmo genetico, haciendolo un agente aut onomo que aprende y refuerza lo aprendido.
58
5.1.3. Upper Condence Bound Tree
Balla et. al [2] propusieron un planeador de t acticas para el videojuego Wargus,
tambien del genero de videojuegos de estrategia en tiempo real. Utilizando Upper Con-
dence Bound Tree, un algoritmo reciente de planeaci on Monte-Carlo, tratan de simular
las acciones que pueden tomar los grupos de unidades. Despues se elige la accion que
logre completar el objetivo establecido en tiempo real cada determinado tiempo. Las
unidades se tratan de una manera m as abstracta creando grupos del mismo tipo de uni-
dades, y no individualmente. La simulaci on por medio de Monte-Carlo fue desarrollada
por Balla a traves de varios experimentos y anando el simulador de forma manual
adecuado al ambiente de Wargus.
5.1.4. Formaciones Dinamicas
M. van der Hejiden et. al [32] propusieron para el problema de formaciones en el
videojuego Open Real Time Strategy utilizar un modelo de formaciones y comporta-
mientos din amicos que aprende a partir de una serie de partidas de entrenamiento en
contra de ciertos jugadores, para despues clasicarlos y efectuar la formaci on en una
partida ocial que logre maximizar el n umero de unidades con las cuales se gana la
partida.
5.1.5. Algoritmos Geneticos
Lin y Ting [13] propusieron a partir del trabajo de M. van der Hejiden et. al
modicar el metodo de soluci on a algoritmos geneticos. Se deja que el algoritmo genetico
indique los valores de una formacion emergente y se buscan los mejores valores para los
par ametros. Utilizando StarCraft como ambiente de pruebas obtuvieron que se puede
obtener una formacion despues de varias generaciones que logra vencer a la IA intrnseca
del videojuego, sin embargo s olo utilizan un tipo de unidad y un solo comportamiento.
5.1.6. Razonamiento Basado en Casos
Szczepaski y Aamodt [29] propusieron como modelo de solucion el utilizar razona-
miento basado en casos. Siguiendo un simple ciclo donde se analiza el ambiente actual y
se checa si en la base de conocimientos existe la situacion actual para realizar la mejor
acci on hasta el momento encontrada. Cuando el caso actual es desconocido es agregado
a la base de conocimientos. El caso desconocido se compara con el resto de casos en
la base de conocimientos y se utiliza la acci on del caso m as cercano al desconocido.
Cuando el caso ya se encuentra en la base de conocimientos se utiliza la accion que
59
establece el caso en la base de conocimientos. Fue probado contra jugadores humanos
y probo tener buenos resultados. Fue desarrollado para el ambiente WarCraft III.
5.2. Aplicaciones de NEAT
El algoritmo NEAT puede ser aplicado en diferentes problemas de optimizacion.
Sus aplicaciones principalmente hasta la fecha han sido en el area devideojuegos. Ade-
mas el algorimto NEAT ha sido modicado para realizar diferentes tareas y abarcar
distintos tipos de problemas. En las siguientes subsecciones son presentados algunos de
los trabajos en los que ha sido utilizado el algoritmo NEAT y las distantas variaciones
que han sido creadas.
5.2.1. rtNEAT
Stanley et. al [25] realizaron una modicacion al algoritmo NEAT. La nueva mo-
dicaci on consta de realizar la etapa de reproducci on dentro del algoritmo NEAT en
tiempo real dando nacimiento al nuevo algoritmo, real-time NeuroEvolution Augmen-
ting Topologies. El objetivo de rtNEAT es el de seguir evolucionando una red neuronal
de la misma forma que NEAT, pero ahora con el cambio de eliminar el individuo menos
apto de la poblaci on y remplazarlo con un cruce entre dos padres de una especie que es
seleccionada de forma proporcional a su aptitud ajustada en tiempo real. El algoritmo
rtNEAT fue probado en el videjuego NeuroEvolving Robotic Operatives. El objetivo del
jugador dentro del videojuego NERO es la de entrenar un grupo de robots que logren
movilizarse hasta el objetivo, derrotar unidades enemigas en el camino, evadir obstacu-
los, entre otras cosas. El algoritmo de aprendizaje implementado en el videjuego NERO
es rtNEAT.
5.2.2. cgNEAT
Hastings, Guha y Stanley [9] desarrollaron un novedoso sistema para creacion de
contenido dentro del videojuego Galactic Arms Race, adem as de introducir una va-
riaci on al algoritmo NEAT que llamaron Content-Generating NeuroEvolution of Aug-
menting Topologies. cgNEAT tiene el objetivo de crear contenido dentro de un video-
juego a partir del comportamiento o preferencias del jugador. La funcion de evaluaci on
no es una ecuacion, sino las preferencias del jugador. Una de las diferencias entre
cgNEAT y NEAT es el uso de Compositional Pattern-Producing Networks (CPPN).
Las CPPNs a diferencia de las redes neuronales utilizan m as funciones para la acti-
vaci on, tales como funciones simetricas, lineares y peri odicas. El objetivo de cgNEAT
es la de evolucionar de forma real el contenido del videojuego Galactic Arms Race.
El jugador conforme avanza en el videojuego va personalizando el arma que utiliza y
60
al realizar un cambio en el arma el algoritmo cgNEAT produce el nuevo patr on que
tendr a el arma. El arma del jugador cambia de una forma estetica en el ambito de
gr acos y la forma en la cual se comporta tambien.
5.2.3. hyperNEAT
Gauci y Stanley [7] presentaron una nueva modicacion a NEAT, que llamaron
Hypercube-base NeuroEvolution Augmenting Topologies (hyperNEAT). La diferencia
entre NEAT y hyperNEAT es el uso de CPPNs para despues ser evolucionadas. El
objetivo de hyperNEAT es el de aprender relaciones que se expresan de manera indi-
recta dentro del ambiente en el cual esta evolucionando. En los experimentos utilizan
de area de pruebas el juego de mesa Checkers o Damas Inglesas. Ademas, en los experi-
mentos prueban hyperNEAT contra NEAT con diferentes topologas. Demostraron que
hyperNEAT es un metodo para evolucionar CPPNs de una forma r apida y eciente,
logrando dominar de forma r apida el ambiente en el cual evolucion o en comparaci on
con su antecesor NEAT que utiliza redes neuronales.
5.2.4. Aprendizaje Supervisado
Mozaherul et. al [1] compararon la eciencia del clasicador Support Vector Ma-
chine y una red neuronal evolucionada con el algoritmo NEAT en un problema de
reconocimiento de objetos. A partir de una base de datos se entren o el clasicador
SVM y la red neuronal con el algoritmo NEAT, probando con diferentes tama nos de
datos de entrenamiento y prueba. Los resultados mostraron que la red neuronal evo-
lucionada con el algoritmo NEAT puede clasicar de forma mucho mas eciente que
el clasicador SVM con un menor n umero de datos de entrenamiento. Demostrando
que una red neuronal evolucionada con el algoritmo NEAT posee la cualidad de gene-
ralizar de forma correcta el problema, sin embargo s olo intentando con un conjunto de
par ametros para el algoritmo NEAT.
5.2.5. Teora de Juegos
Lockett y Miikkulainen [17] propusieron utilizar redes neuronales evolucionadas
con el algoritmo NEAT para el problema de modelado de oponentes en el juego de
cartas Texas HoldEm. El juego de cartas Texas HoldEm ofrece una gran area para
investigacion, como por ejemplo modelado de oponentes, predicci on de estrategias, entro
otras. El modelado de oponentes propone el predecir cu al ser a la siguiente accion o
jugada del contrario, anticipando la jugada y realizando la acci on que mas benecio le
traiga. Los resultados obtenidos fueron muy satisfactorios, obteniendo la red neuronal
evolucionada con el algoritmo NEAT y utilizando un modelo de mezcla de oponentes
61
hasta un 60 % del dinero total en la mesa en contra de otra red neuronal tambien
evolucionada con NEAT.
5.2.6. Videojuegos
Wittkamp y Hingston [35] desarrollaron un sistema multiagentes a partir de redes
neuronales evolucionadas con el algoritmo NEAT en el videojuego Pac-Man. Utilizando
la informaci on del videojuego en la capa de entrada de las redes neuronales y obteniendo
en la capa salida la mejor posible estrategia. Los resultados obtenidos demuestran que
diferentes metodos de evaluacion dan como resultado distintas estrategias que superan
la inteligencia articial con la que fue dise nado el videojuego.
Traish y Tulip [30] propusieron evolucionar una red neuronal con el algoritmo
NEAT para despues ser utilizada por un agente completo dentro del videojuego de
estrategia en tiempo real Wargus. Los resultados demostraron que una red neuronal
puede ser utilizada para macromanagment a pesar de tener una topologa inicial muy
grande.
5.3. Resumen
Varias tecnicas han sido implementadas para el problema de micromanagment en
videojuegos de estrategia en tiempo real, variando en tama no, complejidad entre otras
cosas. Ademas, con el paso del tiempo nuevas investigaciones han dado pie a nuevos
metodos de solucion. No solo abarcando el problema de micromanagment, sino tambien
problemas como lo son administracion de recursos, optimizaci on de construcci on, or-
ganizaci on de ejercitos, entre otros. Ademas, el algoritmo NEAT ha sido utilizado en
gran variedad de campos de investigaci on que en su mayora han sido en el area de
videojuegos.
62
Captulo 6
Conclusiones
La neuroevoluci on es un area de investigacion dentro del t opico de Inteligencia Ar-
ticial que falta por explorar m as a fondo, tanto en aplicaciones a distintos problemas
como metodos novedosos que logren imitar la naturaleza del razonamiento humano.
NEAT es una de las tecnicas dentro de la rama de la neuroevoluci on, que consta de
buscar los pesos y la topologa de una red neuronal con el objetivo de maximizar su
desempe no en una tarea especca. En el caso de esta investigacion, el objetivo es el
demostrar que un agente inteligente puede superar a la IADefault con la cual fue desa-
rrollado StarCraft.
El imitar el razonamiento humano en videojuegos ha sido un gran problema con
el paso del tiempo. A pesar de las diferentes tecnicas que existen para lograr una sen-
saci on de jugar con otro jugador humano y no una computadora, poco se ha hecho en
el campo del desarrollo de videojuegos.
StarCraft es uno de los videojuegos en los cuales se puede realizar mucha inves-
tigaci on en el area de inteligencia articial utiliz andolo como area de pruebas para
diferentes problemas con los que se enfrenta cualquier jugador humano. Uno de ellos es
la toma de decisiones a corto plazo a nivel unidad, o llamado tambien micromanagment.
6.1. Conclusiones Generales
Durante la investigacion se encontro que utilizando el algoritmo NEAT para evo-
lucionar una red neuronal para el control de unidades en el videojuego StarCraft puede
superar a la inteligencia articial predeterminada del videojuego StarCraft. Adem as de
utilizar la ecuacion 3.1 para denir la aptitud de los individuos durante su evoluci on,
donde el desempe no de las dos inteligencias es parecido aun con diferentes metodologas.
Recapitulando las preguntas de investigacion hechas en el captulo 1:
Evolucionando una red neuronal con el algoritmo NEAT puede el agente inteli-
63
gente ser mejor que la IADefault incluida en StarCraft?
La respuesta a esta pregunta es armativa, dado que el agente Micro NEAT de-
mostr o en conjunto con los 4 escenarios propuestos en esta investigaci on que s es
mejor que la IADefault. Micromanagment presenta una gran variedad de tecni-
cas donde el jugador humano debe poseer la habilidad de razonar r apidamente
ante las situaciones y sin dejar a un lado las tecnicas de macromanagment. Los 4
escenarios propuestos en esta investigaci on generalizan las situaciones a las que
un jugador se enfrenta en una partida. Se demostro ademas que el agente Micro
NEAT, utilizando como n ucleo para la toma de decisiones una red neuronal y
evolucionada con el algoritmo NEAT, puede superar a la IADefault.
Puede el agente inteligente mostrar un razonamiento parecido al de de un juga-
dor humano en StarCraft?
Se encontr o que el agente Micro NEAT mostro, durante la fase de entrena-
miento y de pruebas, tecnicas b asicas que utiliza un ser humano. Sin embargo,
no mostr o tecnicas avanzadas de micromanagment. El agente Micro NEAT, uti-
lizando el algoritmo NEAT para evolucionar su red neuronal, no es capaz de
encontrar tecnicas avanzadas que logren mejorar el rendimiento.
En la fase de entrenamiento el agente Micro NEAT muestra un comportamiento
torpe, tomando decisiones totalmente err aticas de acuerdo al conocimiento de un juga-
dor humano sobre el videojuego StarCraft. Esto es normal debido a que no todos los
individuos de la poblaci on inicial poseen una red neuronal que logre causar m as da no al
enemigo al realizar decisiones erroneas de acuerdo a su medio ambiente. Sin embargo,
a partir de la b usqueda del algoritmo NEAT en conjunto con la funcion de aptitud
dise nada de acuerdo a los principios de micromanagment el agente Micro NEAT evolu-
ciona con el paso de las generaciones. Con ello se demuestra que el agente Micro NEAT
en cada generaci on que pasa mejora su comportamiento.
En la fase de pruebas el agente Micro NEAT super o en 4 de 4 escenarios a la
IADefault. Los escenarios I, II, III y IV muestran situaciones muy frecuentes dentro de
cualquier partida del videojuego StarCraft. En los escenarios II y IV, en los cuales el
agente Micro NEAT es superado por la IADefault, es uno de los mas difciles a los que
se puede enfrentar una inteligencia articial. Una topologa para red neuronal especia-
lizada para el escenario IV en conjunto con una funci on de aptitud tambien de acuerdo
al escenario pudieran resolverlo de forma mas eciente a la presentada por el agente
Micro NEAT.
La IADefault que desarrollo Blizzard no posee la capacidad de ser adaptativa o
evolutiva. Es por eso que no es competitiva contra jugadores humanos que logran en-
contrar estrategias dominantes. A pesar de ser un videojuego dise nado en 1997 [4],
64
a un en la actualidad se presentan problemas en el desarrollo de videojuegos del mismo
genero. Sin embargo, con los avances tecnol ogicos en la capacidad de computo y proceso
de informacion, compa nas desarrolladoras de videojuegos comienzan a explorar nuevas
soluciones y tecnicas de inteligencia articial.
En esta investigaci on se demostr o que la neuroevolucion puede sobrepasar la in-
teligencia articial avara de la IADefault. En los videojuegos de estrategia en tiempo
real las batallas no s olo son para tratar de derrotar al enemigo. Las batallas durante
el transcurso de la partida son utilizadas tambien para obtener informaci on, y con su-
ciente informaci on reestructurar o seguir una estrategia que sea dominante a la del
enemigo y as asegurar la victoria. El agente Micro NEAT por sus diferentes tomas
de decisiones logra una duraci on de batalla mucho mas larga que la IADefault. Los
segundos que logra obtener durante la batalla el agente Micro NEAT pueden ayudar a
que se tome una decisi on como por ejemplo de enviar refuerzos, o cambiar la estrategia
de ataque.
6.2. Contribuciones
Las contribuciones al estado del arte que se generaron durante esta investigaci on
son en la generaci on de un modelo de toma de decisiones a nivel micromanagment den-
tro del videojuego StarCraft de una manera individual y reactiva al medio ambiente
din amico. El comportamiento avaro que los creadores de StarCraft dan a las unidades
no es lo sucientemente competitivo y puede ser mejorado. Esto se puede lograr do-
tando a las unidades con un modelo de toma de decisiones similar al de un humano con
la capacidad de evolucionar para lograr maximizar su funcion de aptitud dentro de su
ambiente.
Por otro lado, se conrma que las combinaciones de unidades en los videojuegos de
estrategia en tiempo real son parte esencial. Los escenarios de experimentos dise nados
para esta investigaci on est an en desbalance, esto signica que el ejercito enemigo siem-
pre tiene ventaja numerica y a la vez estrategica.
Otra contribuci on es la aplicaci on de neuroevolucion a un problema dentro de los
videojuegos, siendo una gran variedad de estos en los cuales dicha tecnica puede ser
utilizada. Cada uno de los videojuegos dise nados hasta la actualidad presentan diferen-
tes retos con los cuales se pueden poner a prueba diferentes tecnicas dentro del area de
inteligencia articial. Existen diferentes competencias anuales en las cuales se ponen a
prueba metodos para resolver problemas, realizar pruebas de Turing o generaci on de
niveles dentro de un videojuego [11].
65
Finalmente, la principal contribuci on al estado del arte es el dise no e implemen-
taci on de un modelo de toma de decisiones puramente reactivo para un ambiente
din amico y que requiere de un mnimo de comunicaci on. Este modelo para toma de
decisiones puede ser implementado en trabajos futuros para ampliar la investigaci on o
formar parte de un sistema multiagentes para constituir un bot que logre competir en
una partida completa en StarCraft.
6.3. Trabajo Futuro
Existen diferentes caractersticas por las cuales la investigaci on puede ser am-
pliada. Una de ellas es la extension de una red neuronal con diferente topologa, agre-
gando m as informacion a la capa de entrada como, por ejemplo, si la unidad enemiga
que esta divisando es debil o fuerte contra el arma que posee la unidad o, en caso
contrario, determinar si la unidad enemiga tiene ventaja contra la unidad.
Igualmente en la capa de salida se pueden agregar, a las posibles acciones, las
habilidades si es que la unidad las posee, como la unidad High Templar Protoss. El
High Templar posee una de las habilidades que el videojuego StarCraft ofrece adem as
de el ataque b asico, la Tormenta Psquica. La habilidad por su tipo de da no se dene
como Da no de

Area, con la cual ataca a las unidades dentro de un area peque na del
mapa. El uso de dicha habilidad se basa en energa que con el tiempo se recupera. El
objetivo de micronanagment es el uso de las habilidads de cualquier unidad de la forma
m as eciente posible. Para ello se debe analizar el ambiente y decidir el momento m as
preciso para el uso de la habilidad especial de la unidad. Esto se logra haciendo una
predicci on del posible movimiento de las unidades enemigas, entre otros factores.
Otro diferente enfoque es agregar a la toma de decisiones el factor de formaci on
en conjunto con trabajo en equipo entre los agentes. Para ello se deja que una sola
red neuronal trabaje sobre un conjunto de unidades para que estas puedan laborar en
conjunto. Esto es lo opuesto a lo realizado en la investigaci on, pues se trabajo cada
unidad como un solo individuo con su propia red neuronal.
Adem as se puede proponer otra metodologa para los agentes para que trabajen
en equipo. Para lograr el trabajo en equipo se debe agregar en la capa de entrada de
la red neuronal informaci on sobre la unidad aliada, como lo puede ser pedir ayuda,
proponer una retirada, mantener posici on, entre otros.
De igual manera, se puede ampliar el entrenamiento de la red neuronal para no
66
s olo atacar unidades enemigas, sino tambien edicios enemigos. Aunque son pocos los
edicios que tienen la capacidad de atacar, las mismas tecnicas que se aplican para
unidades se pueden usar para edicios. Aunque dieren mucho en la capacidad de da no
y rango de ataque, con tecnicas de micromanagment pueden ser destruidos los edicios
enemigos a la ves que son minimizan das las perdidas de unidades.
Finalmente, a partir de los resultados e implementaciones obtenidas durante esta
investigacion es posible construir un metodo de ataque mas robusto y que incluya
unidades de diferentes tipos y razas, haciendo uso mas eciente de las unidades. Este
metodo al ser combinado con estrategias de recolecci on de minerales y construcci on
de estructuras, estrategias denominadas macromanagment, se puede constituir un bot
capaz de jugar un juego completo durante la competencia que se realiza durante la
conferencia Articial Intelligence and Interactive Digital Entertainment (AIIDE). En
la conferencia AIIDE [6] se organizan competencias de bots o agentes capaces de jugar
un juego completo de StarCraft utilizando BWAPI como plataforma de desarrollo.
67
Apendice A
Apendice
A continuaci on se presenta la informaci on a detalle sobre los escenarios y par ame-
tros de los experimentos desarrollados en el captulo 4 en esta investigacion.
Escenario I
Ejercito Aliado Ejercito Enemigo
Protoss Dragoon Zerg Zergling
Puntos de Vida 100 Puntos de Vida 35
Puntos de Escudo 80 Puntos de Escudo 0
Da no de Ataque 20 Da no de Ataque 5
Rango de Visi on 256 Rango de Visi on 160
Rango de Ataque 128 Rango de Ataque 1
Costo Minerales 125 Costo Minerales 25
Costo Gas Vespeno 50 Costo Gas Vespeno 0
Tabla A.1: Informaci on detallada sobre las unidades utilizadas en el escenario I
68
Tama no de poblacion 96
Generaciones 1000
N umero de intentos para agregar conexion 10
Porcentaje de la especie para cruce 20 %
N umero de generaciones permitidas sin mejora 20
N umero m aximo de neuronas permitidas 250
Probabilidad de crear conexi on 7 %
Probabilidad de crear neurona 4 %
Probabilidad de crear conexi on recurrente 5 %
Probabilidad de modicar peso de la conexi on 20 %
Rango de modicaci on de peso 0.25
Probabilidad de reemplazar peso 1 %
Probabilidad de modicar funci on de activacion 1 %
Rango de modicaci on de la funci on de activacion 0.1
Compatibilidad entre individuos 26 %
Edad para ser considerado vieja especie 750
Penalizaci on por viejo 70 %
Edad para ser considerado nueva especie 20
Bonicaci on por joven 130 %
Probabilidad de cruce 70 %
Lmite de n umero de especies
Tabla A.2: Par ametros utilizados para el algoritmo NEAT en el escenario I
Escenario II
Ejercito Aliado Ejercito Enemigo
Terran Vulture Zerg Zergling
Puntos de Vida 80 Puntos de Vida 35
Puntos de Escudo 0 Puntos de Escudo 0
Da no de Ataque 20 Da no de Ataque 5
Rango de Visi on 256 Rango de Visi on 160
Rango de Ataque 160 Rango de Ataque 1
Costo Minerales 75 Costo Minerales 25
Costo Gas Vespeno 0 Costo Gas Vespeno 0
Tabla A.3: Informaci on detallada sobre las unidades usadas en el escenario II
69
Tama no de poblacion 99
Generaciones 1000
N umero de intentos para agregar conexion 7
Porcentaje de la especie para cruce 20 %
N umero de generaciones permitidas sin mejora 20
N umero m aximo de neuronas permitidas 200
Probabilidad de crear conexi on 7 %
Probabilidad de crear neurona 4 %
Probabilidad de crear conexi on recurrente 5 %
Probabilidad de modicar peso de la conexi on 20 %
Rango de modicaci on de peso 0.4
Probabilidad de reemplazar peso 10 %
Probabilidad de modicar funci on de activacion 10 %
Rango de modicaci on de la funci on de activacion 0.1
Compatibilidad entre individuos 26 %
Edad para ser considerado vieja especie 750
Penalizaci on por viejo 70 %
Edad para ser considerado nueva especie 10
Bonicaci on por joven 130 %
Probabilidad de cruce 70 %
Lmite de n umero de especies
Tabla A.4: Par ametros utilizados para el algoritmo NEAT en el escenario II
Escenario III
Ejercito 1 Ejercito 2
Terran Marine Terran Marine
Puntos de Vida 40 Puntos de Vida 40
Puntos de Escudo 0 Puntos de Escudo 0
Da no de Ataque 6 Da no de Ataque 6
Rango de Visi on 224 Rango de Visi on 224
Rango de Ataque 128 Rango de Ataque 128
Costo Minerales 50 Costo Minerales 50
Costo Gas Vespeno 0 Costo Gas Vespeno 0
Tabla A.5: Informaci on detallada sobre las unidades usadas en el escenario III
70
Tama no de poblacion 102
Generaciones 1000
N umero de intentos para agregar conexion 10
Porcentaje de la especie para cruce 25 %
N umero de generaciones permitidas sin mejora 20
N umero m aximo de neuronas permitidas 250
Probabilidad de crear conexi on 7 %
Probabilidad de crear neurona 4 %
Probabilidad de crear conexi on recurrente 5 %
Probabilidad de modicar peso de la conexi on 20 %
Rango de modicaci on de peso 0.5
Probabilidad de reemplazar peso 10 %
Probabilidad de modicar funci on de activacion 10 %
Rango de modicaci on de la funci on de activacion 0.1
Compatibilidad entre individuos 26 %
Edad para ser considerado vieja especie 1000
Penalizaci on por viejo 70 %
Edad para ser considerado nueva especie 10
Bonicaci on por joven 130 %
Probabilidad de cruce 70 %
Lmite de n umero de especies
Tabla A.6: Par ametros utilizados para el algoritmo NEAT en el escenario III
Escenario IV
Ejercito Aliado Ejercito Enemigo
Terran Marine Zerg Zergling
Puntos de Vida 40 Puntos de Vida 35
Puntos de Escudo 0 Puntos de Escudo 0
Da no de Ataque 6 Da no de Ataque 5
Rango de Visi on 224 Rango de Visi on 160
Rango de Ataque 128 Rango de Ataque 1
Costo Minerales 50 Costo Minerales 25
Costo Gas Vespeno 0 Costo Gas Vespeno 0
Tabla A.7: Informaci on detallada sobre las unidades usadas en el escenario IV
71
Tama no de poblacion 102
Generaciones 1000
N umero de intentos para agregar conexion 18
Porcentaje de la especie para cruce 20 %
N umero de generaciones permitidas sin mejora 20
N umero m aximo de neuronas permitidas 300
Probabilidad de crear conexi on 7 %
Probabilidad de crear neurona 5 %
Probabilidad de crear conexi on recurrente 0.9 %
Probabilidad de modicar peso de la conexi on 20 %
Rango de modicaci on de peso 0.25
Probabilidad de reemplazar peso 5 %
Probabilidad de modicar funci on de activacion 5 %
Rango de modicaci on de la funci on de activacion 0.05
Compatibilidad entre individuos 26 %
Edad para ser considerado vieja especie 800
Penalizaci on por viejo 70 %
Edad para ser considerado nueva especie 15
Bonicaci on por joven 130 %
Probabilidad de cruce 70 %
Lmite de n umero de especies
Tabla A.8: Par ametros utilizados para el algoritmo NEAT en el escenario IV
72
Bibliografa
[1] Abul Hasanat, M., Harun, S., Ramachandram, D., and Rajeswari, M.
Object class recognition using neat-evolved articial neural network. In Com-
puter Graphics, Imaging and Visualisation, 2008. CGIV 08. Fifth International
Conference on (2008), pp. 271275.
[2] Balla, R.-K., and Fern, A. Uct for tactical assault planning in real-time
strategy games. In Proceedings of the 21st international jont conference on Arti-
cal intelligence (San Francisco, CA, USA, 2009), IJCAI09, Morgan Kaufmann
Publishers Inc., pp. 4045.
[3] Birch, C. Understanding Pac-Man Ghost Behavior, 2011 (accesada el
8 de Octubre del 2011). http://gameinternals.com/post/2072558330/
understanding-pac-man-ghost-behavior.
[4] Blizzard Entertainment. Starcraft Compendium, 2011 (accesada el 8 de Oc-
tubre del 2011). http://classic.battle.net/scc/.
[5] Buckland, M. Codigo Fuente de NEAT C++ para Microsoft Windows, 2013
(accesada el 22 de Febrero del 2013). http://nn.cs.utexas.edu/soft-view.
php?SoftID=6.
[6] Cruz, U. S. Starcraft ai competition, 2013 (accesada el 4 de Abril del 2013).
http://webdocs.cs.ualberta.ca/
~
cdavid/starcraftaicomp/.
[7] Gauci, J., and Stanley, K. O. Autonomous evolution of topographic regula-
rities in articial neural networks. Neural Computation 22, 7 (2010), 18601898.
[8] Group, B. An API for interacting with Starcraft: Broodwar, 2011 (accesada el
30 de Octubre del 2011). http://code.google.com/p/bwapi/.
[9] Hastings, E., Guha, R., and Stanley, K. Automatic content generation in
the galactic arms race video game. Computational Intelligence and AI in Games,
IEEE Transactions on 1, 4 (2009), 245263.
73
[10] Holland, J. H. Adaptation in Natural and Articial Systems: An Introductory
Analysis with Applications to Biology, Control and Articial Intelligence. MIT
Press, Cambridge, MA, USA, 1992.
[11] Intelligence, I. C., and Games. Ieee conference on computational intelligence
and games 2012, 2013 (accesada el 4 de Abril del 2013). http://geneura.ugr.
es/cig2012/competitions.html.
[12] Jang, S.-H., Yoon, J.-W., and Cho, S.-B. Optimal strategy selection of
non-player character on real time strategy game using a speciated evolutionary
algorithm. In Computational Intelligence and Games, 2009. CIG 2009. IEEE
Symposium on (sept. 2009), pp. 75 79.
[13] Lin, C.-S., and Ting, C.-K. Emergent tactical formation using genetic algo-
rithm in real-time strategy games. In Technologies and Applications of Articial
Intelligence (TAAI), 2011 International Conference on (nov. 2011), pp. 325 330.
[14] Liquid, T. evolutionchamber - StarCraft 2 Genetic Algorithm Build Order Search
- Google Project Hosting, 2011 (accesada el 16 de Noviembre del 2011). http:
//code.google.com/p/evolutionchamber/.
[15] Liquid, T. Micro & Macro - Liquipedia Starcraft Wiki, 2011 (accesada el 8 de
Octubre del 2011). http://wiki.teamliquid.net/starcraft/StarCraft.
[16] Liquid, T. Units & Buildings - Liquipedia Starcraft Wiki, 2011 (accesada el 8 de
Octubre del 2011). http://wiki.teamliquid.net/starcraft/Units.
[17] Lockett, A., and Miikkulainen, R. Evolving opponent models for texas hold
em. In Computational Intelligence and Games, 2008. CIG 08. IEEE Symposium
On (2008), pp. 3138.
[18] MasterOfChaos. ChaosLauncher Homepage, 2013 (accesada el 27 de Abril del
2013). http://winner.cspsx.de/Starcraft/.
[19] Millington, I. Articial Intelligence for Games (The Morgan Kaufmann Series
in Interactive 3D Technology). Morgan Kaufmann Publishers Inc., San Francisco,
CA, USA, 2006.
[20] Parra, R., and Garrido, L. Bayesian networks for micromanagement deci-
sion imitation in the rts game starcraft. In Advances in Computational Intelli-
gence, I. Batyrshin and M. Mendoza, Eds., vol. 7630 of Lecture Notes in Computer
Science. Springer Berlin Heidelberg, 2013, pp. 433443.
74
[21] Prieditis, A., and Dalal, M. Applying model-based decision-making methods
to games: Applying the locust ai engine to quake iii. In Game Programming Gems
6, M. Dickheiser, Ed. Charles River Media, 2006, pp. 211222.
[22] Rosenblatt, F. The perceptron: A probabilistic model for information storage
and organization in the brain. Psychological Review 65, 6 (1958), 386408.
[23] Russell, S. J., Norvig, P., Candy, J. F., Malik, J. M., and Edwards,
D. D. Articial intelligence: a modern approach. Prentice-Hall, Inc., Upper Saddle
River, NJ, USA, 1996.
[24] Shantia, A., Begue, E., and Wiering, M. Connectionist reinforcement lear-
ning for intelligent unit micro management in starcraft. In Neural Networks
(IJCNN), The 2011 International Joint Conference on (31 2011-aug. 5 2011),
pp. 1794 1801.
[25] Stanley, K., Bryant, B., and Miikkulainen, R. Real-time neuroevolution
in the nero video game. Evolutionary Computation, IEEE Transactions on 9, 6
(2005), 653668.
[26] Stanley, K. O. Ecient Evolution of Neural Networks Through Complexica-
tion. PhD thesis, Department of Computer Sciences, The University of Texas at
Austin, 2004.
[27] Stanley, K. O. Codigo fuente de NEAT C++, 2013 (accesada el 22 de Febrero
del 2013). http://nn.cs.utexas.edu/?neat-c.
[28] Synnaeve, G., and Bessiere, P. A bayesian model for rts units control ap-
plied to starcraft. In Computational Intelligence and Games (CIG), 2011 IEEE
Conference on (31 2011-sept. 3 2011), pp. 190 196.
[29] Szczepa?ski, T., and Aamodt, A. Case-based reasoning for improved micro-
management in real-time.
[30] Traish, J., and Tulip, J. Towards adaptive online rts ai with neat. In Compu-
tational Intelligence and Games (CIG), 2012 IEEE Conference on (2012), pp. 430
437.
[31] Tsapanos, M., Chatzidimitriou, K., and Mitkas, P. A zeroth-level classier
system for real time strategy games. In Web Intelligence and Intelligent Agent
Technology (WI-IAT), 2011 IEEE/WIC/ACM International Conference on (aug.
2011), vol. 2, pp. 244 247.
75
[32] van der Heijden, M., Bakkes, S., and Spronck, P. Dynamic formations in
real-time strategy games. In Computational Intelligence and Games, 2008. CIG
08. IEEE Symposium On (dec. 2008), pp. 47 54.
[33] Wikipedia, E. Starcraft, 2011 (accesada el 8 de Octubre del 2011). http:
//es.wikipedia.org/wiki/StarCraft.
[34] Witten, I. H., and Frank, E. Data Mining: Practical Machine Learning Tools
and Techniques, Third Edition (Morgan Kaufmann Series in Data Management
Systems), 3 ed. Morgan Kaufmann Publishers Inc., San Francisco, CA, USA, 2005.
[35] Wittkamp, M., Barone, L., and Hingston, P. Using neat for continuous
adaptation and teamwork formation in pacman. In Computational Intelligence and
Games, 2008. CIG 08. IEEE Symposium On (2008), pp. 234242.
76
Vita
Jes us Alberto Herrera de Leon, procedente de la ciudad de Monterrey, Nuevo
Le on, realiz o sus estudios de Ingeniero en Sistemas Computacionales en la Universidad
Aut onoma de Coahuila en el periodo Agosto 2006 a Mayo 2011. Inicio sus estudios
de postgrado de Maestra en Ciencias con especialidad en Sistemas Inteligentes en
Agosto 2011 donde se especializo en el area de neuroevoluci on y participo en varios
proyectos de la c atedra de Agentes Aut onomos Inteligentes. Entre estos proyectos se
encuentran simulaci on de sistemas inteligentes en un juego de f utbol, desarrollo de
agentes para videojuegos. Actualmente se encuentra preparando su inicio a los estudios
de doctorado en el que seguir a especializando en el area de inteligencia articial aplicada
a videojuegos y en el uso de inteligencia articial para desarrollo de videojuego.
Circuito de Los Poetas # 1005
Colonia Privadas de Santa Catarina
Santa Catarina, Nuevo Leon 66367
La presente tesis fue tipograada con L
A
T
E
X
1
por Jes us Alberto Herrera de Leon.
1
El paquete de macros, ITESMtesis.sty, utilizado en el formateo de esta tesis fue escrito por el
Dr. Horacio Martnez Alfaro <hma@campus.mty.itesm.mx>, Profesor Asociado del Centro de Inteli-
gencia Articial del Instituto Tecnologico y de Estudios Superiores de Monterrey, Campus Monterrey.
77