• Nenhum resultado encontrado

2.2 Heur´ısticas e Metaheur´ısticas

2.2.2 Metaheur´ısticas

Recentemente, pesquisadores tem proposto novas camadas de controle sobre heur´ısticas simples, como as construtivas e de busca local. Estas camadas de controle estendem as

Algoritmo 2: Exemplo de Heur´ıstica de Busca Local 1 inicializa¸c˜ao;

2 enquanto a condi¸c˜ao de parada n˜ao ´e atendida fa¸ca 3 encontra uma perturba¸c˜ao da solu¸c˜ao atual;

4 se a perturba¸c˜ao encontrada melhora a solu¸c˜ao ent˜ao 5 executa a perturba¸c˜ao;

6 salva a solu¸c˜ao perturbada como sendo a melhor solu¸c˜ao; 7 retorna a melhor solu¸c˜ao encontrada;

������������� ����� ������������ �������� ������������ ������� ��������������� ���������� ��������� ������� � �

(a) Heur´ıstica Construtiva

������������� ����� ���������� ������������� ��������� ���������� �������������� ��������� �������������� � � � �

(b) Heur´ıstica de Busca Local

heur´ısticas de v´arias formas, a fim de que a trajet´oria de busca n˜ao fique presa a um m´ınimo local.

D´a-se o nome de metaheur´ısticas a estas camadas de controle adicionais, que modificam o comportamento das heur´ısticas sobre as quais elas foram adaptadas.

Atualmente, as metaheur´ısticas conhecidas como Large Neighborhood Search (LNS) e Variable Neighborhood Search (VNS) tem se mostrado muito eficazes na resolu¸c˜ao de pro- blemas de roteamento. Nos par´agrafos que seguem apresentamos estas metaheur´ısticas. Os conceitos nelas explorados foram utilizados como fundamentos para os algoritmos im- plementados neste trabalho.

Large Neighborhood Search

A metaheur´ıstica chamada de Large Neighborhood Search foi proposta por Shaw [52] em 1998 e estendida por Ropke e Pissinger [51] em 2005. A LNS ´e um algoritmo iterativo que destr´oi uma parte da solu¸c˜ao a cada itera¸c˜ao, usando uma heur´ıstica de “desconstru¸c˜ao” e a re-otimiza na tentativa de se encontrar uma solu¸c˜ao de melhor qualidade. O resultado da primeira etapa – a de desconstru¸c˜ao – ´e uma solu¸c˜ao parcial n˜ao necessariamente vi´avel. Na segunda etapa – a de re-constru¸c˜ao – uma solu¸c˜ao vi´avel ´e “re-constru´ıda” de forma a utilizar inteligentemente a informa¸c˜ao contida na solu¸c˜ao parcial que resulta da primeira etapa.

Esta metaheur´ıstica tamb´em pode ser vista como um m´etodo que alterna entre a fixa¸c˜ao de algumas caracter´ısticas da solu¸c˜ao e a re-otimiza¸c˜ao das caracter´ısticas restan- tes.

Algoritmo 3: A Metaheur´ıstica LNS 1 inicializa¸c˜ao;

2 enquanto a condi¸c˜ao de parada n˜ao ´e atendida fa¸ca 3 aplica a heur´ıstica H− de “Desconstru¸c˜ao”; 4 aplica a heur´ıstica H+ de “Reconstru¸c˜ao”;

5 se a solu¸c˜ao for a melhor encontrada at´e o momento ent˜ao 6 salva como melhor solu¸c˜ao;

7 retorna a melhor solu¸c˜ao encontrada;

Variable Neighborhood Search

A metaheur´ıstica Variable Neighborhood Search foi proposta por Mladenovic e Hansen [40] em 1997. .

Uma heur´ıstica de busca local simples segue sempre a mesma estrutura de vizinhan¸ca at´e encontrar o m´ınimo local. A VNS, por sua vez, n˜ao segue a trajet´oria de uma ´unica

estrutura de vizinhan¸ca. Ela explora estruturas de vizinhan¸cas cada vez mais distantes da solu¸c˜ao corrente, aceitando novas solu¸c˜oes somente quando h´a uma melhoria no custo da fun¸c˜ao objetivo.

Desta forma, VNS consegue – frequentemente – manter as caracter´ısticas positivas da melhor solu¸c˜ao corrente (como por exemplo, muitas vari´aveis que j´a est˜ao em seu valor ´otimo) que ser˜ao usadas para obter novas solu¸c˜oes na vizinhan¸ca, enquanto escapa dos m´ınimos locais da fun¸c˜ao objetivo com maior habilidade do que uma busca local simples, pela caracter´ıstica de explorar mais do que uma estrutura de vizinhan¸ca.

Um exemplo de VNS se encontra no Algoritmo 4. Esta metaheur´ıstica ´e alimentada com uma solu¸c˜ao inicial e com um conjunto de vizinhan¸casV, para o problema em quest˜ao. Iterativamente, uma estrutura deste conjunto de vizinhan¸cas ´e selecionada e aplicada na solu¸c˜ao, gerando uma perturba¸c˜ao no caminho da busca. Esta solu¸c˜ao ´e ent˜ao me- lhorada por alguma busca local. Se a solu¸c˜ao produzida por estes passos provoca uma melhoria no custo da fun¸c˜ao objetivo ela ´e aceita e a primeira estrutura do conjunto de vizinhan¸cas ´e escolhida novamente. Caso contr´ario, a pr´oxima estrutura do conjunto de vizinhan¸cas ´e selecionada. O algoritmo para quando o n´umero de itera¸c˜oes alcan¸ca um limite previamente especificado.

Algoritmo 4: A Metaheur´ıstica VNS 1 inicializa¸c˜ao;

2 V = conjunto de vizinhan¸cas para o problema em quest˜ao; 3 enquanto a condi¸c˜ao de parada n˜ao ´e atendida fa¸ca 4 escolha a primeira vizinhan¸ca v no conjuntoV;

5 aplique um movimento qualquer de v na solu¸c˜ao atual gerando uma perturba¸c˜ao no caminho de busca;

6 aplique uma busca local para melhorar a solu¸c˜ao perturbada;

7 se o valor da fun¸c˜ao objetivo desta nova solu¸c˜ao ´e o melhor encontrado ent˜ao 8 salva a solu¸c˜ao atual como melhor solu¸c˜ao;

9 volte ao passo 3 10 sen˜ao

11 escolha a pr´oxima vizinhan¸ca v no conjuntoV; 12 volte ao passo 5

13 retorna a melhor solu¸c˜ao encontrada;

Uma heur´ıstica de busca local frequentemente utilizada – no Passo 6 do Algoritmo 4 – de implementa¸c˜oes da VNS ´e a Variable Neighborhood Descendent (VND), tamb´em descrita por Hansen e Mladenovic [25]. A VND (ver Algoritmo 5) consiste em utilizar as vizinhan¸cas escolhidas numa ordem pr´e-determinada e, t˜ao logo que um movimento que melhora o custo da fun¸c˜ao objetivo, voltar a utilizar a primeira vizinhan¸ca da ordem

novamente. O algoritmo ´e aplicado at´e que a ´ultima vizinhan¸ca da ordem chegue a um m´ınimo local.

Algoritmo 5: 1 inicializa¸c˜ao;

2 V = conjunto de vizinhan¸cas para o problema em quest˜ao; 3 enquanto a condi¸c˜ao de parada n˜ao ´e atendida fa¸ca 4 escolha a primeira vizinhan¸ca v no conjuntoV; 5 aplique o melhor movimento de v na solu¸c˜ao atual; 6 se o valor da fun¸c˜ao objetivo foi melhorado ent˜ao 7 salva a solu¸c˜ao atual como melhor solu¸c˜ao; 8 volte ao passo 3

9 sen˜ao

10 escolha a pr´oxima vizinhan¸ca v no conjuntoV; 11 volte ao passo 5

12 retorna a melhor solu¸c˜ao encontrada;

As Metaheur´ısticas LNS e VNS na literatura do VRP

A escolha destes dois paradigmas, LNS e VNS, como base para a cria¸c˜ao dos m´etodos heur´ısticos nesta disserta¸c˜ao foi motivada por trabalhos de outros autores que apresentam metaheur´ısticas bastante eficazes para problemas reais e de grande porte, como aqueles que abordamos nesta disserta¸c˜ao, e por este motivo influenciaram a dire¸c˜ao da nossa pesquisa. Revisamos, a seguir, trˆes destes trabalhos.

Pissinger e Ropke [44] desenvolveram uma heur´ıstica unificada na qual instˆancias de cinco variantes do VRP s˜ao transformadas em instˆancias de um modelo rico de pro- blema de coleta e entrega que ´e, ent˜ao, resolvido num LNS. A heur´ıstica ´e capaz de resolver o problema de roteamento de ve´ıculos com janelas de tempo (VRPTW), com restri¸c˜oes de capacidade (CVRP), com m´ultiplos dep´ositos (MDVRP), com restri¸c˜oes dependentes de s´ıtio (SDVRP) e o problema de roteamento de ve´ıculos aberto (OVRP). Alguns dos resultados obtidos por essa heur´ıstica est˜ao entre os me- lhores j´a obtidos para instˆancias de Solomon [56], Homberger [27]. O maior atrativo dessa heur´ıstica ´e o baixo custo computacional para obter solu¸c˜oes de boa qualidade, caracter´ıstica bastante atraente quando se trata da resolu¸c˜ao de instˆancias grandes obtidas na pr´atica.

Prescott-Gagnon e colegas [45] propuseram outra abordagem para o VRPTW, desta vez fundamentada sobre uma algoritmo de gera¸c˜ao de colunas heur´ıstico inserida

no contexto da LNS. Esta metaheur´ıstica obteve resultados bastante significativos nas instˆancias de benchmark, especialmente nas instˆancias maiores, de 200 a 1000 clientes. O algoritmo alcan¸cou 145 novas melhores solu¸c˜oes de 356 instˆancias do conjunto de instˆancias de [56] e [27].

Kyt¨ojoki e colegas [35] apresentaram um algoritmo VNS que encontra rapidamente boas solu¸c˜oes para o CVRP com at´e vinte mil (20.000) clientes. A metaheur´ıstica atua em duas fases. Primeiro encontra uma boa solu¸c˜ao inicial com um algoritmo construtivo de inser¸c˜ao mais barata que ´e hibridizado com sete (7) heur´ısticas de busca local. Estas heur´ısticas de busca local s˜ao aplicadas em v´arios est´agios da constru¸c˜ao. Depois, na segunda fase da metaheur´ıstica, as estruturas de vizinhan¸ca das mesmas 7 heur´ısticas de melhoramento s˜ao aplicadas numa estrat´egia VNS.

O Problema do Caixeiro Comprador

Viajante

Apontamos, ao final do Cap´ıtulo 1, que os problemas estudados nesta disserta¸c˜ao surgem de opera¸c˜oes sobre o sistema de roteamento de ˆonibus fretados para o transporte de funcion´arios na UNICAMP.

Neste Cap´ıtulo estudamos o primeiro destes problemas: a otimiza¸c˜ao de uma ´unica rota de ˆonibus quando se considera a distˆancia m´axima que o funcion´ario pode percorrer a p´e de sua residˆencia at´e o ponto de embarque. Esta situa¸c˜ao ´e vista aqui como um caso especial do problema conhecido na literatura como o Problema do Caixeiro Comprador Viajante (TPP) [21] – do inglˆes, Traveling Purchaser Problem [7, 22, 42, 46] – uma im- portante generaliza¸c˜ao do Problema do Caixeiro Viajante, conforme veremos no decorrer do texto.

3.1

Introdu¸c˜ao

O TPP foi originalmente proposto por Ramesh [46] em 1967 e pode ser definido formal- mente como um problema em grafos, como segue. Seja G = (V, E) um grafo completo no qual um conjuntoV = {v0, ..., vn}, |V| = n + 1, onde v0 representa uma entidade especial chamada de base ou dep´osito e {v1, ..., vn} representa o conjunto de mercados de uma regi˜ao. As arestas do conjuntoE representam os menores caminhos entre os elementos de V e seus pesos ci,j, com (i, j)∈ E, refletem os custos de viagem entre os mesmos.

Considere, tamb´em, P o conjunto de todos os produtos dispon´ıveis nos mercados. Cada produto p∈ P pode ser comprado somente num subconjunto Vp ⊆ V de mercados em que ´e ofertado, uma vez que cada mercado v ∈ V oferta somente um subconjunto Pv ⊆ P de produtos.

Dada uma lista com a demanda dp de cada produto p (esta lista ´e chamada de lista 17

de requisi¸c˜oes a partir deste ponto), o objetivo do TPP ´e encontrar uma rota que passa por um subconjunto de mercados a serem visitados pelo comprador a fim de que ele possa adquirir todos os produtos na quantidade necess´aria para atender a demanda declarada na lista de requisi¸c˜oes, de tal forma que o custo total de transporte e de compra dos produtos seja minimizado.

Assume-se que: (a) cada mercado pode ser visitado apenas uma vez; que (b) o pre¸co unit´ario up,v e a quantidade ofertada qp,v de um mesmo produto p pode variar dependendo do mercado v ∈ Vp considerado; e, (c) o dep´osito n˜ao oferta produto algum.

Uma solu¸c˜ao S para o problema ´e representada por dois conjuntos de dados: (1) a sequˆencia de mercados que o comprador visita, chamada de rota e (2) a quantidade de cada produto que ´e comprada em cada um dos mercados visitados, ou lista de aquisi¸c˜oes.

´

E poss´ıvel avaliar o custo de uma solu¸c˜ao a partir da sua rota e de sua lista de aquisi¸c˜oes. Na pr´atica, o TPP pode ser visto como um problema log´ıstico de dois n´ıveis que devem ser resolvidos simultaneamente – enquanto o primeiro n´ıvel se concentra nas decis˜oes a respeito de quais produtos comprar, de que mercados e em que quantidade, o segundo considera as decis˜oes acerca da programa¸c˜ao da viagem do comprador viajante de forma a percorrer o menor caminho entre o dep´osito e mercados visitados.

No caso espec´ıfico deste trabalho, o primeiro n´ıvel corresponde ao agrupamento dos funcion´arios em pontos de ˆonibus; e, o segundo, consiste em construir a rota do ˆonibus pelos pontos escolhidos.

Outras aplica¸c˜oes comuns do TPP ocorrem no transporte e armazenamento de pro- dutos [54]. Uma aplica¸c˜ao interessante no campo do agendamento de produ¸c˜ao ´e descrito por Buzacott e Dutta [11]. Nesta aplica¸c˜ao uma m´aquina multi-prop´osito pode assumir algumas configura¸c˜oes i e cada tarefa k∈ K deve ser executada usando uma configura¸c˜ao em um conjunto Mk. Custos de roteamento ci,j correspondem ao custo de troca entre as configura¸c˜oes da m´aquina e os custos de aquisi¸c˜ao correspondem aos custos de execu¸c˜ao das respectivas tarefas.

A partir da descri¸c˜ao do TPP em sua forma mais geral podemos estabelecer dois tipos de classifica¸c˜oes, as quais apresentamos nos dois pr´oximos par´agrafos.

Distingue-se o problema entre sim´etrico e assim´etrico de acordo com as caracter´ısticas das arestas do grafo G. Sempre que o custo de viajar diretamente de um mercado vi a outro vj for o mesmo que o custo para viajar no sentido oposto, para todo par de mercados (vi, vj) ∈ V × V, dizemos que o TPP ´e sim´etrico. Caso contr´ario, problema ´e definido como assim´etrico. A variante assim´etrica pode ser encontrada na pr´atica, por exemplo, quando consideramos o roteamento sobre um mapa digital de vias no qual algumas delas tem m˜ao ´unica. Neste caso, o menor caminho de ida de um mercado va para um mercado vb pode ser diferente do menor caminho de volta. Note que a variante sim´etrica ´e, na verdade, um caso particular da variante assim´etrica.

Com rela¸c˜ao `as demandas dos produtos na lista de requisi¸c˜oes e suas ofertas nos mercados, podemos diferenciar o TPP em capacitado e n˜ao capacitado. Na vers˜ao n˜ao capacitada do TPP (UTPP, em inglˆes) assume-se que o mercado tem dispon´ıvel quan- tidade suficiente do produto para atender demanda da lista de requisi¸c˜oes por completo sempre que ele oferta um produto. Se pelo menos um mercado oferta algum produto p em quantidade menor do que a sua demanda dp na lista de requisi¸c˜oes ent˜ao o problema ´e dito capacitado (CTPP, em inglˆes). Observe que a vers˜ao n˜ao capacitada do TPP pode ser considerada como um caso especial da vers˜ao capacitada em que as demandas e as ofertas dos produtos s˜ao unit´arias, dp = 1 e qp,v ∈ {0, 1}, para todos os produtos p ∈ P.

O restante deste Cap´ıtulo est´a organizado como se segue. Apresentamos uma breve revis˜ao da literatura na Se¸c˜ao 3.2. Na Se¸c˜ao 3.3, os novos algoritmos heur´ısticos projetados neste trabalho s˜ao descritos. As estruturas de busca local e algumas estruturas de dados usadas nestes algoritmos s˜ao analisadas na Subse¸c˜ao 3.3.1 e na Se¸c˜ao 3.4, respectivamente. Os resultados computacionais obtidos s˜ao comparados com os da literatura na Se¸c˜ao 3.5. A Se¸c˜ao 3.6 apresenta as conclus˜oes e algumas das poss´ıveis extens˜oes deste trabalho.