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

422 visualizações

Publicada em

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.

Publicada em: Ciências
0 comentários
0 gostaram
Estatísticas
Notas
  • Seja o primeiro a comentar

  • Seja a primeira pessoa a gostar disto

Sem downloads
Visualizações
Visualizações totais
422
No SlideShare
0
A partir de incorporações
0
Número de incorporações
2
Ações
Compartilhamentos
0
Downloads
9
Comentários
0
Gostaram
0
Incorporações 0
Nenhuma incorporação

Nenhuma nota no slide

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

  1. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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

×