Resumo: O Problema do Roteamento de Veículos (PRV) é um problema combinatório de difícil solução, aplicável tanto para logística de empresas de transporte quanto para melhor ocupação das vias públicas. Resolvê-lo testando todas as combinações possíveis (método de força bruta) torna-se inviável à medida que o problema escala, pois demanda um tempo de computação muito grande. Os Algoritmos Genéticos (AG) são meta-heurísticas capazes de encontrar soluções em um tempo computacional aceitável. Entretanto, mesmo os AG podem demandar um elevado tempo de processamento, dependendo das configurações utilizadas. Com a evolução das arquiteturas computacionais e a difusão das arquiteturas multicore, o uso da programação multithread torna-se uma alternativa para reduzir o tempo envolvido na solução de problemas combinatórios. Este artigo objetiva acelerar a resolução do PRV por meio da paralelização do AG com OpenMP, que é um padrão amplamente difundido para programação multithread. Nossos resultados atingiram um speedup acima de 2, utilizando 4 threads em um processador quadcore. Esse ganho está limitado à forma como o AG está implementado. Além do impacto no desempenho do AG também comprovou-se que o uso do OpenMP não afeta a qualidade das soluções. Adicionalmente, o uso do OpenMP permitiu que o AG encontrasse melhores soluções devido ao aumento do número de evoluções computadas num mesmo intervalo de tempo.Palavras-chave: Algoritmos genéticos. Desempenho. OpenMP. Qualidade das soluções.
Abstract:Routing Vehicle Problem (RVP) is a combinatorial problem, hard to solve, used to improve the logistics of transport enterprises as well as to improve the traffic in the public ways. To solve it testing all combinations (brute force method) became unfisible as the problem scale, because it demands a large computing time. Genetic Algorithms (GA) are meta-heuristics able to find solutions in an acceptable computing time. However, even GA can demand a large computing time as they are set. Computional architectures evolution and the multicore difusion became the multithread programming an alternativ to reduce GA time. This article aims to speed up the RVP solution through the GA parallelization using OpenMP, which is a popular standard to multithreading programming. Our results show an speedup up to 2 for 4 threads in a quadcore processor. This gain is limited according to our GA is implemented. Beside the performance impact, we also show that the usage of OpenMP did not affect the solutions quality. Furthermore, OpenMP allow the GA to find better solutions because it make possible to increase the number of evolution in an time slice.