Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
viajante
Wederson Adriano Loureno da Silva1
Abstract. This article presents the study and development of an application for
solving the Traveling Salesman Problem (TSP) by means of genetic algorithm
(GA), which aims to make appropriate parameterization and uses of new
experiments. The results show that the population increase in the number of
generations and provide for significant improvements which, in turn, cause
the increase of time spent. To circumvent this problem are discussed
techniques for parallelization of the algorithm.
1. Introduo
O Problema do Caixeiro Viajante (PCV) descreve a complexidade de encontrar o ciclo
hamiltoniano de menor custo. O PCV representa um problema de grafos composto por
um conjunto de n vrtices (cidades) e um custo entre cada par de cidades, cujo, o
objetivo, encontrar dentre as (n-1)! possibilidades, aquela que passa por todas as
cidades e de menor custo. Por se tratar de um problema de otimizao combinatria,
atrai pesquisadores de diferentes reas, como: matemtica, engenharia e cincia da
computao (GUEDES, 2005).
Sua descrio, embora simples, revela um problema de classe NP-difcil
(GUEDES, 2005), o que o torna intratvel na obteno de solues exatas.
O problema tem uma aplicabilidade em diversas reas tais como: indstrias
(minimizar custo por meio da melhor rota utilizada por equipamentos no processo de
montagem), empresas (transportadoras, entrega e coleta de cargas), automobilstica
(reduo de custo de viagem), transporte de passageiros, roteirizao de servios de
reparos ou servios pblicos (como coleta de lixo, entrega postal), sequenciamento de
genoma.
Diante de algumas de suas vrias aplicaes, pode-se ter uma viso dos grandes
benefcios que uma soluo tima pode trazer sociedade. O grande desafio
compreende em encontr-la, visto ser de complexidade fatorial e, intratvel a soluo
exata para problemas de grande porte.
Busca-se abordagens aproximativas (heursticas/metaheursticas) e exatas uma
vez que no pode ser tratado por algoritmos polinomiais.
Avanos na rea foram obtidos por meio de trabalhos com abordagem:
Mtodos exatos
Mtodos heursticos
Algoritmos genticos
Algoritmos memticos
Algoritmos transgenticos
Otimizao por nuvem de partculas
Mtodos heursticos no garantem uma soluo tima, mas busca por solues
aproximadas e ou tempo de execuo aceitveis sem possuir limites formais de
qualidade (falta de preciso). Apesar da falta de preciso, tais mtodos, de certa forma,
se comportam como a inteligncia humana, que por meio de sucessivas aproximaes
direcionadas a um ponto timo, obtm solues viveis. So exemplos de algoritmos
heursticos: Busca Tabu, Simulated Annealing (SA), Greedy Randomized Adaptive
Search Procedures - GRASP, Algoritmo Lin- Kernighan (LK), Iterated Lin-Kernighan,
LK-ABCC, LK-H, LK-NYYY. (PRESTES, 2006)
Algoritmos Genticos (AG) tratam de uma implementao segundo a teoria da
seleo natural de Darwin, onde, indivduos mais aptos sobrevivem. Utiliza operadores
de reproduo, cruzamento e mutao. So geradas novas populaes a partir destas
operaes que, por meio da combinao de melhores solues correntes,
gradativamente so aprimoradas. Por ser o foco deste trabalho, ter uma melhor
abordagem na seo 3. Referncias para exemplos aplicados ao PCV podem ser
encontrados em (PRESTES, 2006).
Algoritmos Memticos (AM) so considerados extenses de AG's,
diferenciando-se apenas pela questo de evoluo, que neste caso, simula uma evoluo
cultural e no biolgica. Dawkins, citado por (PRESTES, 2006), define um meme (de
memes conceito que originou o nome) como informao transmitida como
caracterstica cultural. Referncias para exemplos aplicados ao PCV podem ser
encontrados em (PRESTES, 2006).
Algoritmos Transgenticos tm como base o processo de Endossimbiose /
Quorum Sensing, dos quais, a evoluo no ocorre pela troca de informaes dentro da
populao de cromossomos, mas sim, entre a populao de cromossomos e uma
populao de vetores transgenticos (transportam uma ou mais cadeias de informaes e
disponibilizam mtodos que definem sua atuao na populao de cromossomos). Por
definio, Schmidt descreve a endossimbionte como qualquer organismo que vive no
interior do corpo ou das clulas de outro organismo, realizando uma relao ecolgica
designada como endossimbiose. Enquanto que, Quorum Sensing, reflete a habilidade
das bactrias de comunicao e coordenao atravs de sinais moleculares. Referncias
para exemplos aplicados ao PCV podem ser encontrados em (PRESTES, 2006).
A Otimizao por Nuvem de Partculas ou, do ingls Particle Swarm
Optimization (PSO), uma metodologia baseada no comportamento do voo em bando
dos pssaros (nuvem ou populao), em que uma funo mediria os esforos de cada
pssaro (partcula) em manter uma distncia tima de seu vizinho. composto por uma
funo objetivo que avalia e direciona partculas no espao de solues, conforme
velocidade de cada uma. Referncias para exemplos aplicados ao PCV podem ser
encontrados em (PRESTES, 2006).
Atualmente, um dos maiores desafios o da TSP World Tour (TSP, 2010), com
1.904.711 cidades. Em 4 de maio de 2010, Helsgaun, utilizando uma variante do
algoritmo LK-H encontrou uma turn com o comprimento de 7,515,796,609. Este
relato, supera o algoritmo LK-NYYY. O menor limite inferior para o problema de
7,512,218,268 encontrado pelo algoritmo Concorde TSP (5 de junho de 2007).
3. Algoritmos Genticos
Algoritmos Genticos (AG), foram introduzidos pelo matemtico John H. Holland
(1975), e demonstram grande eficincia na resoluo de problemas complexos. So
inspirados na seleo natural de Darwin (processo de evoluo dos seres vivos). A
tcnica, consiste em explorar o espao de busca atravs de uma populao de solues
viveis (cromossomos), que evolui a cada gerao por meio de operadores genticos de
cruzamento e mutao. (GUEDES, 2005)
Os cromossomos podem ser representados de formas diferentes. Como exemplo,
no PCV, um conjunto de 1 a 8 cidades, {3, 8, 7, 2, 1, 5, 4, 6} representa uma das
solues viveis.
O PCV, por se tratar de um problema complexo, que cresce exponencialmente
conforme a quantidade de parmetros, no permite o clculo de todos os caminhos em
tempo aceitvel. justamente neste ponto, que os Algoritmos Genticos se mostram
como ferramentas poderosas no intuito de obter a soluo em tempo plausvel.
De modo geral, alm de proporcionarem simplicidade e reduo no espao de
busca, AG so aplicados em situaes como: modelo matemtico
desconhecido/impreciso e em funes lineares e ou no-lineares (COSTA et al., 2003).
3.1. Implementao
A ferramenta utilizada na implementao ser Java, por se tratar de uma linguagem
amplamente difundida (materiais como livros, bibliotecas, api's em diversas reas de
atuao), com qualquer tipo de aplicao (web, desktop, servidores, mainframes, jogos,
aplicaes mveis, chips de identificao, etc.). Embora, se tratar de uma linguagem
hbrida (compilada + interpretada), atualmente, possui desempenho equivalente outras
linguagens com alto desempenho, que obtido graas ao compilador Just-In-Time (JIT)
e tcnicas que detectam pontos de maior frequncia. Em uma parte (de maior
frequncia) gerado cdigo nativo do sistema operacional, enquanto demais partes, so
interpretadas. (SDN, 2010) (PAMPLONA, 2010)
Para atender s necessidades de um sistema baseado em AG's, tem-se como
principais requisitos do sistema, a passagem de parmetros: tamanho da populao,
nmero de geraes, nmero de vezes que ser rodado o algoritmo, o arquivo da
TSPLIB a ser avaliado, probabilidade de cruzamento e de mutao. Com o objetivo de
atender estas caractersticas que definem/interferem diretamente no comportamento,
que o sistema foi projetado para aceitar a linha de comando segundo a sintaxe:
java -jar tsp.jar [population_size] [max_generations] [max_runs] [file.tsp] [n_par] [log] [prob_cross]
[prob_mutate]
Argumento Descrio
-server Melhora o desempenho para uso intensivo da CPU. Utilizado para
aplicaes que requerem alto desempenho.
-Xoptimize otimizao do compilador JIT
-Xms define heap inicial da JVM.
-Xmx define o tamanho mximo do heap da JVM.
Sintaxe resumida:
java [options_jvm] -jar tsp.jar [arguments_tsp]
Exemplos:
java -server -Xms256m -Xmx512m -Xoptimize -jar tsp.jar 70 100 10 berlin52.tsp 2 none 0.6 0.04
java -server -Xms256m -Xmx512m -Xoptimize -jar tsp.jar 70 100 10 berlin52.tsp 2 berlin52.txt 0.6 0.04
Pacote Contedo
avaliation Avaliao (fitness)
consts Constantes utilizadas no sistema
exception Tratamento de erros
file Interpretadores dos arquivos fornecidos pela TSPLIB e arquivo de log.
graph Grafos
interfaces Definio das principais interfaces do sistema
operations Operaes envolvidas em AG
solver Implementa uma metodologia na soluo do TSP
tsp Classes diretamente relacionadas ao TSP
utilitys Classes contendo tratamento de mtodos em geral que so teis ao sistema
Tabela 3. Descrio das classes separadas por pacote
PROBLEMA P G R XC XM T(ms) S M
PROBLEMA P G R XC XM T(ms) S M
P Tamanho da populao
G Nmero de geraes
R Nmero de execues do algoritmo
XC Probabilidade de cruzamento
XM Probabilidade de mutao
T Tempo de execuo (ms)
S Soluo obtida neste trabalho
M Melhor soluo encontrada na literatura
22000
20000
18000
16000
Custo
14000 berlin52.tsp
12000
10000
8000
6000
50
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
00
15
10
20
25
30
35
40
45
50
55
60
65
70
75
80
85
90
95
10
Geraes
5. Concluso
O algoritmo proposto neste trabalho, visa principalmente a otimizao e a busca por
solues satisfatrias (percurso e tempo). Nmeros mais elevados de populao e
geraes proporcionaram uma melhora significativa nos resultados; fato este, que se
deve ao aumento da diversidade dos indivduos. Contudo, este aumento impacta
diretamente nos recursos utilizados pelo sistema envolvido no processamento e,
principalmente no tempo gasto. Com o intuito de contornar tal situao e, tendo em
vista minimizar o tempo gasto na obteno de respostas satisfatrias, foi implementado
a paralelizao do algoritmo. A paralelizao para problemas de grande porte e,
principalmente para os que foram necessrios a utilizao de nmeros maiores de
populao e geraes, proporcionaram melhores resultados e nveis elevados de
speedup e eficincia.
Como proposta futura, tem-se: a pesquisa e adaptao desta implementao para
um algoritmo hbrido; construo/utilizao de outras metodologias aplicadas na
seleo, cruzamento e mutao; experimentos em processadores com mais ncleos com
finalidade de avaliar a escalabilidade do algoritmo; adequao para utilizao de forma
distribuda. Esta pesquisa possibilitou comprovar que algoritmos hbridos so
considerados bem eficientes como as variantes de LK previamente citadas: LK-
NYYY e LK-H.
Referncias
COSTA, F. Vieira; VIDAL, Fbio Silveira; ANDR, Claudomiro M. G. SLAG
Resolvendo o problema do caixeiro viajante utilizando algoritmos genticos. In: V
Encontro dos Estudantes de Informtica do Estado do Tocantins, 2003, Palmas.
Anais EIN/EncoInfo 2003, 2003. Disponvel em:
<http://www.de9.ime.eb.br/~fsvidal/trabpub/slag.pdf>. Acesso em 13 de abril de
2010.
DEITEL, H. M. Java, How To Program, 7 ed., Prentice Hall, 2006.
DIMACS. 8th DIMACS Implementation Challenge: The Traveling Salesman Problem.
Disponvel em: <http://www.research.att.com/~dsj/chtsp/results.html>. Acesso em
07 de junho de 2010.
GRTSCHEL, M.; HOLLAND, O.; Solution of Large Scale Symmetric Travelling
Salesman Problems. Mathematical Programming, n. 51, p. 141-202, 1991.
GUEDES, Allison da C. B.; LEITE, J. N. de F.; ALOISE, Dario J. Um algoritmo
gentico com infeco viral para o problema do caixeiro viajante. Disponvel em:
<http://www.propesq.ufrn.br/publica/artigos-1edicao/et/MSIC-ET-011.pdf>. Acesso
em 07 de abril de 2010.
HOLLAND, J. H., Adaptation in Natural and Artificial Systems. Ann Arbor: University
of Michigan Press, 1975.
LIN, S.; KERNIGHAN, B. An Effective Heuristic Algorithm for the Traveling
Salesman Problem. Operations Research, n. 21, p. 498-516, 1973.
MESQUITA, Fernanda Victal. Programao Paralela Distribuda. Disponvel em:
<http://www.inf.puc-rio.br/~noemi/victal/>. Acesso em: 20 de novembro de 2010.
MIRANDA, Mrcio Nunes de. Algoritmos Genticos: Fundamentos e Aplicaes.
2007. Disponvel em: <http://www.gta.ufrj.br/~marcio/genetic.html>. Acesso em 04
de abril de 2010.
ORACLE. Java HotSpot VM Options. Disponvel em:
<http://www.oracle.com/technetwork/java/javase/tech/vmoptions-jsp-140102.html>.
Acesso em 04 de setembro de 2010.
ORT, Ed. A Test of Java Virtual Machine Performance . SDN. Disponvel em:
<http://java.sun.com/developer/technicalArticles/Programming/JVMPerf/>. Acesso
em 15 de agosto de 2010.
PAMPLONA, Vitor F. Tutorial Java: O que Java? Outubro de 2009. Disponvel em:
<http://javafree.uol.com.br/artigo/871498/>. Acesso em: 04 de abril de 2010.
PRESTES, lvaro Nunes. Uma Anlise Experimental de Abordagens Heursticas
Aplicadas ao Problema do Caixeiro Viajante. Julho de 2006. Disponvel em:
<http://www.ppgsc.ufrn.br/html/Producao/Dissertacoes/AlvaroNunesPrestes.pdf>.
Acesso em 05 de abril de 2010.
REEVES, C. R. (Ed.). Modern Heuristic Techniques for Combinatorial Problems. 1. ed.
Oxford: Blackwell Scientific Publication, 1993.
SDN, Sun Development Network. The Java Hotspot Compilers. In: The Java Hotspot
Virtual Machine v1,4,0. Disponvel em:
<http://java.sun.com/products/hotspot/docs/whitepaper/Java_HSpot_WP_v1.4_802_
4.html>. Acesso em 04 de abril de 2010.
TSP The Traveling Salesman Problem. Disponvel em: <http://www.tsp.gatech.edu/>.
Acesso em 04 de abril de 2010.
TSPLIB Traveling Salesman Problem Library. Disponvel em: <http://www.iwr.uni-
heidelberg.de/groups/comopt/software/TSPLIB95/>. Acesso em 04 de abril de 2010.