/tetRL.io

Primary LanguagePython

tetRL.io

Sobre o Projeto

O tetRL.io é o projeto final da disciplina de Introdução à Multimídia, do Centro de Informática da Universidade Federal de Pernambuco, o CIn - UFPE. A ideia do projeto é desenvolver um algoritmo de Reinforcement Learning para um single agent jogar o famoso jogo de Tetris. Nesse projeto, a engine de Tetris usada é feita pelo próprio código em Python, porém a renderização da interface é feita no Browser. Para isso, utilizamos da base do tetr.io, um outro projeto de nossa equipe para a disciplina de Engenharia de Software do CIn, e criamos um repositório mais simples que apenas renderizasse o grid do Tetris e apresentasse alguns dados do treinamento da rede, o web-tetRL.io. Mais detalhes da implementação da interface estão disponíveis no repositório onde está hospedado o nosso projeto. Para isso, clique aqui.

Estrutura

train:

Métodos de carregamento e looping de treino da rede neural para a criação de modelos.

test:

Execução de um modelo já treinado no ambiente.

tetris:

Estrutura do Tetris com definição de regras, peças e métodos do environment do aprendizado.

web_interface

Integração com o web-tetRL.io.

deep_q_network

Definição e inicialização da arquitetura da rede neural.

Dependências

Como Treinar

Um Novo Agente

$ python train.py

Agente a partir de um Checkpoint

No arquivo train.py, certifique-se de que os seguintes parâmetros estarão definidos com os valores corretos para o diretório e nome do arquivo, assim como a flag de load definida como True.

parser.add_argument("--saved_path", type=str, default="trained_models")  # Diretório de salvamento 
parser.add_argument("--saved_name", type=str, default="tetris")          # Arquivo de salvamento
parser.add_argument("--checkpoint_name", type=str, default="tetris")     # Arquivo de carregamento
parser.add_argument("--load", type=bool, default=True)                   # Flag para carregamento

E execute o mesmo comando para um novo treino:

$ python train.py

Como Executar

No arquivo test.py, certifique-se de que os seguintes parâmetros estarão definidos com os valores corretos para o diretório e nome do arquivo.

parser.add_argument("--saved_path", type=str, default="trained_models")  # Diretório de carregamento
parser.add_argument("--checkpoint_file", type=str, default="tetris")     # Arquivo de carregamento
$ python test.py

Equipe

Créditos

O projeto foi fortemente inspirado pelo código disponibilizado por Viet Nguyen, sob a licença MIT. Gostaríamos de deixar explícito nossos agradecimentos ao autor. Clique aqui para visitar o Github do projeto base.