Você está na página 1de 2

Recriando uma versão do Flappy Bird com IA

Moises Souza

Abstract— Flappy Bird é um jogo eletrônico para dispositivos do Projeto de Bloco: Computação e Inteligência Artificial
móveis de 2013 desenvolvido em Hanói pelo programador Os objetivos especı́ficos deste trabalho são: • Estudar os
vietnamita Nguyn Hà ông e publicado pela .GEARS studios. principais conceitos de aprendizado por reforço; • Mapear
O jogo foi publicado em maio de 2013 para o iPhone 5, e
então atualizado para o iOS 7 em setembro de 2013. Wikipédia soluções de software pré-existentes para a montagem do
Data de lançamento inicial: 24 de maio de 2013 Estúdio: sistema de aprendizado; • Aplicar o algoritmo NEAT para
.Gears Desenvolvedor: Dong Nguyen Gênero(s): Plataforma o jogo Gradius dentro de um sistema de emulação do NES
Lançamento: 24 de Maio 2013 Plataformas: Android, iOS. O por software; • Avaliar os resultados obtidos. [2].
jogo é uma ferramenta que contribui na formação corporal,
afetivo e cognitivo, por ter uma caracterı́stica lúdica se torna
mais atrativa e eficiente em seu desenvolvimento, preparando II. BASES TE ÓRICAS
sua inteligência e caráter, tendo conhecimento de quantidade e
de espaço. Esta seção apresentará os fundamentos teóricos utilizados
neste trabalho, Neat-Python, Pygame, Python.
I. I NTRODUÇ ÃO
O cérebro humano é uma máquina altamente poderosa A. Visão geral do NEAT
e complexa capaz de processar uma grande quantidade
de informações em tempo mı́nimo. As unidades principais NEAT (NeuroEvolution of Augmenting Topologies) é um
do cérebro são os neurônios e é por meio deles que as algoritmo evolutivo que cria redes neurais artificiais. Para
informações são transmitidas e processadas. As tarefas re- obter uma descrição detalhada do algoritmo, você provavel-
alizadas pelo cérebro intrigam os pesquisadores, como por mente deveria ler alguns Mesmo se você quiser apenas obter
exemplo, a capacidade do cérebro de reconhecer um rosto a essência do algoritmo, ler pelo menos alguns dos primeiros
familiar dentre uma multidão em apenas milésimos de se- artigos do NEAT é uma boa ideia. A maioria deles são bem
gundo. As respostas sobre alguns enigmas do funcionamento curtos e fazem um bom trabalho explicando conceitos (ou
do cérebro ainda não foram respondidas e se perpetuam ate pelo menos apontando para outras referências que o farão)
os dias de hoje. cérebro é que o mesmo desenvolve suas [3]. [3].
regras através da experiência adquirida em situações vividas
anteriormente[1] O que é conhecido sobre o funcionamento B. Teste de Referencia Neat-Python
do cérebro é que o mesmo desenvolve suas regras através da
experiência adquirida em situações vividas anteriormente[1].
A busca pelo desenvolvimento de um programa que realize ∗ ∗ ∗ ∗ ∗ ∗ Runninggeneration0 ∗ ∗ ∗ ∗ ∗ ∗
funções do cérebro humano começou junto com o inı́cio da
computação eletrônica. Desde então, muitas pesquisas foram Population’s average fitness: 5.75200 stdev: 8.34714 Best
realizadas para alcançar este objetivo, em geral dentro da fitness: 77.40000 - size: (1, 3) - species 1 - id 78 Average
grande área de Inteligência Artificial. Um avanço recente foi adjusted fitness: 0.046 Mean genetic distance 1.053, standard
a substancial redução do custo de equipamentos utilizados deviation 0.424 Population of 100 members in 1 species:
para processar redes neurais, facilitando a execução de al- ID age size fitness adj fit stag ==== === ==== =======
goritmos de aprendizado em computadores pessoais e dando ======= ==== 1 0 100 77.4 0.046 0 Total extinctions: 0
novo impulso ao desenvolvimento de novos algoritmos. Um Generation time: 16.387 sec
deles é o NEAT, que tem como objetivo criar uma rede neural ****** Running generation 1 ****** (1)
artificial que evolui através de mudança em sua delineação e
alteração de pesos das suas conexões, seguindo a abordagem
de algoritmos genéticos. Esta trabalho tem como objetivo
deste trabalho está em avaliar o algoritmo NEAT para apren- [3].
dizado nãosupervisionado de uma rede neural, tendo como
cenário o jogo Flappy Bird, criar jogos simples, projetar
um jogo que utilize inteligência artificial, e Desenvolver um III. M ETODOLOGIA
jogo com inteligência artificial concluindo as competencias
Esta seção apresenta a abordagem proposta para combinar
*Meus agradecimentos os métodos de controle para melhorar seu desempenho e o
1 Deus. moises.souza@al.infnet.edu.br leito de teste utilizado para sua validação.
A. Non-Linear Inverted Pendulum Problem naves para conseguir sobreviver Durante as realizações das
simulações foi possı́vel perceber que a evolução ocorria
de forma gradual, começando com a nave fazendo nada
e se destruindo diversas vezes para os primeiros inimigos
para terminar com ela descobrindo posições em que poderia
ficar sem ser alvejada. Também foi possı́vel perceber que
o personagem evoluiu em pouco tempo com duas gerações,
desta forma podendo saltar da forma correta sem colidir com
os canos. Um dos desafios foi o entendimento do pacote
NEAT-Python, pois dependia de compreender as explicações
e exemplos que constam na sua documentação. Além disso,
IV. S IMULAÇ ÃO E R ESULTADOS o aprendizado de Lua e a comunicação com pipes bastante
trabalhosos, pois não havia nenhum conhecimento prévio.
Além disto, a comunicação através dos pipes foi essencial
para este trabalho, sendo seu aprendizado bastante compli-
cado.
R EFERENCES
[1] S. Sarti and G. Ochoa, “A neat visualisation of neuroevolution trajec-
tories.” in EvoApplications, 2021, pp. 714–728.
[2] N. do author, “Titulo escrever.” organizacao, 2014, pp. 387–395.
[Online]. Available: Nomedolivro
Fig. 1. Gym inverted pendulum environment. [3] K. O. Stanley and R. Miikkulainen. Efficient evolution of
neural network topologies. [Online]. Available: http://nn.cs.utexas.
edu/downloads/papers/stanley.cec02.pdf
****** Running generation 0 ******
Population’s average fitness: 5.75200 stdev: 8.34714 Best
fitness: 77.40000 - size: (1, 3) - species 1 - id 78 Average
adjusted fitness: 0.046 Mean genetic distance 1.053, standard
deviation 0.424 Population of 100 members in 1 species:
ID age size fitness adj fit stag ==== === ==== =======
======= ==== 1 0 100 77.4 0.046 0 Total extinctions: 0
Generation time: 16.387 sec
****** Running generation 1 ******

Fig. 2. Loss function throughout training.

V. O BSERVAÇ ÕES F INAIS


Nesta Trabalho foi realizada a análise do algoritmo de
aprendizado NEAT aplicado a um jogo eletrônico do Nin-
tendo Entertainment System (NES), utilizando emulador
especı́fico para este console, comunicação entre processos
em Lua e rotinas de Aprendizado por Reforço escritas
em Python. A utilização do algoritmo NEAT apresentou-
se satisfatória para treinamento de uma rede neural, demon-
strando resultados muitos bons para pouco tempo de treina-
mento e considerando que o jogo Gradius é um jogo
onde é necessário movimentação constante e destruição das

Você também pode gostar