Matheus Alves
Esse programa foi implementado a usar a lib pygame para o visual, e numpy para a parte numérica.
Foi baseado no artigo Aplicação de Aprendizado por Reforço no Blackjack: Estudo de Caso de Estimação de Parâmetros, aplicando o problema do BlackJack com alguma partuicularidades:
- Utilização de apenas 18 estados (baseado nas possibilidades de somas)
- O agente não tem ciência de uma das cartas do dealer
- O agente não considera os ases especiais na tomada de decisão
A política do dealer consiste em pegar cartas até ter enquanto não tiver mais que uma mão valendo no mínimo 17. Caso extrapole 21, o dealer perde.
As recompensas são:
- 1000 caso o agente empate ou vença do dealer
- 1000 caso seja pega uma carta e a mão valha 21 ou menos.
- -1000 * |21 - sum| caso o agente pegue uma carta e a mão passe a valer mais que 21, onde sum é o valor da mão
- -1000 * |21 - sum| caso o agente opte por parar, mas mesmo assim perca para o dealer, onde sum é o valor da mão
São mostradas os valores das cartas do dealer e do player. No meio são mostradas as informações da partida atual, como qual época, episódio, e estado da partida, que varia entre:
- Turno do jogador
- Turno do dealer
- Player venceu
- Player perdeu
- Empate
Na direita tem a tabela Q, utilizada no Q Learning, mostrando nas linhas o estado (soma dos valores das cartas), e nas colunas os pesos para as ações, sendo a primeira coluna parar (não pegar mais cartas), e a segunda, continuar pegando cartas.
O artigo trata principalmente da estimação de parâmetros, foram escolhidos resultados expressíveis para a comparação, sendo esses:
α | γ | Média por época - Artigo | Média por época - Trabalho |
---|---|---|---|
0,30 | 0,15 | 52,7 | (44.2) arquivo completo |
0,7273 | 0,1539 | 51,2 | (43.8) arquivo completo |
0,60 | 0,75 | 50,6 | (45.9) arquivo completo |
Foram rodadas 10 épocas de 100 episódios cada.