En este proyecto fin de carrera se aborda el diseño de un bot (o IA) para juegos RTS
haciendo uso de técnicas evolutivas, en concreto algoritmos genéticos. Como ntorno de pruebas para probar nuestras técnicas de diseño evolutivo, se utiliza un juego propuesto en el Google AI Challenge denominado Planet Wars. En primer lugar es presentado el concepto y normativa del juego desde el punto de vista de dicho campeonato. A continuación se muestra
un diseño inicial para el bot haciendo uso de una IA reactiva. Posteriormente dicha IA es optimizada haciendo uso de un algoritmo genético. Para dicho algoritmo génetico se realizan estudios con el fin de constatar que las decisiones tomadas son correctas y extrapolables a otros problemas de diseño similares. Así pues se presentan tanto estudios relacionados con el rendimiento del software, como estudios más centrados en el calidad y concepción fitness; fitness que es la pieza clave para determinar la calidad de nuestro diseño. Finalmente se
presenta un método de diseño especialista y adaptativo de la IA, haciendo uso para ello del mecanismo de optimización proporcionado por el algoritmo genético.
2. Evolución, IA reactivas y RTS…
20/07/2012 Evolución de IAs Reactivas en el Marco de los RTS 2
3. El proceso continuo de transformación de las especies…
20/07/2012 Evolución de IAs Reactivas en el Marco de los RTS 3
4. Inteligencia artificial que sigue un modelo estímulo-
respuesta
20/07/2012 Evolución de IAs Reactivas en el Marco de los RTS 4
5. Real time strategy (games) o juegos de estrategia en
tiempo real
20/07/2012 Evolución de IAs Reactivas en el Marco de los RTS 5
6. Estudiar técnicas
evolutivas para
diseñar IAs reactivas
para RTS
20/07/2012 Evolución de IAs Reactivas en el Marco de los RTS 6
7. Necesitamos un entorno de pruebas
20/07/2012 Evolución de IAs Reactivas en el Marco de los RTS 7
8. 20/07/2012 Evolución de IAs Reactivas en el Marco de los RTS 8
9. Identificador
Propietario
Posición
Número de
naves
Ratio de
crecimiento
20/07/2012 Evolución de IAs Reactivas en el Marco de los RTS 9
10. Identificador
Propietario
Número de naves
Planeta origen
Planeta destino
Duración del viaje
Turnos hasta
llegar
20/07/2012 Evolución de IAs Reactivas en el Marco de los RTS 10
11. Turnos de 1 segundo:
Envía el estado del juego a los
jugadores
Recibe órdenes de ambos
jugadores
Actualiza el estado del juego
Comprueba condiciones de victoria
20/07/2012 Evolución de IAs Reactivas en el Marco de los RTS 11
12. >1s
20/07/2012 Evolución de IAs Reactivas en el Marco de los RTS 12
13. Bot
proporcionado por
Google.
Muy simple pero
eficaz en todo tipo
de mapa
20/07/2012 Evolución de IAs Reactivas en el Marco de los RTS 13
15. Base
Diezmo
• Planeta con mayor flota
• Acción de una colonia
Colonia
de entregar una parte
de sus naves a la base
• Resto de planetas
Ataque extra
Objetivo
• Atacar desde la colonia
• Planeta que vamos a al planeta objetivo
atacar
20/07/2012 Evolución de IAs Reactivas en el Marco de los RTS 15
16. 20/07/2012 Evolución de IAs Reactivas en el Marco de los RTS 16
17. 𝑠𝑠𝑠𝑠𝑠𝑠𝑠𝑠𝑠𝑠
𝑟𝑟𝑟𝑟𝑟𝑟 =
Sacrificio Beneficio
𝑏𝑏𝑏𝑏𝑏𝑏𝑏𝑏𝑏
20/07/2012 Evolución de IAs Reactivas en el Marco de los RTS 17
18. El diezmo supone El ataque desde la
entregar cada 2 turnos colonias sucede el 90%
el 10% de las flotas de de las veces, enviando
la cada colonia la mitad de sus flotas
alojadas
A la BASE Al OBJETIVO
20/07/2012 Evolución de IAs Reactivas en el Marco de los RTS 18
20. Representa la solución
a un problema como
un cromosoma
compuesto por genes.
Esta solución
constituye un
individuo.
20/07/2012 Evolución de IAs Reactivas en el Marco de los RTS 20
21. Los individuos se
seleccionan para
“procrear” y perpetuar
su existencia en la
población.
La selección debe
favorecer a los
mejores individuos
Ya te
Tu si que vales! llamaremos…
Siguiente!
20/07/2012 Evolución de IAs Reactivas en el Marco de los RTS 21
22. Los individuos
procrean cruzando su
información genética
dando lugar a un nuevo
individuo.
20/07/2012 Evolución de IAs Reactivas en el Marco de los RTS 22
23. Es posible que el cruce
no salga bien,
produciendo una
mutación
20/07/2012 Evolución de IAs Reactivas en el Marco de los RTS 23
24. Para conseguir cada
vez mejores
individuos, realizando
este cruce en varias
iteraciones o
generaciones
20/07/2012 Evolución de IAs Reactivas en el Marco de los RTS 24
25. Aresbot = {0,1}{ 0,5}{1}{1}{0,25}{0,5}{0,9}
Consideramos a
AresBot como una caja
negra, que recibe unos
parámetros de entrada 0,90000
o comportamiento. 0,10000
0,50000
Así podemos entender
a AresBot como 0,50000
1,00000
Genebot con lo 0,25000
siguientes parámetros
1,00000
20/07/2012 Evolución de IAs Reactivas en el Marco de los RTS 25
26. P_diezmo %_diezmo ωS
• Probabilidad de que • Cantidad (en naves) • Peso del sacrificio en
suceda el diezmo del diezmo la función de riesgo
ωB Naves_extras P_ataqueColonias
• Peso del beneficio en • Naves extras enviadas • Probabilidad de que
la función de riesgo en cada flota una colonia ataque
%_ataqueColonia
• Tamaño (en naves) de
la flota enviada
20/07/2012 Evolución de IAs Reactivas en el Marco de los RTS 26
27. ¿Cómo definimos que un bot es “mejor”?
20/07/2012 Evolución de IAs Reactivas en el Marco de los RTS 27
28. La función de fitness
nos sirve para definir
entre dos individuos
cual es mejor.
Para el fitness
definimos un conjunto
de mapa de pruebas y
enfrentamos los
individuos contra
GoogleBot
20/07/2012 Evolución de IAs Reactivas en el Marco de los RTS 28
29. Las simulaciones nos resultan “caras”
20/07/2012 Evolución de IAs Reactivas en el Marco de los RTS 29
30. Realizar las simulaciones
resulta muy costoso en
tiempo:
40 (seg) x 5 x 200 x 100
≈
46.29 días
20/07/2012 Evolución de IAs Reactivas en el Marco de los RTS 30
32. 20/07/2012 Evolución de IAs Reactivas en el Marco de los RTS 32
33. ¿Cómo sabemos que no ganamos por suerte?
20/07/2012 Evolución de IAs Reactivas en el Marco de los RTS 33
34. Nuestro bot es
estocástico.
Nuestro fitness debe
evitar que se propaguen
constantemente
individuos con victorias
“por azar”
20/07/2012 Evolución de IAs Reactivas en el Marco de los RTS 34
35. G1
3005
2505
2005
Turnos
1505
1005
505
5
0 5 10 15 20 25 30 35 40 45 50 55 60 65 70 75 80 85 90 95 100
Batallas
Gana en 5 mapas Pierde en algún mapa Promedio
20/07/2012 Evolución de IAs Reactivas en el Marco de los RTS 35
36. G5
3005
2505
2005
Turnos
1505
1005
505
5
0 5 10 15 20 25 30 35 40 45 50 55 60 65 70 75 80 85 90 95 100
Batallas
Gana en 5 mapas Pierde en algún mapa Promedio
20/07/2012 Evolución de IAs Reactivas en el Marco de los RTS 36
37. ¿Realmente indica que un bot es mejor que otro?
20/07/2012 Evolución de IAs Reactivas en el Marco de los RTS 37
38. Si nuestro fitness es
bueno:
“Es más probable
que gane el
individuo que el
fitness indica que es
1º 100º mejor”
20/07/2012 Evolución de IAs Reactivas en el Marco de los RTS 38
39. Vamos a enfrentar a 40 bots entre ellos
Los agruparemos en función de fitness:
A B C D
20/07/2012 Evolución de IAs Reactivas en el Marco de los RTS 39
40. 20/07/2012 Evolución de IAs Reactivas en el Marco de los RTS 40
41. ¡Es el momento de evolucionar!
20/07/2012 Evolución de IAs Reactivas en el Marco de los RTS 41
42. Sabemos que nuestro GA es:
Eficiente.
Estable.
Consistente
¡Es hora de evolucionar nuestros
individuos!
20/07/2012 Evolución de IAs Reactivas en el Marco de los RTS 42
43. Generaciones 100
Individuos 200
Probabilidad de cruce 0.6
Probabilidad de mutación 0.02
alpha 0.5
Política de reemplazamiento 2-torneo
Elitismo 5 individuos
Número de hebras evaluación 2
Número ejecuciones GA 15
20/07/2012 Evolución de IAs Reactivas en el Marco de los RTS 43
44. Conseguimos 15 bots “mejores”
20/07/2012 Evolución de IAs Reactivas en el Marco de los RTS 44
46. 100%
98% 98% 99% 98% 98%
90% 94%
90% 91% 90%
89%
87%
85% 84%
80% 82% 83%
70%
Porcentaj de victoria
60%
50%
40%
30%
20%
10%
0%
E01 E02 E03 E04 E05 E06 E07 E08 E09 E10 E11 E12 E13 E14 E15
20/07/2012 Evolución de IAs Reactivas en el Marco de los RTS 46
47. 20/07/2012 Evolución de IAs Reactivas en el Marco de los RTS 47
48. Fijémonos en un detalle
20/07/2012 Evolución de IAs Reactivas en el Marco de los RTS 48
49. 20/07/2012 Evolución de IAs Reactivas en el Marco de los RTS 49
50. Todas sirven para cortar… ¿Cuál quiero?
20/07/2012 Evolución de IAs Reactivas en el Marco de los RTS 50
51. El bot especialista y adaptativo a llegado
20/07/2012 Evolución de IAs Reactivas en el Marco de los RTS 51
52. Tenemos una herramienta (Genebot) que nos
permite optimizar con excelentes resultados
nuestro bot para un conjunto de mapas
Si somos capaces de establecer topologías
similares de mapas, podemos optimizar un
bot para ese conjunto de mapas y usar su
comportamiento siempre que nos
encontramos en una situación parecida.
20/07/2012 Evolución de IAs Reactivas en el Marco de los RTS 52
53. Características
topológicas:
Distancia entre bases
Dispersión
20/07/2012 Evolución de IAs Reactivas en el Marco de los RTS 53
54. 20/07/2012 Evolución de IAs Reactivas en el Marco de los RTS 54
55. 20/07/2012 Evolución de IAs Reactivas en el Marco de los RTS 55
56. 20/07/2012 Evolución de IAs Reactivas en el Marco de los RTS 56
57. DISTANCIA DISPERSIÓN
Cercano Periférico
• {-∞,16} • {-∞,-1}
Medio Uniforme
• {16,22} • {-1,1}
Lejano Centrado
• {22,∞} • {1,∞}
20/07/2012 Evolución de IAs Reactivas en el Marco de los RTS 57
58. Fitness: Conjuntos de mapas iguales
características.
Enemigo: Mejor Genebot disponible
20/07/2012 Evolución de IAs Reactivas en el Marco de los RTS 58
60. 180 165
160
140 129 130
120 112
102
100 83 79
80 59
60 48
40
20
0
Fitness (Experto)
20/07/2012 Evolución de IAs Reactivas en el Marco de los RTS 60
61. Absolutas Porcentaje
Victorias 6227 62,28%
Derrotas 3771 37,72%
TOTAL 9998
20/07/2012 Evolución de IAs Reactivas en el Marco de los RTS 61
62. Un GA es una excelente herramienta para
optimizar un bot.
Para que el GA sea útil debemos procurar que
la selección favorezca a los mejores
individuos.
Esto se consigue con un fitness estable y
coherente.
20/07/2012 Evolución de IAs Reactivas en el Marco de los RTS 62
63. El GA no solo nos puede servir para Optimizar
nuestro bot, sino para crear bots
especialistas y adaptativos.
Para ello, solo hay que estudiar la topología
del espectro del problema y aplicar la
optimización de forma local a conjuntos de
problemas similares.
20/07/2012 Evolución de IAs Reactivas en el Marco de los RTS 63
64. EN VIDEOJUEGOS FUERA DE VIDEOJUEGOS
En juegos RTS de iguales Cualquier problema que se
características. resuelva mediante una IA
En juegos en los que los reactiva.
enemigos se comporten Cualquier problema con
como IAs reactivas características similares
(imposibilidad de memoria,
limitaciones tiempo de
procesamiento).
20/07/2012 Evolución de IAs Reactivas en el Marco de los RTS 64
65. Algoritmo distribuido
Uso de GPUs para el cálculo matricial
Algoritmo co-evolutivo
Algoritmo multi-objetivo
Nuevos componentes para el GA
Aplicación de las técnicas en otros entornos
20/07/2012 Evolución de IAs Reactivas en el Marco de los RTS 65
66. Optimizing player behaviour in real time strategy game using evolutionary algorithms
• Aceptado en CEC año 2011
Optimizing Stategy Parameters in a Game bot
• Aceptado en IWAN año 2011
Tratamiento del fitness ruidoso en la optimización evolutiva de bots para el juego Planet Wars
• Aceptado en MAEB año 2012
Dealing with Noisy Fitness in the Desing of a RTS Game Bot
• Aceptado en EVO* año 2012 y nominado a Best Paper en EvoGames
Adaptative bots for real-time strategy games via map characterization
• ¿Aceptado? en CIG año 2012
Effect of noisy fitness in RTS Player Behaviour Optimisation Using Evolutionary Algorithms
• Trabajando para aceptación revista JCST año 2012 (0.656 índice de impacto)
20/07/2012 Evolución de IAs Reactivas en el Marco de los RTS 66
67. Es la hora de las preguntas!
20/07/2012 Evolución de IAs Reactivas en el Marco de los RTS 67