710 likes | 960 Views
Tema 1: Técnicas heurísticas en juegos. Introducción Estrategias básicas: Estrategia exhaustiva: MiniMax Estrategia de poda: alfa-beta Estrategia: SSS* Estrategia de test previo: Scout Técnicas avanzadas. Técnica de bajada progresiva. Poda heurística. Continuación heurística.
E N D
Tema 1: Técnicas heurísticas enjuegos • Introducción • Estrategias básicas: • Estrategia exhaustiva: MiniMax • Estrategia de poda: alfa-beta • Estrategia: SSS* • Estrategia de test previo: Scout • Técnicas avanzadas. • Técnica de bajada progresiva. • Poda heurística. • Continuación heurística.
Introducción • ¿Porqué los juegos en Inteligencia Artificial? • Historia: • Wolfgam Kempelem, el ajedrecista mecánico 1760. • El Ajedrecista, Leonardo Torres Quevedo, 1912. • Turing 1952. • Shanon. • Arthur Samuel, damas, 1963. • El campo de batalla: El Ajedrez. • Nuevos retos: El GO.
¿Porqué los juegos en Inteligencia Artificial? • Entorno controlado. • REGLAS CONCISAS. • Se requiere “inteligencia”. • La máquina imita al humano. • Fácil evaluación.
Introducción • Programación de las máquinas para juegos de estrategia • Basados en búsqueda (complejos espacios de búsqueda) • La existencia de un oponente introduce incertidumbre • Existen limitaciones en el tiempo de respuesta • Pueden competir contra la inteligencia humana • En general, se trata de construir sistemas que sean capaces de tomar decisiones en un entorno adverso.
Introducción • Tipos de juegos: • Información completa, deterministas: • ajedrez, damas • Información completa, con azar: • backgammon • Información incompleta, con azar: • juegos de cartas
Características y ejemplos • Características de los juegos que vamos a estudiar en este tema: • Juegos bipersonales. • Los jugadores mueven alternativamente. • La ventaja para un jugador es desventaja para el otro. • Los jugadores poseen toda la información sobre el estado del juego. • Hay un número finito de estados y decisiones. • No interviene el azar (reglas y configuración jugada).
Características y ejemplos • Ejemplos de juegos de ese tipo: • Ajedrez, damas, go, otelo, 3 en raya, nim, ... • Ejemplos de juegos que no son de ese tipo: • Backgammon, poker, bridge, ...
Historia • El turco. • Wolfgang von Kempelen en 1769. • En 1809, el Turco derrotó a Napoleón Bonaparte.
Historia • El turco.
Historia • Leonardo Torres Quevedo. • El ajedrecista hizo su debut durante la Feria de París de 1914, generando gran expectación en aquellos tiempos y hubo una extensa primera mención en la Scientific American como "Torres and His Remarkable Automatic Device“. • Jugaba automáticamente el final rey y torre contra rey desde cualquier posición sin ninguna intervención humana.
Historia • En 1952 Turing escribió un programa de ajedrez. • A falta de una computadora lo suficientemente potente como para ejecutarlo, él simulaba el funcionamiento de la computadora, tardando más de hora y media en efectuar un movimiento. • Una de las partidas llegó a registrarse; el programa perdió frente a un amigo de Turing.
Historia • Claude Shannon. • Se dio cuenta que el gran problema de las máquinas que pretendiesen jugar al ajedrez sería el gran número de evaluaciones. • A-Strategy: búsqueda exhaustiva, hardware. Shannon predijo que buscando las 30^6 (más de 700.000.000) posiciones contenidas en los primeros tres movimientos (de ambos bandos, lo que son 6 plies), tardaría aproximadamente 16 minutos, incluso en el caso "muy optimista" que el programa evaluara un millón de posiciones por segundo. 40 años para conseguir esa velocidad. • B-Strategy: cortar las ramas de evaluación y reducir el número de evaluaciones de forma inteligente. Software. Los Maestros internacionales evalúan entre 50-60 posiciones.
Historia • Arthur L. Samuel. 1963. • Pensaba que enseñar a las computadoras jugar juegos era muy útil para desarrollar tácticas apropiadas para problemas generales. • Las damas son simples pero tienen una compleja estrategia. • Chinook 1989 - 2007. El problema ha sido completamente resuelto explorando todas las posibles posiciones.
Historia • Ajedrez:El campo de Batalla • En 1968, el MI David Levy realizó una famosa apuesta, en la cual afirmaba que ninguna computadora de ajedrez sería capaz de derrotarle en diez años, bajo condiciones de torneo. Ganó la apuesta en 1978, venciendo por 3'5-1'5.
Historia • Deep blue • Feng-hsiung Hsu y Murray Campbell desarrollaron un chip dedicado al cálculo de jugadas llamado ChipTest. • Escrito en C, era capaz de evaluar 200 millones de posiciones por segundo.
Historia • Deep blue vs Kasparov • 1996 • 1997
Historia • Profundidad de búsqueda vs ELO
Historia • 2005 - Un equipo de computadoras (Hydra, Deep Junior y Fritz), gana 8.5-3.5 contra un fuerte equipo de humanos formado por Veselin Topalov, Ruslan Ponomariov y Sergey Karjakin, que tenía una media de ELO de 2681. • 2006 - En el campeonato del mundo oficioso, Vladimir Kramnik es derrotado por Deep Fritz 4-2.
Historia • http://www.bobby-fischer.net/bobby_fischer_video_18.htm • http://www.youtube.com/watch?v=NJarxpYyoFI
Historia • Nuevos retos: • EL GO. • El tablero es muy grande 19x19, 361 intersecciones. • Hay muchos movimientos posibles. • Complejidad creciente. • Función de evaluación. difícil de definir. • Nivel de aficionado.
Estrategias básicas: • Objetivo: búsqueda de la mejor jugada • Nos centraremos en un juego genérico. • Dos jugadores, jugando por turnos. • Cada jugador está perfectamente informado de las reglas del juego y conoce en todo momento la configuración de cada jugada (no hay azar). • De estos dos jugadores cada uno intenta ganar para sí. Si decimos que un jugador gana, el otro pierde y viceversa. Puede existir un estado de empate. • Etiquetamos a los jugadores con MAX y MIN. Por norma siempre empezará a jugar MAX y vamos a querer que gane dicho jugador.
Estrategias básicas: • Estado(N): configuración del juego en un momento dado. • Árbol de juego. Cada arista de ese árbol indica un posible movimiento. Una rama completa contempla una posible jugada. • En cada nivel se van alternando los jugadores. • Factor de ramificación: número de posibles movimientos que se pueden realizar.
Estrategias básicas: • Imposible generar todo el árbol de búsqueda • Generar hasta un determinado nivel de profundidad. • Aplicar alguna función de evaluación f(N). • Devuelve un valor numérico cómo de bueno es un estado. • MAX maximizará esta función y MIN minimizará dicha función. • En algunos casos la función nos puede devolver valores como PIERDE, GANA o EMPATA, siempre referidos a MAX. • Objetivo del análisis del árbol: determinar valor del nodo raíz (inicio de la jugada). A este valor se le denomina valor MiniMax.
Árboles de juego • Representación de todas las posibles situaciones que se pueden dar en el juego, a partir de un estado dado • Cada nivel corresponde a un jugador (el primero para MAX).
Estrategia exhaustiva: MiniMax • El problema de decidir el movimiento adecuado. • En su turno, la máquina debe decidir que movimiento hacer. • Idea: • En cada turno, construir el árbol de juego completo cuyo nodo raíz sea la situación actual, desarrollándolo hasta los estados finales. • Valorar los finales según la función de utilidad. • Propagar hacia arriba los valores de la función. • Elegir el movimiento que lleve al estado sucesor del actual con mejor valoración.
Estrategia exhaustiva: MiniMax • La propagación de valores se hace según el principio minimax: • MAX siempre escogerá lo mejor para MAX y MIN lo peor para MAX. • Un nodo de MAX toma el valor del sucesor con mayor valor. • Un nodo de MIN toma el valor del sucesor con menor valor
Heurística: función de evaluación estática • Función de evaluación estática: • Dado un estado del juego y un turno, es una estimación de la bondad de tal situación respecto de MAX • En los estados finales, deberá coincidir con la de utilidad • Esta función heurística codifica todo el conocimiento que poseemos acerca del juego • Cuanto mayor el valor, mejor el estado para MAX • Lo importante es la comparación del valor entre los estados • Calidad de la f.e.: • En estados terminales f.e.=f.u. • ¡Su cálculo no debe ser muy lento!. Compromiso precisión-costo en tiempo. • La f.e. debe reflejar con precisión las posibilidades reales de ganar.
Heurística: función de evaluación estática • Implementación: • En lo que sigue, asumiremos que en lugar de una función f-utilidad(estado,turno), disponemos de una función f-e-estatica(estado,turno), definida sobre todos los estados • También necesitaremos dos variables: *maximo-valor* y *minimo-valor* almacenando, respectivamente, cotas para el mayor y el menor valor que puede tomar la función de evaluación estática
Complejidad de minimax • Complejidad: • Sea r es el factor de ramificación y m el nivel de profundidad. • Complejidad en tiempo: O(rm). • Complejidad en espacio: O(rm). • Aún es ineficiente en la práctica: • En el ajedrez, con 150 segundos por turno, solo sería posible analizar 150000 nodos, luego sólo se podría generar un árbol de profundidad menor que 4 • Por tanto, la calidad del juego de la máquina será muy baja (un jugador humano medio puede planificar al menos 6 jugadas por adelantado) • La poda alfa-beta mejora : • En algunos casos, es posible podar el árbol sin que afecte a la decisión que se toma finalmente
Minimax con poda alfa-beta • Idea: • Cada nodo se analiza teniendo en cuenta el valor que por el momento tiene y el valor que por el momento tiene su padre • Esto determina en cada momento un intervalo de posibles valores que podría tomar el nodo • Significado intuitivo de en cada momento: • Nodos MAX: es el valor actual del nodo (que tendría eso o más) y es el valor actual del padre (que tendría eso o menos) • Nodos MIN: es el valor actual del nodo (que tendría eso o menos) y es el valor actual del padre (que tendría eso o más)
Minimax con poda alfa-beta • La poda se produce si en algún momento : • Y no hace falta analizar los restantes sucesores del nodo • En nodos MIN, se denomina poda y en los nodos MAX, poda
Minimax con poda alfa-beta • A • B • C • D 6 (10,6) 6 (6,+inf) (6,10)
Complejidad de alfa-beta • Complejidad: • Sea r es el factor de ramificación y m el nivel de profundidad. • Complejidad en tiempo: O(r3m/4). • Complejidad en espacio: O(rm). • En la práctica, si los sucesores se exploran en orden de valor minimax (creciente o decreciente dependiendo de si es un nodo MIN o MAX, resp.), se produce la máxima poda, y en ese caso la complejidad temporal es O(rm/2)
Complejidad de alfa-beta • Esto hace que en el mismo tiempo se puedan considerar el doble de jugadas por adelantado (haciendo a la máquina más competitiva) • Métodos (aproximados) para generar los sucesores en orden: • Usar el valor de la función de evaluación estática para ordenar • Usar búsqueda en profundidad iterativa y guardar los valores minimax calculados en cada iteración