Algoritmos para um jogador inteligente de Poker



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

3. METODOLOGIA
Foi desenvolvido um programa de jogo de poker na modalidade no-limit que aceita jogadores genéricos, que pode ser um jogador humano – que pega as entradas do teclado, quatro jogadores estáticos – constante, aleatório, MFS e RH, e um jogador evolutivo – aprendizado por reforço. Todos esses jogadores jogam entre si milhares de vezes e de diversas formas possíveis: mesas entre 2 a 10 jogadores e com jogadores aleatoriamente escolhidos tanto no treinamento como na verificação de desempenho dos jogadores. Em todos os jogos, o valor de dinheiro inicial foi 1000 e o valor do small blind foi 10.
3.1. Ferramenta e linguagem
Todos os algoritmos foram implementados em linguagem MatLab® e C. A opção por MatLab foi pela facilidade em trabalhar com matrizes, que foi amplamente utilizado. A opção por C foi para implementar os algoritmos críticos, que exigem grande desempenho, que são o de cálculo de probabilidade de vencer e o treinamento do jogador de aprendizado por reforço. Informações sobre a linguagem MatLab pode ser encontrado em (MATLAB, 2008) e sobre a linguagem C pode ser encontrado em (ECKEL, 2000).
3.2. Treinamento
O treinamento dos jogadores deveria ser rápido para se tornar viável a tentativa de diversas formas de treinamento. A estratégia utilizada para o treinamento com este objetivo foi dividir em duas etapas onde a primeira etapa é feita apenas uma vez e a segunda etapa, que necessita de muitos ajustes, é feita muitas vezes.
A primeira etapa foi registrar um histórico de jogos, decisões e recompensas. Nessa base foi registrado todos as decisões de jogadores com diferentes métodos em vários jogos e a recompensa daquela decisão, que só é preenchida no final do jogo e é replicada para todas as ações que levaram àquele recompensa. A informação contida nessa base é a seguinte:



Nome

Descrição

POT

Soma da quantidade de dinheiro apostado por todos

ODDS

Relação do POT com o dinheiro apostado

RAISE

Quantidade de dinheiro que precisa usar para continuar no jogo

CHANCE

Probabilidade de vencer o jogo quando todos mostram as cartas

ROUND

Em que rodada - pre-flop, flop, turn ou river - o jogo se encontra

FOLLOWERS

Número de jogadores que ainda vão decidir na rodada atual

INGAME

Número de jogadores que não fugiram nem saíram

NPLAYERS

Número de jogadores

QTYRAISE

Quantidade de BET / RAISE feito por todos

Tabela 1: dimensões do estado do jogo
As informações contidas no estado do jogo ainda não comentadas são o ODDS, o FOLLOWERS, o INGAME, o NPLAYERS e o QTYRAISE. ODDS é apenas a relação do dinheiro do POT em relação ao dinheiro apostado, por exemplo, um ODDS igual a 5 significa que tem no POT 5 vezes o valor apostado pelo jogador. O FOLLOWERS indica quantos jogadores ainda vão decidir algo. Isso porque o último a decidir tem vantagem em relação ao primeiro a decidir porque o último já sabe quem aumentou e quem não. INGAME indica quantos jogadores ainda não fugiram. NPLAYERS indica quantos jogadores estão jogando, independente de ter fugido, falido ou ainda estar em jogo. O QTYRAISE indica a quantidade de vezes que algum jogador aumentou a aposta e é importante porque jogos que houveram muito aumento de aposta pode indicar que muitos jogadores estão com boas chances de vencer.
Depois de preenchida essa base de dados com milhares de decisões, foi iniciado a segunda etapa, que consiste em passar para todos os jogadores informações de treinamento que são essas informações do histórico de jogos. Os jogadores estáticos ignoram essa informação assim como os humanos. Um exemplo de uma linha de informação dessa base de dados: primeira rodada, chance de vencer de 30%, POT de 50, ODDS de 3, é necessário pagar 20 para continuar no jogo, foi tomada a decisão de RAISE 40, recompensa de 50.

3.3. Verificação de desempenho


Depois do treinamento foi feito a verificação do desempenho de todos os jogadores. Essa medição foi feita através da comparação de proporção de vitória de cada jogador em centenas de mesas. Uma mesa é um conjunto de jogadores que começam com a mesma quantidade de dinheiro e jogam diversas vezes até que sobre apenas um jogador com dinheiro ou até atingir um número limite de jogos, normalmente em torno de 20, o que acontecer primeiro. O vencedor da mesa é o jogador que tiver mais dinheiro no final.
3.4. Implementação dos Jogadores Artificiais
Cada jogador tem dois tipos de ações: 'tomar uma decisão' e 'treinar'. Na ação 'tomar uma decisão', cada jogador tem como entrada o estado do jogo. O 'estado do jogo' é multidimensional e suas dimensões são as mesmas informações guardadas na base de dados, que são: POT, ODDS, RAISE, CHANCE, ROUND, FOLLOWERS, INGAME, NPLAYERS, QTYRAISE.
Para simplificar a implementação e o treinamento dos jogadores, foi estabelecido que cada jogador tem como saída da ação 'tomar uma decisão' um valor discreto entre 1 e 6, que é a decisão discretizada:


Código

Descrição

1

Fugir

2

Continuar no jogo

3

Aumentar pouco: equivalente a 2 a 4 small blind

4

Aumentar médio: equivalente a 6 a 18 small blind

5

Aumentar muito: equivalente a 20 a 40 small blind

6

Aumentar tudo: all-in

Tabela 2: decisão discretizada
A ação 'treinar' não tem nenhum retorno pois ela apenas altera o estado interno de cada jogador. Note que jogadores humanos e estáticos não fazem nada nessa ação. A entrada dessa ação é um 'estado do jogo', uma 'decisão discretizada' e uma recompensa. A recompensa é definida por :


Fórmula 4: recompensa de um jogo
Onde é a quantidade de dinheiro que o jogador tinha quando acabou o jogo e é a quantidade de dinheiro que o jogador tinha quando começou o jogo.
3.4.1. Aleatórios
Esses jogadores tomam a decisão discretizada aleatória na seguinte proporção:


Proporção

Descrição

11%

Fugir

44%

Continuar no jogo

11%

Aumentar pouco

11%

Aumentar médio

11%

Aumentar muito

11%

Aumentar tudo


1   2   3   4   5   6


©livred.info 2017
enviar mensagem

    Página principal