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, x ∀j∈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.