SlideShare uma empresa Scribd logo
1 de 25
Baixar para ler offline
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
Sum´ario
1 Introdu¸c˜ao 3
2 Problema 4
3 Solu¸c˜ao 8
4 M´etodo 1 9
5 M´etodo 2 11
6 M´etodo 3 13
7 M´etodo 4 15
8 M´etodo 5 17
9 M´etodo 6 18
10 M´etodo 7 e 8 19
10.1 Algoritmo Gen´etico Implementado . . . . . . . . . . . . . . . . . 20
10.1.1 Cromossomo . . . . . . . . . . . . . . . . . . . . . . . . . 20
10.1.2 Gera¸c˜ao da Popula¸c˜ao Inicial . . . . . . . . . . . . . . . . 20
10.1.3 Sele¸c˜ao de Reprodutores . . . . . . . . . . . . . . . . . . . 20
10.1.4 Cruzamento . . . . . . . . . . . . . . . . . . . . . . . . . . 20
10.1.5 Muta¸c˜ao . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21
10.1.6 Atualiza¸c˜ao da Popula¸c˜ao . . . . . . . . . . . . . . . . . . 21
11 Experimentos 22
11.1 Instˆancias . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22
11.2 Configura¸c˜ao do Algoritmo Gen´etico . . . . . . . . . . . . . . . . 22
11.3 Resultados . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22
12 Conclus˜ao 24
2
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
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
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
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
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
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
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
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
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
• 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
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
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
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
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
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
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
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
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
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
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
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
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
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

Mais conteúdo relacionado

Mais procurados

Fluxo Maximo a Custo Minimo
Fluxo Maximo a Custo MinimoFluxo Maximo a Custo Minimo
Fluxo Maximo a Custo MinimoDemontiê Junior
 
2º/2012 - Prova 03 de Autômatos e Computabilidade
2º/2012 - Prova 03 de Autômatos e Computabilidade2º/2012 - Prova 03 de Autômatos e Computabilidade
2º/2012 - Prova 03 de Autômatos e Computabilidadeshichibukai_01
 
Aula 5 linguagens regularese automatosfinitosnãodeterministico
Aula 5   linguagens regularese automatosfinitosnãodeterministicoAula 5   linguagens regularese automatosfinitosnãodeterministico
Aula 5 linguagens regularese automatosfinitosnãodeterministicowab030
 
IntegracaoFuncional
IntegracaoFuncionalIntegracaoFuncional
IntegracaoFuncionalDyana Duarte
 
Geração e Estimação de processos k-factor GARMA
Geração e Estimação de processos k-factor GARMAGeração e Estimação de processos k-factor GARMA
Geração e Estimação de processos k-factor GARMAAishameriane Schmidt
 
Fisica 1EM 1BIM
Fisica 1EM 1BIM Fisica 1EM 1BIM
Fisica 1EM 1BIM Alice MLK
 
Análise de Algoritmos - Recursividade
Análise de Algoritmos - RecursividadeAnálise de Algoritmos - Recursividade
Análise de Algoritmos - RecursividadeDelacyr Ferreira
 
07 intratablilidade
07 intratablilidade07 intratablilidade
07 intratablilidadeYuri Passos
 
07 intratablilidade
07 intratablilidade07 intratablilidade
07 intratablilidadeYuri Passos
 
Análise de Algoritmos - Método Guloso
Análise de Algoritmos - Método GulosoAnálise de Algoritmos - Método Guloso
Análise de Algoritmos - Método GulosoDelacyr Ferreira
 
Resolução do capítulo 1 brunetti[1]
Resolução do capítulo 1   brunetti[1]Resolução do capítulo 1   brunetti[1]
Resolução do capítulo 1 brunetti[1]Ídilla Kaenna
 
Prova 02 de Autômatos e Computabilidade
Prova 02 de Autômatos e ComputabilidadeProva 02 de Autômatos e Computabilidade
Prova 02 de Autômatos e Computabilidadeshichibukai_01
 
Resolução das questões de física cefet mg integrado 2013 primeiro semestre
Resolução das questões de física cefet mg   integrado 2013 primeiro semestreResolução das questões de física cefet mg   integrado 2013 primeiro semestre
Resolução das questões de física cefet mg integrado 2013 primeiro semestreCarlos Pyssynannyns
 
Ctg 2dia - provas mat-fis
Ctg   2dia - provas mat-fisCtg   2dia - provas mat-fis
Ctg 2dia - provas mat-fisEdlas Junior
 
matematica para o ensino medio I
 matematica para o ensino medio I matematica para o ensino medio I
matematica para o ensino medio IJailson Nascimento
 
Programação Dinâmica - Segmento de Soma Máxima
Programação Dinâmica - Segmento de Soma MáximaProgramação Dinâmica - Segmento de Soma Máxima
Programação Dinâmica - Segmento de Soma MáximaGabriel Albuquerque
 

Mais procurados (20)

Floyd-Warshall
Floyd-WarshallFloyd-Warshall
Floyd-Warshall
 
Cadernoh
CadernohCadernoh
Cadernoh
 
Fluxo Maximo a Custo Minimo
Fluxo Maximo a Custo MinimoFluxo Maximo a Custo Minimo
Fluxo Maximo a Custo Minimo
 
2º/2012 - Prova 03 de Autômatos e Computabilidade
2º/2012 - Prova 03 de Autômatos e Computabilidade2º/2012 - Prova 03 de Autômatos e Computabilidade
2º/2012 - Prova 03 de Autômatos e Computabilidade
 
Cap3 cinematica
Cap3 cinematicaCap3 cinematica
Cap3 cinematica
 
Aula 5 linguagens regularese automatosfinitosnãodeterministico
Aula 5   linguagens regularese automatosfinitosnãodeterministicoAula 5   linguagens regularese automatosfinitosnãodeterministico
Aula 5 linguagens regularese automatosfinitosnãodeterministico
 
IntegracaoFuncional
IntegracaoFuncionalIntegracaoFuncional
IntegracaoFuncional
 
Geração e Estimação de processos k-factor GARMA
Geração e Estimação de processos k-factor GARMAGeração e Estimação de processos k-factor GARMA
Geração e Estimação de processos k-factor GARMA
 
Fisica 1EM 1BIM
Fisica 1EM 1BIM Fisica 1EM 1BIM
Fisica 1EM 1BIM
 
Análise de Algoritmos - Recursividade
Análise de Algoritmos - RecursividadeAnálise de Algoritmos - Recursividade
Análise de Algoritmos - Recursividade
 
07 intratablilidade
07 intratablilidade07 intratablilidade
07 intratablilidade
 
07 intratablilidade
07 intratablilidade07 intratablilidade
07 intratablilidade
 
Análise de Algoritmos - Método Guloso
Análise de Algoritmos - Método GulosoAnálise de Algoritmos - Método Guloso
Análise de Algoritmos - Método Guloso
 
4 cinematica dos fluidos exercícios
4 cinematica dos fluidos exercícios4 cinematica dos fluidos exercícios
4 cinematica dos fluidos exercícios
 
Resolução do capítulo 1 brunetti[1]
Resolução do capítulo 1   brunetti[1]Resolução do capítulo 1   brunetti[1]
Resolução do capítulo 1 brunetti[1]
 
Prova 02 de Autômatos e Computabilidade
Prova 02 de Autômatos e ComputabilidadeProva 02 de Autômatos e Computabilidade
Prova 02 de Autômatos e Computabilidade
 
Resolução das questões de física cefet mg integrado 2013 primeiro semestre
Resolução das questões de física cefet mg   integrado 2013 primeiro semestreResolução das questões de física cefet mg   integrado 2013 primeiro semestre
Resolução das questões de física cefet mg integrado 2013 primeiro semestre
 
Ctg 2dia - provas mat-fis
Ctg   2dia - provas mat-fisCtg   2dia - provas mat-fis
Ctg 2dia - provas mat-fis
 
matematica para o ensino medio I
 matematica para o ensino medio I matematica para o ensino medio I
matematica para o ensino medio I
 
Programação Dinâmica - Segmento de Soma Máxima
Programação Dinâmica - Segmento de Soma MáximaProgramação Dinâmica - Segmento de Soma Máxima
Programação Dinâmica - Segmento de Soma Máxima
 

Destaque

Tutorial Programando C no Linux
Tutorial Programando C no LinuxTutorial Programando C no Linux
Tutorial Programando C no LinuxJoao Gonçalves
 
Sincronização e Memória compartilhada distribuída
Sincronização e Memória compartilhada distribuídaSincronização e Memória compartilhada distribuída
Sincronização e Memória compartilhada distribuídaJoao Gonçalves
 
Estudo Sobre Mobile Ad Hoc Networks(MANETs)
Estudo Sobre Mobile Ad Hoc Networks(MANETs)Estudo Sobre Mobile Ad Hoc Networks(MANETs)
Estudo Sobre Mobile Ad Hoc Networks(MANETs)Joao Gonçalves
 
OSPF - Open Shortest Path First
OSPF - Open Shortest Path FirstOSPF - Open Shortest Path First
OSPF - Open Shortest Path FirstJoao Gonçalves
 
METAHEURÍSTICA GRASP APLICADA AO PROBLEMA DO SEQUENCIAMENTO DE TAREFAS
METAHEURÍSTICA GRASP APLICADA AO PROBLEMA DO SEQUENCIAMENTO DE TAREFASMETAHEURÍSTICA GRASP APLICADA AO PROBLEMA DO SEQUENCIAMENTO DE TAREFAS
METAHEURÍSTICA GRASP APLICADA AO PROBLEMA DO SEQUENCIAMENTO DE TAREFASJoao Gonçalves
 

Destaque (7)

Conversão Entre Bases
Conversão Entre BasesConversão Entre Bases
Conversão Entre Bases
 
Tutorial Programando C no Linux
Tutorial Programando C no LinuxTutorial Programando C no Linux
Tutorial Programando C no Linux
 
Sincronização e Memória compartilhada distribuída
Sincronização e Memória compartilhada distribuídaSincronização e Memória compartilhada distribuída
Sincronização e Memória compartilhada distribuída
 
Estudo Sobre Mobile Ad Hoc Networks(MANETs)
Estudo Sobre Mobile Ad Hoc Networks(MANETs)Estudo Sobre Mobile Ad Hoc Networks(MANETs)
Estudo Sobre Mobile Ad Hoc Networks(MANETs)
 
OSPF - Open Shortest Path First
OSPF - Open Shortest Path FirstOSPF - Open Shortest Path First
OSPF - Open Shortest Path First
 
METAHEURÍSTICA GRASP APLICADA AO PROBLEMA DO SEQUENCIAMENTO DE TAREFAS
METAHEURÍSTICA GRASP APLICADA AO PROBLEMA DO SEQUENCIAMENTO DE TAREFASMETAHEURÍSTICA GRASP APLICADA AO PROBLEMA DO SEQUENCIAMENTO DE TAREFAS
METAHEURÍSTICA GRASP APLICADA AO PROBLEMA DO SEQUENCIAMENTO DE TAREFAS
 
O Problema de Transporte - Pesquisa Operacional
O Problema de Transporte - Pesquisa OperacionalO Problema de Transporte - Pesquisa Operacional
O Problema de Transporte - Pesquisa Operacional
 

Semelhante a Problema do Caixeiro-Viajante com Restrições de Tempo

Problema do Caixeiro Viajante
Problema do Caixeiro ViajanteProblema do Caixeiro Viajante
Problema do Caixeiro ViajanteMarcos Castro
 
Corg 1ano-cinemticaescalar-120229064829-phpapp02
Corg 1ano-cinemticaescalar-120229064829-phpapp02Corg 1ano-cinemticaescalar-120229064829-phpapp02
Corg 1ano-cinemticaescalar-120229064829-phpapp02Paulo Souto
 
Corg 1ano-cinemticaescalar-120229064829-phpapp02
Corg 1ano-cinemticaescalar-120229064829-phpapp02Corg 1ano-cinemticaescalar-120229064829-phpapp02
Corg 1ano-cinemticaescalar-120229064829-phpapp02Paulo Souto
 
Análise do problema do caixeiro viajante - Versão artigo - ERAD 2008
Análise do problema do caixeiro viajante - Versão artigo - ERAD 2008Análise do problema do caixeiro viajante - Versão artigo - ERAD 2008
Análise do problema do caixeiro viajante - Versão artigo - ERAD 2008Jerônimo Medina Madruga
 
O problema do transporte aplicado à grafos
O problema do transporte aplicado à grafosO problema do transporte aplicado à grafos
O problema do transporte aplicado à grafosEduardo Souza
 
Questões Corrigidas, em Word: Cinemática Escalar - Conteúdo vinculado ao blog...
Questões Corrigidas, em Word: Cinemática Escalar - Conteúdo vinculado ao blog...Questões Corrigidas, em Word: Cinemática Escalar - Conteúdo vinculado ao blog...
Questões Corrigidas, em Word: Cinemática Escalar - Conteúdo vinculado ao blog...Rodrigo Penna
 
Exercícios Livro 1 Movimento Uniforme
Exercícios Livro 1   Movimento UniformeExercícios Livro 1   Movimento Uniforme
Exercícios Livro 1 Movimento Uniformeguest640ecc
 
Exercícios Livro 1 Movimento Uniforme
Exercícios Livro 1   Movimento UniformeExercícios Livro 1   Movimento Uniforme
Exercícios Livro 1 Movimento UniformeEduardo Tuba
 
IMPLANTAÇÃO DE PEDÁGIO URBANO NA CIDADE DE SÃO PAULO UTILIZANDO A INFRAESTRU...
IMPLANTAÇÃO DE PEDÁGIO URBANO NA CIDADE DE SÃO  PAULO UTILIZANDO A INFRAESTRU...IMPLANTAÇÃO DE PEDÁGIO URBANO NA CIDADE DE SÃO  PAULO UTILIZANDO A INFRAESTRU...
IMPLANTAÇÃO DE PEDÁGIO URBANO NA CIDADE DE SÃO PAULO UTILIZANDO A INFRAESTRU...hundrot
 
CINEMÁTICA.pptx
CINEMÁTICA.pptxCINEMÁTICA.pptx
CINEMÁTICA.pptxmmercezinha
 
Aula10 problema-transporte
Aula10 problema-transporteAula10 problema-transporte
Aula10 problema-transporteLorran Mol
 
_REVISAO DE CINEMATICA.pptx
_REVISAO  DE CINEMATICA.pptx_REVISAO  DE CINEMATICA.pptx
_REVISAO DE CINEMATICA.pptxSimoneBarboza7
 

Semelhante a Problema do Caixeiro-Viajante com Restrições de Tempo (18)

Problema do Caixeiro Viajante
Problema do Caixeiro ViajanteProblema do Caixeiro Viajante
Problema do Caixeiro Viajante
 
Corg 1ano-cinemticaescalar-120229064829-phpapp02
Corg 1ano-cinemticaescalar-120229064829-phpapp02Corg 1ano-cinemticaescalar-120229064829-phpapp02
Corg 1ano-cinemticaescalar-120229064829-phpapp02
 
Corg 1ano-cinemticaescalar-120229064829-phpapp02
Corg 1ano-cinemticaescalar-120229064829-phpapp02Corg 1ano-cinemticaescalar-120229064829-phpapp02
Corg 1ano-cinemticaescalar-120229064829-phpapp02
 
Análise do problema do caixeiro viajante - Versão artigo - ERAD 2008
Análise do problema do caixeiro viajante - Versão artigo - ERAD 2008Análise do problema do caixeiro viajante - Versão artigo - ERAD 2008
Análise do problema do caixeiro viajante - Versão artigo - ERAD 2008
 
Relatório Final
Relatório FinalRelatório Final
Relatório Final
 
Algoritmos Genéticos com Arduino
Algoritmos Genéticos com ArduinoAlgoritmos Genéticos com Arduino
Algoritmos Genéticos com Arduino
 
O problema do transporte aplicado à grafos
O problema do transporte aplicado à grafosO problema do transporte aplicado à grafos
O problema do transporte aplicado à grafos
 
Questões Corrigidas, em Word: Cinemática Escalar - Conteúdo vinculado ao blog...
Questões Corrigidas, em Word: Cinemática Escalar - Conteúdo vinculado ao blog...Questões Corrigidas, em Word: Cinemática Escalar - Conteúdo vinculado ao blog...
Questões Corrigidas, em Word: Cinemática Escalar - Conteúdo vinculado ao blog...
 
Exercícios Livro 1 Movimento Uniforme
Exercícios Livro 1   Movimento UniformeExercícios Livro 1   Movimento Uniforme
Exercícios Livro 1 Movimento Uniforme
 
Exercícios Livro 1 Movimento Uniforme
Exercícios Livro 1   Movimento UniformeExercícios Livro 1   Movimento Uniforme
Exercícios Livro 1 Movimento Uniforme
 
F
FF
F
 
1 cinem escal
1 cinem escal1 cinem escal
1 cinem escal
 
Introducao a otimizacao
Introducao a otimizacaoIntroducao a otimizacao
Introducao a otimizacao
 
IMPLANTAÇÃO DE PEDÁGIO URBANO NA CIDADE DE SÃO PAULO UTILIZANDO A INFRAESTRU...
IMPLANTAÇÃO DE PEDÁGIO URBANO NA CIDADE DE SÃO  PAULO UTILIZANDO A INFRAESTRU...IMPLANTAÇÃO DE PEDÁGIO URBANO NA CIDADE DE SÃO  PAULO UTILIZANDO A INFRAESTRU...
IMPLANTAÇÃO DE PEDÁGIO URBANO NA CIDADE DE SÃO PAULO UTILIZANDO A INFRAESTRU...
 
CINEMÁTICA.pptx
CINEMÁTICA.pptxCINEMÁTICA.pptx
CINEMÁTICA.pptx
 
Aula10 problema-transporte
Aula10 problema-transporteAula10 problema-transporte
Aula10 problema-transporte
 
_REVISAO DE CINEMATICA.pptx
_REVISAO  DE CINEMATICA.pptx_REVISAO  DE CINEMATICA.pptx
_REVISAO DE CINEMATICA.pptx
 
CINEMÁTICA.pptx
CINEMÁTICA.pptxCINEMÁTICA.pptx
CINEMÁTICA.pptx
 

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
  • 2. Sum´ario 1 Introdu¸c˜ao 3 2 Problema 4 3 Solu¸c˜ao 8 4 M´etodo 1 9 5 M´etodo 2 11 6 M´etodo 3 13 7 M´etodo 4 15 8 M´etodo 5 17 9 M´etodo 6 18 10 M´etodo 7 e 8 19 10.1 Algoritmo Gen´etico Implementado . . . . . . . . . . . . . . . . . 20 10.1.1 Cromossomo . . . . . . . . . . . . . . . . . . . . . . . . . 20 10.1.2 Gera¸c˜ao da Popula¸c˜ao Inicial . . . . . . . . . . . . . . . . 20 10.1.3 Sele¸c˜ao de Reprodutores . . . . . . . . . . . . . . . . . . . 20 10.1.4 Cruzamento . . . . . . . . . . . . . . . . . . . . . . . . . . 20 10.1.5 Muta¸c˜ao . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21 10.1.6 Atualiza¸c˜ao da Popula¸c˜ao . . . . . . . . . . . . . . . . . . 21 11 Experimentos 22 11.1 Instˆancias . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22 11.2 Configura¸c˜ao do Algoritmo Gen´etico . . . . . . . . . . . . . . . . 22 11.3 Resultados . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22 12 Conclus˜ao 24 2
  • 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