Um Estudo da Aplicação de Heurísticas Construtivas e de
Transcrição
Um Estudo da Aplicação de Heurísticas Construtivas e de
Um Estudo da Aplicação de Heurísticas Construtivas e de Melhoramento para um Problema de PRV Eliseu Celestino Schopf1, Claudio Schepke1, Marcus Lucas da Silva1, Pablo Furlan da Silva1 1 Centro de Eletrônica e Tecnologia – Universidade Federal de Santa Maria (UFSM) Faixa de Camobi, km 9 – Santa Maria – RS – Brasil {eliseu, schepke, marc, pablof}@inf.ufsm.br Resumo. O problema de roteamento de veículos é um problema de otimização combinatória, definido a mais de quarenta anos, que continua sendo uma tarefa desafiadora. Este problema consiste em arranjar o conjunto ótimo de rotas para determinada frota de veículos de maneira a servir um dado conjunto de clientes. O interesse no problema de roteamento de veículos é motivado pela sua relevância prática e pela sua considerável dificuldade. Na resolução desse problema, tratada neste artigo, é estabelecida uma comparação entre as heurísticas construtivas do “Vizinho Mais Próximo”, do “Vizinho Mais Próximo Dá Chance” e o de Savings. Também, as heurísticas de Melhoramento 2-OPT Intra-rotas, 2-OPT Inter-rotas e algoritmo de Swap, são comparadas a partir da execução sobre as soluções iniciais resultantes das heurísticas construtivas. Dessa forma, conseguiu-se quantificar, neste estudo de caso, as melhorias definidas por cada heurística. 1. INTRODUÇÃO Uma classe de problemas que desperta interesse, por parte de pesquisadores, devido a sua complexidade, são os problemas não determinísticos em tempo polinomial (NP). Esses problemas não apresentam soluções viáveis através de algoritmos tradicionais, devido à alta exigência de tempo para a sua resolução. Uma alternativa, normalmente adotada, é fazer uso de métodos heurísticos. Os métodos heurísticos visam encontrar uma solução que satisfaça o problema, não necessariamente a melhor, em um tempo computacional aceitável. Estes métodos são aplicados a problemas cuja obtenção da solução ótima é computacionalmente dispendiosa quando calculada por métodos exatos1. O Problema do Roteamento de Veículos (PRV) é o nome genérico dado a uma classe de problemas no qual é preciso determinar as rotas que minimizem o custo de percorrimento de todos os pontos em uma dispersão geográfica. O PVR é um problema da classe NP que pode ser utilizado em uma série de situações práticas no âmbito local (centros distribuidores de produtos) a nacional (indústria automotiva) [GALBIER,2004]. Este artigo apresenta uma comparação entre as heurísticas construtivas do 1 Método exato é aquele que testa todas as alternativas existentes do problema, resultando sempre na melhor solução possível. “Vizinho Mais Próximo”, “Vizinho Mais Próximo Dá Chance” e Savings. Também, as heurísticas de melhoramento 2-OPT Intra-rotas, 2-OPT Inter-rotas e algoritmo de Swap, são comparadas a partir da execução sobre as soluções iniciais resultantes das heurísticas construtivas. 2. DESCRIÇÃO DAS HEURÍSTICAS APLICADAS Para resolução do problema de roteamento de veículos, foram empregadas heurísticas construtivas e de melhoramento, que seguem abaixo descritas. 2.1 Heurísticas Construtivas Algoritmo “Vizinho Mais Próximo” A heurística do vizinho mais próximo, descrita por [SOLOMON,1987] utiliza uma matriz para definir a distância entre os pontos. O percurso é construído com base na distância entre estes pontos, sendo o ponto mais próximo da origem adicionado primeiro e os demais pontos adicionados posteriormente. Esses pontos são inseridos segundo a sua proximidade em relação ao último ponto adicionado na rota. Algoritmo “Vizinho Mais Próximo Dá Chance” Este método é semelhante ao método de busca do mais próximo, porém, em vez de encerrar a rota quando estoura a demanda, ele escolhe o ponto seguinte ao mais próximo. Se também não couber, tenta o seguinte e assim sucessivamente. Se não achar nenhum, encerra a rota. Algoritmo de Savings O Algoritmo de Savings, ou Algoritmos das Economias, proposto por Clarke e Wright [CLARKE,1964], baseia-se na noção de economias, que pode ser definido como o custo da combinação, ou união, de duas sub-rotas existentes. Trata-se de uma heurística iterativa de construção baseada numa função gulosa de inserção. Um algoritmo de Savings inicia com um processo iterativo que visa percorrer todas as cidades duas a duas, de maneira a calcular as economias, ou seja, sendo i e j cidades distintas, Cij o custo entre as duas cidades, e 0 o depósito, tem-se as economias Sij: Sij = C0i + Cj0 - Cij Esta fórmula permite, então, ter o conhecimento das cidades com distâncias mais próximas. Em segunda instância, um outro processo iterativo busca o maior Savings, toma as duas cidades mais próximas e as roteia em relação à cidade-base. Segundo a definição de [LIU, 1999], duas rotas contendo os clientes i e j podem ser combinadas, desde que i e j estejam ou na primeira ou na última posição de suas respectivas rotas e que a demanda total das rotas combinadas não ultrapasse a capacidade do veículo. Por ser sempre escolhida a maior economia dentre as possíveis, a função de escolha é dita gulosa. 2.2 Heurísticas de Melhoramento Heurística 2-OPT Intra-rotas O método de melhoramento 2-OPT intra-rotas proposto por [LINS,1973], consiste na possível troca de dois arcos, não consecutivos, de uma rota e refazer as conexões, criando uma nova rota. Se o custo da nova rota for menor que o custo da rota original, a nova é mantida. O processo termina através de um critério de parada, que foi estabelecido pelo número de execuções. Como pode ocorrer inversão de sentido em parte da rota, pressupõe-se simetria de distâncias. Heurística 2-OPT Inter-rotas O método de melhoramento 2-OPT inter-rotas proposto por [LINS,1973], consiste na possível troca de dois arcos de duas rotas diferentes, um de cada rota e refazer as conexões, criando duas rotas novas. Haverá dois possíveis casos de rotas novas. Se o custo das novas rotas, de algum dos casos, for menor que o custo das rotas originais e a capacidade dos veículos não for ultrapassada, as novas rotas serão mantidas. O processo termina através de um critério de parada, que foi estabelecido pelo número de execuções. Como pode ocorrer inversão de sentido em parte da rota, pressupõe-se simetria de distâncias. Swap O algoritmo de Swap, descrito em [CORBERAN,2000], consiste de trocas simples entre cidades das rotas. Duas cidades diferentes são escolhidas aleatoriamente e, se a troca delas diminui o custo total das rotas, essas cidades são trocadas de posição. O processo termina através de um critério de parada por número de iterações pré-estabelecido. 3. IMPLEMENTAÇÃO As heurísticas, expostas neste artigo, foram implementadas sob tecnologia Java, utilizando plataforma JDK 1.4.1_02, de acordo com os passos descritos nesta seção. 3.1 Heurísticas Construtivas Algoritmo “Vizinho Mais Próximo” O algoritmo “Vizinho Mais Próximo” foi implementado conforme a seqüência de passos escrita a seguir: 1) Define a cidade corrente como sendo a garagem. 2) Enquanto a soma das demandas para as cidades da rota não ultrapassar a capacidade do caminhão, acrescenta a cidade mais próxima da cidade corrente na rota, passando essa a ser a cidade corrente. 3) Quando ultrapassar a capacidade, encerra a rota. 4) Se ainda houverem cidades não acrescentadas em alguma rota, cria uma nova rota, repetindo os passos 1 a 3. Algoritmo “Vizinho Mais Próximo Dá Chance” O algoritmo do “Vizinho Mais Próximo Dá Chance” foi implementado a partir de uma modificação do terceiro passo do algoritmo “Vizinho Mais Próximo”, conforme a sua implementação detalhada a seguir: 1) Define a cidade corrente como sendo a garagem. 2) Enquanto a soma das demandas para as cidades da rota não ultrapassar a capacidade do caminhão, acrescenta a cidade mais próxima da cidade corrente na rota, passando essa a ser a cidade corrente. 3) Quando ultrapassar a capacidade, escolhe a cidade seguinte na ordem de proximidade até encontrar alguma que não estoure a capacidade ou não houver mais cidades. 4) Encerra a rota. 5) Se ainda houverem cidades não acrescentadas em alguma rota, cria uma nova rota, repetindo os passos 1 a 4. Algoritmo de Savings Sendo i e j cidades distintas, Cij o custo entre as duas cidades, 0 o depósito e Sij as economias, o algoritmo de Savings se processa da seguinte forma: 1) Enquanto existirem economias a serem calculadas vai para 2, senão vai para 3. 2) Sij = C0i + Cj0 - Cij // Calcula Savings 3) Enquanto existirem Savings sem marcas, busca_maior_nao_marcado(Sij), marca(Sij) e vai para 4, senão encerra rota. 4) Se i ou j já estiverem roteadas entre duas outras cidades, vai para 3. 5) Se i e j não estiverem roteados, tenta ligar a rota com extremidade em i com a rota com extremidade em j. Vai para 3. 6) Se i está roteado e j não, roteia j a i, vai para 3. 7) Se j está roteado e i não, roteia i a j, vai para 3. 3.2 Heurísticas de Melhoramento Heurística 2-OPT Intra-rotas O algoritmo 2-OPT Intra-rotas foi implementado conforme os passos descritos a seguir: 1) Sorteia dois arcos diferentes da rota. 2) Se os dois arcos forem consecutivos, repete 1. 3) Troca os arcos e refaz conexões. 4) Se o custo da nova rota for menor que o custo da rota original: rota_original = rota_nova. 5) Se número de execuções menor que critério de parada vai para 1. Heurística 2-OPT Inter-rotas O algoritmo 2-OPT Inter-rotas foi implementado conforme os passos descritos a seguir: 1) Seleciona um arco de cada rota. 2) Se os dois arcos forem ligados com a origem repete 1. 3) Troca os arcos e refaz conexões do caso 1. 4) Se o novo_custo < custo_original e Capacidade mantida, guarda rotas. 5) Troca os arcos e refaz conexões do caso 2. 6) Se o novo_custo < custo_original e Capacidade mantida, guarda rotas. 7) Atualiza rotas 8) Se número de execuções menor que critério de parada vai para 1. Swap O algoritmo de Swap realiza trocas simples entre duas cidades das rotas conforme descrito a seguir: 1) Escolhe aleatoriamente duas cidades diferentes, independe de seres da mesma rota ou não. 2) Se o custo das rotas com essas cidades trocadas de posição for menor que o custo atual, troca as cidades. 3) Repete os passos 1 e 2 por um número de vezes pré estabelecido. 4. RESULTADOS Nessa seção serão feitos dois tipos de comparações. Num primeiro momento, são comparadas apenas as heurísticas construtivas, posteriormente são feitas comparações das heurísticas de melhoramento, sendo executadas a partir da solução gerada por cada uma das heurísticas construtivas. Nesta seção será demonstrada a análise dos resultados de uma instância de vinte e oito cidades. Para a realização dos testes foi usado um computador com processador Pentium IV com velocidade de processamento de 2.4 MHz e 512 Mb de memória RAM. As heurísticas são analisadas levando em consideração o tempo de execução e o custo da solução construída. A demanda total para todas as cidades somou 1886 unidades de produto. Todos os algoritmos conseguiram encontrar soluções com cinco rotas. 4.1 Comparações das Heurísticas Construtivas Análise de custo Percebe-se uma vantagem no resultado (custo) final da construção por parte do algoritmo de Savings em relação aos algoritmos do “Vizinho Mais Próximo” (VMP) e do “Vizinho Mais Próximo Dá Chance” (VMPDC). O primeiro obteve uma melhora de 1,95% e 1,71% sobre o VMP e VMPDC, respectivamente. Pode-se notar também, que o algoritmo de VMPDC teve um custo 0.25% melhor do que o VMP. Essas informações podem ser visualizadas através da figura 1. C u s to d a s H e u rís tic a s C o n s tru tiv a s 1 00 00 995 0 990 0 985 0 C u sto 980 0 975 0 970 0 965 0 VMP V M P DC S avings Figura 1: Comparação de custo das soluções geradas pelas heurísticas. 4.2 Comparações das Heurísticas de Melhoramento As heurísticas de melhoramento são executadas a partir das soluções iniciais geradas pelas heurísticas construtivas. Todas são executadas por 500 iterações. Análise de custo Nesta seção são apresentadas comparações de custos entre as heurísticas de melhoramento 2-OPT Intra-rotas, 2-OPT Inter-rotas e de Swap. Ao aplicar as heurísticas de melhoramento sobre o algoritmo construtivo de “Vizinho Mais Próximo” se pode notar que o 2-OPT Intra-rotas não obtém melhora alguma, ao contrário do 2-OPT Inter-rotas e Swap, os quais possibilitam uma melhora de 0.63% e 1.41%, respectivamente. Tais informações podem ser vistas na figura 2. Custo das Heurísticas de Melhoramento Sobre o VMP 10000 9950 9900 9850 Intra2OPT Inter2OPT Swap 9800 9750 Figura 2: Comparação do custo das soluções obtidas pelas heurísticas sobre o construtivo VMP. As heurísticas de melhoramento aplicadas sobre o algoritmo construtivo do “Vizinho Mais Próximo Dá Chance” proporcionam uma modesta melhoria de 0.08%, 0.7% e 0.88% para 2-OPT Intra-rotas, 2-OPT Inter-rotas e Swap, respectivamente. As informações citadas podem ser visualizadas na figura 3. Quando se utiliza o algoritmo construtivo de Savings e em seu resultado são aplicadas heurísticas de melhoramento 2-OPT Intra-rotas, 2-OPT Inter-rotas e Swap, obtém-se como resultado (custo) final uma melhoria de 0.25%, 1.7% e 1.02%, respectivamente, como mostra a figura 4. Custo das Heurísticas de Melhoramento Sobre o VMPDC 9960 9940 9920 9900 9880 9860 9840 9820 Intra2OPT Inter2OPT Swap Figura 3: Comparação do custo das soluções obtidas pelas heurísticas sobre o construtivo VMPDC. Custo das Heurísticas de Melhoramento Sobre o Savings 9800 9750 Intra2OPT 9700 9650 Inter2OPT Swap 9600 9550 Figura 4: Comparação do custo das soluções obtidas pelas heurísticas sobre o construtivo Savings. 5. CONCLUSÃO Quanto às heurísticas construtivas, pode-se perceber que a de Savings constrói uma solução visivelmente melhor que as demais heurísticas. Em relação às heurísticas de melhoramento aplicadas sobre as construtivas, neste estudo, percebemos que a 2-OPT Inter-rotas sobre Savings obteve o melhor resultado (menor custo), seguido do Swap sobre Savings e 2-OPT Intra-rotas, também, sobre Savings. O pior resultado (maior custo) foi encontrado na combinação de 2-OPT Intra-rotas sobre VMP. O melhor resultado apresentou uma melhora de 0.68% em relação ao segundo, 1.45% em relação ao terceiro e 3.61% em relação ao pior caso. 6. REFERÊNCIAS BIBLIOGRÁFICAS [CLARKE,1964] CLARKE, G. & WRIGHT, J., "Scheduling of vehicles from a central depot to a number of delivery points", Operations Research, 12 #4, 568-581, 1964. [CORBERAN,2000] CORBERÁN, A. & FERNÁNDEZ, E. & LAGUNA, M. & MARTÍ, R. Heuristic Solutions to the Problem of Routing School Buses with Multiple Objectives. Departament d’Estadística i Investigació Operativa, Universitat de València, Burjassot 46100, Spain.August 7, 2000. [GALBIER,2004] GALBIER, F & LORENA, L. A. N. Uma Heurística Construtiva aplicada a Problemas de Roteamento de Veículos. Disponível e acessado em acessado 05 de julho de 2004 http://www.lac.inpe.br/~lorena/galbier/www/vrp.html. [LINS,1973] LINS, S. & B. W. Kernigham. An Effective Heuristic Algorithm for the Traveling Salesman Problem, Operations Research, v.21, p.498-516, 1973. [LIU,1999] LIU, Fuh-Hwa & SHEN, Sheng-Yuan, A Metohd for Vehicle Routing Problem with Multiple Vehicle Types ad Time Windows, Department of Industrial Enginnering and Management National Chiao Tung University, Hsinchu, Taiwan, Proc. Natl. Sci. Counc., vol 23, n. 4, p. 526-536, 1999. [SOLOMON,1987] SOLOMON, M.M. Algorithms for the Vehicle Routing and Scheduling Problems with Time Window Constraints. Operations Research, 35(2): p. 254-265. 1987.