Repositório para o desenvolvimento de um algoritmo líder-seguidor com PSO utilizando swarm intelligence para conclusão de curso.
Para conseguir executar este projeto é necessário ter instalado:
- Abra o Anaconda Navigator
- Vá em Enviroments
- Clique em base(root)
- Pesquise por matplotlib (Caso não ache clique em Update Index)
- Pesquise por numpy (Caso não ache clique em Update Index)
- Instale os dois
- Abra o Anaconda Navigator
- Vá em Home
- Clique para instalar o Visual Studio Code
- Abra o terminal e dê um clone no repositório.
- Entre no Anaconda Navigator e dê launch no Visual Studio Code.
- Aperte F5 e aparecerá a opção de escolher quantas interações você deseja testar.
- Logo depois irá aparecer uma janela onde o mapa é apresentado e é atualizado a cada movimento do robô
A ideia é simular um mapa, para isso eu uso uma matriz onde eu defini as seguintes regras:
-
Se posicão na matriz é igual a 0 = Campo vazio
-
Se posicão na matriz é igual a 1 = Campo ocupado por robô
-
Se posicão na matriz é igual a -1 = Alvo
-
PSO utilizado se resume em três passos:
- Primeiro passo: Mover particula no sentido da inercia;
- Segundo passo: Pegar posição do vizinho de cada particula como o pbest dela e ir em direção a ele;
- Terceiro passo: Pegar a média da posição do enxame como gbest de cada particula e ir em direção a ele.
Visto que o PSO tende a aglomerar as particulas em um ponto em comum elas nunca iriam ir ao caminho do alvo, visto isso eu fiz uma modificação na qual, localizo o robô que está mais perto do alvo e logo transformo ele no GBEST de todo o enxame e digo que o movimento das minhas particulas têm como prioridade ir para onde está o GBEST (que é o líder), ou seja, seria um líder-seguidor com PSO, com isso faço a comparação com o líder-seguidor sem PSO vs líder-seguidor com PSO, fazendo vários testes, com robôs posicionados em lugares diferentes, com alvo posicionado em lugares diferentes, com diferentes quantidades de particulas e quantidade de interações diferentes.
As imagens no repósitorio se tratam dos testes realizados, o nome do arquivo foi escolhido para refletir qual teste se trata seguindo a seguinte lógica:
Numero de particulas, com/sem PSO, quantidade de interações, tamanho do mapa.png
Exemplo:
- 5, sem, 1, 17x17.png
- 5, com, 1, 17x17.png
Qualquer dúvida entre em contato com este email: danielmessi13@hotmail.com
Se divirta!