Um Algoritmo Genético para o Problema de Roteamento de Veículos com Janelas de Tempo Francisco Henrique de Freitas Viana Pontifícia Universidade Católica do Rio de Janeiro PUC-Rio Departamento de Informática DI fviana@inf.puc-rio.br Resumo. Este artigo descreve um algoritmo genético desenvolvido para se obter soluções para o problema de roteamento de veículos com janelas de tempo. Foi utilizado o framework GACOM, mais especificamente seus operadores voltados para problemas com representação baseada em ordem. Foi implementado o algoritmo de decodificação da solução, bem como a função de avaliação do cromossomo, utilizando duas métricas analisadas separadamente: o número de veículos necessários para o roteamento e a distância total percorrida no roteamento. Testes e análise dos resultados obtidos foram apresentados. Palavras-chave: Roteamento de Veículos, Algoritmo Evolucionário, Problema Dinâmico. Otimização Combinatória. Área de classificação principal: Otimização Combinatória. 1. Introdução Este artigo descreve as fases de um algoritmo genético proposto para minimizar o número de veículos necessarios para se efetuar um roteamento, considerando que as demandas têm janelas de tempo a elas associadas e que a frota de veículos é homogênea, ou seja, e composta por k veículos com igual capacidade. Este trabalho é baseado em Alvarenga et al. (2007) que propuseram uma heurística robusta para o Problema de Roteamento de Veículos con Janelas de Tempo - PRVJT usando a distância total percorrida pela frota como métrica principal. Trata-se de uma heurística de geração de colunas aplicada ao PRVJT que faz uso de um Algoritmo Genético - AG e de uma formulação matemática para o Problema de Partição de Conjuntos. Os resultados obtidos são muito expressivos, estabelecendo melhores soluções para algumas instâncias da literatura. 2. Descrição do Problema
Dada uma frota com k veículos de capacidade Q e um conjunto de requisições de coleta ou de entrega a serem atendidas, o objetivo do problema é minimizar a quantidade de veículos mínima necessária para se efetuar o roteamento. Cada requisição contém os seguintes campos: Identificador numérico sequencial; Coordenadas (x,y) do cliente que efetuou a referida requisição; Valor da demanda de coleta (d), ou seja, quantidade de peso/volume que a encomenda irá ocupar no veículo; Janela de tempo de atendimento [ e, l ], ou seja, intervalo de tempo no qual a requisição deve ser atendida; Assume-se que matriz das distâncias entre os todos os pontos de demanda é conhecida e considera-se o tempo de viagem entre dois pontos, por questão de simplificação como sendo igual à distância. O horizonte de planejamento do problema é discretizado em instantes de tempo. Todas as rotas devem iniciar e terminar em um depósito central. Cada requisição deve ser atendida em uma e somente uma rota. 3. O Algoritmo Genético Para se obter soluções viáveis e de boa qualidade para este problema, neste trabalho, foi utilizado um algoritmo genético com representação baseada em ordem. 3.1.Representação do Cromossomo A representação do cromossomo adotada consiste em uma string de identificadores de requisições, cuja sequencia determina a ordem na qual essas requisições serão inseridas nas rotas pelo algoritmo de decodificação da solução. 8 5 4 12 9 3 6 2 10 1 7 11 Ilustração 1- Representação dos Cromossomos A Ilustração 1 mostra um exemplo de cromossomo com a ordem das requisições a serem alocadas às rotas. 3.2 Decodificação da Solução Foi implementado um algoritmo para gerar a solução a partir do cromossomo utilizado no algoritmo genético. Este algoritmo segue os seguintes passos: É criada uma entidade Rota e a ela são adicionadas as requisições de acordo com a ordem especificada no cromossomo. A inserção da requisição não é
efetuada no caso de implicar infração da restrição de janela de tempo ou da restrição da capacidade do veículo que irá efetuar a referida rota; Ao chegar ao final do cromossomo, o algoritmo verifica se ainda há requisições a serem inseridas na rota. Em caso afirmativo, o passo anterior é reptido sendo crida uma nova rota. Há uma entidade solução que armazena o conjunto de rotas criadas a partir do cromossomo. E, à cada rota, é associado um veículo para executá-la; 8 5 4 12 9 3 6 2 10 1 7 11 Ilustração 2- Representação da Solução A Ilustração 2 mostra a representação de uma solução gerada após a decodificação de um cromossomo. Cada Linha representa uma rota que deve ser atribuída a um veículo. Cada célula é um gene que representa uma requisição que é atribuída à referida rota. Repare que cada requisição aparce uma e somente uma vez em uma solução. 3.3 Avaliação Foram implemetadas duas funções de avaliação, cada uma destinada a avaliar uma métrica específica. A primeira função atribui ao cromossomo uma avaliação igual à quantidade de veículos ecessária para o roteamento da solução gerada pel.o referido cromossomo, ou seja, depois da decodificação da solução verifica-se quantas rotas foram geradas. Este valor é usado como sendo a avaliação do cromossomo que gerou a referida solução. A segunda função de avaliação atribui um fitness ao cromossomo igual à distância total percorrida por todas as rotas geradas pelo cromossomo após a decodificação da solução. 3.4 Operadores genéticos Foram utilizados os seguintes operadores de crossover aplicados ao problemas com representação baseada em ordem como o PRVJT. Crossover PMX: Uma subsequência de tours é trocada entre os cromossomos ancestrais. Essa subsequência é delimitada por dois pontos de corte. Assim, tem-se dois novos cromossomos de modo que o F1 (filho 1) herda material genético do P2 (pai 2) e o F2 herda material genético do P1, nesta região delimitada pelos pontos de corte. Depois, as demais posições de F1 são preenchidas com os genes de P1 da mesma posição desde que não haja duplicação de genes no cromossomo. O mesmo acontece com o F2. As posições que não puderem ser preenchidas desta forma são preenchidas com os genes das posições correspondentes ao gene que deveria ter sido herdado, mas que não foi herdado diretamente para evitar duplicação (Michalewick (1996)).
Crossover OX: Este operador faz dois pontos de corte nos dois cromossomos P1 e P2 e gera um novo par de cromossomos F1 e F2, de modo que o F1 tenha material genético herdado de P1 e F2 tenha material genético herdado de P2 na posições delimitadas pelos pontos de corte. As demais posições de F1 são preenchidas segundo a ordem relativa que aparecem no cromossomo P2 e vice-versa (Michalewick (1996)). Crossover CX: Este operador primeiramente copia o primeiro gene de P1 em F1 e depois continua a inserir os genes em F1 de modo que a a sequencia de genes a ser inserida é obtida copiando alternadamente um gene de cada cromossomo ancestral. A posição de um gene copiado de P1 é determinada pela ordem que ele aparece em P2 (Michalewick (1996)). O Algoritmo de mutação utilizado foi o swap que troca duas posições de um cromossomo. 4 Parâmetros do GA Na execução do GA foram utilizados os parâmetros listados na Tabela 1. Tabela 1-Parâmetros do GA Parâmetro Valor Número de Gerações 10000 Tamanho da População 60 Taxa de Crossover Inicial 0,8 Taxa de Crossover Final 0,6 Taxa de Mutação Inicial 0,05 Taxa de Mutação Final 0,1 Taxa inicial de steady-state 0,5 Taxa final de steady-state 0,5 Número de experimentos 40 5 Resultados Para testar o algoritmo genético foi utilizada uma das instâncias clássicas propostas por Solomon(1987). Esta instância é denominada R101. É uma instância que contém um depósito central, um conjunto de cem requisições efetuadas por clientes dispostos em uma área de 100 x 100 aleatoriamente de acordo com uma distribuição uniforme. A Ilustração 3 mostra que o menor número de veículos para efetuar o roteamento,respeitando-se as restrições de janelas de tempo de atendimento das requisições, bem como a capacidade limitada dos veículos, obtido nos experimentos foi em torno de 22 veículos.
Melhor Indivíduo (Métrica Número de Veículos) Avaliação 28,99 27,99 26,99 25,99 24,99 23,99 22,99 21,99 Experimentos Melhor Indivíduo Ilustração 3 - Melhor indivíduo por experimento (número de veículos) Avaliação média (Métrica Número de Veículos) 28,20 28,00 27,80 27,60 27,40 Avaliação Média 27,20 27,00 26,80 Ilustração 4 - Avaliação média dos indivíduos por experimento (número de veículos) A Ilustração 4 indica que o número médio de veículos utilizados no roteamento ficou entre 27 e 28 veículos.
Média das Avaliações (Métrica Distância) Avaliações 2940,00 2920,00 2900,00 2880,00 2860,00 2840,00 Média 2820,00 Experimentos Ilustração 5 - Avaliação média por experimento (distância) Com relação à outra métrica analisada, a distância total percorrida no roteamento considerando-se todas as rotas da solução, pode-se constatar que a distância média percorrida ficou, na maioria dos casos, entre 2860 e 2940. Melhor Indivíduo (Métrica Distância) 2600,00 2550,00 Avaliações 2500,00 2450,00 2400,00 2350,00 Melhor Indivíduo 2300,00 Experimentos Ilustração 6 - Avaliação do melhor indivíduo por experimento (distância) Com realação ainda à métrica distância total percorrida, quando analisado o fitness do melhor indivíduo da população, verificou-se que a melhor das melhores soluções percorreu ao todo 2400 unidades de distancia.
6 Conclusões Observando-se os resultados obtidos observou-se que o GACOM é uma ferramenta que pode ser muito útil para a implementação rápida, confiável e que pode gerar resultados satisfatórios quando aplicada a problemas de otimização que podem ser representados por cromossomos baseados em ordem. Neste trabalho, especificamente, foi tratado o PRVJT, um problema clássico da área de Otimização Combinatória, classificado como NP-Hard. Os resultados obtidos mostram que o AG proposto consegue de fato evoluir a solução no decorrer das gerações, sendo alcançados resultados razoáveis. Vale destacar que a literatura apresenta resultados mais satisfatórios do que os resultados listados nesse trabalho aplicando-se diversas técnicas de otimização tanto baseadas em métodos exatos como em métodos heurísticos. Diversos destes trabalhos, inclusive, utilizam a técnica de algoritmos genéticos, como por exemplo o trabalho de Alvarenga et al.(2007) que consegue alcançar a solução ótima para diversas instâncias propostas por Solomon(1987). Como trabalhos futuros, pode-se buscar empiricamente ou até mesmo utilizando outro GA, otimizar os parâmetros deste GA a fim de se obter resultados ainda mais satisfatórios do que os que foram apresentados neste artigo. Pretende-se também abordar o VRPJT como um problema de otimização multiobjetivo, utilizando técnicas como fronteira de Pareto, por exemplo. 7 Referências Alvarenga, G., Mateus, G., and Tomi, G. (2007). A genetic and set partitioning two-phase approach for the vehicle routing problem with time windows. Computers & Operations Research, 34:1561 1584. Solomon,M. (1987). Algorithms for the vehicle routing and scheduling problems with time window constraints. Operations Research, 35:254 265. Michalewick (1996) : Genetic Algoritms = Data Structures + Evolution Programs.