• Nenhum resultado encontrado

Uma Heuristica aplicada ao problema do caixeiro viajante

N/A
N/A
Protected

Academic year: 2018

Share "Uma Heuristica aplicada ao problema do caixeiro viajante"

Copied!
8
0
0

Texto

(1)

UMA HEURISTICA APLICADA AO PROBLEMA DO CAIXEIRO VIAJANTE

Flávio Martins Colares

Faculdade Lourenço Filho, flaviocolares@yahoo.com

José Lassance de Castro Silva

Universidade Federal do Ceará, lassance@lia.ufc.br

José Ramos de Oliveira Silva

Faculdade Lourenço Filho, joseros@click21.com.br

Maria do Socorro de Carvalho

Faculdade Lourenço Filho, helpbanana@yahoo.com.br

Resumo

Neste trabalho descrevemos uma nova metodologia aplicada na resolução do problema do caixeiro

viajante, mais conhecido na literatura como Travelling Salesman Problem (TSP). A metodologia

também pode ser aplicada a classe dos Problemas de Otimização Combinatória Permutacional

(POCP). O método é simples de programar computacionalmente devido a estrutura usada na

modelagem do problema. Ele avalia um conjunto fixo de soluções, construído através de permutações, que diversifica a busca dentro do conjunto de soluções viáveis do problema. O TSP pertence a classe dos problema NP-completo, que justifica o uso de técnicas refinadas aplicadas na resolução do mesmo com o intuito de encontrar boas soluções viáveis a um baixo custo em termos de recursos computacionais. Extensivos experimentos computacionais foram realizados e reportados para instâncias do problema com até 443 cidades, e os resultados são comparados com aqueles encontrados na literatura.

Palavras-chave: Problema do Caixeiro Viajante, Otimização Combinatória, Heurística.

Abstract

The aim of this paper is to present a new method applied to solve the Travelling Salesman Problem (TSP). The method can also be used to solve Combinatorial Optimization Problems that involves permutation, it is a simple program of computer where the solution structure is based on permutation. This technique partitions the set of feasible solutions into small regions to diversify the local search. The technique was applied effectively to the TSP which is an NP-Complete problem and difficult to be solved in the practice. Extensive computational experiments are reported for instances with up to 443 cities and the results are compared with those obtained from the literature.

Key words: Travelling Salesman Problem, Combinatorial Optimization, Heuristics.

1. Introdução

O Problema do Caixeiro Viajante (PCV) consiste em determinar uma rota para o caixeiro que

minimize a distância total percorrida na rota passando por todas as cidades a serem visitadas, somente

uma única vez. Existem n cidades para serem visitadas e são conhecidas as distâncias dij, para 1≤i,jn,

entre as cidades. Em termos, o PCV, conforme Goldbarg e Luna [1], está presente em vários problemas práticos, tais como:

1. Programação de operações de máquinas e manufatura; 2. Programação de transporte entre células de manufatura; 3. Otimização de movimento de ferramentas de corte;

(2)

6. Nos de problemas de seqüenciamento;

7. Nos problemas de programação e distribuição de tarefas em plantas; 8. Trabalhos administrativos; entre outros.

A dificuldade de solucionar o PCV de forma exata está no grande número de soluções existentes para as instâncias de médio e grande porte. Sendo classificado na literatura como NP-completo, conforme descreve Garey and Jhonson [2], Lin and Kernighan [3], entre outros. Problemas desta natureza são comumente abordados através de Heurísticas, do idioma grego "heurisikein", que significa "descobrir". Heurísticas são procedimentos que permitem determinar uma ou mais soluções para determinados problemas que muitas vezes se apóiam em uma abordagem intuitiva, na qual a estrutura particular do problema seja considerada e explorada de forma inteligente, para a obtenção de uma boa solução adequada. Conforme Reeves [4], as heurísticas foram desenvolvidas com a finalidade de resolver problemas de elevado nível de complexidade em tempo computacional razoável. Ao se pensar em um problema combinatório complexo, uma opção seria analisar todas as combinações possíveis

para conhecer a melhor delas. Whitley et al. [5] fizeram uma boa abordagem da relação do problema

de seqüenciamento com o problema do caixeiro viajante, onde constataram que as técnicas utilizadas na resolução de um dos problemas também podem ser aplicadas na resolução do outro, com pequenas modificações.

Neste trabalho, nosso principal objetivo é mostrar uma nova abordagem de resolução para o problema

do caixeiro viajante, denominada de Heurística Permutacional (HP*), que sem muito sacrifício

também pode ser utilizado na resolução dos problemas de otimização combinatória que envolve

permutação. Os experimentos realizados com HP* são descritos, onde podemos concluir o

desempenho do método. Pretende-se verificar qual a influência na qualidade dos resultados obtidos e nos tempos de processamento, da solução inicialmente submetida à solução final.

Este artigo está organizado da seguinte forma: Na Seção 2 detalharemos a Heurística Permutacional. Enquanto que na Seção 3 serão apresentados os experimentos computacionais, assim como sua análise. A Seção 4 apresenta as conclusões, enquanto que na Seção 5 é dada a bibliografia.

2. Heurística Permutacional (HP*)

Um Problema de Otimização Combinatória Permutacional (POCP) pode ser definido por um terno (S,

g, n), onde S é o conjunto de todas as soluções viáveis (soluções que satisfazem as restrições do

problema, com | S | = n!), g é a função objetivo que aplica a cada solução sS um número real e n é

uma instância do problema. O objetivo é encontrar a solução s∈ S que minimize a função objetivo g.

Podemos representar s como uma permutação de n elementos distintos, ou seja, s=< a1 a2 ... an >. N(s)

é chamada a vizinhança de s e contém todas as soluções que podem ser alcançadas de s por um

simples movimento. Aqui, o significado de um movimento é aquele de um operador que transforma

uma solução para uma outra com pequenas modificações.

Silva e Soma [6] desenvolveram uma técnica para resolver POCP, denominada Heurística

Permutacional (HP). Através desta técnica conseguimos intensificar o processo de diversificação,

aumentando o número de soluções a ser avaliada no problema. O procedimento HP consiste

basicamente em dividir o conjunto de soluções viáveis S em n vizinhanças N(si) distintas entre si, onde

para cada 1≤in si é uma permutação que inicia com o elemento i, e cada uma destas vizinhanças será

particionada em quatro subvizinhanças N(sij)⊂N(si), 1≤j≤4, com sij definido adiante. As soluções

(permutações) s pertencentes a N(si) também iniciam com o elemento i. Desta forma N(si)∩N(sk)=∅,

1≤i,kn, com ik. Exceto si1= si, as quatro permutações si1, si2, si3 e si4 que produzirão as quatro

subvizinhanças N(si1), N(si2), N(si3) e N(si4), respectivamente, são obtidas da troca de posições dos

elementos de si, da seguinte forma:

1º) A permutação si2 mantém a primeira posição de si e inverte as (n-1) posições restantes de si;

) A permutação s

i3 mantém a primeira posição de si e troca seqüencialmente 2 a 2 as demais posições

adjacentes de si;

(3)

A subvizinhança N(sij) é formada por todas as permutações que são obtidas de sij trocando de

posição 2 a 2 todos os elementos de sij, a partir da segunda posição, e mantendo a ordem dos outros

elementos inalterado. Assim, o número de permutações em cada subvizinhança é [ (n-1)×(n-2)/2 + 1 ]

que implica em [ 4×[(n-1)×(n-2)/2 +1] ] permutações em cada vizinhança e um total de [ 2 ×n× (n-1)

× (n-2) + 4n ] permutações geradas para o problema. Dada uma permutação qualquer s1, podemos

obter os demais si, 2≤in, trocando somente o elemento da primeira posição de s1 pelo elemento da i

-éssima posição. Sem perdas de generalidades podemos supor s1=< 1 2 3 ... n >, então s2=< 2 1 3 4 5 ...

n >, s3=< 3 2 1 4 5 ... n >, ..., sn=< n 2 3 4 5 ... (n-1) 1 >.

Adotamos o seguinte critério para aumentar o número de soluções avaliadas no problema, com HP.

Seja s ∈N(si), para algum i entre 1 e n, isto implica que s=< i a2 ... an >. Sejam m= ⎣(n–1)/2⎦ +2,

p= m – ⎣n/4⎦ – 1 e q= m + ⎣n/4⎦ . Construa s1, s2, s3, s4 e s5 a partir de s da seguinte forma:

Solução α β δ μ

s = < i a2 a3 . . . ap ap + 1 … am – 1 am am + 1 . . . aq – 1 aq … an – 1 an >

s1= < i a2 a3 . . . ap am am + 1 . . . aq – 1 ap + 1 … am – 1 aq … an – 1 an >

s2= < i a

m + 1 . . . aq – 1 aq … an – 1 an am a2 a3 . . . ap ap + 1 … am – 1 >

s3= < i a

m + 1 . . . aq – 1 am a2 a3 . . . ap aq … an – 1 an ap + 1 … am – 1 >

s4= < i a

m + 1 . . . aq – 1 aq … an – 1 a2 am an a3 . . . ap ap + 1 … am – 1 >

s5= < i a

m + 1 . . . aq – 1 am an a3 . . . ap aq … an – 1 a2 ap + 1 … am – 1 >

Desta forma, a permutação s, a partir da segunda posição, é dividida em 4 subconjuntos α, β,

δ e μ sendo que: se k é o resto da divisão de n por 4, i. e, k=n módulo 4, então temos que:

=

=

+

=

=

=

=

=

+

=

=

=

=

=

=

=

=

=

=

4

/

e

2

4

/

3

4

/

e

1

4

/

2

4

/

1

4

/

e

1

4

/

0

n

n

n

n

n

n

n

k

δ

β

μ

α

α

δ

β

μ

μ

δ

β

α

μ

δ

β

α

A Tabela 1, dada a seguir, mostra um exemplo de s1, s2, s3, s4 e s5 para n=18 e

s=< 1 2 3 ... 18 >, com m=10, p=5 e q=14.

Solução α β δ μ

s < 1 2 3 4 5 6 7 8 9 1 0 1 1 1 2 1 3 1 4 1 5 1 6 1 7 1 8 >

s1 < 1 2 3 4 5 1 0 1 1 1 2 1 3 6 7 8 9 1 4 1 5 1 6 1 7 1 8 >

s2 < 1 1 1 1 2 1 3 1 4 1 5 1 6 1 7 1 8 1 0 2 3 4 5 6 7 8 9 >

s3 < 1

1 1 1 2 1 3 1 0 2 3 4 5 1 4 1 5 1 6 1 7 1 8 6 7 8 9 >

s4 < 1

1 1 1 2 1 3 1 4 1 5 1 6 1 7 2 1 0 1 8 3 4 5 6 7 8 9 >

s5 < 1

1 1 1 2 1 3 1 0 1 8 3 4 5 1 4 1 5 1 6 1 7 2 6 7 8 9 >

Tabela 1 – Construção de s1, s2, s3, s4 e s5 para n=18 e s=< 1 2 3 ... 18 >.

Assim, com este novo procedimento adicionado a HP, denominado HP*, o número total de

permutações a serem avaliadas será de [12×n×(n-1)×(n-2)+24n], pois para cada permutação gerada em

(4)

recursivamente, sem analisar o desempenho da função objetivo do problema, e constatamos que não

houve repetição de permutação para valores de n≥10. A Tabela 2, dada abaixo, apresenta o número de

permutações geradas por HP e HP*.

n HP HP* n HP HP*

10 1480 8880 70 657160 3942960

15 5520 33120 75 810600 4863600

20 13760 82560 80 986240 5917440

30 48840 293040 85 1185580 7113480

40 118720 712320 90 1410120 8460720

50 235400 1412400 100 1940800 11644800

60 410880 2465280 200 15761600 94569600

65 524420 3146520 500 248504000 1491024000

Tabela 2 – Número de permutações avaliadas pelos procedimentos HP e HP*

No TSP são dados um conjunto com n cidades a1,a2,..., an e todas as distâncias (ou custo) entre elas,

onde di,j representa a distância (ou custo) para “ir” da cidade ai até a cidade aj . O objetivo do problema

consiste em determinar uma rota, para o caixeiro, que percorra todas as n cidades somente uma vez

com a menor distância percorrida. Neste caso, uma rota pode ser definida como sendo uma seqüência

s=< a1 a2 ... an > de cidades a serem visitadas, nesta ordem. Assim, a função g que calcula a distância

total percorrida nesta rota é dada por g(s) =

a

a

d

a

a

d

n i

i

n

i 1 , 1

1

1 ,

)

(

+

= +

. Em outras palavras, o objetivo do

problema é obter uma seqüência s* tal que g(s*) = Min { g(s) } para ∀sS, onde S é o conjunto de

todas as seqüências (soluções viáveis) possíveis das n cidades.

O TSP pode ser definido como um terno P=(S, g, n), de acordo com a definição de um problema de

otimização combinatória permutacional, da seguinte forma:

a) Um elemento s do conjunto de soluções viáveis S é representado por uma permutação das n

cidades, com a ordem de s determinando a seqüência na qual as cidades serão visitadas;

b) A função g(s), dada anteriormente, determina a função que avalia uma solução de S.

3. Experimentos Computacionais

As heurísticas HP e HP* foram executadas num micro-computador com processador AMD Atlhon

2200+ e memória RAM de 256Mb. Os experimentos foram realizados a partir de 19 arquivos de teste

obtidos na OR-Library, TSPLIB [7], onde foram utilizadas matrizes D de tamanho n x n previamente

definidas.

A Tabela 3, abaixo, mostra os resultados obtidos com HP onde estão descritos os arquivos testes

utilizados, a dimensão das matrizes (n), o número de permutações por subvizinhança (NPS) e

vizinhanças (NPV),o número total de permutações geradas para avaliação (NPP), a solução ótima do

problema teste (Ótimo), a solução obtida pela heurística permutacional (HP), o percentual do desvio

(dado pela fórmula a seguir) e o tempo de execução de HP (em segundos).

(5)

Como já citado na seção 2, um dos nossos objetivos é conseguir diversificar o número de amostras avaliadas de forma a obter uma solução tão próxima da ótima quanto possível, assegurando desta forma, um menor percentual de desvio com um tempo computacional aceitável. Para se ter uma idéia mais clara da dimensão do problema relacionado com o tempo computacional, considere a amostra

contida no arquivo br17, onde usamos uma matriz D de tamanho 17x17, a de menor valor para n, em

que foram avaliadas apenas 8228 soluções de um total de aproximadamente 355,7 trilhões de soluções distintas possíveis. Sabe-se que para análise de um número de soluções dessa ordem, teríamos um custo de tempo computacional impraticável, ainda que algoritmos exatos possam ser utilizados.

Arquivo n NPS NPV NPP Ótimo HP Desvio (%) Tempo

br17 17 121 484 8228 39 68 74 0

ftv33 34 529 2116 71944 1286 2012 56 0

ftv35 36 596 2384 85824 1473 2322 58 0

ftv38 38 667 2668 101384 1530 2353 54 1

pr43 43 862 3448 148264 5620 5818 4 0

ftv44 45 947 3788 170460 1613 2495 55 0

ftv47 48 1082 4328 207744 1776 3912 120 0

ry48p 48 1082 4328 207744 14422 44910 211 0

ft53 53 1327 5308 281324 6905 10642 54 1

ftv55 56 1486 5944 332864 1608 3663 128 0

ftv64 65 2017 8068 524420 1839 4479 144 1

ft70 71 2416 9664 686144 38637 65885 71 1

ftv70 71 2416 9664 686144 1950 4373 124 0

kro124p 100 4852 19408 1940800 36230 191764 429 4

ftv170 171 14366 57464 9826344 2755 6886 150 23

rbg323 323 51682 206728 66773144 1326 5627 324 301

rbg323 358 63547 254188 90999304 1163 6776 483 464

rbg403 403 80602 322408 129930424 2465 6861 178 798

rbg443 443 97462 389848 172702664 2720 7789 186 1684

Tabela 3 – Resultados obtidos por HP.

Na Tabela 3, verificamos que para os valores: n≤48, n=53 e n=71, o percentual de desvio ficou abaixo

de 100% enquanto para os demais valores este percentual foi superior a 100%. Apenas uma amostra (pr43) teve desempenho satisfatório, cujo desvio foi de aproximadamente 4%. O tempo computacional

para execução de HP foi considerado bom, com a maior instância (n=443) levando menos de 30

minutos para ser executada, entretanto HP deixou a desejar na qualidade das soluções apresentadas

como solução para o problema. Daí surgiu a idéia de aumentarmos o número de soluções a serem avaliadas, para cada problema, sem comprometer o tempo computacional e melhorarmos as soluções

dos problemas. A introdução do procedimento HP*, citado na Seção 2, que aumenta o número de

soluções avaliadas, em 5 vezes, pôde ser avaliado com os dados apresentados na Tabela 4, dada a seguir, com as mesmas características da Tabela 3.

Podemos verificar que houve melhoras na qualidade das soluções apresentadas por HP* quando

comparadas com HP, para maioria das instâncias utilizadas. Em apenas duas instâncias, ftv70 e ftv170,

não houve melhoras. O tempo de execução da maior instância foi de aproximadamente 5 horas. As

(6)

Arquivo n NPS NPV NPP Ótima HP* Desvio (%) Tempo

br17 17 121 11616 197472 39 57 46 0

ftv33 34 529 50784 1726656 1286 1952 52 0

ftv35 36 596 57216 2059776 1473 2252 53 1

ftv38 38 667 64032 2433216 1530 2217 45 2

pr43 43 862 82752 3558336 5620 5766 3 3

ftv44 45 947 90912 4091040 1613 2418 50 3

ftv47 48 1082 103872 4985856 1776 3729 110 4

ry48p 48 1082 103872 4985856 14422 41851 190 5

ft53 53 1327 127392 6751776 6905 10642 54 5

ftv55 56 1486 142656 7988736 1608 3534 120 7

ftv64 65 2017 193632 12586080 1839 4361 137 11

ft70 71 2416 231936 16467456 38637 65813 70 14

ftv70 71 2416 231936 16467456 1950 4373 124 14

kro124p 100 4852 465792 46579200 36230 180479 398 57

ftv170 171 14366 1379136 235832256 2755 6886 150 476

rbg323 323 51682 4961472 1602555456 1326 5320 301 7320

rbg323 358 63547 6100512 2183983296 1163 6539 462 11030

rbg403 403 80602 7737792 3118330176 2465 6254 154 17748

rbg443 443 97462 9356352 4144863936 2720 7535 177 19053

Tabela 5. Resultados obtidos através da heurística HP*

Na Figura 1, apresentamos o gráfico comparativo entre os desvio das heurísticas HP e HP*,

enquanto na Figura 2, mostramos uma comparação das heurísticas em relação ao tempo computacional.

Figura 2. Comparação de Percentuais de Desvio entre HP e HP*

Figura 1 – Gráfico de comparação dos desvios de HP com HP*.

Percentual de Desvio em Relação a Função Objetivo

0 100 200 300 400 500 600

17 34 36 38 43 45 48 48 53 56 65 71 71 100 171 323 358 403

Cidades

D

esv

io

(7)

T e m p o C o m p u ta c io n a l p a ra E x e c u ç ã o

0 2 0 0 0 4 0 0 0 6 0 0 0 8 0 0 0 1 0 0 0 0 1 2 0 0 0 1 4 0 0 0 1 6 0 0 0 1 8 0 0 0 2 0 0 0 0

1 7 3 4 3 6 3 8 4 3 4 5 4 8 4 8 5 3 5 6 6 5 7 1 7 1 1 0 0 1 7 1 3 2 3 3 5 8 4 0 3

C id a d e s

Te

m

po

(s

)

T e m p o _ H P T e m p o _ H P *

Figura 2 - Gráfico da comparação do tempo computacional (em segundos) entre HP e HP*

4. Conclusão

Uma maneira de reduzir a complexidade na resolução do problema computacionalmente é através do uso de heurísticas, que embora não garantam a solução exata, estabelece um compromisso entre os resultados obtidos e o custo computacional. Entretanto, nossos experimentos computacionais baseados

em problemas da literatura, indicam que tanto HP como HP* não obtiveram sucesso na resolução dos

mesmos contradizendo o que muitos pesquisadores descrevem em seus artigos, que nem sempre a diversificação na busca tende a gerar bons resultados. Isto ficou aqui registrado, onde a média do

desvio foi muito alta para as duas heurísticas. Porém, não podemos afirmar que HP e HP* são

procedimentos inadequados para serem aplicados na resolução dos problemas de otimização

combinatória permutacional, pois conforme Silva e Soma [6], HP conseguiu excelentes resultados

quando aplicada ao problema de empacotamentos de bins tridimensionais.

Escolheu-se o Problema do Caixeiro Viajante, como o representante dos POCP a ser estudado para uma aplicação da nossa técnica. Esta escolha não se deu ao acaso, visto que trata-se de um dos problemas bastante estudado com instâncias já consolidadas na literatura (TSPLIB [7]). A modelagem de um problema de otimização combinatória permutacional, como um TSP, não prejudica em nada a

generalidade com que se tratou os POCP e sendo assim HP* pode ser aplicada a essa classe de

problemas sem maiores dificuldades

Como trabalhos futuros, podemos diminuir o tempo de execução de HP* se utilizarmos processamento

paralelo ou distribuído, em vez de processamento seqüencial, conforme sugere Viana [8]. Uma vez que no procedimento é possível que a busca seja feita em diversos processadores, existentes e disponíveis para tal, através da geração das vizinhanças em paralela. Outro trabalho que também pode

ser realizado é aplicar HP* em outros problemas da classe dos POCP.

Agradecimentos

Os autores agradecem o apoio da Faculdade Lourenço Filho, da Universidade Federal do Ceará e do CNPq (processo 302176/03-9).

5. Bibliografia

[1] Goldbarg, M. C. e Luna, H. P. L. Otimização Combinatória e Programação Linear: Modelos e

(8)

[2] Garey, M. R. and Johnson, D. S. Computers and Intractability: A guide to the Theory of

NP-Completeness. W. H. Freeman, San Francisco, 1979.

[3] Lin, S. and Kernighan, B. W.. An Effective Heuristic Algorithm for the Traveling Salesman

Problem. Operations Research, v.21, p.498-516, 1973.

[4] Reeves, C. R. - Modern Heuristic Techniques for Combinatorial Problems. McGraw-Hill,

London, 1995.

[5] Whitley, D., Starkweather, T. and Shaner, D. The traveling salesman and sequence scheduling:

quality solutions using genetic edge recombination. Handbook of Genetic Algorithms. Van

Nostrand Reinhold, New York, 350-372, 1991.

[6] Silva, J. L. C. e Soma, N. Y.. Uma heurística para Problemas de Otimização Combinatória

Permutacional. Proceedings of theXXXIII SBPO, Campos do Jordão-SP, Brazil, 2001.

[7] TSPLIB. http://www.iwr.uni-eidelberg.de/groups/comopt/software/TSPLIB95/index.html

[8] Viana, G. V. R. Meta-heurísticas e Programação Paralela em Otimização Combinatória. Edições

Imagem

Figura 2.  Comparação de Percentuais de Desvio entre HP e HP*
Figura 2 -  Gráfico da comparação do tempo computacional (em segundos) entre HP e HP*

Referências

Documentos relacionados

Entretanto, no Brasil, estes somente são abordados em treinamentos de tripulantes fornecidos por seus empregadores como parte de seu treinamento inicial e

As doenças negligenciadas afetam milhares de pessoas no mundo que não dispõem de tratamentos eficazes ou adequados. Em sua maioria, são doenças tropicais infecciosas

Diferente das amostras contendo apenas vanádio como heteroátomo ou magadiita puro silício, que não produziram DEE, este resultado é mais uma evidên- cia que os sítios

Pensar o uso das geotecnologias no ensino de Geografia cada vez mais tem sido uma necessidade mediante as diferentes formas de compreender o espaço geográfico que se vive, pois

No entanto, não há como não se reconhecer também a influência e a gênese do ativismo a partir da compreensão do papel preponderante da jurisprudência no sistema da common law, com

Sendo assim, o Grupo A foi composto com as crianças que realizaram procedimento cirúrgico para tratamento de catarata até 06 meses de idade consideradas, em nosso estudo, de

foram realizadas: Centro Cirúrgico, Unidade de Tratamento In -. tensivo e Berçário, mostrando, de certa forma, pacientes

No Capítulo 2 são apresentados conceitos de processamento de imagens e visão computacional, operações básicas e filtros utilizados no pré-processamento a fim de melhorar a imagem