[REQ_ERR: 401] [KTrafficClient] Something is wrong. Enable debug mode to see the reason. Jugadas Inteligentes de Póker

Jugadas Inteligentes de Póker

El objetivo perseguido con este planteamiento ha sido, por un lado tratar de dividir el problema en partes ms simples, de manera que su resolucin fuese ms abordable, y por otro que se pudiese realizar una primera prueba del programa para as retroalimentar el proceso en el siguiente ciclo. La primera fase del proyecto se ha centrado en crear una versin inicial del agente de pquer que implementase un sistema experto reglas creadas a partir de conocimiento Programa informtico que realiza funciones muy diversas, imitando el comportamiento de un humano.

experto para la toma de decisiones, junto con todos los componentes necesarios para su funcionamiento, como un evaluador de manos y una primera versin de la estructura de datos encargada de almacenar el comportamiento de juego del oponente.

En la segunda fase del desarrollo se han incluido los componentes encargados de modelar el comportamiento del contrincante y de elaborar, a partir de estos datos, las contra estrategias necesarias para maximizar las ganancias, obteniendo el beneficio mximo de los posibles errores en el juego del rival.

Para esto inicialmente se pens en utilizar un programa que recogiese los datos de cada mano jugada y diese unas estadsticas que dibujasen el estilo de juego del oponente.

La idea era entonces aadir un conjunto de reglas nuevas al sistema experto ya creado, para que el programa jugase de un modo u otro en funcin de las estadsticas obtenidas.

El problema que tena este planteamiento es que resultaba muy difcil determinar el tipo de jugada a efectuar basndose slo en las estadsticas de juego del oponente, ya que para ello se requiere una enorme cantidad de reglas, que a su vez limitan la flexibilidad de juego del programa y en muchos casos lo hacen ms predecible.

Se opt por lo tanto por descartar esta opcin y tratar de ingeniar en su lugar una estrategia de juego donde el agente tuviese la funcionalidad de crear un modelo del adversario en tiempo real y aprendiese a su vez de dicho modelo.

Con este fin en mente se opt por implementar una versin del algoritmo de bsqueda Expectimax adaptado a este juego y estudiar la jugada de mayor expectativa en cada situacin. Este cambio requiri transformar la estructura de datos utilizada en la primera versin de Uc3mBot en los actuales rboles de frecuencias, que describiremos en detalle ms adelante.

Se estableci tambin necesario aadir a su vez un componente de simulacin, capaz de calcular la probabilidad de ganar a largo plazo enfrentando las cartas de Uc3mBot frente al rango de cartas que pudiese llevar el oponente en cada caso.

En los siguientes apartados se explica el funcionamiento de cada componente del sistema. Arquitectura del programa Uc3mBot es un agente de pquer que funciona como un cliente dentro del entorno de ejecucin, ya que se conecta a un servidor de juego, que es el encargado de repartir las cartas y enviar toda la informacin necesaria acerca del desarrollo de la partida.

Para este desarrollo se ha escogido trabajar con el servidor que proporciona la ACPC, ya que implementa un protocolo de comunicacin sencillo, es gratuito y es el servidor utilizado para arbitrar las partidas de dicha competicin, lo que simplificar una posible futura presentacin del agente a dicha competicin.

Ms informacin sobre el servidor y protocolo de comunicacin se puede encontrar en la seccin 3. Dentro de Uc3mBot distinguimos varios mdulos que trabajan de manera coordinada para tomar la mejor jugada posible en cada situacin de juego que el servidor le presenta.

En la Figura 4 se muestran dichos mdulos y de qu modo intercambian datos durante el anlisis de una mano de pquer.

A continuacin pasamos a explicar cada uno de ellos en detalle. El proceso de ejecucin de cada mano de pquer comienza entonces cuando el servidor enva una cadena con informacin sobre la una nueva mano. Estos datos contienen adems de las cartas repartidas a Uc3mBot, la ronda de juego y las apuestas que se efectuaron.

Dado que estn en un formato difcil de interpretar y utilizar, los mensajes son traducidos por la interfaz de conexin, que es la encargada a tal efecto.

Este componente no slo traduce los mensajes que llegan del servidor a Uc3mBot, sino que tambin es el encargado de traducir las respuestas del agente de nuevo al servidor. La interfaz de conexin contiene una serie de rutinas ideadas para extraer cada una de las partes en que se divide la informacin de cada uno de los mensajes recibidos.

Este componente es el encargado de identificar toda la informacin relativa a:. Una vez se descifra un mensaje, la informacin es separada y enviada al componente encargado de actualizar y dar forma al modelo del mundo de Uc3mBot, creando las estructuras de datos necesarias para que el agente pueda jugar dicha mano.

El modelo del mundo que Uc3mBot almacena consiste de una serie de representaciones internas que le mantienen informado del estado del juego y que le permiten interactuar con ste.

Adems de mantenerle informado del resultado de todas las manos que se van jugando durante la partida, este componente es el encargado de recoger y dar forma a la informacin que le enva la interfaz de conexin sobre la posicin de cada jugador, las cartas del agente, etc.

Tambin se encarga de actualizar la pila de fichas de los jugadores, calcular el tamao de la subida si es que se ha subido y poner al da la lista de acciones efectuadas en la mano. Por un lado las jugadas que ha llevado a cabo el oponente se enviarn al modelador de oponentes para que ste actualice el rbol de frecuencias correspondiente En la seccin3.

Con el fin de mantener actualizada toda la informacin durante el juego, ste componente crea una representacin interna de la mesa de pquer, incluyendo informacin sobre las cartas comunitarias, los jugadores y la ronda actual, tal y como se muestra en la Figura 5, donde se ilustra grficamente el modelo que se crea durante una posible situacin de juego.

El mdulo principal de Uc3mBot es denominado como control central, pues es el encargado de coordinar las operaciones principales. Una vez este mdulo recibe los datos, se encarga de escoger qu analizador es ms adecuado para utilizar, pues existen 3 analizadores, dos de ellos creados mediante sistemas expertos apoyados en operaciones pre calculadas, un evaluador de manos y un simulador; y un tercero, el analizador de valor esperado o VE, dedicado a explotar las debilidades que el rival pudiera tener en su juego.

Al principio de una partida Uc3mBot no tiene informacin sobre el juego del adversario y por lo tanto no puede determinar an qu jugada tendr mayor expectativa positiva, por ste motivo y por el hecho de que es importante mezclar el juego desarrollado para no resultar demasiado predecible, han sido creados el Analizador Preflop y el.

Analizador Postflop, el primero dedicado exclusivamente a analizar situaciones en la ronda preflop14 antes de las cartas comunitarias y otro dedicado a las dems rondas. Por ejemplo el analizador preflop utiliza un ranking que contiene todas las posibles combinaciones de cartas que se pueden repartir a un jugador, ordenadas de mayor a menor valor esperado.

Dicho ranking fue generado mediante un algoritmo que escoga cada uno de los posibles pares de cartas y, a travs de multitud de simulaciones, las enfrentaba a todas las dems combinaciones en partidas de dos jugadores, obteniendo as un valor esperado VE medio para cada una de ellas.

Despus el ranking se orden con un algoritmo Quicksort. Con este ranking Uc3mBot puede medir en la ronda preflop la fuerza de las cartas que le han repartido y as actuar en consecuencia. Por regla general cuanto mayor sea el valor esperado de unas cartas, ms subidas tender a realizar.

En la Figura 6 se muestra una pequea parte del ranking generado. ste analizador junto con el Analizador Postflop se pondr en funcionamiento mientras no se tengan suficientes muestras del oponente, como para empezar a realizar clculos sobre el VE de cada jugada con suficiente precisin, ya que el ltimo analizador, el analizador de VE, requiere de un mnimo de muestras para funcionar correctamente.

En el Texas Holdem existen cuatro rondas de juego: preflop, flop, turn y river, donde la primera es la nica que se juega sin cartas comunitarias. Ver anexo con las reglas del juego. Para determinar si se puede utilizar el analizador VE o no, el control central cuenta el nmero de veces que el rival ense sus cartas en una mano anterior con una situacin de juego semejante con la misma estructura de apuestas , es decir, se determina un umbral N cuyo valor se puede ajustar , y si el oponente ense sus cartas un nmero de veces mayor o igual que N se utilizar el dicho analizador, que escoge una jugada u otra buscando obtener el mximo de ganancias a partir del estilo de juego del rival.

Mientras se nmero de muestras no se alcance, se aplicarn los otros dos analizadores. Las decisiones que toman cada uno de los analizadores se plasman en un tro de probabilidades, que es una estructura de datos que sirve para introducir impredecibilidad en la toma de decisiones.

Dicha estructura es semejante a la utilizada en el desarrollo de otros agentes, salvo que en este caso se le ha aadido un componente ms, denominado factor de subida que determina el tamao de la apuesta, ya que no es un tamao fijo como en la modalidad con lmite.

En consecuencia el tro de probabilidades tiene la siguiente forma: [Pa, Pc, Ps, F] Donde,. Pa: Probabilidad de abandonar Pc: Probabilidad de pasar o igualar Ps: Probabilidad de subir F: Factor de subida. Por ejemplo si uno de los analizadores diese el tro [0.

Finalmente el proceso de la toma de decisiones termina cuando el control central enva la accin tomada al servidor a travs de la interfaz de conexin, que es quien traduce las decisiones junto con los datos necesarios al lenguaje del servidor.

Era primordial para el funcionamiento de este agente utilizar una estructura de datos que de alguna forma, almacenase toda la informacin necesaria acerca del juego de cada uno de los oponentes en la mesa, con la idea de ser explotada por los analizadores incluidos en Uc3mbot.

Distinguiendo adems entre la forma de jugar desde las distintas posiciones que ofrece la mesa. Ah es donde entra en juego el modelador de oponentes.

Este componente est formado por una representacin interna de cada oponente, donde se almacenan sus jugadas en diferentes estructuras en forma de rbol, a las que llamaremos rboles de frecuencias.

Cada oponente tendr en su modelo distintos rboles de frecuencias, guardando cada uno las jugadas realizadas desde una determinada posicin en la mano. Por ejemplo, en una partida de slo dos jugadores la clase Oponente almacenar dos rboles, uno de ellos representar las manos en que el oponente jug desde la posicin 0 ciega grande y el otro las manos que jug desde la posicin 1 ciega pequea o repartidor.

En una partida de tres jugadores Uc3mBot crear tres rboles para cada oponente, uno de ellos representar las manos en que el oponente jug desde la posicin 0 ciega pequea , el otro las manos que jug desde la posicin 1 ciega grande , y el ltimo las manos que jug desde la posicin 2 repartidor.

De este modo se crearn tantos rboles como posiciones diferentes haya en la mesa, esto se ha hecho as debido a que la forma de jugar cambia considerablemente dependiendo del nmero de jugadores y de la posicin que se ocupa en la mano.

El analizador de las rondas flop, turn y river, al que hemos nombrado analizador postflop, necesita calcular el valor de la mano en tiempo real, ya que no todos los tipos de jugada son posibles pues todo depender de qu cartas comunitarias se reparten sobre la mesa en cada caso, y adems el rango de manos de cada oponente ir cambiando segn se desarrolla la partida.

Por ejemplo no es posible ligar un pquer con un flop de tipo 4 2 Q donde no hay carta doblada, por tanto sa jugada habra que descartarla en este caso y tener en cuenta que la jugada mxima con este flop es un tro de damas.

Para calcular el valor de la mano, el analizador postflop realiza por lo tanto llamadas al evaluador de manos y al simulador. Estos dos componentes le proporcionarn entonces los datos necesarios para estimar un nmero de apuestas concreto, que Uc3mBot deber tratar de conseguir durante el desarrollo de la mano.

Cuanto mayor sea el valor de nuestras cartas en relacin a todas las dems combinaciones, mayor valor intentaremos sacarle a la mano. La funcin del evaluador de manos es entonces calcular el valor absoluto de las cartas de Uc3mBot y de todas las dems combinaciones posibles.

A continuacin con este dato, el analizador determina el valor relativo a todas las dems combinaciones mediante nuevas llamadas al evaluador , con esto se consigue determinar con precisin el nmero de combinaciones de cartas del total que ganan a su mano.

El evaluador de manos funciona mediante una librera externa llamada Poker-eval que pertenece al proyecto de cdigo abierto Pokersource. Poker-eval es una librera en C que evala manos de pquer. El resultado de cada evaluacin es un nmero que determina el valor de la mejor combinacin que se puede hacer con las cartas de Uc3mBot.

La idea general es que si la evaluacin de tu mano es menor que la evaluacin de la mano de tu oponente, pierdes. Sin embargo, con el propsito de facilitar la interpretacin de los datos, se ha aadido un mtodo en este proyecto que traduce el valor numrico de las cartas a un formato inteligible, de tal forma que por ejemplo un valor de se traducira como unas dobles parejas.

La principal ventaja de esta librera es que est diseada para ser rpida, lo cual permite realizar un mayor nmero de clculos durante el turno. Poker-eval se basa en dos estrategias para maximizar la velocidad de procesamiento: 1. Manipulacin a nivel de bits para la representacin de las cartas.

Tablas de consulta con los valores precalculados. Una mano de pquer es representada internamente por Poker-eval como una secuencia de 52 bits, utilizando un entero de 64 bits para almacenarla. El formato es el siguiente: Picas. Usando este tipo de representacin una mano como la escalera real de corazones sera: En cuanto a las tablas de consulta, son estructuras de datos en forma de array que se usan para sustituir rutinas de computacin y as ahorrar tiempo de procesamiento durante la partida.

Consisten en calcular por adelantado todos los posibles resultados de una funcin y almacenarlos en una tabla, de manera que para hallar un resultado simplemente basta con buscarlo en la tabla, en vez de realizar todo el clculo necesario.

La funcin del simulador es estimar con la mayor precisin posible las probabilidades de ganar la mano. Con este fin realiza miles de desarrollos de juego y situaciones posibles a partir del estado de juego actual, enfrentando nuestras cartas a las posibles cartas que pueda llevar el rival, lo que conlleva numerosos clculos, que en el caso de que el rango de cartas del oponente sea muy amplio, pueden resultar en un incremento importante del tiempo de juego.

Ms concretamente el simulador es una calculadora de equidades, que permite enfrentar las cartas de Uc3mBot contra un rango de cartas estimado y que puede funcionar mediante dos mtodos distintos: a Enumeracin exhaustiva b Monte Carlo La enumeracin exhaustiva es un caso de combinatoria aplicada que explora todas y cada una de las posibles opciones en que se puede desarrollar la mano con un error de cero, pero como contra partida en la mayora de ocasiones requiere de una gran cantidad de tiempo para realizar los clculos.

Monte Carlo es un mtodo estadstico que permite aproximar con un pequeo margen de error los valores obtenidos por enumeracin exhaustiva. Consiste en explorar desarrollos de la mano de forma aleatoria, y es muy til cuando el nmero de combinaciones a explorar es enorme, pues reduce en gran medida el tiempo requerido para los clculos sin perder demasiada precisin, ya que los valores obtenidos se aproximan mucho a los valores reales, hasta el punto en que en la prctica dicha diferencia puede ser ignorada.

En caso de que la potencia de computacin fuese infinita siempre utilizaramos el mtodo de enumeracin exhaustiva, sin embargo en el mundo real dicha tcnica puede resultar prohibitiva en trminos de tiempo a medida que crece el nmero de casos a explorar, de manera que se ha optado en este proyecto por utilizar el mtodo de Monte Carlo en la mayora de casos.

EVALUACIN DEL GANADOR. A travs del evaluador de manos. Figura 8: Funcionamiento del simulador. El simulador funciona mediante un bucle de 3 pasos que se repiten constantemente, llegando a veces a necesitar evaluar millones de partidas repitiendo los pasos de la Figura 8.

El Modelo de Conocimiento Esta seccin expone el modelo de conocimiento en un diagrama de clases, utilizando la notacin UML 2. El modelo fue creado durante las fases de anlisis y diseo de Uc3mBot, donde se establecieron los componentes que se encargaran del funcionamiento y la informacin que se manejara en el sistema.

Cabe sealar que se ha ido ampliando en funcin de las modificaciones y mejoras adoptadas durante la fase de implementacin.

A continuacin se describen las clases ms importantes para el funcionamiento de Uc3mBot junto con sus relaciones respectivas, para ms informacin se puede consultar el diagrama de clases completo en el 0 al final del documento.

La clase Cliente es la parte de la aplicacin que se ejecuta primero ya que es la interfaz de conexin de Uc3mBot con el servidor. Tiene dos clases hijas que son ClienteACPCv1 y ClienteACPCv2, creadas para conectarse respectivamente con las versiones 1 y 2 de los servidores aportados por la ACPC.

Los constructores de las clases Cliente necesitan recibir la direccin IP y el puerto de la mquina en que se est ejecutando el servidor, para comenzar a enviar y recibir mensajes de ste.

En caso de conectarse a un servidor de la ACPC el primer mensaje determina qu versin del protocolo se va a utilizar. Una vez conectado al servidor, el cliente llama a gestionarCambioDeEstado cada vez que recibe un mensaje nuevo de ste. Dicho mtodo se puede considerar como el ms importante de esta clase, porque es el encargado de comunicar a la clase Mesa todos los cambios que vayan sucedindose durante la partida para que sta vaya creando el modelo interno del juego, necesario para que nuestro agente pueda acceder a la situacin actual de juego en cada instante.

Lo primero que este mtodo realiza es ver si ha comenzado una nueva mano, despus extrae las cartas comunitarias del mensaje junto con las cartas privadas y lo enva tambin. gestionarCambioDeEstado es el mtodo que determina tambin de quin es el turno y lo indica, as como la ronda actual o cul fue la ltima jugada.

Tambin estudia cada mensaje recibido del servidor para saber si la mano ha finalizado o no, e informar as de ello a la clase Mesa. Para que las clases Mesa y Cliente puedan intercambiar mensajes, ambas contienen una referencia a la instancia de la otra, es decir, la clase Mesa contiene el objeto Cliente que a su vez contiene el objeto de tipo Mesa, creando una relacin uno a uno como se aprecia en la Figura 9.

La clase Mesa se crea a partir del nmero de jugadores que van a jugar en ella, las posiciones iniciales del repartidor y de Uc3mBot en la mesa, el tamao de las ciegas, la pila de fichas inicial y una referencia al objeto Cliente.

Esta clase se encarga de mantener actualizadas las estructuras de datos que representan el estado del juego. Su mtodo principal es nuevaJugada , cuya misin es aadir la ltima jugada a la lista de acciones efectuadas durante la mano actual, registrar la accin en el rbol de frecuencias correspondiente y actualizar otra informacin importante como las pilas de fichas de los jugadores.

Al igual que una mesa real de juego, esta clase mantiene informacin de las cartas comunitarias, de la situacin de la mano y de los jugadores. Al finalizar una mano, la clase Mesa se encarga de informar del resultado a Uc3mBot y tambin de registrarlo en el nodo del rbol de frecuencias correspondiente, adems de almacenar las ganancias o prdidas de sta en el fichero historial.

txt junto con la fecha en que se inici la partida. Toda la informacin del estado de juego es proporcionada por esta clase, desde la posicin que ocupa cada jugador y sus acciones hasta las cartas comunitarias, por lo tanto esta clase es clave para los analizadores a lo hora de estudiar cada situacin de la partida.

Pasamos ahora a hablar de otra de las clases ms importantes, la clase Uc3mBot, que es la que representa al agente dentro del juego. La clase Uc3mBot es representada como un tipo de jugador para poder ubicarlo dentro del modelo interno del mundo que tiene el agente, como se muestra en la Figura Uc3mBot contiene los mtodos juega y nuevaMano.

A travs del primer mtodo se le informa de que es su turno y debe elegir una accin. Con el segundo mtodo se le informa de que ha comenzado una nueva mano. Uc3mBot tiene un atributo principal de la clase Cerebro, encargado de escoger el analizador de juego necesario en cada situacin.

Este atributo utiliza tres analizadores diferentes que selecciona en funcin de la cantidad de datos que tiene acerca del rival, para ello contiene una serie de constantes que determinan los umbrales a partir de los que escoge uno u otro. Adems se encarga de mezclar las distintas estrategias de juego con un porcentaje de aleatoriedad determinado con el objetivo de no desplegar un juego demasiado predecible.

Todo esto lo realiza el mtodo piensaJugada que devuelve un objeto de la clase Triplete que contiene el tro de probabilidades que determinarn la jugada a efectuar.

En realidad todos los clculos importantes se realizan por los tres analizadores representados. Los dos primeros utilizan un sistema experto para la toma de decisiones junto con una librera de evaluacin de manos, mientras que el tercero emplea un algoritmo de bsqueda inteligente que estudia las distintas jugadas del oponente para hallar la accin de mayor expectativa matemtica.

Todos los analizadores requieren de la situacin de juego actual, que reciben a travs de un objeto de la clase Mesa. AnalizadorPreflopHU tiene como mtodo principal pensarJugadaConEquidad , que tal como indica su nombre, determina la jugada a realizar hallando la equidad de su mano contra todas las dems manos que pueda llevar el oponente.

Como ste clculo requiere mucho tiempo de procesamiento para ser llevado a cabo debido al gran nmero de simulaciones necesarias, se ha creado una lista que contiene todas las posibles manos junto con su equidad.

Dicha lista se gener enfrentando cada una de las manos contra todas las dems combinaciones posibles utilizando el simulador y un algoritmo Quicksort para ordenarlas despus de mayor equidad a menor.

De este modo la lista se ha incluido directamente en el cdigo tal y como se muestra en la Error! No se encuentra el origen de la referencia.. Una vez determinada la equidad de su mano calcula qu porcentaje de veces es Una vez determinada la equidad de su mano calcula qu porcentaje de veces es correcto subir, y en caso de haberse generado un gran bote estima lo rentable que resulta seguir jugando.

Tambin establece un umbral de equidad sobre el que hacer all-in o no. Dicho umbral va modificndose a medida que se desarrolla el juego, por ejemplo en el caso de que el oponente sea muy agresivo y suba muchas veces preflop el rango de manos con el que Uc3mBot responder a dicha agresin ser cada vez ms amplio, siempre intentando tener mejores cartas que el rival a la hora de envidarse.

AnalizadorPostflopHU funciona de forma distinta, calcula el porcentaje de cartas que le ganan en una situacin concreta postflop para as estimar la fuerza de su mano, y con esta informacin determina un nmero de apuestas a efectuar que distribuye durante la ronda actual. En el caso de que el nmero total de apuestas supere al estimado como correcto el analizador se plantear abandonar la mano ya que se creer perdedor.

Cuantas menos fichas le queden a Uc3mBot en relacin con el tamao del bote, ms difcil ser que abandone la mano, pues en la mayora de estos casos es matemticamente incorrecto abandonar.

El AnalizadorPostflopHU est diseado para apostar y subir de farol un porcentaje de veces determinado con la idea de introducir un componente de engao, necesario en toda estrategia que pretenda rivalizar contra jugadores avanzados.

Este analizador tambin realiza apuestas de continuacin, que consisten en apostar de nuevo en el flop cuando se ha realizado la ltima apuesta de la ronda preflop, ya sea habiendo ligado jugada o no. El clculo de la fuerza de la mano es llevado a cabo por la clase EvaluadorDeManos a travs de la librera Poker-eval de cdigo abierto y sobre la que se habl ms detalladamente en la seccin 3.

El mtodo ms importante de esta clase es calcularValor , ya que es el mtodo sobre el que se apoyan los dems para realizar las operaciones. El ltimo analizador, el AnalizadorVE analizador de valor esperado , se puede utilizar en todas las rondas de una mano, con la condicin de se trate de situaciones de juego donde el rival termin por ensear sus cartas, porque el clculo del VE para una situacin de juego concreta requiere de la estimacin del rango de cartas del oponente para un funcionamiento preciso.

ste analizador calcula las probabilidades de tomar una jugada u otra a partir del valor esperado promedio de ganancias o de prdidas que podemos obtener si la ejecutamos de cada una de las posibles jugadas. Por ejemplo, si no sabemos si decidirnos por igualar una apuesta o abandonar, en el momento en que calculemos el valor esperado de ambas opciones sabremos con certeza que aquella cuyo VE sea mayor es la accin que a largo plazo reportar ms beneficios.

Un ejemplo de clculo del VE se muestra en la Figura 3 apartado 2. Otro ejemplo se puede extraer del juego de la ruleta americana: Este juego que consta de 38 casillas equiprobables donde si apostamos 1 ficha a un solo nmero y acertamos, nos pagarn 36 fichas. Por lo tanto las ganancias sern de 35 veces lo que hemos apostado cobramos 36, pero las ganancias netas son 35 ya que hay que descontar lo que hemos apostado , y cuando perdamos, las prdidas sern de 1.

De manera que cada vez que apostemos a la ruleta americana perderemos de media unos 5 cntimos por cada euro apostado. En la frmula de arriba diferenciamos explcitamente entre ganancias y prdidas, sin embargo en la frmula ms general de clculo del valor esperado que fue explicada en la seccin 2.

Si el pago es positivo, se obtienen ganancias; si es negativo se obtienen prdidas. El algoritmo utilizado en el AnalizadorVE es una versin de Miximax 22 , que aplica variantes de sta frmula para buscar la accin de mayor expectativa.

Miximax es una forma de extender el algoritmo Expectimax15 al pquer, ya que en ste juego no se puede hablar de valores exactos, si no de probabilidades, de manera que todas las acciones similares se agrupan en un nico nodo que recibe una determinada probabilidad de que el oponente tenga un tipo u otro de cartas.

sta probabilidad se basa en informacin conocida o estimada sobre el estado de la partida y el oponente. Debido a que elegir siempre la jugada de mayor valor esperado puede llevar a desarrollar un juego predecible se ha optado por combinar el uso de este analizador con los otros analizadores.

A continuacin se muestra en pseudo-cdigo dos de los mtodos principales de la implementacin llevada a cabo de dicho algoritmo. En cuanto a los oponentes, todos son representados por la clase Oponente que es un subtipo de la clase Jugador. Oponente contiene las acciones y datos que el programa requiere de cada rival para poder aplicar su estrategia de juego.

Su atributo ms importante es de tipo rbol, que almacena en su estructura la forma de jugar del oponente. En concreto cada oponente almacena una lista de rboles, ya que se crea un nuevo rbol por cada posicin en la que ste ha jugado.

Tal y como se muestra en la Figura 11, cada uno de los nodos de la clase Arbol representa una accin en el juego y contiene informacin sobre:.

Entorno El entorno de ejecucin de Uc3mBot est compuesto por un servidor de juego y la interfaz de usuario en caso de querer crear una partida contra un humano como se muestra en la Figura En esta seccin se explica cmo se aadieron estos componentes y sus caractersticas.

El servidor de juego: Encargado de dirigir la partida, informando a todos los jugadores de cmo se desarrolla cada mano, as como de sus cartas y otra informacin relevante. GlassFrog es el servidor de pquer utilizado, se trata de una distribucin de la Annual Computer Poker Competition ACPC , una competicin entre agentes de pquer que se realiza cada ao durante la Asociacin para el Avance de la Inteligencia Artificial AAAI16 y que atrae competidores de todo el mundo.

Dicha competicin desarroll su propio servidor de juego de forma que todos los participantes siguiesen un mismo protocolo de comunicacin para el juego.

Dos versiones del protocolo han sido publicadas, la 1. Nuestro agente ha sido diseado para que pueda utilizar cualquiera de las dos versiones. Sin embargo la interfaz de usuario fue diseada para utilizarse nicamente con la versin 1.

Para utilizar un protocolo u otro basta con cambiar el tercer argumento que recibe el ejecutable de Uc3mBot poniendo un 1 para utilizar la versin 1. La comunicacin entre el servidor y cada uno de los jugadores se hace a travs de TCP.

Los jugadores clientes se conectan al servidor mediante su direccin IP y uno de los puertos ofrecidos por ste. El primer mensaje que debe enviar todo jugador es una cadena de caracteres indicando la versin del protocolo a utilizar. Por ejemplo, para utilizar la versin 2 se enva la cadena VERSION Tras esto el servidor enviar repetidamente mensajes al cliente dando informacin sobre el estado del juego, incluyendo las manos en que el cliente no est jugando.

Un valor de 0 indica que el jugador es el primer jugador tras el repartidor, es decir, que es la ciega grande si la partida es de dos jugadores.

El protocolo no hace distinciones entre igualar y pasar, pues. representa ambas jugadas con la letra c; as como tampoco hace distinciones entre apostar o subir, representando ambas con la letra r seguida de la cantidad apostada.

En el caso de que al final de la mano uno de los rivales tenga que mostrar sus cartas, tambin se aadirn a este campo y por lo tanto sern visibles al jugador. Finalmente aadir que cada jugador en su turno deber contestar a los mensajes del servidor aadindoles la accin tomada al final de stos.

Un ejemplo de mensajes enviados y recibidos por el servidor con el protocolo 2. En cuanto al protocolo 1. La interfaz de usuario es una versin del proyecto Swordfish, proporcionado tambin por la ACPC. Su objetivo es permitir a jugadores humanos interactuar con agentes de pquer.

sta interfaz fue desarrollada para utilizarse con el protocolo de comunicaciones en su versin 1. Para el presente proyecto se le han realizado una serie de modificaciones, como la traduccin al espaol y la correccin de algunos errores, con el objetivo de hacerla ms fcil e intuitiva de utilizar.

La interfaz consta de la mesa de juego, donde se muestra toda la informacin necesaria sobre el transcurso de cada una de las manos jugadas. Debajo del nombre de cada jugador se encuentra la cantidad de dinero o fichas por la que se est jugando la mano, dicha cantidad es reiniciada al principio de cada mano, pues son los marcadores situados en la parte izquierda de la ventana los que indican el total de ganancias en verde o prdidas en rojo acumuladas.

Tambin se muestra en todo momento el tamao del bote por el que se est jugando Vase la Figura Para poder realizar las acciones de juego la interfaz de usuario provee de tres botones en la esquina inferior derecha de la ventana, que realizan las acciones Abandonar Igualar o Pasar y Subir una cantidad X.

Sobre estos tres botones principales se encuentran otra serie de botones de menor tamao y una barra deslizadora cuya funcin es ayudar al usuario a escoger el tamao de la apuesta.

Otro elemento importante es la consola de juego, que se muestra en la Figura En ella se irn escribiendo automticamente todas las acciones que han ido ocurriendo durante el transcurso de la partida, de modo que si el jugador desea hallar informacin sobre alguna mano anterior puede buscarla aqu.

Se puede salir de la partida en cualquier momento cerrando la ventana, pero si ya se ha realizado al menos una accin en el transcurso de la mano actual, el dinero apostado se quedar en el bote.

XPokerEquity La mayora del desarrollo se ha realizado en el lenguaje de programacin Java, sin embargo el programa utiliza la librera XPokerEquity desarrollada por James Devlin y descargable gratuitamente cuyo cdigo ha sido adaptado en este proyecto para poder ejecutarse en un entorno Linux.

sta librera es la encargada de realizar gran parte de los clculos referentes al valor esperado o esperanza matemtica, y est desarrollada en C, puesto que este lenguaje generalmente permite obtener una mayor velocidad para este tipo de clculos. Se escogi esta librera frente a otras debido a su versatilidad, a que es uso libre y a su capacidad para calcular equidades frente a un rango completo de manos, superando a otras libreras de clculo que slo permiten calcular equidades frente a una mano concreta.

XPokerEquity es una calculadora de pquer capaz adems de calcular la probabilidad de ganar o la equidad en cualquier situacin que se produzca dentro de una mano de pquer, ya sea en la variante de Texas Holdem lo cual es ideal para nuestro propsito como en la variante de Omaha. Tambin permite realizar estos clculos con cualquier nmero de jugadores que permita el nmero de cartas en la baraja.

Por ejemplo, esta calculadora permite hacer clculos del tipo:. Cartas comunitarias: 4 5 A , partidas evaluadas a 25, equidad jugador 0: botes ganados botes empatados Donde hay nueve jugadores en la partida con unas cartas comunitarias 4 5 A, tenemos JJ y queremos saber nuestra probabilidad de ganar sabiendo que conocemos las cartas de otro jugador, de otros dos conocemos su rango de cartas y de los dems no tenemos informacin, luego pueden llevar cualquier par de cartas.

Ha sido necesario aadir cdigo nuevo que actuase como interfaz a la hora de comunicar la parte de cdigo escrita en Java con la librera XPokerEquity.

pdf El. c y CalculadoraEquidad. h, que se han creado de manera que permitan acceder a todas las rutinas necesarias de dichas libreras desde la clase CalculadoraEquidad.

java del proyecto Uc3mBot. La compilacin de este cdigo da como resultado la librera libpokerjni. so que forma parte de este proyecto y ha de estar situada en la misma carpeta en que est el ejecutable del agente. Poker-eval Adems de la librera antes mencionada, se ha utilizado una versin en Java de la librera poker-eval, encargada sta de evaluar el valor de cada mano de pquer.

poder utilizarla se debe importar el archivo poker-eval. jar al proyecto. Dicha librera se incluye dentro del proyecto. La clase que utiliza los mtodos de sta librera es EvaluadorDeManos. Interpretacin de los datos Puesto que Uc3mBot se conecta al servidor mediante un script, se ha redirigido la salida estndar al fichero executionLog.

Durante la ejecucin tambin se genera un archivo denominado historial. txt donde se imprimen los resultados de cada partida medidos en unidades de ciegas grandes. Todos los procesos y clculos realizados por Uc3mBot durante una partida se imprimen en el fichero executionLog.

txt mientras transcurre el juego. Dicho fichero se crea automticamente en la carpeta donde est alojado el ejecutable Uc3mBot. A continuacin se muestra un ejemplo de los datos que pueden encontrarse en dicho fichero y cmo se han de interpretar:. Captulo 4 Pruebas y Resultados El pquer no es un juego de azar como muchos jugadores creen, es un juego de habilidad.

Que un jugador gane a otro una partida, no significa que uno sea mejor que el otro, pues en un juego donde el factor suerte es tan decisivo a corto plazo, no se puede medir la habilidad con exactitud. Cuanto mayor sea el nmero de manos jugadas entre los jugadores, ms fiables sern los resultados de juego, puesto que a la larga la suerte se igualar.

De modo que el pquer es un juego cuyos resultados han de medirse a largo plazo, y esto es un hecho que todo jugador profesional de este juego conoce.

Cinco pruebas distintas han sido realizadas para probar el correcto funcionamiento de Uc3mBot, as como el cumplimiento de los objetivos propuestos al principio de este PFC.

Todas las pruebas han consistido en medir la fortaleza de juego de Uc3mBot contra distintos oponentes a travs de partidas de manos de duracin exceptuando la partida contra el jugador humano experto , que a pesar de que puedan parecer excesivamente largas, representan un mnimo de muestras para extraer conclusiones.

Los resultados obtenidos se muestran a continuacin. SiempreIgualaBot La primera prueba efectuada ha consistido en enfrentar a Uc3mBot contra un agente que nicamente realiza la accin de igualar. Este agente, bautizado con el nombre de SiempreIgualaBot, ha sido creado expresamente para probar que Uc3mBot se adapta bien a oponentes triviales.

Segunda prueba: Uc3mBot vs. SiempreSubeBot Para la segunda prueba se ha querido emplear un oponente similar al anterior en cuanto a su sencillez, pero que requiere un mayor nivel de adaptacin para llegar a saber que sube con cualquieras dos cartas que le repartan.

Este oponente, denominado SiempreSubeBot, al igual que el rival de la prueba anterior, ha sido creado expresamente para este enfrentamiento.

Como se puede observar por la grfica, Uc3mBot tambin consigue batir a este oponente a un ritmo constante durante la partida jugada, de manos de duracin, la misma cantidad que en la prueba anterior. Tercera prueba: Uc3mBot vs. Uc3mBotSimple Se ha decidido efectuar la tercera prueba enfrentando a Uc3mBot contra la primera versin de l mismo, desarrollada al principio de este proyecto, a la que se ha decidido llamar Uc3mBotSimple.

ste primer desarrollo, est basado principalmente en sistemas expertos para desarrollar su estrategia de juego, de modo que no utiliza ningn algoritmo de bsqueda al contrario que Uc3mBot, por lo que se puede medir la ventaja alcanzada mediante el uso de ste algoritmo.

Tal y como puede verse en la grfica, Uc3mBot fue tambin el ganador de esta tercera partida. Adems se puede apreciar cmo al principio y mitad de la partida Uc3mBot est todava adaptndose al juego del oponente, mostrando muchos altibajos en el juego, debido a que Uc3mBotSimple resulta mucho ms impredecible que los dos adversarios anteriores.

Cuarta prueba: Uc3mBot vs Hyperborean Hyperborean es el agente actual campen del mundo, proclamado en la ltima edicin de la ACPC, en el ao , en la modalidad Texas Holdem sin lmite.

Este jugador fue creado por la Computer Poker Research Group de la Universidad de Alberta Canad , a los que queremos agradecer enormemente primero, el habernos permitido probar nuestro agente contra Hyperborean, ya que consideramos que no habramos podido encontrar un adversario mejor, y segundo por toda la ayuda desinteresada que han mostrado a la hora de realizar esta prueba.

Tal y como muestra la grfica Hyperborean consigue obtener una ventaja clara en la partida, superando a nuestro agente, lo que en cierto modo era de esperar. Guindonos por el Grfico 4, parece que es al principio de la partida donde Uc3mBot muestra una oposicin ms dura para el rival, sin embargo conforme avanza el nmero de manos jugadas, Hyperborean consigue obtener una clara ventaja en los beneficios conseguidos.

Pese a que ahora sabemos que no se va a conseguir un primer puesto en la competicin, estos resultados demuestran que, a travs de mejoras venideras, es probable que nuestro agente consiga en un futuro quedar clasificado entre los primeros puestos.

Comparativa de las partidas contra agentes En la grfica mostrada a continuacin se ha realizado una comparativa de la evolucin de las distintas partidas efectuadas contra otros agentes. Como se puede observar, la diferencia de ganancias entre las distintas partidas es enorme, destacando el ratio de ganancias obtenido durante la partida contra SiempreSubeBot frente a las ganancias y prdidas obtenidas contra Uc3mBotSimple y contra Hyperborean, que se asemejan mucho ms a los resultados que se pudieran obtener entre oponentes de nivel parecido.

Quinta prueba: Uc3mBot vs un jugador humano experto En este caso slo se jugaron alrededor de manos de partida, por lo que resulta difcil extraer conclusiones de ella. Esto es debido a que los jugadores humanos resultan mucho ms lentos a la hora de jugar y es difcil obtener una muestra significativa en un juego como el pquer cuando se enfrenta un agente contra un humano, ya que requerira efectuar una partida del orden de varias semanas de duracin, lo que en la mayora de casos un jugador experto no est dispuesto a realizar.

Como puede observarse le es mucho ms difcil a Uc3mBot adaptarse al juego de este jugador, ya que por lo general un humano resulta mucho ms impredecible en el juego que un agente, esto lo demuestran las continuas fluctuaciones que representan las ganancias obtenidas durante la partida.

Al final de la mano, Uc3mBot obtuvo una pequea ventaja frente al oponente humano, sin embargo predecir que Uc3mBot ganara a la larga a un jugador humano experto resulta aventurarse demasiado, dada la pequea muestra obtenida en esta prueba.

Captulo 5 Conclusiones y Lneas Futuras En este captulo se exponen los comentarios del autor, recogiendo las impresiones recibidas y las conclusiones a las que ha llegado durante el desarrollo de este proyecto. Tambin se incluyen algunas de las posibilidades que ofrece como lneas futuras de desarrollo, para la mejora y ampliacin del agente.

Conclusiones A lo largo del desarrollo de este PFC se han encontrado gran nmero de dificultades que han influido sobre el diseo inicial del agente, as como sobre la fase de implementacin.

Este proyecto comenz con la idea de crear un agente capaz de aprender de una gran cantidad de manos jugadas por el oponente y desarrollar una contraestrategia que superase a se jugador.

Sin embargo se ha ido transformado poco a poco en un proyecto ms ambicioso a medida que se iba llevando a cabo, aadiendo ms requisitos segn se estimaba oportuno crear nuevas funcionalidades, hasta el punto que hubo que parar en algn punto, ya que uno podra estar mejorando su agente indefinidamente.

Muchas y distintas formas de estudiar el problema fueron estudiadas, probadas y descartadas, hasta dar con una solucin que nos satisfizo. De hecho no fue hasta bien avanzado el proyecto que se decidi utilizar estructuras en forma de rbol para almacenar el modelo de cada oponente, y aplicar un algoritmo de bsqueda que buscase la jugada de mayor valor esperado sobre ste modelo.

Requirieron tambin mucho tiempo las pruebas que se realizaron con distintas libreras, hasta escoger las que se han presentado aqu como apoyo a los clculos de Uc3mBot. A una de ellas se le tuvo que adaptar todo el cdigo para que pudiese ejecutarse en un entorno Linux, lo que sum una gran cantidad de tiempo al desarrollo.

En cuanto a la otra librera, quiero expresar mis agradecimientos a los desarrolladores del proyecto Pokersource, por su inestimable ayuda en la adaptacin de sta a mi proyecto, ya que sin su colaboracin el tiempo empleado hubiese sido mucho mayor.

Otras dificultades relacionadas con el entorno de ejecucin surgieron al principio del desarrollo, concretamente una serie de errores que hacan que la Interfaz de Usuario no funcionase correctamente y que hubo que corregir rpidamente.

Tambin fue difcil en la fase final del proyecto adaptar el jugador a los requisitos de velocidad de juego necesarios para poder efectuar partidas contra otros agentes, los cuales se mostraban mucho ms rpidos en la toma de decisiones. A pesar de todos los buenos resultados obtenidos durante las pruebas, tengo la sensacin de que la parte divertida, por as decirlo, acaba de comenzar, pues lo ms difcil de este proyecto ya est completado, que es todo el diseo del agente, y ahora es posible realizar pequeas modificaciones o aadir nuevas funcionalidades que no requieren mucho tiempo, y pasar rpidamente a estudiar los distintos progresos que el agente muestra en el juego.

Lneas futuras Pese a lo extenso del trabajo realizado, ste no deja de considerarse como un primer paso hacia el desarrollo de futuros agentes, facilitando con este modelo la creacin de nuevos avances y futuras mejoras.

Por lo tanto son muchas las lneas de trabajo que pueden tomarse a partir de aqu. A continuacin se exponen algunas de ellas. La primera mejora propuesta consistira en eliminar progresivamente las muestras antiguas del juego del rival, para que el programa se adapte ms rpidamente a los cambios en el estilo de juego del oponente.

La mejor forma de hacerlo sera a travs de un algoritmo que asignase unos pesos a cada muestra, de manera que las ltimas muestras tuviesen ms protagonismo en el clculo del VE. As, segn las muestras fuesen ms antiguas, stas deberan tenerse menos en cuenta.

Otra mejora significativa consistira en expandir los clculos llevados a cabo por el programa en los nodos en que influye la suerte. Pese a que con ello se sacrificara cierta velocidad de juego, se terminara ganando en precisin a la hora de calcular el valor esperado de cada jugada.

Una posible forma de no perder mucha velocidad de juego tras aplicar estos cambios, podra ser clasificando todas las combinaciones de cartas que pueden salir en tres grupos distintos, las favorables, las inocuas y las desfavorables.

De este modo el nmero de estados de juego o nodos del rbol a evaluar disminuira considerablemente sin sacrificar demasiada precisin de clculo. Una tercera proposicin consistira en adaptar Uc3mBot para que juegue en partidas de ms de 2 jugadores, lo que supone un nuevo reto para el proyecto.

En este caso el agente debera lidiar con un nmero mucho mayor de estados de juego, proporcional a la cantidad de oponentes en la mesa. Finalmente es necesario sealar que es muy importante que el agente consiga tomar las decisiones de juego en el mnimo tiempo posible, con el objetivo de superar las restricciones de tiempo de juego aplicadas en la competicin de la ACPC.

Por este motivo se deben agilizar los clculos al mximo tras cualquier mejora aplicada, para as. aumentar la velocidad del agente en la toma de decisiones y cumplir con este requisito. Bibliografa 1. Johanson, Michael Bradley. Robust Strategies and Counter-Strategies: Building a Champion Level Computer.

Neumann, John von y Morgenstern, Oskar. Theory of Games and Economic Behavior. ISBN Nash, John F. and Shapley, L. A simple three person poker game.

Contributions to the theory of games. Non-cooperative games. Annals of Mathematics. Cutler, William H. An Optimal Strategy for Pot-Limit Poker. Zadeh, Norman. Winning Poker Systems. Ankeny, Nesmith C. Poker Strategy: Winning with Game Theory. Findler, N. Computer Model of Gambling and Bluffing.

Some New Approaches to Machine Learning. Studies on Decision Making Using the Game of Poker. y Levine, Z. Experiments with inductive discovery processes leading to heuristics in a poker program.

Berlin : s. Studies in Machine Cognition Using the Game of Poker. Computer Poker. Schaeffer, Jonathan y Lake, Robert. Solving the Game of Checkers. Billings, Darse. Papp, Denis Richard. Dealing with Imperfect Information in Poker. Edmonton, Alberta : s.

Darse Billings, Denis Papp, Lourdes Pea, Jonathan Schaeffer, Duane Szafron. Using Selective-Sampling Simulations in Poker.

Jonathan Schaeffer, Darse Billings, Lourdes Pea, Duane Szafron. Learning to Play Strong Poker. Darse Billings, Lourdes Pena, Jonathan Schaeffer, Duane Szafron. Using Probabilistic Knowledge and Simulation to play Poker.

Davidson, Aaron. Opponent Modeling in Poker: Learning and Acting in a Hostile and Uncertain Environment. Aaron Davidson, Darse Billings, Jonathan Schaeffer, and Duane Szafron. Improved Opponent Modeling in Poker. Darse Billings, Aaron Davidson, Terence Schauenberg, Neil Burch, Michael Bowling, Robert Holte, Jonathan Schaeffer, and Duane Szafron.

Game tree search with adaptation in stochastic imperfect information games. poker, State translation in no-limit. David Paul Schnizlein. Liang, Sheng. Java Native Interface: Programmer's Guide and Specification.

Sklansky, David. The Theory of Poker. Papp, Denis. Darse Billings, Denis Papp, Jonathan Schaeffer, and Duane Szafron. Poker as a Testbed for Machine Intelligence Research. Darse Billings, Aaron Davidson, Jonathan Schaeffer, and Duane Szafron. The Challenge Of Poker.

Newman, Donald J. A model for 'real' poker. Anexo A. Planificacin y presupuesto En este documento se describe cmo se ha planificado el proyecto desde las primeras etapas hasta su finalizacin.

Tambin se expone el clculo del presupuesto que conlleva su desarrollo. Planificacin Dada la magnitud de este proyecto, ha sido necesario realizar una planificacin para distribuir la cantidad de tiempo previsto en las diferentes tareas o actividades efectuadas durante su desarrollo.

A este efecto se ha utilizado un diagrama de Gantt como se muestra en Figura 15 y Figura 16 , que se ha convertido en una herramienta bsica en la gestin de proyectos de todo tipo.

En este diagrama se muestran el origen y final de las diferentes unidades mnimas de trabajo y de los grupos de tareas. Tal y como se puede observar se han incluido tambin las reuniones con el tutor y las tareas de documentacin, que inicialmente sirvieron para adquirir los conocimientos necesarios sobre las diferentes tcnicas de desarrollo de agentes de pquer; y posteriormente se emplearon en realizar un anlisis en mayor profundidad para la redaccin del estado del arte.

Por ltimo podemos destacar que, de entre las tareas principales, la de implementacin es con mucho la que ms tiempo han consumido. Presupuesto En este apartado se detalla el presupuesto del proyecto, especificando los gastos de personal, hardware y software en que se ha incurrido durante el desarrollo.

Se ha planificado un calendario laboral compuesto por jornadas de tres horas por da. Pese a que la lnea de trabajo ha sido irregular en los periodos no lectivos las jornadas fueron de muchas horas ms de trabajo, pero fueron compensadas con otras de menos trabajo , se ha supuesto un esfuerzo continuo a lo largo de todo el proceso, con lo que finalmente la solucin tomada refleja una media real de las horas invertidas en el desarrollo del proyecto.

Las horas de trabajo invertidas en este proyecto han sido distribuidas de la siguiente forma entre las distintas fases de su desarrollo:. El total de tiempo invertido en el proyecto asciende por lo tanto a horas de trabajo.

Coste de personal El coste de personal empleado en este proyecto se detalla en la tabla mostrada a continuacin.

Coste de licencias software En este apartado se calculan los costes asociados al software utilizado durante el desarrollo del proyecto. Tanto el utilizado para su diseo e implementacin, como el empleado en la tarea de documentacin. Coste de hardware Es necesario tambin calcular el coste que requerira comprar los componentes hardware; imprescindibles para llevar a cabo el desarrollo de un proyecto informtico.

como ste. Por lo tanto este tipo de costes, calculados mediante la frmula de amortizacin, tambin se detallan a continuacin. Ordenador Porttil Dell Inspiron Ratn Logitech Impresora HP LaserJet Otros costes del proyecto En la siguiente tabla se describen todos los costes del proyecto que no han sido contemplados en apartados anteriores.

Por lo tanto:. Anexo B. Manual de usuario En este documento se explican los pasos a seguir para ejecutar el programa y llevar a cabo partidas contra Uc3mBot mediante la interfaz grfica. La aplicacin se compone de 3 programas:. Requisitos previos Tanto Uc3mBot como el servidor y la interfaz de juego han sido desarrollados en Java sobre un entorno Linux, concretamente la distribucin Ubuntu El servidor y la interfaz deben poder ser ejecutados en otros entornos que tengan Java instalado en su versin 6 de Oracle.

Sin embargo Uc3mBot incorpora libreras de cdigo en C que han sido desarrolladas especficamente para entornos Linux y por lo tanto slo puede ejecutarse en dichos entornos. Un buen jugador es aquel que es disciplinado, audaz, cuidadoso, abierto y estudioso. Los excelentes jugadores de póker también poseen una gran habilidad analítica y matemática.

De aquellos que poseen todas estas cualidades mencionadas, los jugadores con la mayor inteligencia son los que se destacan de los demás. Los mejores jugadores en el mundo usualmente son muy inteligentes, y han tenido que sobrepasar estos obstáculos. Todos los jugadores se predisponen a creer que sus oponentes piensan como ellos.

A menudo este no es el caso. Esto es especialmente problemático para las personas inteligentes, la diferencia de pensamiento entre un jugador inteligente y el jugador promedio es muy amplia.

Para ilustrar esto, veamos diferentes niveles de pensamiento en el póker:. Para extraer el mayor valor de una buena mano o perder la menor cantidad posible o ganar con un farol con una mala, debes mantenerte en un nivel de pensamiento que esté por delante del de tu oponente.

Como las personas más inteligentes también piensan acerca de lo que sus oponentes piensan acerca de sus manos en varios niveles, a menudo cometen un error que los pone dos o más niveles por delante del de sus oponentes.

Las consecuencias de esto generalmente son terribles. El ejemplo más común es jugar con un pensamiento de Nivel 3 contra uno de Nivel 1. Intentar representar una mano es una jugada destinada al fracaso en este escenario. Una respuesta de pensamiento Nivel 2 acerca de qué tiene tu oponente, y actuar de acuerdo a ello tiene más probabilidades de tener éxito.

Al pensar acerca de una jugada, es mejor mantenerse exactamente un nivel de pensamiento por delante del de tu oponente.

Esto a menudo es un desafío, especialmente antes de que tengas lecturas. Jugar dos o más niveles de pensamiento por delante del de tu oponente te costará dinero. Jugadores con un coeficiente intelectual alto tienden a intentar movimientos avanzados en vez de simples, donde los simples son más adecuados.

Las personas que son inteligentes a la hora de resolver problemas, les han enseñado a encontrar la solución correcta, entonces busca la mejor.

En el póker, a menudo la solución más simple es la mejor.

algoritmo de bsqueda inteligente que estudia las distintas jugadas del oponente para Póker - Juego Con Manos Medias. Póker - Juego El "síndrome del juego sofisticado" se extiende como la pólvora. Los jugadores intentan parecer más inteligentes y engañar al resto de la mesa con que ellos van Se suele decir que el poker es fácil de aprender, pero complicado de dominar. Aquí encontrarás algunas estrategias de poker para que te diviertas jugando

Video

ALL IN por 3,390,000 en la Mesa Final del LA Poker Classic Vivir Inteilgentes póker en España: Jutadas panorama actual Convertirse en Pókwr jugador profesional Inteljgentes póker online no es Tragamonedas clásicas online. En este artículo descubrirás aquellas estrategias para ganar en Pójer póker online y presencial para pasar Jugadas Inteligentes de Póker la mediocridad o un Juadas intermdio a un juego avanzado en el Texas Holdem. Lo Jugadas Inteligentes de Póker es que aprender a controlarlas maximizará tus opciones de éxito a largo plazo. Una vez hayas dominado las directrices sólidas de la mano inicial y entendido cómo cambian dependiendo de tu posición en la mesa, la siguiente área en la que deberías trabajar es tu juego durante el resto de la mano. En el turn, para evitar que su oponente apueste en el river. La IA ha obtenido grandes xitos y avances a travs de juegos tpicamente deterministas sin incertidumbre y de informacin perfecta como el ajedrez o las damas; juegos donde todos los jugadores pueden determinar la situacin exacta del juego y no interviene el azar.

Jugadas Inteligentes de Póker - Harto de ser un 'fisher'? Practica estas estrategias de póker avanzadas y empieza a dar guerra en los torneos y las mesas de dinero real algoritmo de bsqueda inteligente que estudia las distintas jugadas del oponente para Póker - Juego Con Manos Medias. Póker - Juego El "síndrome del juego sofisticado" se extiende como la pólvora. Los jugadores intentan parecer más inteligentes y engañar al resto de la mesa con que ellos van Se suele decir que el poker es fácil de aprender, pero complicado de dominar. Aquí encontrarás algunas estrategias de poker para que te diviertas jugando

Los excelentes jugadores de póker también poseen una gran habilidad analítica y matemática. De aquellos que poseen todas estas cualidades mencionadas, los jugadores con la mayor inteligencia son los que se destacan de los demás. Los mejores jugadores en el mundo usualmente son muy inteligentes, y han tenido que sobrepasar estos obstáculos.

Todos los jugadores se predisponen a creer que sus oponentes piensan como ellos. A menudo este no es el caso. Esto es especialmente problemático para las personas inteligentes, la diferencia de pensamiento entre un jugador inteligente y el jugador promedio es muy amplia.

Para ilustrar esto, veamos diferentes niveles de pensamiento en el póker:. Para extraer el mayor valor de una buena mano o perder la menor cantidad posible o ganar con un farol con una mala, debes mantenerte en un nivel de pensamiento que esté por delante del de tu oponente.

Como las personas más inteligentes también piensan acerca de lo que sus oponentes piensan acerca de sus manos en varios niveles, a menudo cometen un error que los pone dos o más niveles por delante del de sus oponentes. Las consecuencias de esto generalmente son terribles.

El ejemplo más común es jugar con un pensamiento de Nivel 3 contra uno de Nivel 1. Intentar representar una mano es una jugada destinada al fracaso en este escenario. Una respuesta de pensamiento Nivel 2 acerca de qué tiene tu oponente, y actuar de acuerdo a ello tiene más probabilidades de tener éxito.

Los resultados obtenidos se muestran a continuacin. SiempreIgualaBot La primera prueba efectuada ha consistido en enfrentar a Uc3mBot contra un agente que nicamente realiza la accin de igualar. Este agente, bautizado con el nombre de SiempreIgualaBot, ha sido creado expresamente para probar que Uc3mBot se adapta bien a oponentes triviales.

Segunda prueba: Uc3mBot vs. SiempreSubeBot Para la segunda prueba se ha querido emplear un oponente similar al anterior en cuanto a su sencillez, pero que requiere un mayor nivel de adaptacin para llegar a saber que sube con cualquieras dos cartas que le repartan.

Este oponente, denominado SiempreSubeBot, al igual que el rival de la prueba anterior, ha sido creado expresamente para este enfrentamiento. Como se puede observar por la grfica, Uc3mBot tambin consigue batir a este oponente a un ritmo constante durante la partida jugada, de manos de duracin, la misma cantidad que en la prueba anterior.

Tercera prueba: Uc3mBot vs. Uc3mBotSimple Se ha decidido efectuar la tercera prueba enfrentando a Uc3mBot contra la primera versin de l mismo, desarrollada al principio de este proyecto, a la que se ha decidido llamar Uc3mBotSimple. ste primer desarrollo, est basado principalmente en sistemas expertos para desarrollar su estrategia de juego, de modo que no utiliza ningn algoritmo de bsqueda al contrario que Uc3mBot, por lo que se puede medir la ventaja alcanzada mediante el uso de ste algoritmo.

Tal y como puede verse en la grfica, Uc3mBot fue tambin el ganador de esta tercera partida. Adems se puede apreciar cmo al principio y mitad de la partida Uc3mBot est todava adaptndose al juego del oponente, mostrando muchos altibajos en el juego, debido a que Uc3mBotSimple resulta mucho ms impredecible que los dos adversarios anteriores.

Cuarta prueba: Uc3mBot vs Hyperborean Hyperborean es el agente actual campen del mundo, proclamado en la ltima edicin de la ACPC, en el ao , en la modalidad Texas Holdem sin lmite.

Este jugador fue creado por la Computer Poker Research Group de la Universidad de Alberta Canad , a los que queremos agradecer enormemente primero, el habernos permitido probar nuestro agente contra Hyperborean, ya que consideramos que no habramos podido encontrar un adversario mejor, y segundo por toda la ayuda desinteresada que han mostrado a la hora de realizar esta prueba.

Tal y como muestra la grfica Hyperborean consigue obtener una ventaja clara en la partida, superando a nuestro agente, lo que en cierto modo era de esperar. Guindonos por el Grfico 4, parece que es al principio de la partida donde Uc3mBot muestra una oposicin ms dura para el rival, sin embargo conforme avanza el nmero de manos jugadas, Hyperborean consigue obtener una clara ventaja en los beneficios conseguidos.

Pese a que ahora sabemos que no se va a conseguir un primer puesto en la competicin, estos resultados demuestran que, a travs de mejoras venideras, es probable que nuestro agente consiga en un futuro quedar clasificado entre los primeros puestos. Comparativa de las partidas contra agentes En la grfica mostrada a continuacin se ha realizado una comparativa de la evolucin de las distintas partidas efectuadas contra otros agentes.

Como se puede observar, la diferencia de ganancias entre las distintas partidas es enorme, destacando el ratio de ganancias obtenido durante la partida contra SiempreSubeBot frente a las ganancias y prdidas obtenidas contra Uc3mBotSimple y contra Hyperborean, que se asemejan mucho ms a los resultados que se pudieran obtener entre oponentes de nivel parecido.

Quinta prueba: Uc3mBot vs un jugador humano experto En este caso slo se jugaron alrededor de manos de partida, por lo que resulta difcil extraer conclusiones de ella.

Esto es debido a que los jugadores humanos resultan mucho ms lentos a la hora de jugar y es difcil obtener una muestra significativa en un juego como el pquer cuando se enfrenta un agente contra un humano, ya que requerira efectuar una partida del orden de varias semanas de duracin, lo que en la mayora de casos un jugador experto no est dispuesto a realizar.

Como puede observarse le es mucho ms difcil a Uc3mBot adaptarse al juego de este jugador, ya que por lo general un humano resulta mucho ms impredecible en el juego que un agente, esto lo demuestran las continuas fluctuaciones que representan las ganancias obtenidas durante la partida.

Al final de la mano, Uc3mBot obtuvo una pequea ventaja frente al oponente humano, sin embargo predecir que Uc3mBot ganara a la larga a un jugador humano experto resulta aventurarse demasiado, dada la pequea muestra obtenida en esta prueba.

Captulo 5 Conclusiones y Lneas Futuras En este captulo se exponen los comentarios del autor, recogiendo las impresiones recibidas y las conclusiones a las que ha llegado durante el desarrollo de este proyecto.

Tambin se incluyen algunas de las posibilidades que ofrece como lneas futuras de desarrollo, para la mejora y ampliacin del agente.

Conclusiones A lo largo del desarrollo de este PFC se han encontrado gran nmero de dificultades que han influido sobre el diseo inicial del agente, as como sobre la fase de implementacin. Este proyecto comenz con la idea de crear un agente capaz de aprender de una gran cantidad de manos jugadas por el oponente y desarrollar una contraestrategia que superase a se jugador.

Sin embargo se ha ido transformado poco a poco en un proyecto ms ambicioso a medida que se iba llevando a cabo, aadiendo ms requisitos segn se estimaba oportuno crear nuevas funcionalidades, hasta el punto que hubo que parar en algn punto, ya que uno podra estar mejorando su agente indefinidamente.

Muchas y distintas formas de estudiar el problema fueron estudiadas, probadas y descartadas, hasta dar con una solucin que nos satisfizo. De hecho no fue hasta bien avanzado el proyecto que se decidi utilizar estructuras en forma de rbol para almacenar el modelo de cada oponente, y aplicar un algoritmo de bsqueda que buscase la jugada de mayor valor esperado sobre ste modelo.

Requirieron tambin mucho tiempo las pruebas que se realizaron con distintas libreras, hasta escoger las que se han presentado aqu como apoyo a los clculos de Uc3mBot. A una de ellas se le tuvo que adaptar todo el cdigo para que pudiese ejecutarse en un entorno Linux, lo que sum una gran cantidad de tiempo al desarrollo.

En cuanto a la otra librera, quiero expresar mis agradecimientos a los desarrolladores del proyecto Pokersource, por su inestimable ayuda en la adaptacin de sta a mi proyecto, ya que sin su colaboracin el tiempo empleado hubiese sido mucho mayor.

Otras dificultades relacionadas con el entorno de ejecucin surgieron al principio del desarrollo, concretamente una serie de errores que hacan que la Interfaz de Usuario no funcionase correctamente y que hubo que corregir rpidamente.

Tambin fue difcil en la fase final del proyecto adaptar el jugador a los requisitos de velocidad de juego necesarios para poder efectuar partidas contra otros agentes, los cuales se mostraban mucho ms rpidos en la toma de decisiones. A pesar de todos los buenos resultados obtenidos durante las pruebas, tengo la sensacin de que la parte divertida, por as decirlo, acaba de comenzar, pues lo ms difcil de este proyecto ya est completado, que es todo el diseo del agente, y ahora es posible realizar pequeas modificaciones o aadir nuevas funcionalidades que no requieren mucho tiempo, y pasar rpidamente a estudiar los distintos progresos que el agente muestra en el juego.

Lneas futuras Pese a lo extenso del trabajo realizado, ste no deja de considerarse como un primer paso hacia el desarrollo de futuros agentes, facilitando con este modelo la creacin de nuevos avances y futuras mejoras.

Por lo tanto son muchas las lneas de trabajo que pueden tomarse a partir de aqu. A continuacin se exponen algunas de ellas. La primera mejora propuesta consistira en eliminar progresivamente las muestras antiguas del juego del rival, para que el programa se adapte ms rpidamente a los cambios en el estilo de juego del oponente.

La mejor forma de hacerlo sera a travs de un algoritmo que asignase unos pesos a cada muestra, de manera que las ltimas muestras tuviesen ms protagonismo en el clculo del VE.

As, segn las muestras fuesen ms antiguas, stas deberan tenerse menos en cuenta. Otra mejora significativa consistira en expandir los clculos llevados a cabo por el programa en los nodos en que influye la suerte. Pese a que con ello se sacrificara cierta velocidad de juego, se terminara ganando en precisin a la hora de calcular el valor esperado de cada jugada.

Una posible forma de no perder mucha velocidad de juego tras aplicar estos cambios, podra ser clasificando todas las combinaciones de cartas que pueden salir en tres grupos distintos, las favorables, las inocuas y las desfavorables.

De este modo el nmero de estados de juego o nodos del rbol a evaluar disminuira considerablemente sin sacrificar demasiada precisin de clculo. Una tercera proposicin consistira en adaptar Uc3mBot para que juegue en partidas de ms de 2 jugadores, lo que supone un nuevo reto para el proyecto.

En este caso el agente debera lidiar con un nmero mucho mayor de estados de juego, proporcional a la cantidad de oponentes en la mesa. Finalmente es necesario sealar que es muy importante que el agente consiga tomar las decisiones de juego en el mnimo tiempo posible, con el objetivo de superar las restricciones de tiempo de juego aplicadas en la competicin de la ACPC.

Por este motivo se deben agilizar los clculos al mximo tras cualquier mejora aplicada, para as. aumentar la velocidad del agente en la toma de decisiones y cumplir con este requisito. Bibliografa 1.

Johanson, Michael Bradley. Robust Strategies and Counter-Strategies: Building a Champion Level Computer. Neumann, John von y Morgenstern, Oskar. Theory of Games and Economic Behavior.

ISBN Nash, John F. and Shapley, L. A simple three person poker game. Contributions to the theory of games. Non-cooperative games. Annals of Mathematics. Cutler, William H. An Optimal Strategy for Pot-Limit Poker. Zadeh, Norman.

Winning Poker Systems. Ankeny, Nesmith C. Poker Strategy: Winning with Game Theory. Findler, N. Computer Model of Gambling and Bluffing.

Some New Approaches to Machine Learning. Studies on Decision Making Using the Game of Poker. y Levine, Z. Experiments with inductive discovery processes leading to heuristics in a poker program. Berlin : s. Studies in Machine Cognition Using the Game of Poker.

Computer Poker. Schaeffer, Jonathan y Lake, Robert. Solving the Game of Checkers. Billings, Darse. Papp, Denis Richard. Dealing with Imperfect Information in Poker.

Edmonton, Alberta : s. Darse Billings, Denis Papp, Lourdes Pea, Jonathan Schaeffer, Duane Szafron. Using Selective-Sampling Simulations in Poker.

Jonathan Schaeffer, Darse Billings, Lourdes Pea, Duane Szafron. Learning to Play Strong Poker. Darse Billings, Lourdes Pena, Jonathan Schaeffer, Duane Szafron.

Using Probabilistic Knowledge and Simulation to play Poker. Davidson, Aaron. Opponent Modeling in Poker: Learning and Acting in a Hostile and Uncertain Environment. Aaron Davidson, Darse Billings, Jonathan Schaeffer, and Duane Szafron.

Improved Opponent Modeling in Poker. Darse Billings, Aaron Davidson, Terence Schauenberg, Neil Burch, Michael Bowling, Robert Holte, Jonathan Schaeffer, and Duane Szafron. Game tree search with adaptation in stochastic imperfect information games. poker, State translation in no-limit.

David Paul Schnizlein. Liang, Sheng. Java Native Interface: Programmer's Guide and Specification. Sklansky, David. The Theory of Poker. Papp, Denis. Darse Billings, Denis Papp, Jonathan Schaeffer, and Duane Szafron. Poker as a Testbed for Machine Intelligence Research.

Darse Billings, Aaron Davidson, Jonathan Schaeffer, and Duane Szafron. The Challenge Of Poker. Newman, Donald J. A model for 'real' poker. Anexo A. Planificacin y presupuesto En este documento se describe cmo se ha planificado el proyecto desde las primeras etapas hasta su finalizacin.

Tambin se expone el clculo del presupuesto que conlleva su desarrollo. Planificacin Dada la magnitud de este proyecto, ha sido necesario realizar una planificacin para distribuir la cantidad de tiempo previsto en las diferentes tareas o actividades efectuadas durante su desarrollo.

A este efecto se ha utilizado un diagrama de Gantt como se muestra en Figura 15 y Figura 16 , que se ha convertido en una herramienta bsica en la gestin de proyectos de todo tipo. En este diagrama se muestran el origen y final de las diferentes unidades mnimas de trabajo y de los grupos de tareas.

Tal y como se puede observar se han incluido tambin las reuniones con el tutor y las tareas de documentacin, que inicialmente sirvieron para adquirir los conocimientos necesarios sobre las diferentes tcnicas de desarrollo de agentes de pquer; y posteriormente se emplearon en realizar un anlisis en mayor profundidad para la redaccin del estado del arte.

Por ltimo podemos destacar que, de entre las tareas principales, la de implementacin es con mucho la que ms tiempo han consumido. Presupuesto En este apartado se detalla el presupuesto del proyecto, especificando los gastos de personal, hardware y software en que se ha incurrido durante el desarrollo.

Se ha planificado un calendario laboral compuesto por jornadas de tres horas por da. Pese a que la lnea de trabajo ha sido irregular en los periodos no lectivos las jornadas fueron de muchas horas ms de trabajo, pero fueron compensadas con otras de menos trabajo , se ha supuesto un esfuerzo continuo a lo largo de todo el proceso, con lo que finalmente la solucin tomada refleja una media real de las horas invertidas en el desarrollo del proyecto.

Las horas de trabajo invertidas en este proyecto han sido distribuidas de la siguiente forma entre las distintas fases de su desarrollo:. El total de tiempo invertido en el proyecto asciende por lo tanto a horas de trabajo.

Coste de personal El coste de personal empleado en este proyecto se detalla en la tabla mostrada a continuacin. Coste de licencias software En este apartado se calculan los costes asociados al software utilizado durante el desarrollo del proyecto. Tanto el utilizado para su diseo e implementacin, como el empleado en la tarea de documentacin.

Coste de hardware Es necesario tambin calcular el coste que requerira comprar los componentes hardware; imprescindibles para llevar a cabo el desarrollo de un proyecto informtico.

como ste. Por lo tanto este tipo de costes, calculados mediante la frmula de amortizacin, tambin se detallan a continuacin.

Ordenador Porttil Dell Inspiron Ratn Logitech Impresora HP LaserJet Otros costes del proyecto En la siguiente tabla se describen todos los costes del proyecto que no han sido contemplados en apartados anteriores. Por lo tanto:. Anexo B.

Manual de usuario En este documento se explican los pasos a seguir para ejecutar el programa y llevar a cabo partidas contra Uc3mBot mediante la interfaz grfica. La aplicacin se compone de 3 programas:.

Requisitos previos Tanto Uc3mBot como el servidor y la interfaz de juego han sido desarrollados en Java sobre un entorno Linux, concretamente la distribucin Ubuntu El servidor y la interfaz deben poder ser ejecutados en otros entornos que tengan Java instalado en su versin 6 de Oracle.

Sin embargo Uc3mBot incorpora libreras de cdigo en C que han sido desarrolladas especficamente para entornos Linux y por lo tanto slo puede ejecutarse en dichos entornos.

En caso de no tener instalada la versin 6 de Java Oracle, sta puede obtenerse en java. Una vez configurado el entorno, se debe descomprimir el archivo Uc3mBot.

gz, de forma que se crear una carpeta llamada Uc3mBot con los siguientes elementos:. Ejecucin de la aplicacin 1. Iniciar el servidor de juego Abrir una consola y situarse dentro de la carpeta descomprimida Uc3mBot.

Ejecutar entonces el servidor de juego mediante el comando. sh tal y como. Iniciar el agente Uc3mBot Abrir una segunda consola y situarse igualmente dentro de la carpeta descomprimida Uc3mBot.

A continuacin ejecutar el programa Uc3mBot a travs del comando. Iniciar la interfaz de juego Abrir una tercera consola y situarse dentro de la carpeta descomprimida Uc3mBot. Ejecutar el comando. No se encuentra el origen de la referencia.

El servidor nterpretar dicha orden y proceder a iniciar la partida. Controles del juego La interfaz consta de la mesa de juego, donde se muestra toda la informacin necesaria sobre el transcurso de cada una de las manos jugadas.

Tambin se muestra en todo momento el tamao del bote por el que se est jugando Vase Error! Para poder realizar las acciones de juego se han incluido tres botones en la esquina inferior derecha de la ventana que realizan una accin determinada cada uno, estas son:.

Concretamente son:. Tras escoger el tamao de la apuesta, se debe pulsar el botn subir para hacer efectiva la accin. En la esquina inferior izquierda de la ventana de juego se sita la consola. En ella se irn escribiendo automticamente todas las acciones que han ido ocurriendo durante el transcurso de la partida.

Tambin se puede escribir texto en ella y comunicarse con el rival, especialmente til a la hora de jugar contra otro humano Uc3mBot no est diseado para responder mensajes. Anexo C. Manual de referencia En el presente documento se describen los detalles relacionados con la implementacin, as como las herramientas y programas utilizados durante esta fase del proyecto.

Con esta informacin se pretende facilitar posibles ampliaciones o modificaciones futuras de la aplicacin. Entorno de desarrollo El programa ha sido escrito en el lenguaje de programacin Java y compilado y ejecutado mediante la versin 1. Se utiliz para su desarrollo el entorno eclipse en su versin Indigo para Java, que puede descargarse desde la pgina de Eclipse en www.

Clases y libreras utilizadas El proyecto Uc3mBot2 denominado as porque es la segunda versin de Uc3mBot consta de las clases mostradas en la Figura La mayora del desarrollo se ha realizado en el lenguaje de programacin Java, sin embargo el programa utiliza la librera XPokerEquity desarrollada por James Devlin y descargable.

zip cuyo cdigo se ha adaptado para poder ejecutarse en un entorno Linux. sta librera es la encargada de realizar gran parte de los clculos de valor esperado, y est desarrollada C, puesto que este lenguaje permite una mayor velocidad de clculo. Los interfaces desarrollados para comunicar la parte de cdigo escrita en Java con la librera XPokerEquity estn escritos en el lenguaje Java Native Interface JNI , que es un infraestructura digital de programacin que permite que un programa escrito en Java ejecutado en la mquina virtual java JVM pueda interactuar con programas escritos.

Ms informacin acerca de cmo programar en ste lenguaje puede encontrarse en 24 tambin descargable en internet desde java. El interfaz escrito en lenguaje JNI est compuesto de los documentos CalculadoraEquidad. Sin embargo no es necesario modificar dichos archivos ya que se han creado de manera que permitan acceder a todas las rutinas necesarias de dichas libreras desde la clase CalculadoraEquidad.

La compilacin de estos archivos da como resultado la librera libpokerjni. so que ha de estar situada en la misma carpeta en que est el ejecutable del proyecto Uc3mBot2. Adems de la librera antes mencionada, se ha utilizado una versin en Java de la librera poker-eval, encargada sta de evaluar el valor de cada mano de pquer.

Para poder utilizarla se debe importar el archivo poker-eval. sta librera fue desarrollada a travs del proyecto pokersource de cdigo abierto, del que se puede encontrar ms informacin en gna. Sin embargo el paso de incluir dicha librera no es necesario ya que viene incluida en el archivo comprimido del proyecto.

Observaciones importantes Puesto que Uc3mBot se conecta al servidor mediante un script, se ha redirigido la salida estndar al fichero executionLog. txt donde se imprimen los resultados de cada partida medidos en ciegas grandes. Instrucciones para futuras modificaciones del cdigo Para realizar alguna modificacin del cdigo lo ms aconsejable es instalar el entorno de desarrollo Eclipse indicado ms arriba, e importar el proyecto directamente desde el archivo comprimido Uc3mBot v1.

seleccionar la opcin ExistingProjects into Workspace tal y como muestra la Error! Despus en la ventana siguiente se hace clic sobre Select archive file y Browse, entonces se elige el archivo. Zip del proyecto, finalmente se hace clic sobre Finish y tendremos el proyecto importado. Instrucciones para la compilacin El proyecto Uc3mBot debe compilarse en un archivo.

jar ejecutable para poder utilizarlo posteriormente como jugador. Entre las opciones de creacin del ejecutable se debe escoger Extract required libraries into generated JAR tal y como muestra la Error! Finalmente hacer clic en Finish para terminar el proceso.

Detalles del servidor y la interfaz grfica GlassFrog es el servidor de pquer utilizado, una distribucin de la Annual Computer Poker Competition ACPC , que se realiza cada ao en la Conferencia Internacional sobre Inteligencia Artificial AAAI y que atrae competidores de todo el mundo.

Dicha competicin desarroll su propio servidor de juego de forma que todos los participantes siguiesen unos mismos estndares de juego. La versin del protocolo del servidor utilizada en este proyecto es la 1. Ms recientemente la ACPC public un nuevo servidor que implementaba un protocolo parecido, cuya versin es la 2.

En este proyecto se utiliza la primera versin por defecto, ya que la versin ms reciente no es compatible con la interfaz grfica. Un ejemplo del protocolo 1. Sin embargo tambin se puede utilizar el programa con los ltimos servidores de juego publicados por la ACPC, para ello simplemente se ha de cambiar el tipo de cliente creado desde la clase Main a un objeto de la clase ClienteACPCv2.

La interfaz grfica es una versin del proyecto Swordfish, proporcionado tambin por la ACPC. sta interfaz fue desarrollada para utilizarse junto a la versin 1. Dichas modificaciones sobre la interfaz se han llevado a cabo con el. Anexo E. Reglas del Texas Holdem El pquer Texas Holdem es un juego de cartas para 2 o ms jugadores cuyo objetivo es maximizar las ganancias.

Actualmente es la variante de pquer ms popular y tambin es la ms jugada en el mundo. Su versin sin lmite de apuestas no limit es la utilizada en los eventos principales de series mundiales de pquer y los torneos ms importantes.

Cuando se juega entre dos jugadores se le denomina "Heads-up", entre tres y seis jugadores se le denomina "Mesa Corta" y con siete jugadores o ms se le denomina "Mesa Larga".

Cmo jugar Hold'em se suele jugar usando las apuestas ciega pequea "small blind" y ciega grande "big blind". Estas apuestas se denominan "ciegas" ya que el jugador apuesta sin haber visto ninguna de las cartas de la mesa.

La ciega pequea la pone el jugador a la izquierda del repartidor, y equivale a la mitad de la ciega grande. La ciega grande la aporta el jugador a la izquierda del anterior y equivale a la apuesta mnima. En los torneos, la cantidad de las ciegas va aumentando conforme el torneo avanza. Un botn o dealer se utiliza para representar al jugador situado en la posicin del repartidor.

El botn de repartidor gira en la direccin de las agujas del reloj despus de cada mano, con lo que se van turnando el repartidor y las "ciegas". Rondas de juego 1 Fase, Pre-Flop El juego comienza repartiendo 2 cartas boca abajo a cada jugador.

Estas cartas se denominan cartas privadas o hole cards. Son las nicas cartas que cada jugador recibir individualmente, y sern descubiertas al final de la mano o si todos los jugadores apuestan "all-in".

La mano comienza con una ronda de apuestas antes de mostrar cartas comunitarias, comenzando por el jugador a la izquierda de la ciega grande y se contina en la direccin de las agujas del reloj hasta que todos los jugadores igualan las apuestas.

Despus de esta ronda de apuestas, si an continan al menos 2 jugadores en la mano, se comienzan a poner sobre la mesa las 5 cartas comunitarias descubiertas de esta forma Texas hold'em es un juego de pquer "descubierto" en tres fases: 2 Fase, Flop: Tres cartas descubiertas El repartidor saca el flop, tres cartas descubiertas simultneamente y se realiza otra ronda de apuestas.

Esta y las dems rondas de apuestas comienzan por el jugador a la izquierda del botn y continan en el sentido de las agujas del reloj. A esta carta tambin se la denomina 4 calle "fourth street" 4 Fase, River: Se descubre la ltima carta Despus del "turn", otra carta descubierta river se coloca sobre la mesa formando las 5 cartas comunitarias y es seguido de otra ronda de apuestas.

A esta carta tambin se la denomina 5 calle "fifth street". Se determina el ganador Si un jugador apuesta y todos los dems se retiran, el jugador se lleva todo el dinero o fichas del bote, y no tendr que mostrar sus cartas. Si dos o ms jugadores continan despus de la ltima ronda de apuestas, se muestran las cartas showdown.

En la muestra, cada jugador utiliza las cinco mejores cartas posibles de entre las siete que forman sus dos cartas privadas y las cinco cartas comunitarias de la mesa. Escalera Cinco cartas consecutivas del mismo palo. En caso de color de empate decide la carta ms alta. Cuatro cartas iguales en su valor.

En caso de que varios jugadores tengan pquer, gana el que tenga el pquer con las cartas ms altas. Si varios jugadores tienen el mismo pquer si ste se da en las cartas comunitarias gana el que tenga la carta ms alta. Tres cartas iguales tro , ms otras dos iguales par. En caso de que varios jugadores tengan full, gana el que tenga el tro ms alto y luego el que tenga la pareja ms alta.

Tres cartas iguales en su valor. En caso de empate decide el tro con las cartas ms altas y en caso de nuevo empate decide la carta o cartas ms altas de las que no forman tro. Dos pares de cartas. En caso de empate decide la pareja ms alta y si contina el empate decide la segunda pareja ms alta y en caso de nuevo empate decide la carta suelta ms alta.

Dos cartas iguales y tres diferentes. En caso de empate decide la pareja ms alta y si contina el empate deciden las cartas ms altas entre las restantes. Gana quien tiene la carta ms alta de todas. Si hay empate con la primera carta, se contina con las siguientes para decidir quin tiene la carta ms alta.

Si dos jugadores o ms comparten la mejor mano, entonces el bote se divide por igual entre los jugadores. Modalidades segn las apuestas Lmite fijo Fixed limit La modalidad con lmite fijo o simplemente "con lmite" es una modalidad en la que slo se puede apostar una cantidad de fichas fija.

Las apuestas en las 2 primeras rondas pre-flop y flop son iguales a la ciega grande, y en las 2 siguientes rondas turn y river las apuestas son iguales al doble de la ciega grande. Sin lmites No limit El Texas Hold'em sin lmite de apuesta es una modalidad en la que es posible apostar cualquier cantidad de fichas que se tenga sobre la mesa por encima de la apuesta mnima.

Apostar todas las fichas esto se conoce como "All in" Voy con todo. Es la modalidad ms conocida de este juego y hay que tener grandes conocimientos para jugarla, ya que se pueden ganar o perder botes mucho ms grandes ms fcilmente.

Limitado al bote Pot limit Como mximo puedes apostar la cantidad de fichas que se encuentre en el bote en el momento de tu apuesta. Como bote se entiende la suma del bote y todas las apuestas de la mesa ms la cantidad que el jugador debe igualar antes de subir. Estas habilidades implican calcular las probabilidades en relación al pozo, reconocer patrones de apuestas, tirarse un farol y hacer buen uso de la posición.

Los años de práctica necesarios para dominar el juego medio y final merecen la pena, porque incluso las pequeñas mejoras de las habilidades de un jugador pueden tener un gran impacto en las ganancias a lo largo de la vida del jugador.

Otra metahabilidad que debe formar parte de la estrategia de un jugador de poker ganador es evitar el tilt. Tus contrincantes usarán tus emociones contra ti, pero solo si tú se lo permites. El juego emocional desemboca en malas decisiones y pérdida de dinero.

Cualquiera puede perder el control y enfadarse, y a veces, la única manera de solucionarlo es tomándose un descanso. Puedes hacerlo tranquilamente; la partida seguirá ahí dentro de diez minutos. De hecho, también seguirá ahí mañana.

Una de las características por las que el poker es un juego tan fascinante es la gran variedad de enfoques, estilos y formas de jugar diferentes. La mayoría de los estilos se pueden desglosar en una combinación de los siguientes:. Piensa en tu propio enfoque cuando juegues al poker.

Si tu respuesta es "todos y ninguno", estás en lo cierto. La habilidad para "cambiar de marcha" y alternar entre varios estilos en la mesa de poker es sumamente útil, ya que si te apegas demasiado a un mismo estilo, te volverás predecible.

No obstante, recomendamos a los jugadores que están iniciándose en el poker que intenten centrarse en la combinación "conservador-agresivo". Adoptar este estilo te permitirá sentirte cómodo al apostar agresivamente, lo cual es fundamental para el éxito a largo plazo; al mismo tiempo, intentar jugar sobre todo manos buenas antes del flop te ayudará a disciplinarte y te evitará demasiadas situaciones difíciles con manos malas.

A medida que vayas ganando experiencia y mejorando tu juego, podrás relajarte y cambiar de estilo, pero siempre debes intentar mantener la agresividad. El dealer, o "botón", normalmente es el último jugador en actuar en una ronda de apuestas.

Actuar último es una ventaja táctica, debido a que ya sabes cómo jugaron tus contrincantes. La posición de dealer cambia en cada mano, así que todos los jugadores compartirán esta ventaja para garantizar un juego equitativo.

Para utilizar esta ventaja táctica a tu favor, normalmente es recomendable jugar más manos mientras estás en una de las "últimas" posiciones p. Los buenos jugadores suelen distender el nivel de exigencia de la mano inicial en las últimas posiciones, ya que el beneficio extra de la posición les brinda más flexibilidad y más opciones durante el desarrollo de la mano.

Si te enfrentas a contrincantes que tienen que actuar antes que tú, se dice que "tienes ventaja" sobre ellos, mientras que ellos "juegan con desventaja".

Esta ventaja puede ser muy importante. Siempre es importante elegir una buena mano, como lo es comprender que a cuantos más jugadores te enfrentes, más posibilidades habrá de que al menos uno de ellos tenga una mano fuerte.

Pero también hay casos en que un engaño oportuno puede hacerte ganar un pozo que, de otro modo, perderías. Cuando un jugador de poker recurre a un engaño, ¿qué intenta conseguir?

Intenta lograr que su contrincante se retire con la mejor mano. Así de fácil. En casi todos los juegos de poker, la mayoría de las manos serán inservibles y querrás retirarte antes del flop, o serán malas y no querrás jugarles demasiadas fichas.

En esos casos, los engaños cobran importancia, ya que te dan una segunda oportunidad de ganar. Un engaño exitoso convencerá a tu contrincante de que tienes cartas ganadoras, por eso es importante tener en cuenta cómo se ven tus jugadas.

Jugador Inteligente de Poker

Related Post

0 thoughts on “Jugadas Inteligentes de Póker”

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *