• Nenhum resultado encontrado

1.3 Classificação baseada nos métodos de solução

3.2.2 Heurísticas duas fases

O problema é decomposto em dois componentes, primeiramente há um agrupamento dos vér- tices e logo em seguida a rota propriamente dita, com possível volta para feedback entre as duas fases.

Os métodos de duas fases são mais conhecidos como Primeiro Agrupar - Depois Rotear (em in- glês cluster-first, route-second) ou Primeiro Rotear - Depois Agrupar (em inglês route-first, cluster-

second). Existem vários métodos de Primeiro Agrupar - Depois Rotear, os mais simples são deno-

minados como métodos de agrupamentos elementares, em que realiza um único agrupamento no conjunto de vértices e, então, determina a rota do veículo em cada grupo (cluster). Um segundo tipo utiliza um branch-and-bound truncado com o objetivo de produzir um bom conjunto de rotas para os veículos. Existem também o chamado algoritmo de Petal que produz uma grande familia de agrupamentos sobrepostos associadas as rotas dos veículos e depois seleciona a partir destes as rotas possíveis de uso.

3.2.2.1 Heurística de Gillet e Miller GM

Também conhecido como algoritmo de varredura, é aplicado em problemas em que os clientes estão posicionados no plano cartesiano. Clusters factíveis são inicialmente formados pela rotação de um raio, tendo o depósito como centro, naturalmente coloca-se o depósito na origem do sistema cartesiano, a rota do veículo em cada cluster é obtida resolvendo o PCV. O método foi popularizado por GM e sua implementação é simples.

1. Assuma que cada vértice 𝑖 é representado por coordenadas polares (𝜃𝑖, 𝜌𝑖) em que 𝜃𝑖 é o

ângulo e 𝜌𝑖 o comprimento da distância do cliente ao depósito, respectivamente.

2. Assuma o valor de 𝜃𝑖* = 0 para um vértice arbitrário 𝑖* e calcule os ângulos restantes de (0, 𝑖*), então crie uma lista seguindo a ordem crescente (ou decrescente) do ângulo 𝜃

𝑖. Passo 1 (Inicialização da rota). Escolha um veículo não utilizado 𝑘.

Passo 2 (Construção da rota). A partir de um vértice que não pertence a nenhuma rota e

que tenha o menor ângulo da lista gerada em 2, atribuir vértices ao veículo 𝑘 enquanto a sua capacidade ou comprimento máximo da rota não for excedido, geralmente a última restrição é dada em problemas com restrição de distância máxima permitida por veículo, a cada inserção pode ser aplicado o método de melhoramento 3-opt. Para os vértices que ainda não estão em nenhuma rota, volte ao 2.

Passo 3 (Melhoramento da rota). Otimizar separadamente a rota de cada veículo com o

PCV correspondente (utilizando métodos exatos ou aproximados).

3.2.2.2 Algoritmo de Fisher e Jaikumar FJ

O algoritmo de FJ, em que para formar os clusters o algoritmo resolve o Problema de Atribuição Generalizada (PAG) que segue os seguintes passos:

Passo 1 (Seleção de semente). Escolha um vértice 𝑗𝑘 ∈ 𝑉 para iniciar cada cluster 𝑘, 𝑗𝑘 é

denominado semente.

Passo 2 (Atribuição dos clientes na semente). Calcule o custo 𝑑𝑖𝑘 de atribuir cada cliente 𝑖 em

cada cluster 𝑘, em que 𝑑𝑖𝑘 = min {𝑐0𝑖+ 𝑐𝑖𝑗𝑘+ 𝑐𝑗𝑘0, 𝑐0𝑗𝑘 + 𝑐𝑗𝑘𝑖+ 𝑐𝑖0} −(𝑐0𝑗𝑘+ 𝑐𝑗𝑘0).

Passo 3 (Atribuição generalizada). Resolva o PAG com custo 𝑑𝑖𝑗, em que cada cliente tem de-

manda 𝑞𝑖 e a capacidade dos veículos é 𝑄.

Passo 4 (Solução PCV). Resolva para cada cluster correspondente da solução do PAG 3.2.2.3 Algoritmo de Bramel e Simchi-Levi BS

BS proporam uma heurística de duas fases em que as sementes são determinadas com a solução de um problema de localização capacitado e os vértices restantes são gradualmente incluídos em sua rota que é atribuída em uma segunda fase. Primeiramente localizam 𝐾 sementes, que são chamados de concentradores (em inglês concentrators), que estão entre as localizações dos 𝑛 clientes com o objetivo de minimizar a distância total entre as sementes garantindo em conjunto que a demanda total atribuída a um concentrador não seja maior que a capacidade 𝑄 do veículo. As rotas dos veículos são então construídas, inserindo a cada passo o cliente atribuído a essa rota semente, aquele cujo o menor custo de inserção. Considere a rota parcial 𝑘 descrita pelo vetor (0 = 𝑖0, 𝑖1, . . . , 𝑖𝑙, 𝑖𝑙+1 = 0), seja 𝑇𝑘 = {0, 𝑖1, . . . , 𝑖𝑙}e denotado por 𝑡 (𝑇𝑘) o comprimento da solução

ótima do PCV em 𝑇𝑘. O custo de inserção 𝑑𝑖𝑘 de um cliente 𝑖 na rota 𝑘 (em que 𝑖 não pertence a

nenhuma rota) é dado por

𝑑𝑖𝑘 = 𝑡 (𝑇𝑘∪ {𝑖}) − 𝑡 (𝑇𝑘) .

𝑑𝑖𝑘: 𝑑𝑖𝑘 = min ℎ=1,...,𝑙{2𝑐𝑖𝑖ℎ} (3.2.1) ou 𝑑𝑖𝑘 = min ℎ=0,...,𝑙 {︁ 𝑐𝑖ℎ𝑖+ 𝑐𝑖𝑖ℎ+1 − 𝑐𝑖ℎ𝑖ℎ+1 }︁ (3.2.2) Em que (3.2.1) representa o custo direto e (3.2.2) representa o custo de inserção mais próximo.

3.2.2.4 Branch-and-bound truncado B&B-T

Foi proposto por Mingozzi e Toth [66] um B&B-T para problemas com exatamente 𝐾 variáveis, que é uma simplificação do algoritmo exato proposto por Christofides [67]. Nesse procedimento existem tantos níveis na árvore de busca quanto de rotas, em cada nível contém um conjunto de rotas factíveis e rotas "não dominadas". Sendo que nesse procedimento a árvore de busca é tão simples que em cada nível consiste apenas em um ramo, uma vez que todos os ramos são descartados, exceto um no passo de definição de rota. Entretanto, uma árvore limitada pode ser construída, mantendo algumas rotas candidatas à melhor solução em cada nível. É definido como

𝐹ℎ o conjunto de vértices livres no nível ℎ, ou seja, os vértices que não pertencem a nenhuma rota

no nível ℎ.

Passo 1 (Inicialização). Seja ℎ := 1 e 𝐹ℎ := 𝑉 ∖{0}.

Passo 2 (Formação da rota). Se 𝐹ℎ = Ø, então, pare. Caso contrário, selecione um cliente 𝑖 ∈ 𝐹ℎ

que não pertence a nenhuma rota e forme o conjunto 𝑅𝑖 de rotas contendo 𝑖 e os clientes em 𝐹ℎ. Estas rotas são gradualmente formadas usando uma combinação linear de dois critérios:

economia e custo de inserção.

Passo 3 (Avaliação da rota). Nesse passo avaliamos cada rota 𝑟 ∈ 𝑅𝑖 utilizando a função 𝑓 (𝑟) =

𝑡(𝑆𝑟∪ {0}) + 𝑢 (𝐹ℎ∖𝑆𝑟), em que 𝑆𝑟 é um conjunto de vértices da rota 𝑟, 𝑡 (𝑆𝑟∪ {0}) é o

comprimento da melhor solução do PCV em 𝑆𝑟 ∪ {0} e finalmente 𝑢 (𝐹ℎ∖𝑆𝑟) é o menor

comprimento na árvore que ainda contém clientes que não pertencem a nenhuma rota.

Passo 4 (Definindo a rota). Determine uma rota 𝑟*produzida por min

𝑟∈𝑅𝑖{𝑓(𝑟)}. Seja ℎ := ℎ+1 e 𝐹ℎ := 𝐹ℎ−1∖𝑆𝑟*. Volte ao Passo 2.

3.2.2.5 Algoritmos petal

É uma extensão do método de varredura, que gera várias rotas que são chamadas de petals e realiza uma seleção final resolvendo um problema de particionamento que é dado abaixo:

min ∑︁ 𝑘∈𝑆 𝑑𝑘𝑥𝑘 sujeito a: ∑︁ 𝑘∈𝑆 𝑎𝑖𝑘𝑥𝑘 = 1 ∀ 𝑖= 1, . . . , 𝑛, 𝑥𝑘 ∈ {0, 1} ∀ 𝑘 ∈ 𝑆,

sendo 𝑆 é o conjunto de Rotas, 𝑥𝑘 = 1 se, e somente se, a rota 𝑘 está na solução, 𝑎𝑖𝑘é um parâmetro

binário que é igual a 1 apenas se o vértice 𝑖 está na rota 𝑘, 𝑑𝑘 é o custo de petal 𝑘.

Esta formulação foi proposta pela primeira vez por Balinski e Quandt [68], mas torna-se im- praticável quando |𝑆| é grande.

Documentos relacionados