Baixe o app para aproveitar ainda mais
Prévia do material em texto
DESENVOLVIMENTO MUNDO DE WUMPUS COM ALGORITMOS GENÉTICOS: Trabalho refente a disciplina de Inteligencia Computacional. Edson Martins Cavalcante Matrícula: 201533840014 Engenharia da Computação UFPA Pedro da Silva Cavalcante Matrícula: 201633840029 Engenharia da Computação UFPA Valdeney André Matos Júnior Matrícula: 201733840042 Engenharia da Computação UFPA RESUMO O artigo a seguir introduz tecnicas computacionais inteligentes como objetivo desenvolver um jogo aplicando principios básicos de algoritmo genêtico e agente reativo. Algoritmos Genéticos são baseados no princípio Darwiniano da evolução das espécies, são algoritmos probabilísticos que fornecem um mecanismo de busca paralela e adaptativa baseado no princípio de sobrevivência dos mais aptos e na reprodução. O experimento se baseia na pesquisa de mercado dos jogos e na apliação dos conceitos de inteligencia artificial no desenvolvimento do jogo mundo de Wunpus. Palavras-chave: PyGame, Python, Criação de Jogos, Introdução, Programação. 1. INTRODUÇÃO O mercado de jogos teve uma grande crescente pelo mundo em decorrência do isolamento social provocado pela pandemia de SARS-Cov-2. O mais recente levantamento da Pesquisa Games Brasil (PGB 2021) afirma que jogos tiveram uma relevância importante no período de quarentena, 46% dos entrevistados disseram que jogaram mais com o isolamento social e 42,2% relataram ter gasto mais dinheiro com jogos. Outro dado gerado pela pesquisa descreve que dois terços dos entrevistados afirmaram ter assistido mais conteúdos a respeito de jogos. A receita do mercado de jogos cresceu 12% no ano de 2020, segundo SuperData. 2. LINGUAGEM DE PROGRAMAÇÃO O projeto visa a criação de jogos, utilizando a linguagem de programação Python, que é uma linguagem de alto nível, relativamente simples, de fácil acesso e compreensão. Bem difundido entre profissionais da indústria, professores especialístas, matemáticos e pesquisadores. Conta com o suporte de diversas bibliotecas, que por sua vez se tratam de subprogramas utilizados para a aplicação de software, sendo um diferencial quando comparado com outras linguagens de programação. A biblioteca PyGame possue ferramentas usadas para simplificar o desenvolvimento de jogos, e entre suas funcionalidades estão incluídos os mecanismos de rederização 2D/3D, colisão, controle e linguagem Script. 3. SISTEMAS INTELIGENTES A Inteligência Computacional é uma área da ciência que busca, através de técnicas inspiradas na Natureza, o desenvolvimento de sistemas inteligentes que imitam aspectos do comportamento humano, tais como: aprendizado, percepção, raciocínio, evolução e adaptação. Algoritmos Genéticos são algoritmos matemáticos inspirados nos mecanismos de evolução natural e recombinação genética. A técnica de Algoritmos Genéticos fornece um mecanismo de busca adaptativa que se baseia no princípio Darwiniano de reprodução e sobrevivência dos mais aptos. 4. ALGORITMOS GENÉTICOS: PRINCÍPIOS E APLICAÇÕES Algoritmos Genéticos constituem uma técnica de busca e otimização, altamente paralela, inspirada no princípio Darwiniano de seleção natural e reprodução genética. De acordo com a teoria de C. Darwin, o princípio de seleção privilegia os indivíduos mais aptos com maior longevidade e, portanto, com maior probabilidade de reprodução. Indivíduos com mais descendentes têm mais chance de perpetuarem seus códigos genéticos nas próximas gerações. Genes constituem a identidade de cada indivíduo e estão representados nos cromossomas. Estes princípios são imitados na construção de algoritmos computacionais que buscam uma melhor solução para um determinado problema, através da evolução de populações de soluções codificadas através de cromossomas artificiais. Um cromossomo é uma estrutura de dados que representa uma das possíveis soluções do espaço de busca do problema. Cromossomo são então submetidos a um processo evolucionário que envolve avaliação, seleção, recombinação sexual (crossover) e mutação. Após vários ciclos de evolução. 5. DESCRIÇÃO DO JOGO O jogo a ser desenvolvido é o Mundo de Wumpus, onde será criado um ambiente de rederização 2D com características de matriz 4x4. Foram adicionados quatro elementos: Agente, Wumpus, Poço e Ouro. O objetivo do jogo é fazer com que o usuário controle o movimento do Agente pelo ambiente, fazendo com que este expresse reações em palavras ao colidir com objetos ou se aproximar deles. 6. LÓGICA DA PROGRAMAÇÃO WUMPUS A princípio é necessario planejar as etapas de desenvolvimento do software, buscando otimizar e organizar uma sequência lógica. Foi criado um fluxograma, onde o mesmo, representa a sequência de programação, com o objetivo de esclarecer a ideia envolvida no desenvolvimento do jogo. O fluxograma de sequência do código de programação pode ser apreciado na Figura 1. Figura 1 – Fluxograma de programação do jogo Fonte: Autor, 2021. O código de programação é iniciado com inserção da biblioteca Pygame. Um display é programado com dimensões de 600 pixels nos eixos X e Y, tendo seguimentos separados e hachurados na cor verde. As figuras que representam os elementos do jogo foram criados no site pixelart. Em seguida foram carregadas e posicionadas no código com dimensões escalares de 150 pixel nos eixos X e Y. A função KEYDOWN é utilizada para trabalhar com as teclas do computador na movimentação do personagem. As teclas programadas W, A, D e S fazem o Agente ir nas direções cima, esquerda, direita e baixo respectivamente, com movimentações de 150 pixel no ambiente. Quando as figuras colidem ou se aproximam a ferramenta COLLIDERECT tem o papel de enviar uma mensagem ao jogador descrevendo o tipo de sensação do Agente. As três linhas criadas na vertical e horizontal foram projetadas afim de fornecer a sensação de matriz 4x4. As linhas vão de uma ponta a outra da janela, separadas 150 pixel de distância umas das outras nos eixos X e Y. 7. LÓGICA DO JOGO O Mundo de Wumpus foi desenvolvido com funções simples de impressão do Agente, onde o mesmo anda pelo ambiente através do controle de usuário, e ao se aproximar de objetos expressa reações que variam quando deparado aos diferentes elementos, sendo: poço, ouro ou wumpus. As expressões apresentadas podem ser: brisa, brilho e fedor. O Agente ao cair no poço é comunicado com “caí no poço”. Caso ache o ouro é informado a mensagem “achei ouro”. Se o mesmo se deparar com o Wumpus, a nota exibida será “Wumpus pegou”. Figura 2 – Agente e os sentindo brisa. Fonte: Autor, 2021. Figura 3 – Agente e os sentindo fedor. Fonte: Autor, 2021. Figura 4 – Agente e os sentindo brilho. Fonte: Autor, 2021. Figura 6 – Agente achou o ouro. Fonte: Autor, 2021. Figura 5 – Agente caiu poço. Fonte: Autor, 2021. Figura 7 – Agente pego pelo wumpus. Fonte: Autor, 2021. AGENTE REATIVO O agente reativo é muito simples, ele se baseia nas sensações que são geradas pelo ambiente, de acordo com seus sentidos ele toma certas decisões. Esses sentidos são implementados no código em uma matriz (int sens[][]), essa matriz é gerada apartir de outra, a matriz do ambiente (amb[][]), e assim nós temos o mapeamento dos sentidos a serem informados pro agente. A movimentação do agente, na prática, se dá baseada em uma cadeia de condicionais, if/else, de acordo com as informações da matriz das sensaçoes, concatenando com a posição do agente, assim essa cadeia de condicionais faz uma espécie de de funil, que direciona o nosso agente para a melhor movimentação possível, e mais segura, em cada momento. Outra implementação que ajuda demais o agente, é a criação de uma matriz que armazene as posições por onde o agente já passou, assim ele consegue distinguir posições seguras, deoutras não segurança, e que talvez possam ter algum perigo. A implementação na prática foi feita na linguagem c, uma linguagem de baixo nível, e que era a mais conhecida para os que desenvolveram o projeto. É basicamente isso que é implementado no agente reativo, procedimentos básicos, e predefinidos, diferente do agente genético, onde o agente é moldado de acordo com o desenvolvimento das amostras. 1. CONCLUSÃO Foi de suma importancia as pesquisas realizadas para obter o conhecimento necessarios no desenvolvimento do projeto. Estudos com algoritmos genéticos forneceram informações essenciais que truxeram exito ao desemvolvimento do trabalho. Os resultados obtidos através das experiéncias trouxe resultados positivos para a aplicação aprendizado e conhecimento do grupo. REFERÊNCIAS • Pesquisa Games Brasil 2021. Disponível em <https://canaltech.com.br/games/pesquisa-games-brasil-2021-mostra- crescimento-do-consumo-de-jogos-com-isolamento-182208/>. Acesso em: 27/05/2021. • O que é Python?. Disponível em < https://tecnoblog.net/405640/o-que-e-python- guia-para-iniciantes/>. Acesso em: 27/05/2021. • Pygame: o que é, como instalar e jogos feitos em Pygame. Disponível em < https://kenzie.com.br/blog/pygame/>. Acesso em: 28/05/2021. • Ensino de leitura e escrita através do pareamento com modelo. Disponível em < https://www.scielo.br/j/epsic/a/tYNpjXVGLVtSF3hXLtCTcWf/?format=pdf&lan g=pt>. Acesso em: 28/05/2021.
Compartilhar