Neste trabalho aborda-se uma variante do PCV: problema do caixeiro-viajante com restriões de tempo. Se aplicado no problema original do caixeiro-viajante, deve-se encontrar o roteiro de menor custo que passa por um conjunto de cidades, sendo cada cidade visitada apenas uma vez.
Problema do Caixeiro-Viajante com Restrições de Tempo
1. Curso: Mestrado Acadˆemico em Ciˆencia da Computa¸c˜ao
Disciplina: Otimiza¸c˜ao em grafos
Professor: Leonardo Sampaio Rocha
Alunos: Daniel Sucupira Lima
Jo˜ao Gon¸calves Filho
Problema do Caixeiro-Viajante
com Restri¸c˜oes de Tempo
Fortaleza, 27 de novembro de 2014
3. 1 Introdu¸c˜ao
Na computa¸c˜ao em geral existem diversos problemas com diferentes n´ıveis de
complexidade. Existem muitos problemas com alta complexidade ainda em
aberto [1]. Dentre os problemas com alta complexidade pode ser citado o pro-
blema do caixeiro viajante - PCV (em inglˆes, Traveling Salesman Problem -
TSP).
Este ´e um problema que tem chamado a aten¸c˜ao de pesquisadores de dife-
rentes campos, dentre eles, pesquisa operacional, matem´atica, f´ısica, biologia,
inteligˆencia artificial, dentre outros [2]. Diversos artigos tem sido publicados
abordando este problema, o que mostra a sua importˆancia.
Diversos problemas do mundo real podem ser modelados usando o problema
do caixeiro viajante e suas variantes. Assim, podem ser encontrados na litara-
tura trabalhos nas mais diferentes ´areas usando como solu¸c˜ao uma modelagem
baseada no problema do caixeiro viajante [2].
Em termos de complexidade, o PCV ´e classificado como NP-dif´ıcil (em inglˆes,
NP-hard). Essa complexidade significa que, de acordo com o tamanho da en-
trada, o esfor¸co computacional necess´ario para resolver o problema cresce expo-
nencialmente [2].
Nas mais diferentes aplica¸c˜oes do mundo real, n˜ao se pode esperar pelo tempo
necess´ario para obter uma solu¸c˜ao exata do problema, visto que o esfor¸co com-
putacional cresce exponencialmente. Por causa disso, s˜ao aplicadas heur´ısticas
para resolu¸c˜ao destes problemas. Tais m´etodos n˜ao asseguram uma solu¸c˜ao
´otima para o problema. Entretanto, podem entregar uma solu¸c˜ao aceit´avel ou
ainda pr´oxima da solu¸c˜ao real em um tempo ´abil [2].
O problema do caixeiro viajante possui diferentes variantes. A sua origem
´e atribu´ıda para Willian Rowan Hamilton. Em seu trabalho, define-se o PCV
como o problema de encontrar o roteiro de menor distˆancia ou custo que passa
por um conjunto de cidades, sendo cada cidade visitada apenas uma vez [2].
Neste trabalho busca-se abordar uma variante do PCV: problema do caixeiro-
viajante com restri¸c˜oes de tempo. N˜ao foram encontradas na literatura re-
ferˆencias de trabalhos que abordam tal problema. A sua modelagem pode ser
aplicada a diversos problemas do mundo real.
Este trabalho est´a organizado da seguinte forma: no Cap´ıtulo 2 ´e apre-
sentada a defini¸c˜ao oficial do problema bem como algumas de suas aplica¸c˜oes.
No Cap´ıtulo 3 ´e apresentada a solu¸c˜ao para o problema. Do Cap´ıtulo 4 at´e
o Cap´ıtulo 10 s˜ao apresentados 7 m´etodos de resolu¸c˜ao propostos para o pro-
blema. No Cap´ıtulo 11 s˜ao apresentadas as simula¸c˜oes realizadas e os resultados.
Al´em disso ´e feita uma an´alise dos resultados. No Cap´ıtulo 12 ´e apresentada a
Conclus˜ao do trabalho. Por fim ´e exibida a Bibliografia.
3
4. 2 Problema
Neste trabalho aborda-se uma variante do PCV: problema do caixeiro-viajante
com restri¸c˜oes de tempo. Se aplicado no problema original do caixeiro-viajante,
deve-se encontrar o roteiro de menor custo que passa por um conjunto de cida-
des, sendo cada cidade visitada apenas uma vez. Ao final, o caixeiro-viajante
deve voltar para a cidade inicial. Al´em dessas restri¸c˜oes, adiciona-se as res-
tri¸c˜oes de tempo. Cada cidade tem per´ıodos de tempo nos quais n˜ao pode
ocorrer transi¸c˜oes do caixeiro-viajante para ela. Se uma cidade X est´a em um
per´ıodo de restri¸c˜ao de transi¸c˜ao, o caixeiro-viajante n˜ao pode transitar para
ela neste momento. Na nossa modelagem, se o caixeiro-viajante chegou em uma
cidade A em um momento que era seguro e deseja agora ir para uma cidade
B que envolve uma espera de tempo, ele pode esperar o tempo necess´ario -
mesmo que entre em um per´ıodo de restri¸c˜ao de transi¸c˜ao, pois a restri¸c˜ao ´e
de transi¸c˜ao e n˜ao de permanˆencia. As solu¸c˜oes apresentadas devem satisfazer
todas as restri¸c˜oes de transi¸c˜ao.
Nesta abordagem o custo associado ao caminho entre duas cidades ´e o tempo
para sair de uma cidade e chegar a outra. Deve-se salientar que, podem ser intro-
duzidos per´ıodos de espera, visto que algumas cidades n˜ao podem ser visitadas
em determinados per´ıodos de tempo. Nestes casos, o viajante teria que esperar
na cidade atual at´e que a hora que ele chegaria na pr´oxima cidade n˜ao esteja
dentro de nenhuma das restri¸c˜oes da cidade futura.
Para resolver o problema ´e necess´ario definir a hora de partida do caixeiro-
viajante bem como a cidade inicial. A partir de ent˜ao, o caixeiro-viajante deve
percorrer as outras cidades de forma a minimizar o custo do caminho.
Suponha que um caixeiro-viajante deva percorrer as cidades exibidas na
figura 1. Suponhamos ainda que ele deve partir da cidade A e a hora inicial ´e
14:50. Cada enlance apresenta os tempos para sua travessia em minutos.
Figura 1: Cidade a ser percorrida
Em um primeiro exemplo, consideremos que n˜ao existem restri¸c˜oes de tempo
em nenhuma cidade. Consideremos ainda que o caixeiro-viajante usou algum
4
5. algoritmo e resolveu percorrer o caminho A-B-C-D-E-F-A, como ilustrado na
Figura 2.
Figura 2: Caminho 1 escolhido pelo caixeiro-viajante
5
6. Como n˜ao existem restri¸c˜oes de tempo o caixeiro-viajante pode percorrer
as cidades sem fazer nenhuma espera. Se considerarmos que o caixeiro-viajante
partiu da cidade A na hora 14:50, como ele leva 9 minutos para chegar na cidade
B, ele estar´a na cidade B em 14:50 + 00:09 = 14:59. Ele estar´a na cidade C `as
14:59 + 00:14 = 15:13. Seguindo esse racioc´ıcio, temos um conjunto de hor´arios
exibido na Tabela 2.
Cidade Hor´ario
A 14:50
B 14:59
C 15:13
D 15:28
E 15:40
F 15:50
A 16:04
Tabela 1: Tabela de Hor´arios
Com essa sequˆencia de hor´arios o custo dessa solu¸c˜ao ´e a dura¸c˜ao total do
percurso que ´e 16:04 - 14:50 = 01:14. Ou seja, 1 h e 14 min que ´e igual `a 60
min + 14 min = 74 min.
Consideremos agora um exemplo com restri¸c˜oes de tempo. Suponhamos que
o caixeiro-viajante usou algum algoritmo e resolveu percorrer o mesmo caminho
A-B-C-D-E-F-A. Neste exemplo, o caixeiro-viajante tambem partiu da cidade
A na hora 14:50. Neste caso ´e inserida uma restri¸c˜ao de tempo na cidade C. O
caixeiro-viajante n˜ao pode estar na cidade C de 15:00 at´e 16:30, como exibido
na Figura 3.
Figura 3: Caminho 2 escolhido pelo caieiro-viajante
O caixeiro-viajante pode partir da cidade A `as 14:50. Ele vˆe que o caminho
de A para B leva 9 minutos. Ele calcula ent˜ao que estar´a na cidade B `as 14:59.
6
7. Antes de sair, ele verifica se existe alguma restri¸c˜ao em B que bloqueie esse
hor´ario. Como n˜ao existe, ele parte de A e chega em B `as 14:59. Agora, ele vˆe
que o caminho de B para C leva 14 minutos. Ele calcula a hora que chegaria
em C: 14:59 + 00:14 = 15:13. Entretanto, 15:13 est´a dentro da restri¸c˜ao de
tempo de C que ´e de 15:00 at´e 16:30. Ent˜ao, ele resolve esperar at´e um instante
de tempo no qual ele possa partir de B e chegar em C fora da restri¸c˜ao. Ele
calcula que a hora para sair ´e 16:17 pois 16:17 + 00:14 = 16:31. Assim, ele sai
da cidade B apenas `as 16:17, chegando na cidade C `as 16:31. Como as outras
cidades n˜ao tem restri¸c˜oes, assim que chegar em uma cidade ele poder´a ir para
a seguinte da lista. Assim, obtem-se a tabela de hor´arios 2.
Cidade Hor´ario
A 14:50
B 14:59
C 16:31
D 16:46
E 16:58
F 17:08
A 17:22
Tabela 2: Tabela de Hor´arios
7
8. 3 Solu¸c˜ao
Podem ser empregadas diferentes t´ecnicas para abordar esse problema. Neste
trabalho, foram empregadas duas categorias:
• Algoritmo guloso para escolha de melhor vizinho;
• Algoritmo Gen´etico.
Na categoria de algoritmo guloso para escolha de melhor vizinho, foram
criados 6 m´etodos. Cada m´etodo tem uma defini¸c˜ao diferente sobre o que ´e o
melhor vizinho.
Na categoria de algoritmo gen´etico foram criadas diferentes varia¸c˜oes de um
algoritmo gen´etico.
Cada um desses algoritmos ´e apresentado nas se¸c˜oes seguintes.
8
9. 4 M´etodo 1
O primeiro m´etodo implementado ´e o do vizinho mais pr´oximo com rela¸c˜ao ao
tempo. Ou seja, quando o caixeiro viajante est´a em uma cidade ele verifica qual
a cidade que est´a mais pr´oxima dele e que ainda n˜ao foi visitada. Ao encontrar
esta cidade ele vai para ela e continua repetindo o processo. Neste m´etodo o
caixeiro-viajante desconsidera restri¸c˜oes de tempo, ou seja, ainda que ele tenha
que esperar para ir para a cidade mais pr´oxima ele n˜ao muda a sua escolha.
Considere a Figura 4.
Figura 4: Cidade
Supondo que o caixeiro-viajante est´a na cidade A no tempo 5:00 e que ne-
nhuma outra cidade foi visitada ainda. O n´o A tem op¸c˜oes para pr´oxima cidade
exibidas na Tabela 4:
Origem Destino Tempo
A B 9
A F 14
A E 8
Tabela 3: Tabela de tempos de A
Usando este m´etodo, a cidade mais pr´oxima ´e a E, pois leva 8 minutos para
chegar l´a. Como n˜ao existe restri¸c˜ao de tempo em E ele pode sair da cidade A
no tempo 5:00 e chega na cidade E no tempo 5:08.
Considere agora que caixeiro-viajante vai escolher a pr´oxima cidade. Consi-
dere ainda que existe uma restri¸c˜ao de tempo na cidade B das 5:10 at´e as 5:40.
O n´o E tem as op¸c˜oes exibidas na tabela 4:
9
10. Origem Destino Tempo
E A 8
E B 8
E F 10
E D 12
Tabela 4: Tabela de tempos de E
Como a cidade A j´a foi visitada ela n˜ao ´e levada em considera¸c˜ao. Dentre
as outras cidades a mais p´roxima ´e a B, com tempo 8 minutos. Atualmente,
na cidade E, s˜ao 5:08. Se o caixeiro-viajante sair agora de E ele chegar´a em B
`as 5:16. Entretanto, `as 5:16 existe uma restri¸c˜ao de tempo. Essa restri¸c˜ao n˜ao
faz com que seja escolhida uma outra cidade. O caixeiro-viajante espera at´e o
momento no qual ele possa sair de E e chegar em B fora da restri¸c˜ao. Essa hora
´e 05:33, pois 05:33 + 00:08 = 05:41. Assim, `as 05:33 o caixeiro-viajante sai de
E e chega em B `as 05:41.
10
11. 5 M´etodo 2
O m´etodo 1 seleciona a cidade mais pr´oxima sem se importar com os tempos de
espera. O m´etodo 2 seleciona a cidade mais pr´oxima que n˜ao produzir´a tempos
de espera. Se todas as cidades produzirem tempo de espera, seleciona-se a
cidade que fica livre primeiro. Considere a cidade exibida na Figura 6
Figura 5: Cidade
Considere que o caixeiro-viajante est´a na cidade A `as 17:00. Considere as
seguintes restri¸c˜oes:
• Cidade B: restri¸c˜ao de 17:05 `as 19:00;
• Cidade F: restri¸c˜ao de 17:10 `as 21:00;
• Cidade E: restri¸c˜ao de 17:20 `as 18:00.
A ordem das cidades por proximidade, da mais pr´oxima para a mais distante,
´e E-B-F. Partindo de A `as 17:00 poderia se chegar em E `as 17:08. Nesse caso E
n˜ao produz tempo de espera. Assim, seria selecionada a cidade E como p´roxima.
Considere as novas restri¸c˜oes:
• Cidade B: restri¸c˜ao de 17:30 `as 19:00;
• Cidade F: restri¸c˜ao de 17:10 `as 21:00;
• Cidade E: restri¸c˜ao de 17:01 `as 18:00.
A ordem das cidades por proximidade, da mais pr´oxima para a mais distante,
´e E-B-F. Partindo de A `as 17:00 poderia se chegar em E `as 17:08. Nesse caso E
produz tempo de espera e, portanto, n˜ao ´e selecionada. Partindo de A `as 17:00
poderia se chegar em B `as 17:09. Nesse caso B n˜ao produz tempo de espera e,
portanto, ´e selecionada.
Considere este ´ultimo conjunto de restri¸c˜oes:
11
12. • Cidade B: restri¸c˜ao de 17:03 `as 19:00;
• Cidade F: restri¸c˜ao de 17:10 `as 21:00;
• Cidade E: restri¸c˜ao de 17:01 `as 18:00.
A ordem das cidades por proximidade, da mais pr´oxima para a mais distante,
´e E-B-F. Partindo de A `as 17:00 poderia se chegar em E `as 17:08. Nesse caso
E produz tempo de espera e, portanto, n˜ao ´e selecionada. Partindo de A `as
17:00 poderia se chegar em B `as 17:09. Nesse caso B produz tempo de espera
e, portanto, n˜ao ´e selecionada. Partindo de A `as 17:00 poderia se chegar em F
`as 17:14. Nesse caso F produz tempo de espera e, portanto, n˜ao ´e selecionada.
Como todas as cidades produzem tempos de espera, escolhe-se a cidade que fica
livre primeiro, nesse caso, a cidade E `as 18:01. As outras cidades ficam livres
`as 19:01 (B) e 21:01 (F).
12
13. 6 M´etodo 3
O m´etodo 1 seleciona a cidade mais pr´oxima sem se importar com os tempos de
espera. O m´etodo 2 seleciona a cidade mais pr´oxima que n˜ao produzir´a tempos
de espera. Se todas as cidades produzirem tempo de espera, seleciona-se a
cidade com menor tempo para chegar nela. O m´etodo 3 ´e semelhante ao m´etodo
2, mudando apenas o crit´erio de escolha quando todas as cidades produzirem
tempo de espera. Nesse caso, escolhe-se a cidade com menor dura¸c˜ao para
chegar nela. Considere a cidade exibida na Figura 6
Figura 6: Cidade
Considere que o caixeiro-viajante est´a na cidade A `as 17:00. Considere as
seguintes restri¸c˜oes:
• Cidade B: restri¸c˜ao de 17:05 `as 19:00;
• Cidade F: restri¸c˜ao de 17:10 `as 21:00;
• Cidade E: restri¸c˜ao de 17:20 `as 18:00.
A ordem das cidades por proximidade, da mais pr´oxima para a mais distante,
´e E-B-F. Partindo de A `as 17:00 poderia se chegar em E `as 17:08. Nesse caso E
n˜ao produz tempo de espera. Assim, seria selecionada a cidade E como p´roxima
(como feito no m´etodo 2).
Considere as novas restri¸c˜oes:
• Cidade B: restri¸c˜ao de 17:30 `as 19:00;
• Cidade F: restri¸c˜ao de 17:10 `as 21:00;
• Cidade E: restri¸c˜ao de 17:01 `as 18:00.
A ordem das cidades por proximidade, da mais pr´oxima para a mais distante,
´e E-B-F. Partindo de A `as 17:00 poderia se chegar em E `as 17:08. Nesse caso E
13
14. produz tempo de espera e, portanto, n˜ao ´e selecionada. Partindo de A `as 17:00
poderia se chegar em B `as 17:09. Nesse caso B n˜ao produz tempo de espera e,
portanto, ´e selecionada (como feito no m´etodo 2).
Considere este ´ultimo conjunto de restri¸c˜oes:
• Cidade B: restri¸c˜ao de 17:03 `as 19:00;
• Cidade F: restri¸c˜ao de 17:10 `as 21:00;
• Cidade E: restri¸c˜ao de 17:01 `as 18:00.
A ordem das cidades por proximidade, da mais pr´oxima para a mais distante,
´e E-B-F. Partindo de A `as 17:00 poderia se chegar em E `as 17:08. Nesse caso
E produz tempo de espera e, portanto, n˜ao ´e selecionada. Partindo de A `as
17:00 poderia se chegar em B `as 17:09. Nesse caso B produz tempo de espera
e, portanto, n˜ao ´e selecionada. Partindo de A `as 17:00 poderia se chegar em F
`as 17:14. Nesse caso F produz tempo de espera e, portanto, n˜ao ´e selecionada.
Como todas as cidades produzem tempos de espera, escolhe-se a cidade com
menor dura¸c˜ao de tempo para chegar nela, nesse caso, a cidade E com 8 minutos.
Aqui este m´etodo se diferencia do m´etodo 2 que teria selecionado a cidade E
por ter ficado livre mais cedo (`as 18:01).
14
15. 7 M´etodo 4
No m´etodo 1 o caixeiro-viajante levava em considera¸c˜ao para a escolha da
pr´oxima cidade apenas o tempo para se deslocar at´e ela, ou seja, desconsi-
derava os per´ıodos de restri¸c˜ao de tempo mesmo que esses envolvessem per´ıodos
de espera. No m´etodo 4 o caixeiro-viajante considera os dois per´ıodos de tempo,
ou seja, ele vai para a pr´oxima cidade que ainda n˜ao foi visitada e que pode-se
estar nela o mais r´apido poss´ıvel. Considere a cidade exibida na Figura 7.
Figura 7: Cidade
Suponha que o caixeiro-viajante est´a na cidade A `as 7:10 e que nenhuma
outra cidade foi visitada ainda. Considere que: a cidade B tem uma restri¸c˜ao
das 7:20 - 8:00; a cidade F tem uma restri¸c˜ao das 7:18 `as 9:10; a cidade E tem
uma restri¸c˜ao das 7:03 `as 9:55.
Considerando que a hora atual ´e 7:10 e que existem per´ıodos de tempo para
chegar nas outras cidades define-se a tabela 7 com os pr´oximos poss´ıveis valores
de tempo para as outras cidades.
Origem Destino Deslocamento Pr´oximo Instante Livre
A B 9 7:19
A F 14 9:11
A E 8 9:56
Tabela 5: Tabela de tempos de A
O pr´oximo instante livre de B ´e 7:19, pois 7:10 + 0:09 = 7:19 e 7:19 n˜ao
est´a dentro de nenhuma restri¸c˜ao de B. O pr´oximo instante livre de F ´e 9:11,
pois 7:10 + 0:14 = 7:24, mas 7:24 est´a dentro da restri¸c˜ao de F das 7:18 `as 9:10.
Assim, o pr´oximo instante de F ´e ent˜ao 9:10 + 0:01 = 9:11. O pr´oximo instante
livre de E ´e 9:56, pois 7:10 + 0:08 = 7:18, mas 7:18 est´a dentro da restri¸c˜ao de
E das 7:03 `as 9:55. Assim, o pr´oximo instante de E ´e ent˜ao 9:55 + 0:01 = 9:56.
15
16. Dessa forma, o caixeiro-viajante escolhe que a pr´oxima cidade ´e, B pois
chegar´a l´a `as 7:19, que dentre todas as cidades ´e o menor tempo.
16
17. 8 M´etodo 5
O m´etodo n´umero 5 ´e um m´etodo probabilistico. De acordo com as dura¸c˜oes
de viagens de uma cidade para as suas vizinhas s˜ao atribu´ıdos valores de pro-
babilidade para cada uma. Considere o cen´ario exibido na Figura 8.
Figura 8: Cidade
Suponha que o caixeiro-viajante est´a na cidade A e que a hora atual ´e 19:20.
Temos a configura¸c˜ao exibida na Tabela 8.
Origem Destino Tempo Probabilidade Prob. Acum. Faixa de Prob.
A B 9 29,03 29,03 0 ≤ r ≤ 29,03
A F 14 45,16 74,19 29,03 < r ≤ 74,19
A E 8 25,80 100,00 74,19 < r ≤ 100.00
Tabela 6: Tabela de Probabilidades de A
Os valores da coluna Probabilidade s˜ao obtidos a partir dos valores da coluna
Tempo. Faz-se um somat´orio dos valores de tempos. A esse somat´orio associa-se
100 %. Ent˜ao, para cada valor de tempo para deslocamento calcula-se o valor da
probabilidade associada. Calcula-se ent˜ao o valor da probabilidade acumulada
bem como as faixas de valores. De posse disso, faz-se a gera¸c˜ao de um n´umero
aleat´orio. Assim, escolhe-se o destino de acordo com a faixa de valores que ele
estiver. Por exemplo: se o valor aleat´orio for 25 % ser´a selecionada a cidade
B como destino. Exemplo 2: se o valor aleat´orio for 80 % ser´a selecionada a
cidade E como destino.
17
18. 9 M´etodo 6
No m´etodo 6 o caixeiro-viajante escolhe aleatoriamente entre os vizinhos n˜ao
visitados qual vai ser a pr´oxima cidade. Considere a cidade exibida na Figura
9.
Figura 9: Cidade
Neste caso ´e usada a fun¸c˜ao do C++ std::random shuffle para fazer a escolha
do caminho. Essa fun¸c˜ao faz uma reordena¸c˜ao de valores em um vetor de
forma aleat´oria. Passa como parametro para essa fun¸c˜ao um vetor com uma
solu¸c˜ao qualquer. Ap´os chamar essa fun¸c˜ao temos um caminho gerado de forma
aleat´oria.
Uma poss´ıvel sa´ıda gerada para o m´etodo, admitindo que parte-se de A ´e:
A-E-F-D-C-B-A.
18
19. 10 M´etodo 7 e 8
Para os M´etodos 7 e 8 foi utilizado o algoritmo gen´etico. Esta ´e uma t´ecnica
inspirada pela biologia evolutiva, sendo uma classe particular de algoritmos evo-
lutivos, que ´e utilizada para encontrar solu¸c˜oes para problemas de otimiza¸c˜ao
combinat´oria, cujo objetivo ´e descobrir a melhor combina¸c˜ao dos recursos dis-
pon´ı- veis para otimizar seu uso.
Algoritmos Gen´eticos [3] s˜ao implementados como uma simula¸c˜ao de com-
putador em que as melhores solu¸c˜oes s˜ao encontradas em uma popula¸c˜ao que
vai evoluindo a cada gera¸c˜ao. O processo de evolu¸c˜ao geralmente se inicia com
uma popula¸c˜ao criada aleatoriamente. A cada gera¸c˜ao, as solu¸c˜oes na popula¸c˜ao
sofrem cruzamentos e muta¸c˜oes, suas adapta¸c˜oes ent˜ao s˜ao avaliadas e alguns
indiv´ıduos s˜ao selecionados para a pr´oxima gera¸c˜ao [4].
A seguir temos o processo do Algoritmo Gen´etico:
Inicializa População
Avalia População
Seleciona Reprodutores
Cruza Selecionados
Muta Resultantes
Avalia Resultantes
Atualiza População
Deve Parar?
FIM
Não
Sim
Figura 10: Passos do Algoritmo Gen´etico
19
20. 10.1 Algoritmo Gen´etico Implementado
10.1.1 Cromossomo
O cromossomo ou a solu¸c˜ao, nada mais que do que um conjunto de v´ertices,
come¸cando do n´o origem, passando ent˜ao por todos os demais v´ertices e voltando
novamente a origem. Nossa implementa¸c˜ao ficou basicamente em 5 etapas,
sendo que as 4 ´ultimas ficam em la¸co at´e o fim do execu¸c˜ao do algortimo,
s˜ao elas Gera¸c˜ao da Popula¸c˜ao Inicial, Sele¸c˜ao de Reprodutores, Cruzamento,
Muta¸c˜ao e Atualiza¸c˜ao da Popula¸c˜ao, conforme descrito em seguida.
10.1.2 Gera¸c˜ao da Popula¸c˜ao Inicial
A diferen¸ca entre o m´etodo 7 e 8, fica com a gera¸c˜ao da popula¸c˜ao inicial, na 7
´e utilizada a os m´etodos 5 e 6 que s˜ao os m´etodos com resultados aleat´orios. No
8 a popula¸c˜ao ´e gerada a partir de todos os m´etodos explicados anteriormente.
10.1.3 Sele¸c˜ao de Reprodutores
Neste implementa¸c˜ao toda popula¸c˜ao faz cruzamento, a escolha dos pares ´e feita
da seguinte forma, pegue-se o melhor cromossomo e o cruza com o pior, depois
pega o segundo pior e assim por diante em toda popula¸c˜ao.
10.1.4 Cruzamento
Cada cruzamento gera dois novos cromossomos, para o melhor entendimento
suponha que iremos cruzar os cromossomos (0, 2, 3, 1, 4, 5, 0) e (0, 1, 3, 4, 5,
2, 0). O cruzamento ocorre conforme a Figura 11
Figura 11: Funcionamento do Cruzamento
O ponto de corte define aonde o cromossomo ser´a dividido para o cruza-
mento. ´E importante notar que os filhos gerados n˜ao s˜ao v´alidos uma vez que
20
21. possuem v´ertices repetidos, causando a falta de v´ertices para compor a solu¸c˜ao,
por exemplo no filho 1, est´a faltando o v´ertice 4. Para resolver isso ´e executado
um processo de repara¸c˜ao no filho assim que ele gerado, o processo basicamente
procura os v´ertices repetidos e os substitui para o pr´oximo dispon´ıvel, ou seja
que j´a n˜ao esteja na solu¸c˜ao. A Figura 12 mostra o processo:
Figura 12: Repara¸c˜ao
10.1.5 Muta¸c˜ao
Ap´os o cruzamento, cada filho gerado ir´a passar pelo processo de muta¸c˜ao,
basicamente ele passa por os v´ertice, se um n´umero sorteado no processo estiver
no intervalo da taxa de muta¸c˜ao estabelecido, ent˜ao esse v´ertice troca de posi¸c˜ao
com algum outro v´ertice do solu¸c˜ao, o m´aximo poss´ıvel de muta¸c˜oes tamb´em
um parˆametro nesse processo.
10.1.6 Atualiza¸c˜ao da Popula¸c˜ao
Tendo agora em m˜aos pais e filhos, a abordagem da atualiza¸c˜ao ´e semelhante a
da escolha do cruzamento, pegue-se o melhor pai, depois em seguida o melhor
filho, depois o pior pai e pior filho, assim segue at´e a popula¸c˜ao esteja novamente
completa, o processo volta a etapa 2, at´e o crit´erio de parada seja atingido, em
nosso implmenta¸c˜ao o crit´erio foi o n´umero de itera¸c˜oes.
Em cada uma das etapas, sempre ´e guardado o melhor cromossomo, no final
da execu¸c˜ao do algoritmo, ele ser´a a solu¸c˜ao final.
21
22. 11 Experimentos
11.1 Instˆancias
Para a realiza¸c˜ao dos experimentos, foram utilizadas 3 instˆancias, todas elas
geradas com o script de gera¸c˜ao de instˆancias implementada neste trabalho. O
script primeiramente gera aleatoriamente o conjunto de restri¸c˜oes para cada n´o
do grafo(o n´umero de n´os ´e um parˆametro do script). O intervalo m´aximo de
cada restri¸c˜ao ´e 3 horas. Ent˜ao ´e gerada todas as combina¸c˜oes poss´ıveis (grafo
completo) de arestas com um valor de peso alet´orio, onde o m´aximo tamb´em ´e
definido por parˆametro. Abaixo um exemplo de uso do script:
./gerar instancia 20 120 5
As configura¸c˜oes das instˆancias ent˜ao ficaram da seguinte forma:
Tabela 1: Configura¸c˜ao das instˆancias
N´umero de vertices 50
N´umero m´aximo de peso para aresta 120 minutos
N´umero de restri¸c˜oes para cada v´ertice {2, 4, 6}
Instante Inicial 7:00
Obs: O instante inicial foi um valor fixo que n˜ao configurado atrav´es do script
11.2 Configura¸c˜ao do Algoritmo Gen´etico
Para o algoritmo gen´etico foram definidos os seguintes parˆametros:
Tabela 2: Configura¸c˜ao do algoritmo gen´etico
Popula¸c˜ao 20
Taxa de muta¸c˜ao 0.1
N´umero m´aximo de muta¸c˜oes 2
Ponto de corte N´umero de v´ertices / 2
N´umero de itera¸c˜oes 20000
11.3 Resultados
Para gera¸c˜ao dos resultados cada m´etodo executou as 3 instˆancias 5 vezes. Dessa
forma pode ser tirada a m´edia das solu¸c˜oes, m´edia do tempo de execu¸c˜ao e a
melhor solu¸c˜ao obtida dentre as 5 rodadas, os resultados s˜ao mostrados em
seguida:
Tabela 3: Instˆancia com 2 restri¸c˜oes
M´etodo 1 2 3 4
Melhor Solu¸c˜ao 1235 509 1322 509
Tempo de Execu¸c˜ao em Segundos 0.003000 0.003400 0.003000 0.003800
M´etodo 5 6 7 8
Melhor Solu¸c˜ao 2494 2523 1301 509
Solu¸c˜ao M´edia 2617.80 3114.20 1448.40 509.00
Tempo de Execu¸c˜ao em Segundos 0.004000 0.003000 7.774200 7.987000
22
23. Tabela 3: Instˆancia com 4 restri¸c˜oes
M´etodo 1 2 3 4
Melhor Solu¸c˜ao 1168 625 1426 622
Tempo de Execu¸c˜ao em Segundos 0.003000 0.004000 0.003000 0.004000
M´etodo 5 6 7 8
Melhor Solu¸c˜ao 2797 3216 1465 622
Solu¸c˜ao M´edia 3107.40 3495.00 1545.80 622.00
Tempo de Execu¸c˜ao em Segundos 0.004000 0.003000 11.754800 11.854200
Tabela 3: Instˆancia com 5 restri¸c˜oes
M´etodo 1 2 3 4
Melhor Solu¸c˜ao 1369 844 1487 600
Tempo de Execu¸c˜ao em Segundos 0.003400 0.004000 0.004000 0.004400
M´etodo 5 6 7 8
Melhor Solu¸c˜ao 2690 2990 1617 600
Solu¸c˜ao M´edia 2993.40 3265.00 1750.40 600.00
Tempo de Execu¸c˜ao em Segundos 0.004000 0.003000 15.582400 15.580000
Observando as Tabelas 3, 4 e 5, podemos perceber que os m´etodos 2, 4 e 8
conseguiram os melhores resultados nas 3 instˆancias. O algoritmo 2 apresenta
bons resultados por que ele seleciona a cidade pr´oxima que n˜ao produzir´a tempos
de espera. Em outras palavras, ap´os uma pr´e-ordena¸c˜ao de acordo com os pesos
das arestas leva-se em considera¸c˜ao os per´ıodos de espera.
O m´etodo 4 considera os dois per´ıodos de tempo, ou seja vai para cidade
mais pr´oxima que n˜ao visitada e que pode estar nela o mais r´apido poss´ıvel.
O m´etodo 3, quando todos estam ocupados, pega a menor aresta sem consi-
derar o tempo de espera. Isso causa degrada¸c˜ao na sua solu¸c˜ao.
O algoritmo gen´etico por sua vez n˜ao conseguiu obter solu¸c˜oes que superam-
se as varia¸c˜oes da heur´ıstica do vizinho mais pr´oximo. O m´etodo 7 ficou muito
atr´as, e no 8 n˜ao obteve nenhuma convergˆencia da solu¸c˜ao inicial.
O m´etodo 6 que ´e totalmente aleat´orio obteve os piores resultados como j´a
esperado. A heur´ıstica com vizinho mais pr´oximo usando probabilidade ficou
atr´as do gen´etico, ele fica com resultado semelhante ao do m´etodo 1, pois ele
utiliza o peso da aresta com probabilidade para decidir qual o pr´oximo v´ertice.
23
24. 12 Conclus˜ao
Neste trabalho foi abordado uma variante do PCV: problema do caixeiro-viajante
com restri¸c˜oes de tempo. N˜ao foram encontradas na literatura referˆencias de
trabalhos que abordam tal problema. A sua modelagem pode ser aplicada a
diversos problemas do mundo real.
Neste trabalho, foram empregadas duas categorias de solu¸c˜oes para abordar
o problema:
• Algoritmo guloso para escolha de melhor vizinho;
• Algoritmo Gen´etico.
Na categoria de algoritmo guloso para escolha de melhor vizinho, foram
criados 6 m´etodos. Na categoria de algoritmo gen´etico foram criadas diferentes
varia¸c˜oes de um algoritmo gen´etico.
Foram realizadas diversas simula¸c˜oes destes m´etodos. Com base nos resul-
tados foi feita uma an´alise que mostrou quais m´etodos s˜ao mais eficientes.
Os objetivos deste trabalho foram alca¸cados, pois foram criados diversos
algoritmos eficientes para a resolu¸c˜ao deste novo problema proposto.
24
25. Bibliografia
[1] G. J. Woeginger, “Exact algorithms for np-hard problems: A survey,” in
Combinatorial Optimization—Eureka, You Shrink! Springer, 2003, pp.
185–207.
[2] C. B. da Cunha, U. de Oliveira Bonasser, and F. T. M. Abrah˜ao, “Expe-
rimentos computacionais com heur´ısticas de melhorias para o problema do
caixeiro viajante,” in XVI Congresso da Anpet, 2002.
[3] J. H. HOLLAND, “Adaptation in natural and artificial systems. ann arbor:
University of michigan press,” 1975.
[4] F. A. Jo˜ao G. (2012) Problema da mochila valiosa com valor minimo de
utilidade:.
25