Esse projeto foi criado utilizando a biblioteca de animação p5.js e tem a finalidade de representar visualmente um agente autônomo que realiza uma busca em um ambiente totalmente observável buscando um objeto alvo (uma comida). O usuário pode escolher qual será o algoritmo de busca utilizado pelo agente, os algoritmos disponíveis são:
- BFS
- DFS
- Greedy
- Dijkstra
- A*
O ambiente em que o agente autônomo se encontra é gerado aleatoriamente e é composto por um grid 35x35, onde cada bloco desse grid pode ser de um desses 4 diferentes tipos de blocos:
- [#DCCBB5] Areia (Menor custo)
- [#869818] Pântano (Custo médio)
- [#3399CC] Água (Maior custo)
- [#565656] Obstáculo (Custo ∞)
O agente autônomo não pode percorrer blocos que sejam do tipo [#565656] Obstáculo e além disso, quanto maior for o custo do bloco que o agente estiver percorrendo, mais lento ele fica. Por fim, vale ressaltar que a posição inicial do agente autônomo e do objeto alvo (a comida) também são gerados aleatoriamente.
O deploy do projeto foi realizado utilizando o GitHub Pages, basta acessar o link abaixo para rodar o nosso projeto diretamente no seu navegador:
https://mateuseap.github.io/projeto-si/
Para rodar o projeto locamente você vai precisar instalar o Node.js http-server
, siga os seguintes passos para realizar a instalação:
- Baixe e instale o Node.js
- Abra um terminal ou um command prompt (no Windows você deve executar o command prompt como administrador)
- No terminal digite o comando:
npm install -g http-server
Se você receber um erro de permissão no Ubuntu, tente executar o comando usando sudo
. Depois de instalar o http-server
, você está pronto para rodar o projeto!
A partir daí basta digitar o seguinte comando no terminal:
http-server
Ele mostrará em que URL o código será executado, então, você só precisa abrir a URL em seu navegador:
-
Maiores desafios, erros e aprendizados
- Dividir as tarefas entre os membros da equipe
- Representar os algoritmos de busca visualmente (nos deparamos com diversos erros durante esse processo)
- Definir a arquitetura do projeto
-
Divisão do trabalho em grupo
- Menu, mapa e movimentação do agente: Williams
- Algoritmos de busca: Guilherme, Mateus, Williams e Lucca
- Refatoração do código: Guilherme, Mateus e Lucca
-
Arquitetura e tecnologias utilizadas