Estratégia do bot usando IA (Aprendizado por Reforço)
chesterbr opened this issue · comments
Motivação
O bot tem problemas como #240 e #243, que eu poderia resolver, mas outros problemas assim podem surgir no futuro, e além disso, qualquer nova feature (sinais, carta fechada genérica) exige mexer nas estratégias
Idéia
Usar algum sistema de aprendizado por reforço para treinar uma AI para jogar
Obstáculos
- É preciso usar algo cujos dados de treino possam ser lidos por algum código compatível com Android (e Android relativamente antigo)
- Aprendizado por reforço não caminha tão bem com baralhos
** Aprendizados 1 **
Fiz uma tentativa em main...trainingenv (em particular este notebook) usando Keras RL (que é bem antigo, mas tinha exemplos bons na web e no meu curso de ML, e como ele usa Tensorflow por baixo, uma boa chance de usar Tensorflow Lite no jogo); não consegui convergência mesmo mexendo nos parâmetros e simplificando, mas aprendi que:
- Ali eu criei um env do gym que conecta no jogo (como os trainings de Atari fazem); foi interessante, mas na realnNão vale a pena treinar usando o jogo diretamente (é relativamente fácil criar o env no Gym - inclusive poderia usar o Gymnasium, que eu não usei porque o Keras RL parou no tempo)
- Vale olhar como outros jogos com baralho estão lidando com a aleatoriedade
- Vale tentar o pettingzoo ao invés do gym[nasium] por conta de termos 4 jogadores
- Keras RL realmente tá phased out; melhor buscar uma library com exemplos próximos, e, uma vez que consiga uma AI que jogue, pensar em como exportar pro Tensorflow Lite ou mesmo código customizado pra chamar as jogadas
- Vale a pena começar com um caso super simples (jogando uma mão só, sem aumentos ou customizações); o importante é convergir de alguma forma.