Algoritmos para um jogador inteligente de Poker



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

Tabela 4: Limites usados pelo algoritmo genético para encontrar boas constantes para o jogador por Reforço
A função fitness é a soma da quantidade vitórias diversas disputas, cada disputa com dez mesas, com o Jogador por Reforço usando 10 milhões de dados preenchidos na sua matriz interna. Foram usadas sete disputas, uma contra o jogador MFS com constante T = 1, uma contra o MFS com T=5, uma contra o Jogador Aleatório, uma contra o Jogador Constante que decide “continuar”, uma contra o Jogador Constante que decide “aumentar muito”, uma contra o Jogador RH com constante T=0,1 e uma contra o Jogador RH com T=0,001. O resultado da função fitness é a soma ponderada de vitórias das disputas com peso 2 contra o Jogador MFS, peso 1 contra o Jogador Constante, peso 1 contra o Jogador RH e peso 4 contra o Jogador Aleatório.
A população tem tamanho 10 e a reprodução é feita na seguinte proporção: os 2 melhores sobrevivem para a próxima geração, 1 é mutação e 7 são produtos de crossover (Tabela 5).





Pot

Chance

Raise

Odds

QtyRaise

Followers

Ingame

Nplayers

LQ

BQ

Pai 1

14

5

7

9

1

4

3

8

3

7

Pai 2

27

20

3

2

4

1

2

3

5

10

Filho

27

20

7

9

1

1

3

3

3

7

Tabela 5: Exemplo de um Crossover utilizado para ajustar o jogador por Reforço.
A função de seleção escolhida foi a stochastic uniform (MATLAB, 2008). Essa função gera uma linha onde cada indivíduo tem um pedaço da linha proporcional ao fitness. Um ponto aleatório da linha é selecionado e o indivíduo que estiver naquela faixa da linha é o primeiro pai escolhido. Os outros pais são selecionados pela distribuição uniforme de pontos pela linha, igualmente espaçados.

3.5. Probabilidade de Vencer


Para o cálculo de probabilidade de vencer foi utilizado apenas o método Monte-Carlo pela necessidade de eficiência e pela provável precisão aceitável.

4. ANÁLISE DOS RESULTADOS
O objetivo do trabalho é formular e procurar algoritmos que joguem bem Poker. Para cumprir esse objetivo, foi feito uma comparação de número de vitórias, em porcentagem, com confronto direto entre jogadores com métodos diferentes. Além dos jogadores foi analisado também o método de probabilidade de vitória, que é uma informação disponível para todos os jogadores, tanto no treinamento quanto na analise de desempenho dos jogadores. Para o jogador evolutivo foi feito uma análise um pouco maior, contendo a sua evolução e as constantes usadas.
4.1. Verificação do método Monte-Carlo
O método Monte-Carlo se mostrou eficiente em calcular a probabilidade de vencer com apenas 300 simulações de jogos. Com essa quantidade de simulações, a probabilidade de vencer é obtida com uma margem de erro de 5% aproximadamente. A probabilidade de vencer não sofre grande variação com mais simulações, como mostra o gráfico abaixo. Isso se repete em todas as situações de jogo e com qualquer quantidade de jogadores. A linha em vermelho mostra a regressão linear simples desse gráfico, mostrando que o valor se mantem constante com o aumento no número de simulações. Uma informação que não está sendo mostrada no gráfico é que depois de 100.000 simulações da mesma situação, a probabilidade de vencer se manteve em 33,545%, muito próximo ao valor obtido com 300 simulações.





Gráfico 1: Exemplo de utilização do método Monte-Carlo para calcular a probabilidade de vencer
4.2. Quantidade de mesas necessárias para avaliar um jogador
O método Monte-Carlo também foi usado para encontrar a quantidade de jogos necessários para avaliar o desempenho de um jogador em relação ao outro. O gráfico abaixo, exemplo de resultados dos jogos em relação a quantidade de mesas jogadas, mostra que depois de 100 mesas, a proporção de vitórias permanece aproximadamente constante ao longo de mais mesas, portanto esse foi o valor utilizado para avaliação de desempenho.


G
ráfico 2: Verificação da quantidade de mesas necessárias para avaliar o desempenho de um jogador

4.3. Constantes de configuração e evolução do Jogador por Reforço
Para obter as constantes deste jogador foi utilizado algoritmo genético e tentativas através de bom senso. Uma limitação para o algoritmo genético foi a função de fitness pois foi considerado apenas 10 mesas para avaliar o desempenho de um conjunto de constantes. Segundo o Gráfico 2, uma disputa de 10 mesas é muito instável e pode ter levado a busca genética ao fracasso. Por outro lado, se fosse usado 100 mesas, o tempo para executar a busca genética seria cerca de vinte dias. A limitação da tentativa através do bom senso é a pouca quantidade de tentativas. Enquanto o algoritmo genético testou milhares de combinações de constantes, a tentativa através do bom senso se limita a poucas dezenas. Os resultados foram interessantes porque o algoritmo genético encontrou uma boa configuração de constantes para a quantidade de dados utilizada na busca. Porém, quando a quantidade de dados aumenta, o jogador piora o desempenho. A busca pelo bom senso obteve uma boa configuração de maneira gradual e contínua mas também houve piora no desempenho a partir de uma quantidade de informação. O erro nos gráficos é a soma da proporção de derrotas da função de fitness.





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





Gráfico 4: Progresso do jogador com o aumento de informação com a melhor configuração encontrada pelo bom senso
As constantes encontradas por cada método foram:



1   2   3   4   5   6


©livred.info 2017
enviar mensagem

    Página principal