Bem-vindo ao Labirinto com Threads Simulator! Este projeto é um simulador interativo onde ratos 🐭 tentam encontrar um pedaço de queijo 🧀 em um labirinto complexo. Aprenda sobre algoritmos de busca uso de Threads e veja-os em ação neste divertido e educativo simulador.
- Funcionalidades
- Pré-requisitos
- Instalação
- Como Usar
- Algoritmos Utilizados
- Melhorias Futuras
- Contribuições
- Licença
- Contato
- Link do Projeto
implementar um labirinto e sua solução utilizando threads.
Geração Automática de Labirintos: Cada sessão começa com um novo labirinto, gerado aleatoriamente. Simulação de Busca: Ratos virtuais, cada rato é uma thread e os ratos usam o algoritmo de busca em largura (BFS) para encontrar o caminho até o queijo. Interface Gráfica: Visualize todo o processo em uma interface gráfica amigável, além de acompanha a execução das threads no console da aplicação.
Antes de iniciar, certifique-se de ter instalado:
- Java JDK 11 ou superior
- IDE com suporte para Java (recomendado: IntelliJ IDEA ou Eclipse)
Clone o repositório para sua máquina local usando:
Copy code
git clone https://github.com/wemersonnino/labirinto-ratos.git
Para iniciar o simulador, navegue até o diretório do projeto e execute:
Copy code
javac -d bin src/*.java
Copy code
Main-Class: labirinto-ratos.package.MainClass
Copy code
Mjar cvfm labirinto-ratos.jar manifest.txt -C bin .
Copy code
java -jar labirinto-ratos.jar
- A aplicação irá gerar um novo labirinto e iniciar a simulação. Cada rato irá tentar encontrar o queijo, e você poderá acompanhar o progresso no console.
- Para encerrar a simulação, pressione a tecla "Enter" no console.
- Para iniciar uma nova simulação, execute o comando java -jar labirinto-ratos.jar novamente.
- Divirta-se explorando o labirinto e aprendendo sobre algoritmos de busca e uso de Threads!
- Para visualizar o código-fonte, abra o projeto em sua IDE favorita e explore os arquivos na pasta src.
- Para modificar o código-fonte, faça as alterações desejadas e recompile o projeto usando o comando javac -d bin src/*.java.
- Para executar o projeto com as alterações, gere um novo arquivo JAR e execute-o conforme as instruções acima.
- Busca em Largura (BFS): Garante que encontraremos o caminho mais curto para o queijo, se houver um caminho disponível.
- Geração de Labirintos: Utiliza uma adaptação do algoritmo de Prim para criar labirintos complexos e solucionáveis.
- Implementação de outros algoritmos de busca como A* ou Dijkstra.
- Adição de níveis de dificuldade com labirintos maiores ou múltiplos ratos.
- Recursos de pausa e reinício durante a simulação.
- Implementação do Deep Q Learning (DQL): A aplicação de DQL pode trazer melhorias significativas no comportamento dos ratos virtuais ao permitir que aprendam a maximizar uma recompensa cumulativa através do tempo.
- Veja como isso pode beneficiar o projeto:
- Aprendizado por Reforço: O DQL permite que os agentes aprendam de forma mais eficiente a encontrar o queijo, evitando caminhos subótimos.
- Adaptação a Ambientes Complexos: O algoritmo é robusto o suficiente para lidar com ambientes dinâmicos e complexos, onde decisões são tomadas com base em percepções limitadas.
- Decisões Baseadas em Estado: O rato poderia aprender a tomar decisões considerando o estado completo do ambiente, o que inclui a localização do queijo e a configuração de obstáculos e penalidades.
- Crie sua Feature Branch (
git checkout -b feature/AmazingFeature
) - Faça commit de suas mudanças (
git commit -m 'Add some AmazingFeature'
) - Faça push para a Branch (
git push origin feature/AmazingFeature
) - Abra um Pull Request
Distribuído sob a licença MIT. Veja LICENSE para mais informações.
Wemerson Nino – @wemersonnino