“Algoritmos Para Um Jogador Inteligente De Poker” Autor: Vinícius
Total Page:16
File Type:pdf, Size:1020Kb
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. Algoritmos para um jogador inteligente de Poker – Vinícius Sousa Fazio 4 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; Algoritmos para um jogador inteligente de Poker – Vinícius Sousa Fazio 5 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 3. 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 Algoritmos para um jogador inteligente de Poker – Vinícius Sousa Fazio 6 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 4. 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 5. Conclusão........................................................................................................52 6. Referências Bibliográficas.............................................................................54 7. 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 Algoritmos para um jogador inteligente de Poker – Vinícius Sousa Fazio 7 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