• Nenhum resultado encontrado

4 Abordagens de solução do PCV-MPQ

4.2.2 Ant Colony Optimization ACO

A meta-heurística ACO foi proposta e implementada por (DORIGO; CARO, 1999). Basicamente, a ideia do ACO é utilizar um conjunto de formigas artificiais que se mo-

vem em um espaço de soluções de um dado problema para buscar as melhores solu- ções.

As formigas do ACO clássico são construídas no espaço de soluções a partir de dois parâmetros definidos por feromônio τ e atratividade η. Via de regra, as rotas mais utilizadas recebem mais feromônio, tornando-as mais atrativas para a escolha das for- migas. A formula que modela a transição das formigas no espaço de soluções é definida pela equação (4.1). pkij=            ταi, j. ηβi, j P x∈Nk i τi, xα . ηβi, xj∈Nk i 0 caso contrário (4.1)

Nijk representa as localidades vizinhas a localidadei, que ainda não foram visitadas

pela formigak. α e β são parâmetros que controlam, respectivamente, o peso relativo

do feromônio e atratividade nij, de um dado trecho de rotai - j. cij é o custo do trecho

de rotai - j.

Um processo de atualização do feromônio é realizado a cada ciclo do algoritmo e pode ser feito de 3 maneiras, como abordado por (DORIGO; CARO, 1999), a maneira

Ant-cycle foi escolhida e utiliza a equação (4.2).

τi, j = (1 − p) ·τi, j+ m X k=1 τk ij (4.2)

p ∈ [0, 1] representa o processo de evaporação do feromônio e∆τk

ij o novo deposito

de feromônio da formigak representado na equação (4.3).

τk ij =

1

Ck

(4.3)

Ck representa o custo da rota da formigak.

4.2.2.1 ACO-OR

Um algoritmo ACO denominado por ACO-OR, que utiliza a equação (4.1) e o mé- todo EH, foi desenvolvido. O ACO-OR é exibido no Algoritmo 10.

alfa: peso relativo do feromônio;

beta: peso relativo da atratividade;

• N Cmax: quantidade de ciclos;

• m: quantidade de formigas;

• p: quantidade de feromônio evaporado a cada ciclo.

O Algoritmo 10 realiza no passo 1 a definição da variávelNC que controla a quanti-

dade máxima de ciclos definida por N Cmax. No passo 2 inicializa o feromônio e o novo

deposito de feromônio de todos os trechos. Logo após, no passo 3 inicializa um laço que é executado N Cmax vezes, sendo que a cada execução, primeiramente no passo 4

define a localização inicial dasm formigas. Em seguida, no passo 5 executa um laço,

que constrói m formigas utilizando a equação (4.1) para selecionar a localidade i a

adicionar na formiga k. No passo 9 executa um laço que analisa todas as formigas e

atualiza a melhor rota do ciclo definida pormelhorRotaCiclo. Já no passo 12, atualiza a

melhor rota definida pormelhorRota. Ao final, no passo 18 atualiza o feromônio, passo

19 atualiza o novo deposito de feromônio e passo 20 esvazia a lista Lk que representa a

Algoritmo 10ACO-OR ACO-OR ()

1.NC = 0;

2. Para cada trechoi - j τij = 0.1 e∆τij = 0;

3. Enquanto (NC < N Cmax)

4. Definir a localidade inicial dasm formigas;

5. Repita até que a quota mínima seja atingida 6. Parak = 1 até m faça

7. Escolha a localidadej para mover a k-ésima formiga com (4.1);

8. Coloque a localidadej em Lk;

9. Para k = 1 até m faça

10. EH(Lk); calcule o custo Ck;

11. AtualizamelhorRotaCiclo;

12. AtualizamelhorRota;

13. Para cada trechoi - j

14. Parak = 1 até m faça

15. Sei - j ∈ Lk faça∆τijk = 1/Ck;

16. Se nãoτk

ij = 0;

17. ∆τij =∆τij +∆τijk;

18. Para cada trechoi - j τij= (1-p) τij +∆τij;

19. Para cada trechoi - j∆τij = 0;

4.2.2.2 ACO-AL

Para tratar a característica do bônus e dos passageiros do PCV-MPQ, uma nova equação para modelar a transição das formigas no espaço de soluções, foi desenvolvida. A equação é expressa em (4.4) e calcula a probabilidade de escolha de uma localidade

j ∈ Nik, o conjunto de localidades vizinhas à localidadei e não visitada pela formiga k,

considerando o bônus e os passageiros das localidades.

pkij=            [τij] α . [ηij] β . [λj] γ . ωj P j∈Nki [τij] α . [ηij] β . [λj] γ . ωj ∀j∈Nk i 0 caso contrário (4.4)

α, β e γ representam o peso relativo do feromônio, peso relativo da atratividade e

peso relativo do bônus respectivamente. τij denota o feromônio e ηijdenota a atrativi-

dade, de um dado trecho de rotai - j. γj denota a quantidade de bônus na localidade

j e ωj denota a quantidade de passageiros com origem na localidadej e destino ainda

não visitado pela formigak.

Um algoritmo ACO denominado por ACO-AL, que utiliza a equação (4.4) e o mé- todo EH, foi desenvolvido. O ACO-AL é exibido no Algoritmo 11.

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

• alfa: peso relativo do feromônio; • beta: peso relativo da atratividade; • gama: peso relativo do bônus; • N Cmax: quantidade de ciclos;

• m: quantidade de formigas;

• p: quantidade de feromônio evaporado a cada ciclo.

O Algoritmo 11 bastante semelhante ao Algoritmo 10, realiza inicialmente, no passo 1 a definição da variávelNC que controla o número máximo de ciclos definido

por N Cmax e no passo 2 define o feromônio e o novo deposito de feromônio de todos os

trechos. Logo em seguida, no passo 3 executa um laço que é executado N Cmax vezes,

Algoritmo 11ACO-AL ACO-AL ()

1.NC = 0;

2. Para cada trechoi - j τij = 0.1 e∆τij = 0;

3. Enquanto (NC < N Cmax)

4. Definir a localidade inicial dasm formigas;

5. Repita até que a quota mínima seja atingida 6. Parak = 1 até m faça

7. Escolha a localidadej para mover a k-ésima formiga com (4.4);

8. Coloque a localidadej em Lk;

9. Para k = 1 até m faça

10. EH(Lk); calcule o custo Ck;

11. AtualizamelhorRotaCiclo;

12. AtualizamelhorRota;

13. Para cada trechoi - j

14. Parak = 1 até m faça

15. Sei - j ∈ Lk faça∆τijk = 1/Ck;

16. Se nãoτk

ij = 0;

17. ∆τij =∆τij +∆τijk;

18. Para cada trechoi - j τij= (1-p) τij +∆τij;

19. Para cada trechoi - j∆τij = 0;

e após no passo 5 um laço que executa até que a quota mínima seja satisfeita, cons- trói m formigas utilizando a equação (4.4) para definir a localidade i a adicionar na

rota da formiga k. Posteriormente, no passo 9 executa um laço que analisa todas as

formigas e atualiza a melhor rota do ciclo definida por melhorRotaCiclo. Já no passo

12, a melhor rota definida pormelhorRota é atualiza. Ao final, no passo 18 atualiza o

feromônio, passo 19 atualiza o novo deposito de feromônio e passo 20 esvazia a lista

Lk que representa a rota realizada pela formigak.

4.2.2.3 ACO-ORVNDP

Um algoritmo ACO denominado por ACO-ORVNDP, que utiliza a equação (4.1), o método EH e o Algoritmo 8 como uma etapa de aperfeiçoamento de solução, foi desenvolvido. O ACO-ORVNDP é exibido no Algoritmo 12.

O Algoritmo 12 necessita de um conjunto de parâmetros, que são listados a seguir: • alfa: peso relativo do feromônio;

• beta: peso relativo da atratividade; • N Cmax: quantidade de ciclos;

• m: quantidade de formigas;

• p: quantidade de feromônio evaporado a cada ciclo.

• k: quantidade de trocas realizadas pelo procedimento shaking, utilizada pelo VNDP. • C: quantidade máxima de soluções geradas consecutivamente que não são me-

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

O Algoritmo 12 realiza inicialmente, no passo 1 a definição da variável NC que

controla a quantidade máxima de ciclos definida por N Cmax e no passo 2 a definição

do feromônio e do novo deposito de feromônio de todos os trechos. Logo após, no passo 3 executa um laço que é executado N Cmax vezes, sendo que a cada ciclo define-se pri-

meiramente no passo 4 a localidade inicial das m formigas. No passo 5 executa um laço que repete enquanto a quota mínima não é satisfeita e utilizando a equação (4.1) para selecionar a localidadei a adicionar na formiga k, constrói m formigas. Posteriormente,

no passo 9 executa um laço que realiza a verificação das m formigas e atualiza a me-

Algoritmo 12ACO-ORVNDP ACO-ORVNDP ()

1.NC = 0;

2. Para cada trechoi - j τij = 0.1 e∆τij = 0;

3. Enquanto (NC < N Cmax)

4. Definir a localidade inicial dasm formigas;

5. Repita até que a quota mínima seja atingida 6. Parak = 1 até m faça

7. Escolha a localidadej para mover a k-ésima formiga com (4.1);

8. Coloque a localidadej em Lk;

9. Para k = 1 até m faça

10. EH(Lk); calcule o custo Ck;

11. AtualizamelhorRotaCiclo;

12. VNDP (melhorRotaCiclo, melhorRota);

13. Para cada trechoi - j

14. Parak = 1 até m faça

15. Sei - j ∈ Lk faça∆τijk = 1/Ck;

16. Se nãoτk

ij = 0;

17. ∆τij =∆τij +∆τijk;

18. Para cada trechoi - j τij= (1-p) τij +∆τij;

19. Para cada trechoi - j∆τij = 0;

VNDP, com o intuito de atualizar a melhor rota definida pormelhorRota, tendo como

base a melhor rota do ciclo. Ao fim do ciclo, no passo 18 atualiza-se o feromônio, passo 19 atualiza o novo deposito de feromônio e passo 20 esvazia a lista de solução Lk, que

representa a rota realizada pela formigak.

4.2.2.4 ACO-ALVNDP

Um algoritmo ACO denominado por ACO-ALVNDP, que utiliza a equação (4.4), o método EH e o Algoritmo 8 como uma etapa de aperfeiçoamento de solução seme- lhante ao ACO-ORVNDP, foi desenvolvido. O ACO-ALVNDP é exibido no Algoritmo 13.

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

• alfa: peso relativo do feromônio; • beta: peso relativo da atratividade; • gama: peso relativo do bônus; • N Cmax: quantidade de ciclos;

• m: quantidade de formigas;

• p: quantidade de feromônio evaporado a cada ciclo.

• k: quantidade de trocas realizadas pelo procedimento shaking, utilizada pelo VNDP. • C: quantidade máxima de soluções geradas consecutivamente que não são me-

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

O Algoritmo 13 bastante semelhante ao Algoritmo 12, define inicialmente, no passo 1 a variávelNC que controla a quantidade máxima de ciclos definida por N Cmax e no

passo 2 o feromônio e o novo deposito de feromônio de todos os trechos de rota. Logo após, no passo 3 executa um laço N Cmax vezes, sendo que a cada iteração, primeira-

mente define a localidade inicial de todas as formigas. Em seguida, no passo 5 um laço é executado enquanto a quota mínima não é atingida e utilizando a equação (4.4) que define a localidadei a inserir na formiga k, constrói m formigas. Posteriormente, no

passo 9 um laço que analisa todas as formigas e atualiza a melhor rota do ciclo definida pormelhorRotaCiclo é executado. Já no passo 12 com o objetivo de melhorar a melhor

Algoritmo 13ACO-ALVNDP ACO-ALVNDP ()

1.NC = 0;

2. Para cada trechoi - j τij = 0.1 e∆τij = 0;

3. Enquanto (NC < N Cmax)

4. Definir a localidade inicial dasm formigas;

5. Repita até que a quota mínima seja atingida 6. Parak = 1 até m faça

7. Escolha a localidadej para mover a k-ésima formiga com (4.4);

8. Coloque a localidadej em Lk;

9. Para k = 1 até m faça

10. EH(Lk); calcule o custo Ck;

11. AtualizamelhorRotaCiclo;

12. VNDP (melhorRotaCiclo, melhorRota);

13. Para cada trechoi - j

14. Parak = 1 até m faça

15. Sei - j ∈ Lk faça∆τijk = 1/Ck;

16. Se nãoτk

ij = 0;

17. ∆τij =∆τij +∆τijk;

18. Para cada trechoi - j τij= (1-p) τij +∆τij;

19. Para cada trechoi - j∆τij = 0;

rota definida pormelhorRota, o procedimento VNDP é realizado tomando como base

a melhor rota do ciclo. Ao final, no passo 18 atualiza o feromônio, passo 19 atualiza o novo deposito de feromônio e passo 20 esvazia a lista Lkque representa a rota realizada

pela formiga k.

4.2.2.5 ACO com GRASP e VNDP

Uma meta-heurística similar ao ACO-ALVNDP, denominada de ACO-GALVNDP, foi desenvolvida. O ACO-GALVNDP realiza a combinação do processo construtivo do ACO com o processo construtivo do GRASP. No ACO-GALVNDP, uma solução GRASP é uma formiga, que não explora o feromônio e a atratividade dos trechos de rota da rede, mas contribui na construção da rota das demais formigas não GRASP, atuali- zando o feromônio e a atratividade dos trechos de rota que utilizar. As formigas GRASP são construídas utilizando o processo construtivo do G-PH, e as formigas não GRASP são construídas utilizando o processo construtivo do ACO-ALVNDP, ambos processos consideram o bônus e os passageiros das localidades da rede. Nas formigas GRASP um procedimento de busca local é realizado utilizando o VNDP. O objetivo desta combina- ção de processos construtivos é explorar novas rotas antes não exploradas pelo método ACO-ALVNDP. O método EH foi utilizado para realizar a alocação de passageiros. A meta-heurística é exibida no Algoritmo 14.

O Algoritmo 14 necessita de um conjunto de parâmetros, que são listados a seguir: • alfa: peso relativo do feromônio;

• beta: peso relativo da atratividade; • gama: peso relativo do bônus; • N Cmax: quantidade de ciclos;

• m: quantidade de formigas; • g: quantidade de formigas;

• p: quantidade de feromônio evaporado a cada ciclo.

• k: quantidade de trocas realizadas pelo procedimento shaking, utilizada pelo VNDP. • C: quantidade máxima de soluções geradas consecutivamente que não são me-

Algoritmo 14ACO-GALVNDP ACO-GALVNDP ()

1.NC = 0;

2. Para cada trechoi - j τij = 0.1 e∆τij = 0;

3. Enquanto (NC < N Cmax)

4. Definir a localidade inicial dasm formigas;

5. Definirg formigas GRASP;

6. Repita até que a quota mínima seja atingida 7. Parak = 1 até m faça

8. Se a k-ésima formiga é uma formiga GRASP

9. Define Roleta;

10. Seleciona a localidadej ∈ Roleta para mover a k-ésima formiga;

11. Coloque a localidadej em Lk;

12. Se não

13. Escolha a localidadej para mover a k-ésima formiga com (4.4);

14. Coloque a localidadej em Lk;

15. Para k = 1 até m faça

16. EH(Lk);

17. Se a k-ésima formiga é uma formiga GRASP

18. VNDP (Lk);

19. calcule o custo Ck;

20. AtualizamelhorRota;

21. Para cada trechoi - j

22. Parak = 1 até m faça

23. Sei - j ∈ Lk façaτk

ij = 1/Ck;

24. Se nãoτk

ij = 0;

25. ∆τij =∆τij +∆τijk;

26. Para cada trechoi - j τij= (1-p) τij +∆τij;

27. Para cada trechoi - j∆τij = 0;

O Algoritmo 14 realiza inicialmente, no passo 1 a definição da variável NC que

controla a quantidade máxima de ciclos definida por N Cmax. O passo 2 é responsável

por definir o feromônio e o novo deposito de feromônio de todos os trechos de rota. Em seguida, o passo 3 executa um laco N Cmaxvezes. A cada execução do laço do passo 3, o

passo 4 defini a localidade inicial das formigas e o passo 5 define as formigas GRASP. Logo após, o passo 6 inicia um laço que é responsável por construir m formigas, uti-

lizando um construtor GRASP nas formigas GRASP e um construtor de formiga nas formigas não GRASP. A cada execução do laço do passo 6, uma localidade é adicionada nas formigas que não atingiram a quota mínima. Posteriormente, é executado um laço no passo 15 que, define o embarque de passageiros para cada formiga e adicionalmente realiza uma busca local para cada formiga GRASP utilizando o VNDP. O passo 20 atu- aliza a melhor rota definida pormelhorRota, a partir das soluções geradas no ciclo. Ao

final, no passo 26 atualiza o feromônio, passo 27 atualiza o novo deposito de feromônio e passo 28 esvazia a lista Lk que representa a rota realizada pela formigak.