• Nenhum resultado encontrado

Greedy Randomized Adaptive Search Procedure GRASP A meta-heurística GRASP é bastante aplicada em problemas de otimização combi-

4 Abordagens de solução do PCV-MPQ

4.2.1 Greedy Randomized Adaptive Search Procedure GRASP A meta-heurística GRASP é bastante aplicada em problemas de otimização combi-

natória e foi inicialmente introduzida por (FEO; RESENDE, 1989). Sua estrutura consiste basicamente, na construção de uma solução e numa busca local de melhoria de solução. O diferencial deste método de solução está na sua etapa de construção que utiliza de uma estratégia gulosa-aleatória. Esta etapa pode ser realizada de várias maneiras. Uma das maneiras é a estratégia que utiliza uma Lista Restrita de Candidatos - LRC definida a partir de um processo guloso de avaliação. A lista sempre será composta por um conjunto restrito de elementos que podem pertencer à solução. A cada atualização da LRC um elemento é escolhido para compor a solução utilizando um procedimento aleatório. Outra estratégia de construção de solução seria utilizar o método da roleta, que não necessita de uma LRC. A seleção de elemento para compor a solução utili- zando a roleta é realizada de uma forma aleatória com viés guloso, que dá aos melhores elementos possíveis, uma maior chance de serem selecionados (GOLDBARG; GOLDBARG; LUNA, 2017). A meta-heurística GRASP que utiliza LRC na etapa de construção é exi- bida no Algoritmo 4.

O Algoritmo 4 realiza inicialmente, no passo 1 a definição da variável s* que irá

armazenar a melhor solução encontrada. Logo após, no passo 2 dá início a um laço que é executadointMax vezes. A cada execução do laço do passo 2, um laço no passo 3 é

Algoritmo 4GRASP GRASP ()

1.s* ← ∅;

2. Parai de 1 até intMax faça

3. Enquanto uma solução não é alcançada

4. Define LRC; 5. Selecionas ∈ LRC; 6. S = S ∪ s; 7. S0 ←buscalocal(S); 8. Se f(S0) < f(s∗) 9. s∗ ← S0; 10. Retorne s∗;

executado até que uma solução definida porS seja alcançada, sendo que a cada execu-

ção define uma LRC e desta lista seleciona um elemento definido pors para compor

a soluçãoS. No passo 7 um procedimento de busca local que gera a solução S’ é reali-

zada, tomando como base a soluçãoS recém-criada. Já no passo 8 S’ é comparada com

a melhor solução, caso seja melhor, a melhor solução é atualizada no passo 9. Ao final, o passo 10 retorna à soluçãos*.

4.2.1.1 GRASP com a heurística LKH

Uma meta-heurística GRASP que utiliza o método da roleta na etapa de constru- ção, e que utiliza a heurística LKH e o modelo descrito na seção 3.3 para determinação da configuração de embarque do veículo, empregados no Algoritmo 3, foi desenvol- vida. O LKH foi empregado na busca local e tem como objetivo otimizar a solução da rota encontrada, sem analisar a possibilidade de embarque de passageiros. Processos de vizinhança também foram empregados na busca local, tendo sido utilizados os dois seguintes: Insere, onde cada localidade que não pertence a solução é verificada a sua inserção no final da solução; e Remove, onde cada localidade que pertence a solução é verificada a sua remoção da solução. Em cada processo de vizinhança empregado,

analisa-se a possibilidade do embarque de passageiros e preserva-se a melhor solução encontrada. No processo de vizinhança Remove, analisa-se a viabilidade do bônus da solução. O algoritmo é denominado por G-LK.

Para tratar a característica do bônus do PCV-MPQ, a roleta do G-LK foi definida por um conjunto de elementos que representam o bônus das localidades não perten- centes a solução. Sendo xi o valor do bônus da localidade i, cada elemento da roleta é

equivalente a xi. Os elementos que possuem mais bônus terão mais chance de serem

selecionados para compor a solução. A meta-heurística G-LK é exibida no Algoritmo 5.

O Algoritmo 5 necessita do parâmetro intMax, que define a quantidade de itera-

ções.

O Algoritmo 5 realiza no passo 1, a definição da variável s* que irá armazenar a

melhor solução encontrada. Depois, o passo 2 executa um laçointMax vezes. A cada

execução do laço do passo 2, o passo 3 executa um laço que constrói uma solução definida porS utilizando o método da roleta. A cada execução do laço do passo 3 define

uma roleta e desta roleta seleciona um elemento definido pors para compor a solução S. No passo 7, define o embarque ótimo de passageiros para S, e no passo 8, atualiza s* se S for melhor. Posteriormente, o passo 9 inicia um laço que é executado enquanto

a solução S for atualizada pela solução definida por S’, sendo que a cada iteração o

passo 10 define a solução S’ utilizando o procedimento de busca local LKH, o passo

11 define o embarque ótimo de passageiros paraS’, e realiza no passo 12 o processo

de vizinhança Insere e no passo 13 o processo de vizinhança Remove. Em seguida, o passo 14 atualizas* se S’ for melhor. No passo 16, a solução S é atualizada por S’ se s*

Algoritmo 5G-LK G-LK ()

1.s* ← ∅;

2. Parai de 1 até intMax faça

3. Enquanto a quota mínima deS não é alcançada

4. Define Roleta; 5. Selecionas ∈ Roleta; 6. S = S ∪ s; 7. Embarque ótimo (S); 8. Atualiza (s*, S); 9. Faça 10. S0 ←busca LKH (S); 11. Embarque ótimo (S0); 12. Insere (S0); 13. Remove (S0); 14. Atualiza (s∗, S0);

15. Se (s∗ for atualizado por S0) 16. S ← S0;

17. Enquanto (S for atualizado por S0) 18. Retorne s∗;

4.2.1.2 GRASP com o Path-Relinking - PR

O PR foi inicialmente proposto por (GLOVER, 1997) como uma estratégia de inten- sificação de soluções. Diferentemente de outros métodos que utilizam da aleatoriedade para gerar novas soluções, como é o caso dos Algoritmos Genéticos, o PR gera novas soluções explorando caminhos que conectam soluções a soluções de elite previamente conhecidas.

A ideia principal do PR é conectar soluções explorando caminhos. Então, sejarotaX

uma solução inicial, erotaElite uma solução de elite, um novo caminho é definido por

uma movimentação emrotaX guiada por rotaElite.

A estrutura PR aplicada ao PCV-MPQ, utilizou o método EH para realizar o embar- que de passageiros e consiste basicamente, na construção de novas soluções, a partir de trocas de localidades pertencentes a solução inicial, substituições de localidades per- tencentes a solução inicial por localidades pertencentes a solução de elite, inserções de localidades pertencentes a solução de elite na solução inicial e remoções de localidades da solução inicial que não pertencem a solução de elite. O algoritmo PR é exibido no Algoritmo 6.

Algoritmo 6PR PR (rotaX, rotaElite)

1. Parai = 1 até tamRotaMenor

2. SerotaX[i] , rotaElite[i]

3. SerotaElite[i] ∈ rotaX

4. Troca(rotaX, rotaX[i], rotaElite[i]);

5. EH(rotaX); 6. Senão 7. rotaX[i] ← rotaElite[i]; 8. EH(rotaX); 9. Se tamanho(rotaX) < tamanho(rotaElite) 10. Insere(rotaX, rotaElite);

11. Senão se tamanho(rotaX) > tamanho(rotaElite)

12. Remove(rotaX, rotaElite);

O Algoritmo 6 incialmente, no passo 1 executa um laço que é executado tamRo- taMenor vezes, equivalente ao tamanho da menor solução, dentre a rotaX e rotaElite,

passadas por parâmetro. A cada execução do laço, verifica no passo 2, se a localidadei

das soluções são diferentes, se sim, realiza no passo 4 uma troca na posição de localida- des darotaX, e no passo 5 define o embarque de passageiros para rotaX, se o elemento rotaElite[i] pertencer a rotaX, ou, a substituição no passo 7 da localidade i que pertence

a rotaX pela localidade i pertencente a rotaElite e definição no passo 8 do embarque

de passageiros pararotaX. Após, no passo 9 se o tamanho da rotaX for menor que o

tamanho da rotaElite o procedimento Insere no passo 10, que insere em rotaX locali-

dades pertencentes arotaElite e não pertencente a rotaX é realizado, caso contrário, o

procedimento Remove no passo 12, que remove de rotaX localidades pertencentes a rotaX e não pertencentes a rotaElite é realizado. Ao final, no passo 13 a melhor solu-

ção definida porrotaBest é atualizada. Os procedimentos Insere e Remove, analisam a

possibilidade do embarque de passageiros e preservam a melhor solução encontrada. A seguir na Figura 2, apresenta exemplos de caminhos do PR.

Figura 2: Exemplos de caminhos PR

Na Figura 2, apresenta três exemplos de caminhos PR, que diferenciam basica- mente pelo tamanho das soluções analisadas. No exemplo quando as soluções possuem tamanhos iguais, apenas procedimentos de troca e substituição é realizado. Quando o tamanho da solução alvo é maior, procedimentos de inserção é realizado após a verifi- cação de todas as localidades da solução inicial. Já quando o tamanho da solução alvo é menor, procedimentos de remoção de localidades é realizado após comparar uma

quantidade de localidades equivalente ao tamanho da solução alvo.

Uma meta-heurística GRASP, que utiliza o método da roleta na etapa de constru- ção, o PR na etapa de busca local e o método EH, foi desenvolvida. O objetivo do PR é otimizar a solução encontrada visando o custo e a possibilidade de embarque de pas- sageiros. A cada rota gerada pelo PR realiza-se o embarque para saber qual a melhor solução. O algoritmo é denominado por G-PR.

Para tratar a característica do bônus e dos passageiros do PCV-MPQ, a roleta no G- PR foi definida por um conjunto de elementos que representam o bônus e a quantidade de passageiros das localidades não pertencentes a solução. Sendo xio valor do bônus da

localidade i e yi a quantidade de passageiros com origem na localidade i e destino não

visitado pelo motorista, cada elemento da roleta é equivalente a (xi . yi). Os elementos

que possuem mais bônus e passageiro com destino não visitado pelo motorista terão mais chance de serem selecionados para compor a solução. A meta-heurística G-PR é exibida no Algoritmo 7.

O Algoritmo 7 necessita de um conjunto de parâmetros, que são listados a seguir:

tamMaxCE: tamanho máximo do conjunto de soluções de elite;

intMax: quantidade de iterações.

O Algoritmo 7 realiza no passo 1 a inicialização da variável s* que irá armazenar

a melhor solução encontrada. Logo após, no passo 2 dá início a um laço que executa

intMax vezes. A cada execução do laço do passo 2 é executado um laço no passo 3, que

a cada iteração define uma roleta e seleciona desta roleta um elemento definido pors

para compor a solução definida porS, até que a quota mínima de S não for atingida. No

passo 7 define o embarque de passageiros paraS. No passo 8 a solução S é comparada

coms*, caso S seja melhor, no passo 9 a melhor solução é atualizada. Logo em seguida,

o passo 10 atualiza o conjunto de soluções de elite definido porCE, inserindo s*, caso

o conjunto ultrapasse a sua capacidade máxima de soluções defina por tamMaxCE é

removida a solução que está há mais tempo no conjunto. Já no passo 11 realiza o pro- cedimento PR tomando como baseS, uma solução do CE selecionada aleatoriamente e s*, com o objetivo de melhorar s*. Ao final, no passo 12 a melhor solução encontrada é

Algoritmo 7G-PR G-PR()

1.s* ← ∅;

2. Parai de 1 até intMax faça

3. Enquanto a quota mínima deS não é alcançada

4. Define Roleta; 5. Selecionas ∈ Roleta; 6. S = S ∪ s; 7. EH (S); 8. Se f(S) 6 f(s*) 9. s* ← S;

10. Atualiza (CE, tamMaxCE, s*);

11. PR(S, CE, s*);

4.2.1.3 GRASP com o Variable Neighborhood Descending with Perturbation - VNDP O Variable Neighborhood Search - VNS é um método de busca meta-heurístico, in-

troduzido inicialmente por (MLADENOVIĆ; HANSEN, 1997). Basicamente, seu objetivo é intensificar uma solução de um dado problema examinando um conjunto de processos de vizinhança.

O VNDP (GOLDBARG; GOLDBARG, 2012) é uma variante do VNS, que combina a busca com movimentos de diversificação. Esses movimentos também são denominados deshaking e possuem o objetivo de mudar a direção da busca. A meta-heurística VNDP

desenvolvida e exibida no Algoritmo 8, tomou como base o VNDP citado e utilizou o EH para a alocação de passageiros.

Algoritmo 8VNDP

VNDP()

1. Selecione vizinhança Nv,v = 1,...,vmax;

2.S ← SoluçãoInicial(); 3.v ← 1; 4. Enquantov 6 vmax 5. S’ ← buscaLocal(Nv(S), C); 6. Se f(S0) < f(S) 7. S ← S0; 8. v ← 1; 9. Se não 10. shaking(S, k); 11. EH(S); 12. v ← v + 1;

13. Retorne a melhor solução encontrada;

O Algoritmo 8 inicialmente, no passo 1 seleciona o conjunto de processos de vi- zinhança, no passo 2 defini a solução inicial S e passo 3 armazena na variável v, que

nhança do conjunto de processos de vizinhança. Após, no passo 4 um laço é executado enquanto v for menor ou igual ao identificador da vizinhança máxima definido por vmax. A cada execução do laço, no passo 5 uma solução definida porS’ é gerada após

uma busca local em S utilizando a vizinhança v e o parâmetro C que controla a não

convergência da busca, ou seja, se a busca local gerarC soluções consecutivamente que

não são melhores que a solução S, o procedimento buscaLocal é interrompido e re-

torna a melhor solução encontrada na busca. Posteriormente, no passo 7 a soluçãoS e

no passo 8 o parâmetrov são atualizados se S’ for melhor que S, caso contrário, realiza

no passo 10 o procedimentoshaking que troca k par de localidades vizinhas da solução S escolhidas aleatoriamente, no passo 11 a definição do embarque de passageiros para S, e no passo 12 incrementa em uma unidade o parâmetro v. O algoritmo finaliza, no

passo 13 retornando a melhor solução encontrada.

O conjunto de processos de vizinhança utilizado no Algoritmo 8 é composto pelos seguintes processos: Insere, onde cada localidade que não pertence a rota é verificado a sua inserção no final da rota; Substituição, onde cada localidade pertencente a rota é verificada a sua substituição por cada localidade não pertencente a rota; e 2-opt, onde todas as possibilidades de remover e reinserir dois trechos da rota é verificado. Em cada processo de vizinhança empregado, realiza-se o embarque de todas as rotas geradas e preserva-se a melhor. A seguir na Figura 3, apresenta exemplos de operação das vizinhanças utilizadas.

Figura 3: Exemplos de operações das vizinhanças

Na Figura 3 na vizinhança Insere, a localidade 9 que não pertence a solução é in- serida no final da solução proporcionando o aumento do tamanho da solução em uma unidade. Na vizinhança Substituição, a localidade 4 é substituída pela localidade 9 que não pertence a solução. Já na vizinhança 2-opt os trechos de rota 1 - 2 e 6 - 8 são trocados.

Um algoritmo GRASP denominado por G-VNDP, que utiliza o VNDP, o método EH, e o método da roleta na etapa de construção similar ao G-PR, foi desenvolvido. O VNDP é utilizado na etapa de busca local e tem como objetivo otimizar a solução encontrada na etapa construtiva. O algoritmo G-VNDP é exibido no Algoritmo 9.

O Algoritmo 9 necessita de um conjunto de parâmetros, que são listados a seguir: • intMax: quantidade de iterações;

k: quantidade de trocas realizadas pelo procedimento shaking, utilizada pelo VNDP;

lhores que uma dada solução, utilizada pelo VNDP.

Algoritmo 9G-VNDP

G-VNDP() 1.s* ← ∅;

2. Parai de 1 até intMax faça

3. Enquanto a quota mínima deS não é alcançada

4. Define Roleta; 5. Selecionas ∈ Roleta; 6. S = S ∪ s; 7. EH (S); 8. S’ ← VNDP (S); 9. Se f(S’) < f(s*) 10. s* ← S’; 11. Retornes*;

O Algoritmo 9 realiza no passo 1 a definição da variávels* que irá armazenar a me-

lhor solução encontrada. O passo 2 executa um laçointMax vezes. A cada execução do

laço do passo 2 um laço no passo 3 é executado enquanto a quota mínima da solução definida porS não for atingida. A cada execução do laço do passo 3, define uma roleta

e seleciona desta roleta um elemento definido pors para compor a solução S. Posterior-

mente, o passo 7 realiza a definição do embarque de passageiros paraS. O passo 8 gera

a solução definida porS’ a partir do procedimento de busca local VNDP, o qual tem

como base a soluçãoS gerada na etapa construtiva. Em seguida o passo 9 compara se S’ é melhor que s*, se sim, o passo 10 atualiza s*. Ao final, o passo 11 retorna a melhor

solução.