• Nenhum resultado encontrado

UMA HEURISTICA APLICADA AO PROBLEMA DO CAIXEIRO VIAJANTE

N/A
N/A
Protected

Academic year: 2021

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,j≤n,

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;

4. Otimização de perfurações de furos em placas de circuitos impressos; 5. Nos problemas de roteamento de veículos;

(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 s ∈ S 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≤i≤n 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,k≤n, com i≠k. 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:

) 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 si3 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≤i≤n, 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 am + 1 . . . aq – 1 aq … an – 1 an am a2 a3 . . . ap ap + 1 … am – 1 > s3= < i am + 1 . . . aq – 1 am a2 a3 . . . ap aq … an – 1 an ap + 1 … am – 1 > s4= < i am + 1 . . . aq – 1 aq … an – 1 a2 am an a3 . . . ap ap + 1 … am – 1 > s5= < i am + 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 ∀s∈ S , 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).

(Sol(HP) – Ótimo) x 100

Desvio = ————————————

Ótimo

(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 médias dos desvios foram 141,89% e 152,79%, respectivamente para HP* e HP.

(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 Desvio_HP Desvio_HP*

(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 the XXXIII 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 UFC, Fortaleza-CE, Brasil 1998.

Referências

Documentos relacionados

verificámos que um número significativo destes animais resultou positivo para a doença. O papel dos marcadores da inflamação na PE permanece pouco estudado, não só

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

Importa, contudo, determinar o quanto a imagem, enquanto potencial recurso na aula de língua estrangeira, facilita a aprendizagem, nomeadamente para desenvolver as no

é um espaço integrado à rede municipal de ensino, através dos serviços de suporte pedagógico, de ações e formações no campo da Educação Inclusiva, visando: a Socializar

Como parte do aldeído formado era transformado nos correspondentes ácido benzóico e álcool benzílico com conse­ quente queda no rendimento da reaçao, decidiu-se

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