IMPLEMENTAÇÃO E VALIDAÇÃO DO ALGORITMO OTIMIZADOR DO LOBO CINZENTO

  • Eduarda Gomes Peres
  • Natalia Ferrão da Silva
  • Edson Rodrigo Schlosser
Rótulo Otimização, Meta-heurística, Algoritmo, GWO

Resumo

Nas mais diversas áreas científicas necessitam-se de soluções para problemas de minimização ou maximização através de algoritmos de otimização. Em telecomunicações pode-se aplicar na síntese de diagramas de irradiação de antenas, possibilitando o apontamento do feixe para diferentes direções espaciais a partir de um conjunto de coeficientes de excitação (amplitudes e fases). Diversos métodos de otimização podem ser encontrados na literatura, tais como algoritmo genético, colônia de formigas, etc. Neste trabalho explora-se e implementa-se em ambiente Matlab o método Otimizador de Lobo Cinzento (do inglês, Grey Wolf Optimizer - GWO). Tal otimizador é uma meta-heurística que se baseia na hierarquia de liderança e estratégia de caça dos lobos cinzentos. A ordem de liderança dos lobos é dividida em quatro categorias: alfa, beta, delta e ômega, respectivamente. A caça consiste em buscar, cercar e atacar a presa (solução). A grande vantagem deste tipo de método é a robustez para encontrar uma ótima solução para o problema. Neste trabalho, a elaboração do algoritmo GWO foi realizada no software Matlab e o algoritmo foi implementado para um problema de minimização, em que a técnica dever convergir para variáveis definidas pelo usuário. O código genérico é inicializado declarando o espaço de busca, o número de lobos da alcateia, o número de variáveis desejadas e quantas iterações são realizadas na busca de um ótimo resultado. Na sequência geram-se dois laços que servem para criar posições aleatórias para cada lobo dentro do espaço de busca, em seguida cria-se uma variável a que decai linearmente de 2 até 0 de acordo com o número de iterações. A variável a é utilizada no vetor A, que é aplicado no cálculo do deslocamento dos lobos. A etapa seguinte consiste em estabelecer a função objetivo dentro de um laço iterativo. Nesse ponto os diferentes lobos são avaliados na função objetivo para definir a aptidão (melhor solução na iteração) que cada um representa na solução (o quanto cada lobo está próximo da presa). A partir disso ordenam-se os valores da função objetivo em ordem crescente para que sejam definidas as três melhores posições da avaliação, cujos lobos são definidos como alfa, beta e delta. O lobo alfa corresponde a posição mais próxima da presa, beta a segunda mais próxima e delta a terceira, respectivamente, enquanto que os demais lobos são definidos como ômegas. Na próxima etapa criam-se os vetores A e C, sendo estes responsáveis por contribuir no cálculo das posições futuras dos lobos da alcateia (aproximação da presa). O vetor D tem a tarefa de analisar as distâncias de valores atribuídos para alfa, beta e delta com os valores de todos os lobos existentes, induzindo aos lobos ômegas um deslocamento para a direção dos três melhores lobos. Esse deslocamento é realizado a partir de uma média da distância de cada lobo em relação aos lobos alfa, beta e delta. O processo é realizado até todos os lobos pararem em um único ponto no espaço de busca. O algoritmo implementado permite a apresentação de um gráfico de evolução que mostra a redução do erro ao longo do processo iterativo, o que auxilia na configuração dos parâmetros do código desenvolvido. Neste trabalho foram avaliadas três funções, com 1, 2 e N dimensões. Inicialmente, a função objetiva f(x)=|x-A| foi implementada, sendo A uma variável a ser definida pelo usuário e que corresponde a solução conhecida do problema. Após o processo iterativo o algoritmo deve ser capaz de encontrar a solução x=A. Posteriormente, a função objetivo foi definida como sendo f(x,y)=|x-A|+|y-B|, sendo A e B variáveis a serem definidas e que correspondem a solução conhecida do problema. Após o processo iterativo o algoritmo deve ser capaz de encontrar a solução x=A e y=B. Por fim, explora-se um ambiente com N dimensões através da função f(x_i)=∑_(i=1)^N▒|x_i-i| , em que cada variável do problema deve convergir para seu próprio índice, ou seja, x_1=1,x_2=2,x_3=3,,x_N=N. O algoritmo foi inicializado com 100 lobos e 100 iterações, dentro de um espaço de busca entre [0,100]. Os resultados obtidos foram: i) Para a função 1 obteve-se 4,9969, 10,0042 e 15,0317 quando A= 5, 10 e 15, respectivamente; ii) Para a função 2 obteve-se 4,9743 e 4,9755, 9,9770 e 9,9948 quando A=B=5 e A=B=10, respectivamente. iii) Para a função 3 obteve-se 0,9982, 1,9925, 2,9973, 4,0064, 5,0013, 5,9911, 6,9910, 8,0039, 9,0017 e 10,0021 quando N=10. Os resultados obtidos com a elaboração do algoritmo foram satisfatórios, pois os três códigos convergiram de acordo com o esperado. Portanto, conclui-se que o método seguiu a hierarquia e o comportamento de caça, obtendo um alto desempenho considerando o espaço de busca, a quantidade de lobos e o número de iterações. Isso pode ser observado que o erro tende a zero com a execução das iterações. A partir da validação do algoritmo, pretende-se, como trabalho futuro, aplicar na solução de problemas de telecomunicações.

Downloads

Não há dados estatísticos.
Publicado
2021-11-16
Como Citar
GOMES PERES, E.; FERRÃO DA SILVA, N.; RODRIGO SCHLOSSER, E. IMPLEMENTAÇÃO E VALIDAÇÃO DO ALGORITMO OTIMIZADOR DO LOBO CINZENTO. Anais do Salão Internacional de Ensino, Pesquisa e Extensão, v. 13, n. 3, 16 nov. 2021.