Poker AI: A Technical Approach to PokerBots

El 25 de junio expuse este tema en la reunión, trataba de como es posible construir un bot software (o PokerBot) que es capaz de analizar, tomar decisiones e interactuar con un casino on-line.

Para ello comencé con una introducción al mundo del póquer online, hice una breve descripción del juego, así cómo factores a tener en cuenta a la hora de elaborar una lógica de juego.

Más adelante presenté diversos PokerBots que ya se encuentran implementados y me centré en el conocido como OpenHoldem, aquí pasé a describir cada uno de sus módulos, así como las técnicas utilizadas para el scraping de los casinos, entre otros.

El siguiente paso fue presentar como es posible realizar Data Minning con la información de dichos casinos y mediante ellos entrenar una red neuronal. Aquí hice una breve mención de un trabajo en el cual se utilizaba una red neuronal para la predicción de acciones de los oponentes y un algoritmo minimax para la toma de acciones teniendo en cuenta dichas predicciones.

Concluí la exposición con los problemas que presenta poner en práctica un PokerBot y nombrando algunas competiciones relacionadas.

Se trata de un mundo muy completo (existen muchos problemas diferentes para abordar) a la par que interesante, por lo que espero hacer otra exposición, esta vez centrándome puramente en la IA.

Los vídeos que borre sin querer y que no pude enseñar en su momento los podemos ver en:

[Vimeo 13247784]

[Vimeo 13247929]

Para no perder detalle recomiendo verlos a pantalla completa.

(después de tanto juego me cerraron la cuenta del casino… total para un centavo que tenía ;)

Proyectos fin de carrera 2010-2011

Se acerca el momento de ir buscando tutor de proyecto fin de carrera. Quien quiera hacerlo conmigo o algún otro profesor del grupo GeNeura, y siempre que esté dispuesto a liberar el código resultante (y, si quiere, a participar en el Concurso Universitario de Software Libre, lo puede hacer en una de las siguientes áreas

  • Algoritmos evolutivos aplicados a juegos: resolución del juego del Mastermind, programación de bots en Unreal Tournament, o creación de niveles y de IA para Super Mario
  • Optimización de visualización de resultados de búsquedas, a partir del proyecto Visuse
  • Computación parásita: ejecución de programas masivamente paralelos en el navegador
  • Implementación de algoritmos evolutivos: adaptación y ampliación de la librería Algorithm::Evolutionary (en Perl)
  • Análisis de redes complejas: redes de pases del fútbol, redes de coautorías, otras redes

Si alguien está interesado en convertir alguna de estas ideas en su proyecto fin de carrera, que contacte conmigo.