Este documento describe el estado del arte en el uso de la inteligencia artificial para tomar decisiones en el juego del póker. Explica que los programas actuales son capaces de ganar a jugadores aficionados mediante técnicas como redes neuronales y clustering. También describe los ganadores recientes de un torneo universitario, incluyendo sus técnicas como perceptrones multicapa, reducción del arrepentimiento contrafáctico y k-medias modificadas. El objetivo general es desarrollar un jugador de IA capaz de igualar o superar el rendimiento de
Este documento propone el uso de técnicas de inteligencia artificial para predecir las mejores jugadas en la primera ronda de apuestas (preflop) en el juego de póker Texas Hold'em. Los datos de entrada serán manos jugadas por un profesional que se procesarán en WEKA. Se aplicarán clasificadores supervisados como redes neuronales y perceptrones multicapa para predecir si la mejor jugada es retirarse, igualar, subir o resubir. La solución se evaluará usando un conjunto de prueba en WEKA
Este documento describe un proyecto de investigación sobre la aplicación de la inteligencia artificial al juego del póquer Texas Hold'em. El objetivo principal es desarrollar un clasificador que sea capaz de tomar decisiones óptimas en la primera ronda de apuestas (preflop) teniendo en cuenta las cartas propias, la posición y el estilo de juego de los oponentes. Se revisa el estado del arte, donde destacan competiciones universitarias para crear bots de póquer. Finalmente, se exponen posibles aplicaciones como complemento a herramient
Este documento proporciona información sobre el lenguaje de programación ActionScript 3.0. Explica las ventajas y novedades de ActionScript 3.0 como el uso de objetos y la compatibilidad con versiones anteriores. También incluye varios capítulos que cubren conceptos básicos de programación, la sintaxis de ActionScript, programación orientada a objetos y la creación de aplicaciones con ActionScript.
Este documento proporciona información sobre el lenguaje de programación ActionScript 3.0. Explica las principales características y funcionalidades de ActionScript 3.0, incluyendo objetos, eventos, tipos de datos, variables, funciones y más. También contiene ejemplos de código y recomendaciones para el desarrollo de aplicaciones con ActionScript 3.0. El documento está destinado a ayudar a los desarrolladores a aprender y utilizar el lenguaje ActionScript para crear aplicaciones interactivas y sitios web dinámicos.
El documento contiene varias frases y citas cortas sobre la fuerza del amor y la fragilidad de la vida humana, así como sobre la importancia de pequeños gestos y de seguir adelante a pesar de los obstáculos.
Este documento presenta la plataforma del Partido Nuevo Progresista para el período 2009-2012. Propone un programa de cambio y recuperación económica centrado en tres pilares: visión, cambio y futuro. El documento describe las propuestas del partido en áreas como desarrollo económico, reforma gubernamental, infraestructura, educación, seguridad y estatus político, con el objetivo de sacar a Puerto Rico de la crisis actual y encaminarlo hacia un futuro próspero.
Este documento describe los usos y propiedades de los formularios y controles de ficha. Explica que los formularios se utilizan para crear diseños personalizados vinculados a tablas de registros y que los controles muestran y editan los datos. Además, detalla cómo establecer propiedades de los controles como el nombre de fuente, tamaño y grueso de fuente, e insertar, eliminar o ordenar páginas y agregar imágenes a las fichas.
Este documento presenta una visión estratégica para Puerto Rico. Propone eliminar el impuesto sobre las ventas estatal (IVU) y sustituirlo con un arbitrio general solo sobre ciertas mercancías importadas, excluyendo los servicios. Esto aliviaría la carga tributaria del pueblo y simplificaría el código tributario. Sin embargo, la legislatura controlada por el PNP se ha negado a aprobar estas reformas contributivas que beneficiarían a los puertorriqueños.
Este documento propone el uso de técnicas de inteligencia artificial para predecir las mejores jugadas en la primera ronda de apuestas (preflop) en el juego de póker Texas Hold'em. Los datos de entrada serán manos jugadas por un profesional que se procesarán en WEKA. Se aplicarán clasificadores supervisados como redes neuronales y perceptrones multicapa para predecir si la mejor jugada es retirarse, igualar, subir o resubir. La solución se evaluará usando un conjunto de prueba en WEKA
Este documento describe un proyecto de investigación sobre la aplicación de la inteligencia artificial al juego del póquer Texas Hold'em. El objetivo principal es desarrollar un clasificador que sea capaz de tomar decisiones óptimas en la primera ronda de apuestas (preflop) teniendo en cuenta las cartas propias, la posición y el estilo de juego de los oponentes. Se revisa el estado del arte, donde destacan competiciones universitarias para crear bots de póquer. Finalmente, se exponen posibles aplicaciones como complemento a herramient
Este documento proporciona información sobre el lenguaje de programación ActionScript 3.0. Explica las ventajas y novedades de ActionScript 3.0 como el uso de objetos y la compatibilidad con versiones anteriores. También incluye varios capítulos que cubren conceptos básicos de programación, la sintaxis de ActionScript, programación orientada a objetos y la creación de aplicaciones con ActionScript.
Este documento proporciona información sobre el lenguaje de programación ActionScript 3.0. Explica las principales características y funcionalidades de ActionScript 3.0, incluyendo objetos, eventos, tipos de datos, variables, funciones y más. También contiene ejemplos de código y recomendaciones para el desarrollo de aplicaciones con ActionScript 3.0. El documento está destinado a ayudar a los desarrolladores a aprender y utilizar el lenguaje ActionScript para crear aplicaciones interactivas y sitios web dinámicos.
El documento contiene varias frases y citas cortas sobre la fuerza del amor y la fragilidad de la vida humana, así como sobre la importancia de pequeños gestos y de seguir adelante a pesar de los obstáculos.
Este documento presenta la plataforma del Partido Nuevo Progresista para el período 2009-2012. Propone un programa de cambio y recuperación económica centrado en tres pilares: visión, cambio y futuro. El documento describe las propuestas del partido en áreas como desarrollo económico, reforma gubernamental, infraestructura, educación, seguridad y estatus político, con el objetivo de sacar a Puerto Rico de la crisis actual y encaminarlo hacia un futuro próspero.
Este documento describe los usos y propiedades de los formularios y controles de ficha. Explica que los formularios se utilizan para crear diseños personalizados vinculados a tablas de registros y que los controles muestran y editan los datos. Además, detalla cómo establecer propiedades de los controles como el nombre de fuente, tamaño y grueso de fuente, e insertar, eliminar o ordenar páginas y agregar imágenes a las fichas.
Este documento presenta una visión estratégica para Puerto Rico. Propone eliminar el impuesto sobre las ventas estatal (IVU) y sustituirlo con un arbitrio general solo sobre ciertas mercancías importadas, excluyendo los servicios. Esto aliviaría la carga tributaria del pueblo y simplificaría el código tributario. Sin embargo, la legislatura controlada por el PNP se ha negado a aprobar estas reformas contributivas que beneficiarían a los puertorriqueños.
Este documento presenta una guía para docentes sobre la enseñanza de robótica y programación de robots para el entretenimiento. Incluye instrucciones sobre el cuidado del equipo de robótica, repaso de conceptos básicos como sensores y actuadores, y explicaciones paso a paso sobre cómo programar diferentes componentes de razonamiento como bifurcaciones, aleatoriedad y variables. El objetivo es ayudar a los docentes a planificar y enseñar sesiones de programación de robots para estudiantes.
Historia y evolución de la pc wil,stefa y harrytefadianis
Este documento resume la historia y evolución de las computadoras personales. Comienza explicando cómo los primeros métodos de registro de datos evolucionaron hacia dispositivos de cálculo y luego sistemas de tarjetas perforadas. Luego describe la aparición de las primeras computadoras electrónicas y cómo se han desarrollado departamentos de procesamiento de datos en las empresas. A continuación, detalla los componentes clave de una computadora moderna como monitores, microprocesadores, memorias, tarjetas madre, mouse, teclado, cámaras, impres
Este documento presenta un resumen del módulo "Programación Gráfica" del Curso de Experto en Desarrollo de Videojuegos. El módulo cubre aspectos básicos de la programación gráfica como el pipeline gráfico, las matemáticas subyacentes, el uso de materiales y texturas, la iluminación y los sistemas de partículas. También discute la importancia de la simulación física para dotar de realismo a los objetos y actores en el juego. Finalmente, introduce la biblioteca gráfica OGRE como
En este trabajo intenté predecir las victorias de los equipos locales del fútbol argentino, en base a las acciones realizadas por los deportistas. Para ello, previamente realicé análisis exploratorios y descriptivos de los datos.
Los resultados obtenidos no fueron los esperados, pero el análisis que se reproduce a continuación, si aporta una nueva visión a la disciplina deportiva.
Este documento presenta una introducción a la teoría de juegos, incluyendo su historia, definiciones clave como estrategias y matriz de pagos, y métodos para resolver problemas de teoría de juegos como el método de filas y columnas relevantes, el punto de silla, métodos gráficos y algebraicos, y el método de sub-juegos.
El documento presenta un proyecto de análisis genómico a través de herramientas informáticas aplicadas a datos de secuenciación de nueva generación. El proyecto se divide en dos partes: la primera revisa el software usado para indexar genomas, buscar alineamientos y realizar análisis transcriptómicos cualitativos y cuantitativos; la segunda parte consiste en una serie de experimentos usando dichas herramientas y analizando los resultados obtenidos.
El documento presenta una serie de ejercicios relacionados con temas de investigación de operaciones como análisis de decisiones, teoría de juegos, programación dinámica y cadenas de Markov. Los ejercicios incluyen analizar casos reales donde se haya aplicado estas técnicas, modelar problemas como juegos de suma cero, asignar tiempos de estudio de manera óptima usando programación dinámica y analizar la absorción de una cadena de Markov dada su matriz de transición.
Juegos de Producción y Estadística para laPromoción de las Metodologías ÁgilesLuiz C. Parzianello
El documento describe tres juegos de roles diseñados para promover las metodologías ágiles a través de la demostración de sus beneficios. El primer juego muestra que el flujo de producción iterativo es más rápido que el enfoque tradicional por lotes grandes. El segundo juego ilustra cómo las fluctuaciones estadísticas en una cadena de producción secuencial reducen la productividad en comparación con el rendimiento individual. El tercer juego demuestra que una duración fija para iteraciones permite predecir el comportamiento de la productividad de
Diseño y Análisis Agente autónomo videojuego Super Mario Brosrosahb
Este documento describe el diseño y análisis de un agente autónomo para el juego Super Mario Bros usando la plataforma Infinite Mario Bros. El autor diseña el agente usando algoritmos genéticos con diferentes enfoques como reglas y máquinas de estados finitos, y evalúa su rendimiento en diferentes niveles de dificultad del juego. El documento también discute las limitaciones encontradas en el enfoque, como el tiempo y memoria requeridos para la evolución del agente.
This thesis presents the analysis, design, and implementation of a chess tournament management system that aims to efficiently administer these types of events. Key features of the system include registering players, creating tournaments and divisions, managing matches played, calculating new Elo ratings, and handling tiebreaks. The system utilizes a Swiss pairing algorithm to quickly generate pairings for rounds based on regulations from the World Chess Federation.
Focalizando en Mechanic Design para prototipos.pdfLucreciaFinke
Este documento resume lineamientos para diseñar prototipos de juegos, incluyendo focalizar en las mecánicas clave, realizar brainstorming con objetivos claros, y desarrollar un prototipo inicial que verifique el concepto central del juego en menos de 3 pilares de jugabilidad.
Este documento presenta una guía de laboratorio sobre ciclos iterativos anidados. Explica conceptos como ciclos anidados en pseudocódigo, diagrama de flujo y C. Luego, muestra ejemplos como el triángulo de Pascal, cuadrados mágicos y números de Armstrong usando ciclos anidados. Finalmente, propone varios ejercicios prácticos para que los estudiantes apliquen estos conceptos.
Este documento describe un compilador que realiza la suma y resta de dos números enteros de dos dígitos. El compilador acepta como entrada números en formato invertido separados por los operadores "MAS" o "MENOS" y finalizados por "h". El analizador léxico y sintáctico fueron implementados en archivos .flex y .cup respectivamente.
Este documento describe una dinámica realizada en el laboratorio de cómputo para informar a los estudiantes sobre diferentes plataformas de e-learning. La dinámica involucró rompecabezas y preguntas sobre las ventajas y desventajas de plataformas como Moodle, Sakai y Edmodo. Después de la dinámica, los estudiantes decidieron qué plataforma usarían para su próximo proyecto.
El diagrama de clases modela las entidades principales como Película, Sala, Localidad, Cliente, Reserva, Compra y sus relaciones. El diagrama de secuencia muestra el proceso de reserva de una película por un cliente.
Este documento presenta una introducción a la teoría de juegos. Explica los elementos básicos de la teoría de juegos como jugadores, estrategias y resultados. También describe herramientas como árboles de resultados, curvas de reacción y matrices de pagos. Finalmente, resume tres métodos para analizar juegos entre dos jugadores: el método gráfico, el método del sub-juego y el método algebraico.
Este documento describe una dinámica realizada por estudiantes en un laboratorio de cómputo para informar a sus compañeros sobre diferentes plataformas de e-learning. La dinámica involucró rompecabezas y preguntas sobre plataformas como Chamilo, Saba, Edmodo y Moodle. Al final, la dinámica ayudó a los estudiantes a decidir qué plataforma usar para su próximo proyecto y resaltó la importancia de las plataformas educativas en el aprendizaje.
Periodo 3 desarrollo de habilidades de pensamiento - trabajo grupalmarianasanchez183
Este documento presenta el trabajo grupal de estudiantes sobre el desarrollo de habilidades de pensamiento. Incluye información sobre algoritmos, diagramas de flujo, lenguajes de programación e instrucciones para programar una micro:bit. Los estudiantes aprendieron sobre diferentes tipos de algoritmos, símbolos usados en diagramas de flujo y lenguajes compilados vs. interpretados. También exploraron conceptos como bucles, componentes de la micro:bit y cómo usar sensores. Cada estudiante concluyó que es importante aprender estos conceptos para comunicarse
Periodo 3 desarrollo de habilidades de pensamiento - trabajo grupalAndrsSinisterra1
Este documento presenta el trabajo grupal de cuatro estudiantes sobre el desarrollo de habilidades de pensamiento. Explica conceptos como algoritmos, diagramas de flujo, lenguajes de programación y micro:bits. También incluye las conclusiones de cada estudiante y los enlaces a sus respectivos blogs.
Este documento presenta una guía para docentes sobre la enseñanza de robótica y programación de robots para el entretenimiento. Incluye instrucciones sobre el cuidado del equipo de robótica, repaso de conceptos básicos como sensores y actuadores, y explicaciones paso a paso sobre cómo programar diferentes componentes de razonamiento como bifurcaciones, aleatoriedad y variables. El objetivo es ayudar a los docentes a planificar y enseñar sesiones de programación de robots para estudiantes.
Historia y evolución de la pc wil,stefa y harrytefadianis
Este documento resume la historia y evolución de las computadoras personales. Comienza explicando cómo los primeros métodos de registro de datos evolucionaron hacia dispositivos de cálculo y luego sistemas de tarjetas perforadas. Luego describe la aparición de las primeras computadoras electrónicas y cómo se han desarrollado departamentos de procesamiento de datos en las empresas. A continuación, detalla los componentes clave de una computadora moderna como monitores, microprocesadores, memorias, tarjetas madre, mouse, teclado, cámaras, impres
Este documento presenta un resumen del módulo "Programación Gráfica" del Curso de Experto en Desarrollo de Videojuegos. El módulo cubre aspectos básicos de la programación gráfica como el pipeline gráfico, las matemáticas subyacentes, el uso de materiales y texturas, la iluminación y los sistemas de partículas. También discute la importancia de la simulación física para dotar de realismo a los objetos y actores en el juego. Finalmente, introduce la biblioteca gráfica OGRE como
En este trabajo intenté predecir las victorias de los equipos locales del fútbol argentino, en base a las acciones realizadas por los deportistas. Para ello, previamente realicé análisis exploratorios y descriptivos de los datos.
Los resultados obtenidos no fueron los esperados, pero el análisis que se reproduce a continuación, si aporta una nueva visión a la disciplina deportiva.
Este documento presenta una introducción a la teoría de juegos, incluyendo su historia, definiciones clave como estrategias y matriz de pagos, y métodos para resolver problemas de teoría de juegos como el método de filas y columnas relevantes, el punto de silla, métodos gráficos y algebraicos, y el método de sub-juegos.
El documento presenta un proyecto de análisis genómico a través de herramientas informáticas aplicadas a datos de secuenciación de nueva generación. El proyecto se divide en dos partes: la primera revisa el software usado para indexar genomas, buscar alineamientos y realizar análisis transcriptómicos cualitativos y cuantitativos; la segunda parte consiste en una serie de experimentos usando dichas herramientas y analizando los resultados obtenidos.
El documento presenta una serie de ejercicios relacionados con temas de investigación de operaciones como análisis de decisiones, teoría de juegos, programación dinámica y cadenas de Markov. Los ejercicios incluyen analizar casos reales donde se haya aplicado estas técnicas, modelar problemas como juegos de suma cero, asignar tiempos de estudio de manera óptima usando programación dinámica y analizar la absorción de una cadena de Markov dada su matriz de transición.
Juegos de Producción y Estadística para laPromoción de las Metodologías ÁgilesLuiz C. Parzianello
El documento describe tres juegos de roles diseñados para promover las metodologías ágiles a través de la demostración de sus beneficios. El primer juego muestra que el flujo de producción iterativo es más rápido que el enfoque tradicional por lotes grandes. El segundo juego ilustra cómo las fluctuaciones estadísticas en una cadena de producción secuencial reducen la productividad en comparación con el rendimiento individual. El tercer juego demuestra que una duración fija para iteraciones permite predecir el comportamiento de la productividad de
Diseño y Análisis Agente autónomo videojuego Super Mario Brosrosahb
Este documento describe el diseño y análisis de un agente autónomo para el juego Super Mario Bros usando la plataforma Infinite Mario Bros. El autor diseña el agente usando algoritmos genéticos con diferentes enfoques como reglas y máquinas de estados finitos, y evalúa su rendimiento en diferentes niveles de dificultad del juego. El documento también discute las limitaciones encontradas en el enfoque, como el tiempo y memoria requeridos para la evolución del agente.
This thesis presents the analysis, design, and implementation of a chess tournament management system that aims to efficiently administer these types of events. Key features of the system include registering players, creating tournaments and divisions, managing matches played, calculating new Elo ratings, and handling tiebreaks. The system utilizes a Swiss pairing algorithm to quickly generate pairings for rounds based on regulations from the World Chess Federation.
Focalizando en Mechanic Design para prototipos.pdfLucreciaFinke
Este documento resume lineamientos para diseñar prototipos de juegos, incluyendo focalizar en las mecánicas clave, realizar brainstorming con objetivos claros, y desarrollar un prototipo inicial que verifique el concepto central del juego en menos de 3 pilares de jugabilidad.
Este documento presenta una guía de laboratorio sobre ciclos iterativos anidados. Explica conceptos como ciclos anidados en pseudocódigo, diagrama de flujo y C. Luego, muestra ejemplos como el triángulo de Pascal, cuadrados mágicos y números de Armstrong usando ciclos anidados. Finalmente, propone varios ejercicios prácticos para que los estudiantes apliquen estos conceptos.
Este documento describe un compilador que realiza la suma y resta de dos números enteros de dos dígitos. El compilador acepta como entrada números en formato invertido separados por los operadores "MAS" o "MENOS" y finalizados por "h". El analizador léxico y sintáctico fueron implementados en archivos .flex y .cup respectivamente.
Este documento describe una dinámica realizada en el laboratorio de cómputo para informar a los estudiantes sobre diferentes plataformas de e-learning. La dinámica involucró rompecabezas y preguntas sobre las ventajas y desventajas de plataformas como Moodle, Sakai y Edmodo. Después de la dinámica, los estudiantes decidieron qué plataforma usarían para su próximo proyecto.
El diagrama de clases modela las entidades principales como Película, Sala, Localidad, Cliente, Reserva, Compra y sus relaciones. El diagrama de secuencia muestra el proceso de reserva de una película por un cliente.
Este documento presenta una introducción a la teoría de juegos. Explica los elementos básicos de la teoría de juegos como jugadores, estrategias y resultados. También describe herramientas como árboles de resultados, curvas de reacción y matrices de pagos. Finalmente, resume tres métodos para analizar juegos entre dos jugadores: el método gráfico, el método del sub-juego y el método algebraico.
Este documento describe una dinámica realizada por estudiantes en un laboratorio de cómputo para informar a sus compañeros sobre diferentes plataformas de e-learning. La dinámica involucró rompecabezas y preguntas sobre plataformas como Chamilo, Saba, Edmodo y Moodle. Al final, la dinámica ayudó a los estudiantes a decidir qué plataforma usar para su próximo proyecto y resaltó la importancia de las plataformas educativas en el aprendizaje.
Periodo 3 desarrollo de habilidades de pensamiento - trabajo grupalmarianasanchez183
Este documento presenta el trabajo grupal de estudiantes sobre el desarrollo de habilidades de pensamiento. Incluye información sobre algoritmos, diagramas de flujo, lenguajes de programación e instrucciones para programar una micro:bit. Los estudiantes aprendieron sobre diferentes tipos de algoritmos, símbolos usados en diagramas de flujo y lenguajes compilados vs. interpretados. También exploraron conceptos como bucles, componentes de la micro:bit y cómo usar sensores. Cada estudiante concluyó que es importante aprender estos conceptos para comunicarse
Periodo 3 desarrollo de habilidades de pensamiento - trabajo grupalAndrsSinisterra1
Este documento presenta el trabajo grupal de cuatro estudiantes sobre el desarrollo de habilidades de pensamiento. Explica conceptos como algoritmos, diagramas de flujo, lenguajes de programación y micro:bits. También incluye las conclusiones de cada estudiante y los enlaces a sus respectivos blogs.
Periodo 3 desarrollo de habilidades de pensamiento - trabajo grupal
Memoria intermedia
1. Práctica de Inteligencia Artificial en las Organizaciones
IA en el Póker Online
Año Académico: 2009-2010
Convocatoria: Febrero
Grupo de prácticas: Grupo 4
Alumnos:
Díaz Ponce, Antonio email: 100055301@alumnos.uc3m.es
Martínez Fernández, Raúl email: 100054986@alumnos.uc3m.es
García-Cuerva Velasco, Javier email: 100055253@alumnos.uc3m.es
2. Índice
1. Introducción ............................................................................................... 3
1.1. Descripción del Problema ...................................................................... 3
1.2. Objetivos ............................................................................................ 3
2. Estado del Arte ........................................................................................... 4
1. Programas que aprendan a jugar como una persona: ................................... 4
2. Clústering para agrupar tipos de jugadores:............................................... 11
3. Descripción completa de los datos y fuentes empleados .................................. 13
3.1 Datos de entrada ..................................................................................... 13
3.2 Datos adicionales ..................................................................................... 16
3.3 Datos de Salida ................................................................................... 17
4. Descripción de la solución adoptada ................................................................ 18
1. Estudio de los datos ................................................................................ 18
2. Procesado de datos .................................................................................... 18
3. Selección de atributos................................................................................. 19
5. Resultados de la experimentación ................................................................... 20
6. Análisis de Dificultades, Riesgos y Aplicabilidad ................................................ 21
6.1 Dificultades en la Obtención de la Solución ............................................. 21
6.2 Riesgos Previstos ................................................................................ 21
6.3 Análisis de Implantación ...................................................................... 21
7. Análisis de los resultados y conclusiones .......................................................... 22
8. Trabajos futuros (posibles mejoras) ................................................................ 23
2
3. 1. Introducción
1.1. Descripción del Problema
El problema principal es la toma de decisiones en el juego del Póker, las
principales acciones que se pueden realizar en este juego son:
o No ir: Lo que supone que el jugador deja de jugar.
o Pasar: El jugador decide no subir ninguna apuesta.
o Subir N: El jugador sube la apuesta del juego una cantidad “N”, podrá subir
tanto como la cantidad de dinero de la que disponga.
Sin embargo, a pesar de que el conjunto de salida parece reducido, el conjunto
de variables a tomar en cuenta es mucho mayor, ya que, a la hora de tomar una
decisión no sólo dependerá de las cartas que se poseen, sino que también se tendrá
en cuenta la posición que se ocupa en la mesa y el modo de jugar de los
contrincantes.
Además el tiempo de respuesta también suele influir en el modo de juego de
los jugadores, por ejemplo, un jugador que no tiene segura su jugada tardará más en
decidirse que un jugador que tiene una buena mano.
Actualmente, la modalidad de Póker a la que más se juega es Texas Hold 'em
Sin Límite, esta es la modalidad sobre la que realizaremos el estudio. En ella cada
jugador sólo posee dos cartas (cartas personales) y su jugada es la mejor combinación
de cartas que puede formar con las cartas que se van poniendo en la mesa
(denominadas cartas comunitarias).
1.2. Objetivos
El objetivo principal es obtener un jugador mediante una técnica de inteligencia
artificial que sea capaz de tomar las mejores decisiones posibles, en la primera ronda
de apuestas del juego (Preflop). Es cierto que es complejo de valorar finalmente si
hemos creado un buen jugador, o hemos conseguido aprender las mejores decisiones,
ya que el conjunto de posibilidades es muy grande.
En nuestro caso sería positivo que con estas decisiones consiguiésemos ganar
el mayor dinero posible cuando realicemos apuestas, y de perder la menor cantidad de
dinero posible cuando la jugada sea mala.
3
4. 2. Estado del Arte
La Inteligencia Artificial ya se ha adentrado en el campo de la toma de
decisiones en el Póker. Actualmente se dice que es una de las principales amenazas
del Póker Online, y esto se debe a que los jugadores que han sido generados, a pesar
de que no son capaces de vencer a jugadores expertos, sí que son capaces de ganar a
jugadores amateur y estándar.
Es por ello que actualmente se intentan introducir técnicas para poder expulsar
a jugadores automáticos. Técnicas como la resolución de los cada vez más inservibles
captchas o de problemas más específicos como preguntas, etc.
Además de empresas dedicadas a este propósito también las universidades se
encargan de organizar concursos, uno de los más conocidos es el First Man-Machine
Poker Championship, promocionado por la universidad de Alberta (Edmonton,
Canadá), los cuáles también son criticados ya que están realizando programas
automáticos que juegan al póker, pero se defienden diciendo que sus bots ganan a
otros bots, pero no a los humanos.
Debido al secretismo que genera este terreno, por su directa productividad, es
difícil que las empresas comenten su relación con este tipo de investigaciones, y por
tanto es difícil obtener datos de manos y jugadas, así con información relacionada con
la aplicación directa de este tipo de solución.
A continuación, vamos a describir varios casos que hacen uso de IA en el
póker.
1. Programas que aprendan a jugar como una persona:
Nos vamos a centrar en los diseñados en el torneo anual de la universidad de
Alberta.
En esta competición, cada jugador tiene que diseñar en Java un jugador,
usando las técnicas oportunas que considere, normalmente IA.
Respecto a la competición de este año podemos ver los resultados en el
siguiente enlace.
http://www.cs.ualberta.ca/~pokert/2009/index.php
En televisiones estadounidenses han hecho reportajes referentes a estos:
http://www.youtube.com/watch?v=m3fSc_gUNZk
A continuación ponemos una pequeña presentación, para conocer mejor la
competición, quién ha ganado este año y que técnicas han usado para hacer sus
jugadores:
4
9. A continuación vamos a describir las técnicas de IA usadas por los ganadores:
• Limit Bankroll: MANZANA
Usaron un Perceptrón Multicapa con una capa oculta y tres neuronas de
salida.
Las neuronas de entrada se encargan de codificar las características relevantes
de la situación actual del juego, tales como las cartas de mano, cartas de la mesa y
las apuestas anteriores, mientras que las neuronas de salida están entrenadas para
dar P(fold), P(call), P(raise), siendo P la probabilidad con la que los robots deben
retirarse, igualar o subir, en función del estado actual del juego.
El entrenamiento se realiza utilizando algoritmos estándares de aprendizaje,
mientras que los ejemplos de entrenamiento se construyeron a partir de las manos del
ganador de la competición del último año.
• Limit Runoff: GGValuta
El algoritmo general utilizado para calcular el equilibrio es un CFR
(counterfactual regret minimization) (reducción al mínimo).
El modelo de abstracción utilizado ha sido ligeramente modificado para cada
calle: En el pre-flop nosotros almacenan un nodo para cada posible situación (sin
abstracción) y en el flop/turn/river se utilizó un algoritmo de k-medias modificado para
hacer clustering sobre las manos.
Cada mano se asigna a un punto de N-dimensiones con una función diferente
para cada calle. Estas fueron elegidas en su mayoría intuitivamente y cada punto se
coordina como (E [HS] o el más bajo (E [HS]) o el más alto (E [HS])), donde el mayor
y menor muestran el rango potencial de que se complete otra carta.
Para el river se utilizó E [HS] con algunos cambios en las medias del rango
potencial de las rondas anteriores.
• No Limit Bankroll: Hyperborean-BR
La técnica Hyperborean-BR empleó una variedad de técnicas diseñadas para
explotar el método tradicional de la lectura de los otros jugadores.
Se trata de manipular el tamaño del bote, de manera que no se distinga de su
oponente. Con el fin de aprovechar que su oponente realice una exploración en el
comienzo del juego, para crear un modelo en bruto de su oponente.
• No Limit Runoff: Hyperborean-EQM
La técnica Hyperborean-EQM fue creado usando las mismas técnicas
utilizadas por la Universidad de Alberta en el pasado, con la excepción de que ahora
9
10. utiliza una lectura más suave. Además, los métodos utilizados para crear la estrategia
han sido optimizados para jugar sin límite.
• 3 player Bankroll && Runoff: Hyperborean-EQM
Se usó la ejecución de un CFR (counterfactual regret minimization)
(reducción al mínimo), durante varias semanas, para crear tres jugadores. Los
jugadores resultantes eran tan grandes (respecto a estados del juego), que se usó un
grano más grueso para construirlos. Se usan 16 categorías o rangos según la fuerza
de la mano, donde el jugador olvida sus rangos de las rondas anteriores.
10
11. 2. Clústering para agrupar tipos de jugadores:
Estas técnicas intentan inferir posibles conjuntos de tipos de jugadores.
Nos centraremos en la usada por un español:
http://jesusnubiola.com/poker/?p=92#more-92
Sus resultados no son buenos. Y estadísticamente ya existen otras soluciones
bastantes buenas, pero describiremos esta.
Su fuente de información es una inmensa base de datos de más de 22 millones
de manos de Texas Hold’em No Limit 50. A esta base de datos con las 22 millones
de manos, hicieron diferentes filtros para poder tratar mejor la información
(preproceso), seleccionando los atributos más relevantes para después pasar al
proceso de clusterización. Mediante el análisis de tres experimentos, muestran las
diferentes posibilidades que ofrecen los distintos algoritmos más conocidos hoy en día:
X-means, K-Means y EM.
Cometieron muchos errores, el más grave de los cuales fue subestimar el
preprocesamiento de los datos. Antes de lanzarse hacia un ejercicio de clusterización
debieron estudiar concienzudamente los datos a tratar. Si bien es verdad que su
primer error fue tratar con una base de datos demasiado escasa (por los atributos que
querían analizar), no es menos cierto que quizás el nivel escogido tampoco fue el
adecuado. Según palabras del autor:
“Debíamos haber tratado de importar una base de datos de un nivel
más elevado de juego (e.g. NL200+) dónde los jugadores son mucho más
sistemáticos jugando y no existe tanto jugador ocasional.“
Estos aspectos, que deberían haber tenido muy en cuenta antes de lanzarse a
la clusterización de los datos (y más con tantos atributos) ya que sólo que un atributo
contenga valores dispares puede hacer que toda la clusterización se vea afectada (no
digamos si son más de dos atributos los que tienen valores no fidedignos). Es por
esto, por lo que no han obtenido todo lo que cabía esperar de sus experimentos,
aunque en el último experimento, los resultados han sido muy esperanzadores porqué
se veía dónde estaba el problema y, consecuentemente, se pasó a filtrar con muchas
más manos y menos atributos.
Aún con todas las dificultades encontradas, llegaron a la conclusión que para su
problema era mejor hacer uso del algoritmo EM en contra de usar el K-medias.
Otra cosa a tener en cuenta es que se enfrentaron a un problema “real”, con
una ingente cantidad de datos por filtrar. Sólo la importación de los datos ya ha
llevado más de 50 horas. Esto sumado a que la base de datos que crea el Holdem
Manager no es conocida (hay muy poca documentación sobre cómo son las tablas) ha
hecho que dedicáramos mucho tiempo en hacer ingeniería inversa para poder sacar
los datasets.
11
12. Otra área muy interesante que podrían haber tratado, pero no fue posible por
la incoherencia de los resultados obtenidos es la de reglas de asociación. Las reglas de
asociación permiten atacar por otro bando el problema y podrían llegar a dar
información muy interesante acerca de cómo se comportan los perfiles de jugadores
(en caso de conseguir clusterizar) o jugadores aislados (en caso de no poder
clusterizar). Un enfoque que sería muy práctico sería el de ir definiendo acciones
claves (a criterio de experto) para ver cómo actúa cada perfil. Por ejemplo el
comportamiento de un jugador cuando es robado por un perfil agresor y tiene cartas
Premium (KK++) de mano. Ir definiendo numerosas reglas de este estilo e ir llenando
nuestro data set con las distintas acciones que nos va respondiendo la base de datos
(e.g % de call, raise y fold). Hay que destacar que esta manera de tratar el problema
es mucho más compleja que la usada hasta ahora, ya que implica unas sentencias
SQL mucho más elaboradas y un agrupamiento en forma de Datasets muy complejo
de realizar, pero es mucho más interesante las reglas que podrían sacar así que no las
reglas que sacarían si tratáran la información como en el Clústering (con tantos por
ciento de cada atributo).
12
13. 3. Descripción completa de los datos y fuentes
empleados
3.1 Datos de entrada
En este apartado nos centraremos en explicar la fuente principal de los datos,
así como una visión panorámica de los datos utilizados.
Para la adquisición de los datos hemos tenido diversos problemas, ya que estos
datos, comúnmente, son de uso privado, y en caso de querer adquirirlos serian de
pago. Debido a esto, nos resulto muy complicado encontrar datos utiles para el
estudio. Por ello pedimos datos en diversos blogs sobre póker online, así como
contactando con los responsables de 3 webs, sin recibir respuesta alguna
Después decidimos pedir los datos en foros sobre póker online, en los cuales
nos pusieron varias “pegas”: nos dijeron que queríamos los datos para hacer trampas,
que no conseguiríamos llegar a ningún sitio con nuestro estudio, que no darían sus
manos ya que son de pago, etc.
Finalmente, un usuario del foro de pokerred accedió a darnos datos de manos
que disponía. En total eran 100000 manos de póker, con las cuales empezamos
nuestro estudio.
El formato de los datos es XML, y en el se recogen los datos más importantes
que se deben recoger en una mesa de póker.
13
14. A continuación explicaremos globalmente el formato de los datos:
<general>
<mode>real</mode>
<gametype>Holdem NL 0.50/1</gametype>
<tablename>Aosta__No_DP_</tablename>
<duration>N/A</duration>
<gamecount>N/A</gamecount>
<startdate>2009-10-20 13:21:35</startdate> Información de la mano que comienza
<currency>USD</currency>
<nickname>PokerHandScout.com</nickname>
<bets>N/A</bets>
<wins>N/A</wins> Hora de inicio de la mano
<chipsin>N/A</chipsin>
<chipsout>N/A</chipsout>
<ipoints>N/A</ipoints>
</general>
<startdate>2009-10-20 13:58:22</startdate>
<players>
<player seat="4" name="ChandlerMBing" chips="$10000000" dealer="0" win="$0"
bet="$0" /><player seat="3" name="Hummelx2" chips="$10000000" dealer="0"
win="$0" bet="$1" /><player seat="2" name="fakinit" chips="$10000000"
dealer="0" win="$39" bet="$20" /><player seat="1" name="BowserJr"
chips="$10000000" dealer="1" win="$0" bet="$20" />
</players>
Resumen de la mano para cada
jugador (lo que ha ganado, las fichas
que tenia, su posición en la mesa, si
era mano, si era ciega pequeña o
grande y su nombre)
14
15. <round no="0">
<action no="1" player="fakinit" type="1" sum="$0.50"/>
<action no="2" player="Hummelx2" type="2" sum="$1"/>
</round>
Numero de ronda
<round no="1">
<cards type="Pocket" player="BowserJr">c10 s10</cards>
<cards type="Pocket" player="fakinit">dJ cJ</cards>
Cartas de las que
<action no="3" player="ChandlerMBing" type="0" sum="$ 0"/> dispone un jugador
<action no="4" player="BowserJr" type="23" sum="$3"/>
<action no="5" player="fakinit" type="23" sum="$20"/>
<action no="6" player="Hummelx2" type="0" sum="$ 0"/>
<action no="7" player="BowserJr" type="3" sum="$17"/> Apuestas
</round>
<round no="2">
<cards type="Flop" player="">hJ cA s9</cards>
</round>
<round no="3">
<cards type="Turn" player="">d10</cards> Cartas comunes que se
</round> van poniendo sobre la
mesa
<round no="4">
<cards type="River" player="">cK</cards>
</round>
15
16. 3.2 Datos adicionales
Información adicional podría ser otra información que tuviese el jugador, que no fuese
sólo la mesa de juego, los oponentes, las fichas y las cartas, es decir, que no fuese
sólo la información que te da la sala de póker, que es la mínima para poder jugar.
Existen programas que usan los datos de las manos para generar estadísticas
de tus contrincantes. Y estas estadísticas se pueden mostrar sobreimpresas en la
mesa de la sala de póker online. A esto se llama HUD (head up display).
A continuación mostramos una mesa sin HUD y después una con HUD:
Figura 1: Mesa de Póker sin HUD
Figura 2: Mesa de Póker con HUD
Estadísticas del HUD
Esta información define a los jugadores, pudiéndose así saber si el jugador va a
muchas manos o a pocas, si es agresivo o pasivo, etc.
La ventaja del póker online son estas herramientas que te dan información
extra de mucha utilidad durante el juego.
Tener esta información podría servir como información adicional a nuestros
datos.
16
17. 3.3 Datos de Salida
Los datos de entrada necesitan un procesamiento que se explicará en el
siguiente apartado. De nuestro clasificador se espera que, dada una mano, sepa que
decisión tomar en cuanto a Retirarse (Fold), Igualar (Call), Subir (Raise), Resubir (Re-
Raise).
En cuanto a la mano se necesitará toda la información que hemos mencionado
en el apartado 3.1.
17
18. 4. Descripción de la solución adoptada
A continuación pasaremos a explicar las distintas etapas que hemos seguido
para la realización de la práctica.
1. Estudio de los datos
El primer paso de nuestra práctica fue estudiar el formato de los datos que nos
proporcionaron, para así saber los que parte de ellos nos iban a ser realmente utiles
para la práctica. Gracias a ello, nos dimos cuenta que los datos correspondían a manos
en las cuales solo se veían las cartas de cada jugador en el caso de que llegasen al
showdown (momento final de la mano). Debido a ello, de esas 100000 manos
iniciales, las que realmente nos iban a interesar eran muchas menos.
Finalmente nos percatamos de que, cuando se mostraban las cartas, como
mínimo lo hacían dos jugadores, asíque realmente disponíamos del doble o más de
manos útiles, por lo que el número total de manos a utilizar son 10710.
2. Procesado de datos
A continuación comenzamos con el procesado de los ficheros XML. Nuestra
intención era seleccionar una serie de atributos y clases para que fuesen introducidas
en WEKA y realizar un estudio de minería de datos. Para ello debíamos transformar los
datos dados en el XML al formato arff de WEKA.
Para crear nuestro fichero arff programamos en Java un parser que recibiese
los ficheros XML de las manos, seleccionase y transformase los datos necesarios para
la construcción de los atributos, y finalmente construyese el fichero arff con los
atributos, patrones y clases.
18
19. 3. Selección de atributos
Antes de realizar la evaluación de los datos decidimos utilizar algunas técnicas
de selección de atributos como:
♦ CfsSubsetEval con método de búsqueda BestFirst (-D1, -N 5)
♦ ChiSquaredAttributeEval con Ranker como método de búsqueda
Los resultados obtenidos fueron los siguientes:
Método CfsSubsetEval ChiSquaredAttributeEval
• ValorSubida1
• ValorSubida2
• ValorSubida3
• ValorCarta2
• ValorCarta1 • ValorCarta1
• ValorCarta2 • ValorSubida4
• ValorSubida1 • ValorSubida5
• ValorSubida2 • Suited
Atributos
• ValorSubida3 • JugadoresTotales
seleccionados
• ValorSubida4 • FichasJugador6
• ValorSubida5 • PosicionJugador6
• FichasJugador5
• PosicionJugador5
• FichasJugador4
• PosicionJugador4
Y las clases a utilizar en WEKA serían:
• 4 clases {0,1,2,3} -> Valores Continuos (Clasificación)
• 0: Apuesta de $0 -> 1048 patrones
• 1: Apuesta entre $0 y $2.5 -> 3866 patrones
• 2: Apuesta entre $2.5 y $5 -> 4193 patrones
• 3: Apuesta superior a $5 -> 1596 patrones
19
20. 5. Resultados de la experimentación
En la primera etapa de la experimentación se evaluaron los datos con el
perceptrón multicapa y con el árbol de decisión J48. En la siguiente tabla se muestran
los resultados obtenidos:
Método Capas Error
% aciertos % fallos
ocultas cuadrático
Perceptrón 1 43.6975 % 56.3025 % 98.2544 %
Multicapa
2 45.4093 % 54.5907 % 97.7409 %
3 46.0317 % 53.9683 % 96.7809 %
J48 - 47.8369 % 52.1631 % 110.109 %
20
21. 6. Análisis de Dificultades, Riesgos y Aplicabilidad
6.1 Dificultades en la Obtención de la Solución
Describir brevemente en este apartado las dificultades inherentes al problema y
a las técnicas propuestas, analizando las posibles soluciones o mitigaciones.
La principal dificultad a la hora de realizar el trabajo ha sido la obtención de los
datos preliminares. Debido a que estos datos suelen ser de carácter privado, o en su
defecto de carácter comercial, es muy complicado encontrarlos en la red. Para ello nos
hemos encargado de pedirlos a diversas páginas y particulares, esperando a su
contestación.
Otra de las dificultades encontradas es la necesidad de tener un gran número
de datos, así como que estos sean de jugadores de un nivel medio-alto, labor bastante
difícil de realizar.
La tercera dificultad aparecerá a la hora de eliminar datos innecesarios dentro
de los datos preliminares, los cuales pueden desvirtuar el resultado final de no
detectarlos con anterioridad. Esto se arreglará con el análisis con Weka, con el que
nos encargarnos de eliminar estos datos innecesarios.
6.2 Riesgos Previstos
La principal incertidumbre que se nos plantea viene determinada por la
obtención de los datos. Esto es debido a que, aparte de necesitar una buena cantidad
de manos para poder realizar la práctica con unos buenos resultados, sería interesante
que estas manos fuesen de buena calidad para que el aprendizaje fuese correcto.
Otro de los riegos, como en cualquier proyecto de estas características, es que
a la hora de obtener los resultados, estos no sean todo lo buenos que se esperaba, y
nos obligue a replantearnos el procedimiento.
6.3 Análisis de Implantación
Para poder llevar a cabo este proyecto necesitaremos un ordenador de nivel
medio para poder llevarlo a cabo. Las especificaciones recomendadas serían:
Procesador: Intel Pentium4 2,4 Ghz
Disco duro: 200 Gb
Memoría RAM: 2 Gb
El principal problema que se nos planteaba era que Weka tenía un espacio de
memoria limitado, pero se puede ampliar sin problemas.
21
22. 7. Análisis de los resultados y conclusiones
Como se puede apreciar el porcentaje de aciertos es medio y, por tanto,
mejorable. En la presentación ya comentamos los problemas para obtener los datos y
esto ha hecho que para nosotros la tarea más costosa sea la extracción de los datos
para su posterior manejo.
Esperamos aumentar la tasa de aciertos hasta un 60 %, mediante la opción
Experimenter de Weka trataremos de encontrar el mejor algoritmo con la mejor
configuración para que el error cuadrático se reduzca drásticamente.
22
23. 8. Trabajos futuros (posibles mejoras)
De cara a la siguiente entrega, seguiremos probando distintos evaluadores de
atributos y distintos clasificadores para intentar maximizar la bonanza de los
resultados. Probablemente también utilicemos en el futuro validación cruzada, así
como baterías de pruebas con Experimenter. Entre otras mejoras se incluyen la
posibilidad de añadir nuevos atributos, como por ejemplo “iguales” que indique si las
dos cartas que posee el jugador tienen el mismo valor, es decir, si son dos cincos
estaría a uno y si fuesen distintas valdría cero.
Queda también en interrogante la posibilidad de que nos ofrezcan más datos,
para así intentar tener mejores resultados.
23