Algoritmos para um jogador inteligente de Poker



Baixar 1,37 Mb.
Página1/6
Encontro12.07.2018
Tamanho1,37 Mb.
  1   2   3   4   5   6

Universidade Federal De Santa Catarina

Centro Tecnológico

Bacharelado em Ciências da Computação
Algoritmos para um jogador inteligente de Poker”

Autor: Vinícius Sousa Fazio

Florianópolis/SC, 2008

Universidade Federal De Santa Catarina

Centro Tecnológico

Bacharelado em Ciências da Computação
Algoritmos para um jogador inteligente de Poker”

Autor: Vinícius Sousa Fazio
Orientador: Mauro Roisenberg

Banca: Benjamin Luiz Franklin

Banca: João Rosaldo Vollertt Junior

Banca: Ricardo Azambuja Silveira
Florianópolis/SC, 2008
AGRADECIMENTOS
Agradeço a todos que me ajudaram no desenvolvimento deste trabalho, em especial ao professor Mauro Roisenberg e aos colegas de trabalho João Vollertt e Benjamin Luiz Franklin e ao Ricardo Azambuja Silveira pela participação na banca avaliadora.

RESUMO
Poker é um jogo simples de cartas que envolve aposta, blefe e probabilidade de vencer. O objetivo foi inventar e procurar algoritmos para jogadores artificiais evolutivos e estáticos que jogassem bem poker.

O jogador evolutivo criado utiliza aprendizado por reforço, onde o jogo é dividido em uma grande matriz de estados com dados de decisões e recompensas. O jogador toma a decisão que obteve a melhor recompensa média em cada estado. Para comparar a eficiência do jogador, várias disputas com jogadores que tomam decisões baseados em fórmulas simples foram feitas.

Diversas disputas foram feitas para comparar a eficiência de cada algoritmo e os resultados estão demonstrados graficamente no trabalho.
Palavras-Chave: Aprendizado por Reforço, Inteligência Artificial, Poker;


SUMÁRIO


  1. Introdução........................................................................................................12

  2. Fundamentação Teórica..................................................................................15

2.1. Regras do Poker Texas Hold'em................................................................16

2.1.1. Primeira rodada – Pre-flop..............................................................17

2.1.2. Segunda rodada – Flop....................................................................18

2.1.3. Terceira rodada – Turn....................................................................18

2.1.4. Quarta rodada – River.....................................................................19

2.1.5. Fim do jogo – Showdown................................................................19

2.1.6. Rankings..........................................................................................19

2.1.7. Vencedor..........................................................................................21

2.2. Análise do Poker.......................................................................................22

2.3. Jogadores Artificiais Estáticos.................................................................23

2.3.1. Aleatórios........................................................................................23

2.3.2. Constantes.......................................................................................23

2.3.3. Mathematically Fair Strategy - MFS..............................................24

2.3.4. Jean Rachlin e Gary Higgins - RH.................................................24

2.4. Jogadores Artificiais Evolutivos..............................................................25



2.4.1. Aprendizado por Reforço................................................................25

2.4.2. Algoritmo Genético.........................................................................26

2.5. Probabilidade de Vencer...........................................................................26



2.5.1. Força Bruta....................................................................................27

2.5.2. Monte Carlo....................................................................................27

2.6. Outras Soluções.......................................................................................27

  1. Metodologia....................................................................................................29

3.1. Ferramenta e linguagem..........................................................................29

3.2. Treinamento.............................................................................................29

3.3. Verificação de desempenho.....................................................................31

3.4. Implementação dos Jogadores Artificiais................................................31

3.4.1. Aleatórios........................................................................................32

3.4.2. Constantes.......................................................................................32

3.4.3. Mathematically Fair Strategy - MFS..............................................32

3.4.4. Jean Rachlin e Gary Higgins – RH.................................................33

3.4.5. Aprendizado por Reforço................................................................34

3.5. Probabilidade de Vencer............................................................................37

  1. Análise dos Resultados..................................................................................38

4.1. Verificação do método Monte-Carlo.........................................................38

4.2. Quantidade de mesas necessárias para avaliar um jogador.......................39

4.3. Constantes de configuração e evolução do Jogador por Reforço..............40

4.4. Disputas.....................................................................................................43



4.4.1. MFS x Aleatório................................................................................43

4.4.2. MFS x Constante..............................................................................44

4.4.3. Aleatório x Constante.......................................................................44

4.4.4. RH x Aleatório..................................................................................45

4.4.5. RH x Constante.................................................................................46

4.4.6. RH x MFS.........................................................................................47

4.4.7. Reforço x Aleatório..........................................................................48

4.4.8. Reforço x Constante.........................................................................48

4.4.9. Reforço x MFS..................................................................................49

4.4.10. Reforço x RH..................................................................................50

4.4.11. Disputa entre os melhores de cada.................................................50

4.4.12. Reforço x Humano..........................................................................51

  1. Conclusão........................................................................................................52

  2. Referências Bibliográficas.............................................................................54

  3. Anexos.............................................................................................................56

7.1. playpoker.m..............................................................................................56

7.2. compute_victory.h....................................................................................66

7.3. getpower.h................................................................................................68

7.4. pokeronerank.h.........................................................................................73

7.5. pokerrank.h...............................................................................................75

7.6. test_pokerrank.h.......................................................................................77

7.7. createconstantplayer.h..............................................................................79

7.8. creatediscreteplayer.h...............................................................................80

7.9. createhumanplayer.h................................................................................86

7.10. createmfsplayer.h...................................................................................87

7.11. createrandomplayer.h.............................................................................88

7.12. createrhplayer.h......................................................................................89

7.13. createdatabase.h.....................................................................................90

7.14. traindiscrete.h.........................................................................................91

7.15. filldatabase.m.........................................................................................95

7.16. newsimutationdispute.m........................................................................97

7.17. newsimutationdispute2.m......................................................................99

7.18. simulatealldispute.h.............................................................................100

7.19. simulatehuman.h..................................................................................103

7.20. Artigo...................................................................................................104




LISTA DE FÓRMULAS
Fórmula 1: relação MFS................................................................................................24

Fórmula 2: relação RH..................................................................................................24

Fórmula 3: exemplo de quantidade de combinações em um jogo no flop com sete adversários.....................................................................................................................27

Fórmula 4: recompensa de um jogo...............................................................................32

Fórmula 5: decisão de um jogador MFS.......................................................................33

Fórmula 6: decisão de um jogador RH..........................................................................33

Fórmula 7: decisão do jogador de aprendizado por reforço.........................................34

Fórmula 8: recompensa de uma decisão........................................................................35

LISTA DE TABELAS
Tabela 1: Dimensões do estado do jogo.........................................................................30

Tabela 2: Decisão discretizada.......................................................................................31

Tabela 3: Distribuição da decisão do jogador aleatório...............................................32

Tabela 4: Limites usados pelo algoritmo genético para encontrar boas constantes para o jogador por Reforço.......................................................................................................36

Tabela 5: Exemplo de um Crossover utilizado para ajustar o jogador por Reforço.....37

Tabela 6: Constantes encontradas para ser utilizado pelo Jogador Esforço................42
LISTA DE GRÁFICOS
Gráfico 1: Exemplo de utilização do método Monte-Carlo para calcular a probabilidade de vencer............................................................................................................................39

Gráfico 2: Verificação da quantidade de mesas necessárias para avaliar o desempenho de um jogador..........................................................................................................................40

Gráfico 3: Progresso do jogador com o aumento de informação com a melhor configuração encontrada pelo algoritmo genético..............................................................................41

Gráfico 4: Progresso do jogador com o aumento de informação com a melhor configuração encontrada pelo bom senso...........................................................................................41

Gráfico 5: Jogador MFS x Jogador Aleatório..............................................................43

Gráfico 6: Jogador MFS x Jogador Constante.............................................................43

Gráfico 7: Jogador Aleatório x Jogador Constante.....................................................45

Gráfico 8: Jogador RH x Jogador Aleatório................................................................46

Gráfico 9: Jogador RH x Jogador Constante...............................................................47

Gráfico 10: Jogador RH x Jogador MFS.....................................................................48

Gráfico 11: Jogador Reforço x Jogador Aleatório......................................................48

Gráfico 12: Jogador Reforço x Jogador Constante.....................................................49

Gráfico 13: Jogador Reforço x Jogador MFS.............................................................50

Gráfico 14: Jogador Reforço x Jogador RH...............................................................50

Gráfico 15: Disputa entre todos os jogadores.............................................................51


LISTA DE FIGURAS
Figura 1: Exemplo de uma situação de jogo que o jogador por reforço consulta sua base de conhecimento e decide 2 que significa “continuar no jogo”.......................................35

Figura 2: Exemplo do mapa de conhecimento do jogador por reforço sendo cada ponto um estado do jogo pintado com a decisão a ser tomada....................................................42

1. INTRODUÇÃO
Ninguém sabe ao certo a origem do Poker (WIKIPEDIA POKER, 2008). O jogo mais antigo conhecido que tenha as características de blefe, “vence quem tem a melhor mão” e aposta é do século XV e de origem alemã, chamado Pochspiel. Há registros de pessoas jogando um jogo chamado As Nas no século XIX, que é muito parecido com poker e usa vinte cartas. Alguns historiadores descordam da origem do poker como uma variação do As Nas e acreditam vir de um jogo francês chamado Poque. O ator inglês Joseph Crowell relatou que o jogo era jogado em New Orleans em 1829, com um baralho de vinte cartas e quatro jogadores apostando qual “mão” era a mais valiosa. Logo após isso, o baralho inglês de 52 cartas foi utilizado e durante a Guerra Civil Americana as regras ficaram mais parecidas com as que são utilizadas hoje. Em torno de 1925 começou-se a jogar o poker com cartas comunitárias, que é a modalidade usada neste trabalho. O poker e seus jargões fazem parte da cultura americana. Em 1970 começaram os campeonatos mundiais de poker nos Estados Unidos. Em 1987, o poker com cartas comunitárias foram introduzidos em cassinos da Califórnia e se tornaram a modalidade de poker mais popular até hoje. Em 1998, um filme com o tema de poker chamado “Cartas na Mesa”, em inglês “Rounders”, foi lançado nos Estados Unidos.
Poker é um jogo de risco ou blefe. O espírito do jogo é conseguir convencer o adversário que o seu jogo é mais forte que o dele e tentar adivinhar se o jogo dele é mais forte que o seu. O convencimento é através de apostas. Se você não apostar que seu jogo é melhor que o do seu adversário, o seu adversário vence sem precisar mostrar o jogo. Também é conhecido como jogo de mentiroso, assim como o “truco” no Brasil.
As regras do jogo são bem simples e o jogador não possui informações suficientes para tomar a decisão ótima. Ou seja, é um jogo de informação incompleta e essa é uma característica de muitos problemas relacionados a área de Inteligência Artificial.
Um jogador com muita sorte consegue ganhar todos os jogos sem precisar tomar decisões inteligentes, mas esses casos são raros. Para a maioria das jogadores, Poker envolve alguma decisão inteligente. Isso explica porque bons jogadores de poker ganham mais que jogadores medianos e porque existem jogadores de Poker profissionais. Algumas pessoas afirmam que Poker é um jogo puramente de sorte mas para outras, que escreveram muitos livros a respeito, como David Sklansky, não. Existem muitos livros e artigos publicados a respeito, dezenas de softwares sendo comercializados em que o único propósito é tomar decisões inteligentes em Poker e muitos sites de Poker Online proíbem o uso destes softwares por dar muita vantagem aos jogadores que os utilizam.
O objetivo deste trabalho é procurar e formular algoritmos que tomem decisões inteligentes em poker, especificamente na modalidade Poker Texas Hold'em, que é a modalidade mais popular de Poker. Para esse objetivo ser cumprido foi necessário implementar diversos algoritmos e como resultado foi mostrado neste trabalho cinco diferentes estratégias. A primeira estratégia foi um jogador aleatório, que decide qualquer coisa sem levar em conta o estado do jogo. A segunda foi o jogador constante, que toma uma decisão constante, também sem se importar com o estado do jogo. A terceira estratégia, nomeada MFS, foi utilizar uma fórmula que faz uma relação linear com algumas informações do jogo, que são: com a quantidade de dinheiro apostado, a quantidade de dinheiro que possa vir a receber caso vença, a probabilidade de vencer e a probabilidade de perder. A quarta estratégia, nomeada RH, foi também utilizar outra fórmula que é uma relação linear de outras informações do jogo, que são: quantidade de dinheiro que receberá caso vença, a quantidade de jogadores que ainda vão tomar alguma decisão, a quantidade de jogadores não fugiram, a quantidade de dinheiro que precisa pagar para continuar no jogo e a quantidade de vezes que alguém aumentou a aposta. A última estratégia, nomeada jogador de aprendizado por reforço, foi armazenar milhões de decisões e recompensas em diferentes estados do jogo através de simulações e, quando for tomar uma decisão, consultar essa base de dados por todas as decisões feitas em um estado semelhante e tomar a decisão que obteve o melhor resultado, na média. Esta última estratégia precisava de muitas constantes para ajustar a “semelhança do estado do jogo” e para encontrar estas constantes foi utilizado Algoritmo Genético.
Para medir o desempenho dos jogadores foi feito uma comparação de quantidade de vitórias disputando as diferentes estratégias uma com a outra além de jogadores humanos testarem os jogadores artificiais. As disputas foram feitas utilizando diferentes configurações dos jogadores artificiais.
A justificativa para esse trabalho não é apenas criar um bom jogador de poker. A motivação é testar e comparar diferentes algoritmos de para jogar poker e testar um novo algoritmo de aprendizado para solucinar um problema com informação incompleta em um domínio relativamente simples que é o poker. Uma boa solução pode servir de inspiração para resolver problemas mais genéricos relacionados a barganha, que é o espírito do poker, como a bolsa de valores.
O trabalho está estruturado em cinco capítulos, sendo este - a introdução – o primeiro. O próximo capítulo fará uma revisão bibliográfica de teorias e métodos que serão usadas no trabalho. No terceiro capítulo, há todos os métodos utilizados em detalhes. O quarto capítulo mostra os resultados obtidos pelos métodos utilizados e uma interpretação destes resultados. O último capítulo contém uma revisão dos resultados obtidos e sugestões de trabalhos futuros.
2. FUNDAMENTAÇÃO TEÓRICA
A área da inteligência artificial que estuda jogos é uma das áreas mais antigas da computação. Segundo (LUGER; STUBBELFIELD, 1998):
Game playing is also one of the oldest areas of endeavor in artificial intelligence. In 1950, almost as soon as computers became programmable, the first chess programs were written by

Claude Shannon (the inventor of information theory) and by Alan Turing. Since then, there has been steady progress in the standard of play, to the point where current systems can challenge the human world champion without fear of gross embarrassment.

(...)

But what makes games really different is that they are usually much too hard to solve. Chess, for example, has an average branching factor of about 35, and games often go to 50 moves by each player, so the search tree has about 35100 nodes (although there are 'only' about 1040 different legal positions). Tic-Tac-Toe (noughts and crosses) is boring for adults precisely because it is easy to determine the right move. The complexity of games introduces a completely new kind of uncertainty that we have not seen so far; the uncertainty arises not because there is missing information, but because one does not have time to calculate the exact consequences of any move. Instead, one has to make one's best guess based on past experience, and act before one is sure of what action to take. In this respect, games are much more like the real world than the standard search problems we have looked at so far.
Jogar é uma das áreas de esforço da inteligência artificial. Em 1950, logo após os computadores se tornarem programáveis, o primeiro programa de xadrez foi escrito por Claude Shannon (o inventor da teoria da informação) e por Alan Turing. Desde então, tem ocorrido um sólido progresso nos padrões de jogar, ao ponto em que os sistemas atuais podem desafiar campeões mundiais humanos sem medo de constrangimento.

(...)

Mas o que faz os jogos realmente diferentes [de outros problemas da inteligência artificial] é que eles são geralmente muito mais difíceis de resolver. Xadrez, por exemplo, tem um fator de expansão de 35, e jogos frequentemente vão a 50 movimentos por jogador, então a árvore de pesquisa tem aproximadamente 35100 nodos (apesar de existir 'apenas' 1040 diferentes posições permitidas). Jogo da velha é entediante para adultos precisamente porque é fácil determinar o movimento correto. A complexidade dos jogos introduz um tipo de incerteza completamente novo que não vimos ainda; a incerteza acontece não por falta de informação mas porque não há tempo de calcular a exata consequência de qualquer movimento. Ao invés disso, alguém deve fazer o melhor tentativa baseado em experiência passada, e agir antes de ter certeza de qual ação tomar. Dessa maneira, jogos são muito mais como o mundo real que os problemas de busca comuns que vimos até agora.“.
Portanto, jogos são um grande estímulo na área de inteligência artificial para descobrir novas soluções para problemas que podem ser generalizados e aplicado para resolver outros problemas do cotidiano já que os problemas do cotidiano tem características de problemas de jogos. Decidir o preço de um produto é um exemplo de um problema que poderia ser resolvido através de uma solução semelhante à solução do Poker porque ambos precisam tomar decisões que podem ser rentáveis ou não e ambos contêm informações incompletas.
2.1. Regras do Poker Texas Hold'em
Poker é um jogo com regras simples e isso foi um dos motivos de ter se tornado tão popular (POKERLOCO, 2008). O objetivo do jogo é ganhar mais dinheiro. Todos os jogadores apostam dinheiro e o jogador que tiver o melhor jogo no final recebe todo o dinheiro. O jogo deve ter no mínimo dois jogadores e é possível até vinte e dois jogadores. O aconselhável é até dez jogadores.
Existem diversas modalidades de aposta, divididas em dois grandes grupos: Limit e No-Limit. A modalidade Limit tem algum tipo de limite pré-estabelecido de aposta enquanto a No-Limit a aposta pode ir até a quantidade de dinheiro disponível para o jogador apostar.
No começo do jogo, cada jogador recebe duas cartas que somente o dono das cartas pode ver. Um jogo é dividido em quatro rodadas. Em todas as rodadas, o primeiro a jogar é o jogador à esquerda de quem distribuiu as cartas. O segundo a jogar é a esquerda do primeiro a jogar, e assim sucessivamente. O que fazer em cada rodada é explicado a seguir.
2.1.1. Primeira rodada – Pre-flop
O primeiro a jogar é o Small Blind que significa que ele é obrigado a apostar a aposta mínima. O valor da aposta mínima é combinada entre os jogadores antes de começar o jogo. Segue o jogo para o segundo a jogar, a esquerda do último que jogou. Ele é o Big Blind que significa que ele é obrigado a apostar o dobro da aposta mínima. Segue o jogo para o próximo a jogar, a esquerda do último a jogar. Agora ele tem três alternativas:
1. Fugir - Fold: Ele abandona o jogo, não tendo direito a nenhum prêmio e perde o que já apostou. Além disso, esse jogador não pode mais tomar nenhuma decisão no jogo.
2. Continuar no jogo - Call ou Check: Para continuar no jogo, ele tem que ter apostado a mesma quantidade de dinheiro que o jogador que mais apostou. O termo Call é quando você precisa pagar alguma coisa para continuar no jogo. O termo Check é quando você pode continuar no jogo sem pagar nada. Por exemplo: se o primeiro jogador apostou 5, o segundo 10, o terceiro, para continuar no jogo, precisa apostar 10. Nesse caso é um Call.
3. Aumentar a aposta - Raise ou Bet: Para aumentar a aposta, ele deve apostar o necessário para continuar no jogo e mais o que ele quiser aumentar. O termo Bet é quando você não precisa pagar nada para aumentar a aposta. O termo Raise é quando você precisa pagar alguma coisa antes de aumentar a aposta. Por exemplo: se o primeiro jogador apostou 5, o segundo 10, o terceiro deve apostar mais que 10 para estar aumentando a aposta. Nesse caso é um Raise. Existe um tipo especial de aumento de aposta chamado All-In. Acontece quando o jogador aposta tudo o que tem. Ele pode usar esse recurso quando a quantidade de dinheiro que ele precisa apostar para continuar no jogo é maior que a quantidade de dinheiro disponível para ele. Apostando tudo, ele pode continuar no jogo, mas a distribuição do prêmio é diferenciada. Será explicada na sessão 'Vencedor'.
Todos os jogadores tem a vez de jogar, em ordem. Toda vez que algum jogador aumenta a aposta, o jogo continua em ordem até que todos tenham pagado a aposta ou fugido. Toda vez que um jogador vai pagar a aposta, ele pode tomar qualquer uma das três decisões acima, que é fugir, pagar a aposta ou aumentar ainda mais a aposta, fazendo com que todos tenham que pagar novamente esse aumento de aposta. Se nenhum jogador precisar pagar nada para continuar no jogo e todos os jogadores já jogaram, a rodada acaba. Senão, segue o próximo jogador.
Exemplo da primeira rodada: Um jogo de 4 jogadores. O primeiro é Small Blind e apostou 5. O segundo é “Big Blind” e apostou 10. O terceiro decidiu continuar no jogo: apostou 10. O quarto decidiu aumentar a aposta: apostou 30. O primeiro, para continuar no jogo deve apostar 25 (como ele já apostou 5 no small blind, 5 + 25 = 30). Ele aposta 40, totalizando uma aposta de 45. O segundo, para continuar no jogo deve apostar 35 (10 + 35 = 45). Ele decide fugir, deixando os 10 que ele já apostou na mesa. O terceiro deve apostar 35 para continuar no jogo (10 + 35 = 45). Ele decide continuar no jogo, apostando 35. O quarto deve apostar 15 para continuar no jogo (30 + 15 = 45). Ele decide aumentar, apostando 20, totalizando 50 (30 + 20 = 50). O primeiro, para continuar no jogo, deve apostar 5 (45 + 5). Ele aposta 5, continuando no jogo. O segundo já fugiu e não tem direito a nada. O terceiro deve apostar 5 para continuar no jogo. Ele aposta 5, continuando no jogo. Como ninguém precisa pagar mais nada para continuar no jogo, vai para a próxima rodada
2.1.2. Segunda rodada – Flop
No começo da rodada, o jogador que deu as cartas coloca três cartas do baralho na mesa para que todos possam ver.
O jogador à esquerda de quem deu as cartas tem as mesmas três alternativas da primeira rodada. Como ninguém apostou nada ainda, se ele quiser continuar no jogo ele não precisa pagar nada, fazendo um Check. Os critérios para acabar a rodada são os mesmos da primeira rodada. O primeiro a aumentar a aposta fará um Bet, pois ele estará aumentando a aposta sem precisar pagar nada para continuar no jogo. O resto da rodada segue como na primeira rodada.
2.1.3. Terceira rodada – Turn
No começo da rodada, o jogador que deu as cartas coloca mais uma carta do baralho na mesa para que todos possam ver. Segue o jogo como no Flop.
2.1.4. Quarta rodada - River
No começo da rodada, o jogador que deu as cartas coloca mais uma carta do baralho na mesa para que todos possam ver. Segue como no Turn.
2.1.5. Fim do jogo - Showdown
Todos os jogadores que não fugiram mostram suas cartas e declaram o seu jogo. Seu jogo é o melhor jogo formado por cinco cartas das sete disponíveis (cinco cartas da mesa mais duas cartas que recebeu no começo do jogo).
2.1.6. Rankings
O ranking é o valor de um conjunto de cinco cartas. Quase todos os Ranking dependem da “maior carta”. A ordem das cartas são, em ordem decrescente: A, K, Q, J, 10, 9, 8, 7, 6, 5, 4, 3, 2, A. O 'A' aparece duas vezes porque ele é considerado a menor carta somente no caso de 'seqüência' de A, 2, 3, 4, 5. O ranking 'seqüência' será explicado abaixo. O jogador com o melhor ranking vence o jogo. Os rankings, em ordem crescente, são:
I. Maior carta - High Cards: Cinco cartas diferentes. A maior carta vence. Por exemplo: K,8,2,4,5 é mais forte que Q,10,J,8,7. No caso de empate de maior carta, a segunda maior, e assim sucessivamente. Por exemplo: J,7,6,5,3 é mais forte que J,7,6,5,2. O número de combinações possíveis desse ranking é 1.302.540.
II. Um par - One Pair: Par é duas cartas com o mesmo número e três cartas diferentes. Por exemplo: K,K,5,2,3 é par de K. 5,5,A,6,3 é par de 5. No caso de empate de par, o par maior ganha. Por exemplo: K,K,4,2,8 é mais forte 5,5,A,K,Q. No caso de empate de par, a maior carta das 3 que restaram vence. Em caso de empate da maior, a segunda maior, e assim sucessivamente. Por exemplo: 5,5,K,7,3 é mais forte que 5,5,Q,J,10. 7,7,K,J,3 é mais forte que 7,7,K,J,2. O número de combinações possíveis desse ranking é 1.098.240.
III. Dois pares - Two Pairs: Dois pares e uma carta diferente. Por exemplo: K,K,5,5,3 é par de K e 5. 5,5,A,A,3 é par de 5 e A. No caso de empate de dois pares, o par maior ganha. No caso de empate de maior par, o segundo maior par ganha. Por exemplo: K,K,4,4,8 é mais forte K,K,3,3,Q. No caso de empate de dois pares, a maior carta da carta que sobrou vence. Por exemplo: 5,5,3,3,4 é mais forte que 5,5,3,3,2. O número de combinações possíveis desse ranking é 123.552.
IV. Trio - Three Of A Kind: Trio é três cartas com o mesmo número e duas cartas diferentes. Por exemplo: J,J,5,J,3 é trio de J. A,A,A,4,3 é trio de A. No caso de empate de trio, o trio maior ganha. Por exemplo: A,A,A,4,8 é mais forte K,K,K,3,Q. No caso de empate de trio, a maior carta das 2 que sobraram vence. No caso de empate, a segunda maior carta que sobrou vence. Por exemplo: 5,5,5,7,4 é mais forte que 5,5,5,7,2. O número de combinações possíveis desse ranking é 54.912.
V. Seqüência – Straight: Seqüência são cinco cartas na seqüência de número. Por exemplo: A,2,3,4,5 é seqüência de 5. 7,8,9,10,J é seqüência de J. No caso de empate de seqüência, a seqüência com a maior carta vence. Por exemplo: 3,4,5,6,7 vence de A,2,3,4,5. O A é considerado a menor carta somente no caso de seqüência de A, 2, 3, 4, 5. O número de combinações possíveis desse ranking é 10.200.
VI. Naipes iguais – Flush: Cinco cartas diferentes com naipes iguais. Por exemplo: 3, 7, 2, 6, 8 de copas é flush de 8. 6, 9, 10, K, 2 de paus é flush de 8. No caso de empate de flush, a maior carta vence. No caso de empate de maior carta, a segunda maior, e assim sucessivamente. Por exemplo: A, 7, 5, 4, 3 é maior que K,K, J, Q, 10. Note que o último jogo tem também um par. Mas como o flush é maior que o par, o par é ignorado. O número de combinações possíveis desse ranking é 5.108.
VII. Trio e par - Full House: Três cartas com o mesmo número e duas com o mesmo número. Por exemplo: K,K,K,J,J é full house de K. 5,5,5,Q,Q é full house de 5. No caso de empate de full house, o full hose com o maior trio vence. No caso de empate de trio, o maior par vence. Por exemplo: 5,5,5,2,2 vence de 4,4,4,K,K. 8,8,8,A,A vence de 8,8,8,K,K. O número de combinações possíveis desse ranking é 3.744.
VIII. Quadra - Four Of A Kind: Quatro cartas com o mesmo número e uma carta diferente. Por exemplo: K,K,K,K,J é quadra de K. 5,5,5,5,Q é quadra de 5. No caso de empate de quadra, a quadra maior vence. Por exemplo: 5,5,5,5,2 vence de 2,2,2,2,K. No caso de empate de quadra, a maior carta restante vence. Por exemplo: 7,7,7,7,8 vence de 7,7,7,7,6 O número de combinações possíveis desse ranking é 624.
IX. Sequência com naipes iguais - Straight Flush: O maior ranking do poker. Cinco cartas em seqüência com o mesmo naipe. Por exemplo: 3,4,5,6,7 de ouro é um Straight Flush de 7. 10, J, Q, K, A de espada é um straight flush de A, também conhecido como royal straight flush, que é o maior jogo possível do poker. No caso de empate de straight flush, a maior carta vence. Por exemplo: 7,8,9,10,J de ouro é maior que 6,7,8,9,10 de paus. O número de combinações possíveis desse ranking é 36.
2.1.7. Vencedor
Se sobrar apenas um jogador quando todos os jogadores fugirem, o jogador que não fugiu, em qualquer rodada, vence o jogo. Senão, o jogador com o jogo mais forte vence. Toda aposta é colocada em um monte comum chamado Pot. O jogador que vence recebe o Pot. Em caso de empate, os vencedores dividem todo o dinheiro Pot. Em caso de algum jogador ter apostado tudo o que tinha, ou seja all-in, o pot é dividido. Em um pot fica apenas o dinheiro que foi apostado até o all-in. Em outro monte fica o restante, em aposta separada.
Por exemplo: O jogador A aposta 50, o jogador B tem apenas 30 e anuncia 'all-in' apostando todo o seu dinheiro, que é 30. Nesse momento, o pot é dividido. O primeiro pot fica todas apostas até o momento mais 30. No segundo pot ficará as apostas que o jogador B não pode apostar, ou seja, 50-30 = 20. O jogador C quer continuar no jogo, então ele coloca 30 no primeiro pot e 20 no segundo pot. Digamos que o jogador B venceu. Ele leva todo o pot que ele tinha direito, ou seja, o primeiro pot. O segundo pot, que tem 40, é disputado pelos jogadores que apostaram nele, ou seja jogador A e C. Dentre os dois, digamos que A tem o melhor jogo. Então A ganha o segundo pot.
2.2. Análise do Poker
Poker é um jogo de informação incompleta. Isso significa que você precisa tomar decisões com informações que são insuficientes para garantir que você tomou a melhor ou a pior decisão. Jogos de informação completa seriam o xadrez, a damas ou o jogo da velha: todas as informações para fazer a melhor jogada estão disponíveis para os jogadores. Os jogadores de xadrez só não tomam a melhor decisão possível no jogo porque exigiria muitos cálculos, mas todas as informações para fazê-lo estão disponíveis. No Poker, é impossível garantir que a decisão tomada é a melhor decisão possível devido a informação incompleta, mas pode ser possível tomar mais decisões boas que ruins. Um grande jogador de poker chamado Sklansky escreveu o Teorema Fundamental do Poker de Sklansky (SKLANSKY, 1995):
Sklansky's Fundamental Theorem of Poker:

Every time you play a hand differently from the way you would have played it if you could see all your opponents' cards, they gain; and every time you play your hand the same way you would have played it if you could see all their cards, they lose. Conversely, every time opponents play their hands differently from the way they would have if they could see all your cards, you gain; and every time they play their hands the same way they would have played if they could see all your cards, you lose.

Teorema Fundamental do Poker de Sklansky:

Toda vez que você joga uma mão diferentemente da maneira que você jogaria caso pudesse ver as cartas de seus oponentes, eles ganham. E toda vez que você joga sua mão do mesmo jeito que você teria jogado caso pudesse ver todas as cartas de seus oponentes, eles perdem. Inversamente, toda vez que seus oponentes jogam suas mãos diferentemente da maneira que eles teriam jogado caso pudessem ver todas suas cartas, você ganha, e toda vez que eles jogam suas mãos da mesma maneira que eles teriam jogado caso pudessem ver todas suas cartas, você perde. “
Ou seja, se você tivesse a informação completa em poker, você sempre venceria. E se o adversário tivesse a informação completa, ele venceria. A melhor forma de vencer, portanto, é tentar obter informação completa e dificultar o máximo o adversário de obter essa informação.
As maneiras de se obter mais informação são através de estatística, através de subjetividade e através de trapaças. Criar um jogador artificial que colete informações subjetivas é extremamente complexo, só é válida quando se joga contra humanos e mesmo assim pode ser inviável. Seria criar um algoritmo que tivesse empatia de como está o jogo do adversário ou percebesse que o adversário está mentindo, nervoso, muito alegre, com medo, desatento ou outras emoções através de uma entrada de vídeo e som. É realmente complexo porque muitos seres humanos não conseguem distinguir essas informações, muito menos criar algoritmos que as identifique, não sejam enganados e saiba como lidar com elas. É inviável obter esse tipo de informação quando se joga na internet, onde não se tem acesso a um vídeo nem a voz dos adversários. A solução de trapaça é uma solução ilegítima pois quebra as regras do jogo. A solução de obter informações estatísticas seria utilizar a experiência de muitos jogos, a experiência do comportamento mais comum de determinado jogador para saber a probabilidade de blefar ou não e informações concretas como as cartas, as cartas na mesa, o dinheiro apostado na mesa, os jogadores que ainda estão em jogo, a quantidade de jogadores, dinheiro necessário para continuar no jogo.
2.3. Jogadores Artificiais Estáticos
Jogadores que tomam decisões baseado em uma função imutável são os jogadores estáticos. São simples e são ótimas referências para comparação com jogadores treinados.
2.3.1. Aleatórios
Esse jogador é um dos mais simples possíveis. Simplesmente jogam aleatoriamente, não se importando com o que está acontecendo no jogo.
2.3.2. Constantes
Esses também são bem simples. Eles tomam sempre a mesma decisão, não se importando com o que está acontecendo no jogo.
2.3.3. Mathematically Fair Strategy - MFS
Mathematically Fair Strategy (FINDLER, 1977) é um tipo de jogador que joga justo em relação a probabilidade de vencer. Ele aposta proporcional a probabilidade e ao POT. A relação MFS é obtido por pela fórmula:


Fórmula 1: relação MFS
Onde é a probabilidade do jogador vencer, é a probabilidade do jogador perder, é a soma de aposta feita pelos adversários e é a soma de aposta feita pelo jogador. Se for negativa, a decisão a ser tomada é FOLD. Se for próxima de zero, a decisão a ser tomada é CALL / CHECK. Se for positiva, a decisão a ser tomada é RAISE / BET proporcional a
2.3.4. Jean Rachlin e Gary Higgins - RH
Esse tipo de jogador (FINDLER, 1977) foi gerado a partir de um estudo estatístico de dois estudantes: Jean Rachlin e Gary Higgins. Eles chegaram a conclusão que na maioria dos jogos, a chance de um jogador vencer não depende das cartas em suas mãos e sim de outras variáveis, algumas diretamente proporcionais e outras inversamente proporcionais. Eles chegaram na seguinte fórmula:


Fórmula 2: relação RH
Onde é o POT, é o RAISE, é a quantidade de jogadores que não fugiram, é a quantidade de jogadores que precisam tomar alguma decisão antes de acabar a rodada e é a quantidade de vezes que alguém decidiu RAISE / BET. Se for muito baixo, a decisão a ser tomada é FOLD. Se for razoável, deve-se decidir CALL / CHECK. Se for alto, deve-se decidir RAISE / BET. Ou seja, a probabilidade de vencer é proporcional ao dinheiro apostado e inversamente proporcional as outras variáveis contidas na fórmula.
2.4. Jogadores Artificiais Evolutivos
Ao contrário de jogadores estáticos, esses jogadores aprendem com a experiência. A função de decisão é mutável de acordo com um banco de dados de experiência. Essa experiência pode ter informações sobre um jogador específico, que é uma boa estratégia partindo da hipótese de que jogadores de poker tendem a jogar da mesma maneira. O banco pode ter também informações sobre situações de jogos em que o jogador adversário não é levado em conta na função de decisão, o que é o torna um jogador mais completo e genérico.
2.4.1. Aprendizado por Reforço
Aprendizado por reforço (SUTTON; BARTO, 2008, WIKIPEDIA REINFORCEMENT LEARNING, 2008) é uma forma de programar agentes para aprender baseado em recompensas. É um tipo de aprendizado não supervisionado. No aprendizado supervisionado, o agente tem uma série de exemplos de ações e suas conseqüências que o agente deve usar para aprender. No aprendizado não supervisionado, o agente toma decisões aleatórias e registra a reação do meio ambiente, as recompensas. Em alguns casos, as recompensas a longo prazo devem ser consideradas. Depois de alguma experiência com o meio ambiente, o agente pode tomar decisões baseado nas recompensas. Se em determinada situação o agente obteve bastante recompensa ao tomar determinada decisão, ele tomará essa decisão.

Existem dois tipos de aprendizados por reforço basicamente: o aprendizado passivo e o ativo. No aprendizado passivo, o agente sempre toma decisões aleatórias no período de aprendizado para obter bastante informação. Esse tipo de aprendizado normalmente demora mais para convergir para um bom resultado mas normalmente converge para resultado melhores. No aprendizado ativo, o agente aprende utilizando o conhecimento já adquirido para tentar agir bem desde o começo. Nesse tipo de aprendizado, o agente normalmente converge mais rápido para uma boa solução mas normalmente não converge para uma solução tão boa quanto o aprendizado passivo.


2.4.2. Algoritmo Genético
Algoritmo genético é um método de busca da computação inspirado na genética. O algoritmo genético exige uma função de fitness, que é uma função que informa o quão perto do melhor resultado aquela entrada está. Depois de definida a função é gerado uma população inicial, que é normalmente gerada aleatoriamente. A população é um conjunto de indivíduo, que é uma entrada para a função de fitness. O próximo passo é avaliar toda a população na função de fitness porque os melhores tendem a ser escolhidos para a reprodução, através do algoritmo de seleção. A reprodução é pegar dois indivíduos da população e gerar um novo indivíduo com uma parte dos valores de cada um dos dois indivíduos através do algoritmo de reprodução. Na reprodução pode haver mutação, que é um valor aleatório colocado no indivíduo gerado que não era de nenhum dos dois indivíduos geradores. A população segue reproduzindo até encontrar um indivíduo com um valor aceitável na função de fitness ou até que outra condição qualquer aconteça, como um limite na quantidade de reproduções seja atingido, e isso é a condição de parada (HOLLAND, 1972, RUSSEL; NORVIG, 1995).

As implementações variam pela escolha de representação de um indivíduo, função de fitness, algoritmo de reprodução, probabilidade de mutação, algoritmo de seleção e a condição de parada. Em geral, o algoritmo genético consegue bons resultados com uma busca muito menor que uma busca aleatória ou uma busca de por todos os casos.


2.5. Probabilidade de Vencer
Calcular a probabilidade de vencer em poker exige um método porque não é um cálculo intuitivo. É essencial que o método seja ao mesmo tempo preciso e rápido de calcular porque no treinamento de jogadores evolutivos é necessário fazer esse cálculo milhares e até milhões de vezes. Não foi encontrado um algoritmo ótimo para esse cálculo. Considerando, por exemplo, o flop. Três cartas na mesa, sete adversários. Para calcular a chance de vencer é nesssário considerar quais cartas podem ver ainda no turn e no river além das cartas de cada um dos sete jogadores.
2.5.1. Força Bruta
Esse método é preciso ao extremo e lento ao extremo também. Ele simplesmente considera todas as possibilidades e verifica a taxa de vitórias. No flop com sete adversários, a quantidade de possibilidades, por permutação, é:


Fórmula 3: exemplo de quantidade de combinações em um jogo no flop com sete adversários
Considerando que, segundo experimentos bem otimizados, um computador comum consegue calcular cerca de mil probabilidades de vencer por segundo, e supondo que fosse utilizado um bilhão de computadores em paralelo para fazer o cálculo, e cada vez que fosse necessário calcular por força bruta a probabilidade de vencer, seria necessário 31 anos para apenas um cálculo. Por isso, essa solução é inviável.
2.5.2. Monte Carlo
Esse método (WIKIPÉDIA MÉTODO DE MONTE CARLO, 2008) é parecido com o método força bruta com a vantagem de ser extremamente rápido. É um método estatístico para aproximar funções complexas. Utilizando-a na probabilidade de vencer, ao invés de testar todas as possibilidades por força bruta até chegar na proporção exata de vitórias e derrotas, é feito apenas alguns testes aleatórios até que a proporção de vitórias e derrotas se estabilize e varie até uma porcentagem tolerante. Segundo experimentos, uma simulação de apenas mil jogos tem como resultado uma probabilidade de vencer com uma margem de erro de menos de cinco porcento.
2.6. Outras Soluções
Muitos jogadores artificiais de poker, também conhecidos como pokerbots, já foram desenvolvidos. Existem até torneios (JOHANSON, 2007) de pokerbots, como o 2007 AAAI Computer Poker Competition No-Limit event ocorrido no ano de 2007. Por exemplo Vexbot é um pokerbot desenvolvido pelo University of Alberta Computer Poker Research Group, que utiliza o algoritmo minimax (POKERAIWIKI, 2008). Hyperborean07, outro bot, foi o vencedor do 2006 AAAI Computer Poker Competition No-Limit event, e utiliza - Nash Equilibrium, que é baseado em Nash-Equilibrium. O Nash-Equilibrium é um conjunto de estratégias utilizadas por cada jogador em que ninguém tenha vantagem em mudar (NISAN et al., 2007).
Segue a lista de alguns pokerbots disponíveis no mercado, gratuitos ou pagos, acessado 08 de setembro de 2008 (POKERAIWIKI, 2008):


  • Advanced Poker Calculator: http://www.prohibitedpoker.com

  • BluffBot: http://www.bluffbot.com/online/play.php

  • GoldBullion: http://www.cbloom.com/poker/GoldBullion.html

  • Holdem Hawk: http://www.holdemhawk.com

  • Holdem Pirate: http://www.holdempirate.com

  • Holdem Inspector a.k.a. Online Holdem Inspector: http://www.pokerinspector.com

  • Magic Holdem: http://www.magicholdem.com

  • Mandraker: http://www.cheaplabs.com/uk/Softwares/Mandraker.htm

  • Open Holdem Bot: http://open-holdem-bot.qarchive.org

  • PokerAnalytics: http://www.pokeranalytics.org

  • Poker Android: http://www.pokerandroid.com

  • Poker Bot+: http://pokerbotplus.com

  • Poker Bloodhound: http://www.thepokerhound.com

  • Poker Crusher: http://www.pokercrusher.com

  • Poker Edge: http://www.poker-edge.com

  • Poker Inspector a.k.a. Online Poker Inspector: http://www.pokerinspector.com

  • Poker Mate: http://www.eruditesys.com/PokerMate/index.html

  • Poker Prophecy: http://www.pokerprophecy.com

  • Poker Sherlock: http://www.pokersherlock.com

  • Sit n' Go Brain: http://www.pokerbrains.net/sitandgobrain.html

  • Texas Holdem Bot: http://www.texas-holdem-bot.com

  • WinHoldem: http://www.winholdem.net



  1   2   3   4   5   6


©livred.info 2017
enviar mensagem

    Página principal