Projeto super-smartio-world
Informações Sumarizadas
-
Linguagem: Python 3.8.5
-
Palavras Chave: Python, Inteligência Artificial, Aprendizado de Máquina,
Algoritmos Genéticos, Neuroevolução, NEAT, NEAT-Python, Super Mario World.
-
Link do Projeto: https://github.com/azzolinovarella/super-smartio-world
Explicação Geral do Projeto
A partir do uso da biblioteca externa NEAT-Python, buscou-se fazer uso do algoritmo conhecido por NEAT (NeuroEvolution of Augmenting Topologies) para criar o um agente inteligente capaz de jogar a fase YoshiIsland2 do jogo Super Mario World. Esse algoritmo parte do conceito conhecido por Neuroevolução, buscando evoluir redes neurais artificiais utilizando algoritmos genéticos até encontramos a topologia desejada (i.e., em nosso caso é aquela que capacita um agente a terminar a fase YoshiIsland2).
Para este projeto foi necessário criar um arquivo de configuração (exigido pela biblioteca NEAT-Python), responsável por indicar os argumentos utilizados pelo algoritmo. Ressalta-se que alguns parâmetros receberam valores default (encontrados na documentação da biblioteca) enquanto outros como a quantidade de neurônios nas camadas de entrada, saída e ocultas ("num_inputs", "num_outputs" e "num_hidden" respectivamente), função de ativação ("activation_default"), tamanho da população ("pop_size"), quantidades de indivíduos preservados por geração ("elitism"), porcentagem de individuos que irão se reproduzir ("survival_threshold") e etc., foram modificados por tentativa e erro e baseando-se em literaturas (contidas nas referências dentro do README do projeto).
Por fim, destaca-se que esse projeto foi dividido em 4 módulos:
- train.py: Treina um grupo de agentes para jogar a fase YoshiIsland2, salvando sempre o melhor para que possa ser usado posteriormente.
- play.py: Faze com que um individuo ou um grupo de agentes jogue a fase selecionada que, por padrão, é a YoshiIsland2.
- plot_evolution.py: Valida de forma gráfica a evolução, gerando um gráfico de fitness máximo por geração e o salvando em um arquivo de foto.
- generate_video.py: Cria um vídeo MP4 do melhor agente jogando a fase selecionada que, por padrão, é a YoshiIsland2.
Informações detalhadas sobre cada módulo bem como instruções de execução,
podem ser encontradas no README do projeto:
https://github.com/azzolinovarella/super-smartio-world/blob/master/README.md