Este documento describe cómo usar el paquete Inspyred de Python para entrenar agentes de inteligencia artificial que juegan videojuegos mediante algoritmos evolutivos. Explica brevemente los algoritmos evolutivos y su aplicación a problemas de videojuegos como Super Mario y Hearthstone. A continuación, detalla cómo implementar un algoritmo de evolución de estrategia en Inspyred para optimizar los pesos de un agente de Hearthstone.
Presentación guía sencilla en Microsoft Excel.pptx
Survival of the fittest: usando el paquete inspyred para entrenar IAs que juegan a videojuegos
1. Survival of the
fi
ttest: usando el paquete
inspyred para entrenar IAs que juegan a
videojuegos
Pablo García Sánchez
@fergunet[@mastodon.online]
Dept. de Ingeniería de Computadores, Automática y Robótica
2. ¿Quién soy?
• pablogarcia@ugr.es
• @fergunet@mastodon.online
• Profe de ICAR en la ETSIIT-UGR
• Investigo en IA para videojuegos,
algoritmos bioinspirados y
distribuidos
• Dir
ij
o la @OSLUGR
• Me gusta la fotografía, el cine, el
urban sketching y los videojuegos
3.
4. Índice
• Ciencia e IA en los
videojuegos
• Algoritmos
Evolutivos
• Inspyred
• Usando inspyred
para optimizar
agentes
commons.wikipedia.org
5. El Mercado de los
Videojuegos
https://www.gamingscan.com/biggest-video-game-tournaments-in-the-world/
6. Investigar en videojuegos
P. García-Sánchez et al. A bibliometric study of the research area of videogames using Dimensions.ai database.
ITQM-2018. Procedia Computer Science (2018)
7. ¿Por qué investigar en
videojuegos?
https://half-life.fandom.com/wiki/GLaDOS?
fi
le=Glados_new_body.jpg
11. Existen muchos motores de
videojuegos
https://caveuvg.blogspot.com/2018/11/game-engines.html
12. ¿Y la Inteligencia Arti
fi
cial?
• Hacer que los
ordenadores hagan
cosas que actualmente
sólo los humanos
pueden hacer
• ¿Para que puede usarse
la IA en videojuegos?
https://wallpapercave.com/hal-9000-wallpaper
19. Los juegos son populares
• Popular
• Más contenido
• Más datos
https://www.nintendolife.com/news/2019/10/
feature_how_fangamer_changed_the_world_of_video_game_merchandise_forever
20. Áreas de lA en juegos
•Percepción
•Procesamiento de señal
•Machine Learning
•Psicología Arti
fi
cial
•Plani
fi
cación y Búsqueda
•Razonamiento
•Procesamiento del lenguaje natural
•Navegación
pixabay
26. ¿Qué son los Algoritmos
Evolutivos?
• Metaheurísticas
• Resuelve problemas de optimización
• Función de adecuación:
fi
tness
• Basados en población
• Basados el principio de selección natural
• Estocásticos
32. En general, necesitamos
• GENERAR individuos
• SELECCIONAR individuos
• GENERAR individuos h
ij
os (crossover, mutación...)
• EVALUAR individuos
• REEMPLAZAR individuos
33. Ejemplos de EAs
• Algoritmo genético: los individuos son vectores de
números
• Programación genética: los individuos son árboles
que codi
fi
can un programa
• Programación evolutiva: los individuos son otra
estructura (ej: una red neuronal)
• Otros: EDAs, Bayesianos, DE...
35. Algoritmos genéticos de
codi
fi
cación combinatoria
Gra Sev Bcn Mad Ten Ovi Lug
Ten Sev Gra Mad Lug Ovi Bcn
Ejemplo de problema: Viajante de comercio.
f1=2210km
f2=850km
36. Algoritmos genéticos con
codi
fi
cación real
0.7 1.4 0.7 0.8 1.1 0.9 0.9
0.6 1.5 1.6 1.7 2.7 1.6 1.9
Ejemplo de problema: Función Rastrigin.
Rastrigin(x) = 10n+∑i=1n((xi−1)2−10cos(2π(xi−1)))
f=0.8
f=1.7
40. Problema: Super Mario Bot
• FSM en la que se
evolucionan los
estados actuales
y las acciones
(salto, correr y
dirección)
• Fitness: distancia
recorrida
52. Ejemplo 2: Coevolución de IA
• Programar una IA con parámetros en el lenguaje que sea
• Dar puntos a las acciones posibles cada turno
• Matar un minion
• Dañar un minion
• Curar un minion
• …
• Enfrentar IAs entre sí -> NO NECESITAMOS AGENTES
CREADOS
VS
56. ScoreTask
• Si me mata devuelvo -infinito
• Si mato al enemigo devuelvo infinito
• Score de diferencias:
• de salud (mía y del enemigo)->me interesa subir mi
salud y bajar la del enemigo
• en bichos muertos/aparecidos (míos y del enemigo)
• secretos y de maná
61. Integrándolo en inspyred
• Crear cromosomas de 21 pesos reales
• Por cada individuo de la población:
• Enfrentarlo al resto de la población usando todas las combinaciones
de mazos (Mage, Shaman, Warrior)
• (¡Usar paralelismo aquí!)
• Salidas a
fi
cheros
• Parsear
fi
chero y actualizar
fi
tness de los individuos
• Fitness = victorias
• Los mejores sustituyen a los peores
62.
63. ¿Qué hemos aprendido?
• Implementar un agente básico que decide la mejor acción y
darle pesos reales -> Mejor usar ES que GA
• Lanzar simulador en la función evaluate
• El mejor
fi
tness es el número de victorias (o
fi
tness jerárquico)
• Es bueno re-evaluar individuos
• Validar siempre contra bots/mapas no usados para
aprendizaje
• Usar software libre
65. Referencias (Planet Wars)
• A. Fernández-Ares, A. Miguel Mora, J. J. Merelo Guervós, P. García-Sánchez, C. M. Fernandes:
Optimizing player behavior in a real-time strategy game using evolutionary algorithms. IEEE
Congress on Evolutionary Computation 2011: 2017-2024 (2012)
• A. Miguel Mora, A. Fernández-Ares, J. J. Merelo Guervós, P. García-Sánchez, C. M. Fernandes:
E
ff
ect of Noisy Fitness in Real-Time Strategy Games Player Behaviour Optimisation Using
Evolutionary Algorithms. J. Comput. Sci. Technol. 27(5): 1007-1023 (2012)
• Antonio Fernández-Ares, Pablo García-Sánchez, Antonio Miguel Mora, Juan J. Merelo Guervós:
Adaptive bots for real-time strategy games via map characterization. CIG 2012: 417-721 (2012)
• Antonio Fernández-Ares, Pablo García-Sánchez, Antonio M. Mora, Pedro A. Castillo Valdivieso,
Juan Julián Merelo Guervós, Maria I. García Arenas, Gustavo Romero: It's Time to Stop: A
Comparison of Termination Conditions in the Evolution of Game Bots. EvoApplications 2015:
355-368
• Pablo García-Sánchez, Antonio Fernández-Ares, Antonio Miguel Mora, Pedro A. Castillo
Valdivieso, Jesús González, Juan Julián Merelo Guervós: Tree Depth In
fl
uence in Genetic
Programming for Generation of Competitive Agents for RTS Games. EvoApplications 2014:
411-421
66. Referencias (Unreal)
• Antonio Miguel Mora, Ramón Montoya, Juan Julián Merelo Guervós,
Pablo García-Sánchez, Pedro A. Castillo, Juan Luís Jiménez Laredo,
Ana Isabel Martínez García, Anna Esparcia-Alcázar: Evolving Bot AI
in Unreal. EvoApplications (1) 2010: 171-180
• Antonio Miguel Mora, Francisco Aisa, Ricardo Caballero, Pablo
García-Sánchez, Juan Julián Merelo Guervós, Pedro A. Castillo,
Raúl Lara-Cabrera: Designing and Evolving an Unreal
TournamentTM 2004 Expert Bot. IWANN (2) 2013: 312-323
• Antonio Miguel Mora, M. A. Moreno, Juan Julián Merelo Guervós,
Pedro A. Castillo, Maribel García Arenas, Juan Luís Jiménez Laredo:
Evolving the cooperative behaviour in Unreal™ bots. CIG 2010:
241-248
67. Referencias (MADE)
• Rubén Héctor García-Ortega, Pablo García-Sánchez, Juan Julián Merelo
Guervós, María Isabel García Arenas, Pedro A. Castillo Valdivieso, Antonio M.
Mora: How the World Was MADE: Parametrization of Evolved Agent-Based
Models for Backstory Generation. EvoApplications 2015: 443-454
• Garcia-Ortega, Ruben H., et al. My life as a sim: evolving unique and
engaging life stories using virtual worlds. ALIFE 14: The Fourteenth
Conference on the Synthesis and Simulation of Living Systems. Vol. 14. Pages
580-587, 2014
• Rubén Héctor García-Ortega, Pablo García-Sánchez, Juan J. Merelo,
Aránzazu San Ginés, Ángel Fernández Cabezas: The Story of Their Lives:
Massive Procedural Generation of Heroes' Journeys Using Evolved Agent-
Based Models and Logical Reasoning. EvoApplications (1) 2016: 604-619
• Rubén Héctor García-Ortega, Pablo García-Sánchez, Juan Julián Merelo
Guervós: StarTroper, a
fi
lm trope rating optimizer using machine learning and
evolutionary algorithms. Expert Syst. J. Knowl. Eng. 37(6) (2020)
68. Referencias: StarCraft y
HearthStone
• Pablo García-Sánchez, Alberto Paolo Tonda, Antonio Miguel
Mora, Giovanni Squillero, Juan Julián Merelo Guervós: Towards
automatic StarCraft strategy asf using genetic programming.
CIG 2015: 284-291
• Pablo García-Sánchez, Alberto Paolo Tonda, Antonio Mora
García, Giovanni Squillero, Juan Julián Merelo Guervós:
Automated playtesting in collectible card games using
evolutionary algorithms: A case study in hearthstone. Knowl.-
Based Syst. 153: 133-146 (2018)
• P. García-Sánchez, Alberto Tonda, Antonio J. Fernández-Leiva,
Carlos Cotta. Optimizing Hearthstone agents using an
evolutionary algorithm. Knowl.-Based Syst, 2019
69. Software Libre y Ciencia
Abierta
• Repos de github: fergunet, deantares, amorag, jjmerelo,
geneura, geneura-papers
• El texto de esta presentación es CC-BY-SA (algunas
imágenes usadas tienen licencia libre, no comercial,
salvo imágenes de Blizzard, Bethesda, EA, Sony,
Microsoft, Nintendo y similares empresas, además de
alguna otra sin citar, pero usadas con
fi
nes docentes, no
me denuncien!)