Você está na página 1de 10

Resolução do Problema do Caixeiro Viajante Com a Base de

Dados Att48, Eil51 e Berlin52 Utilizando Simulated Annealing


Cleberton Reiz¹, Tayenne Dias de Lima², Matheus Dias de Lima³, Victor Roberto Claudy4,
Vera Lúcia Vieira de Camargo Correio 5
1
Mestrando, Universidade Estadual Paulista, clebertonreiz@gmail.com
2
Mestrando, Universidade Estadual Paulista, tayennelyma@hotmail.com
3
Bacharel, Universidade do Estado de Mato Grosso, matheusquest@hotmail.com
4
Graduando, Universidade do Estado de Mato Grosso, victorclaudy@gmail.com
5
Doutora, Universidade Estadual Paulista, vera@unemat-net.br

Resumo:

O Problema do Caixeiro Viajante (PCV) é um problema da classe NP-Difícil muito conhecido


no meio científico por modelar inúmeros problemas reais das mais diversas áreas. Possui
elevada complexidade para grandes instâncias tornando a busca por uma solução
determinística, em alguns casos, inviável. Existem diversos métodos na literatura que buscam
obter soluções de qualidade para o PCV utilizando principalmente métodos heurísticos e meta-
heurísticos, pois proporcionam bons resultados com tempo de processamento aceitável. O
Simulated Annealing (SA) é uma meta-heurística para otimização que consiste em uma técnica
de busca local probabilística fundamentada em analogia com a termodinâmica. Inúmeros
trabalhos para resolução do PCV utilizando SA encontraram bons resultados ou até mesmo a
solução ótima global. Assim, o objetivo deste trabalho é implementar um algoritmo utilizando
SA para resolver o PCV com a base de dados Att48, Eil51 e Berlin52, comparando
posteriormente as soluções obtidas com os resultados encontrados na literatura. Os resultados
encontrados para as três bases de dados foram satisfatórios e próximos da solução ótima global
comprovando a eficácia da metodologia proposta neste trabalho.

Palavras–chave: pesquisa operacional, problema do caixeiro viajante, meta-heurística,


simulated annealing, matlab

Problem Solving of the Traveling Salesman With the Att48, Eil51 and
Berlin52 Database Using Simulated Annealing

ABSTRACT – The Problem of the Traveling Salesman (PCV) is a problem of the NP-Difficult
class, well known in the scientific world for modeling numerous real problems of the most
diverse areas. It has high complexity for large instances making the search for a deterministic
solution, in some cases, unfeasible. There are several methods in the literature that seek to
obtain quality solutions for PCV using mainly heuristic and metaheuristic methods, as they
provide good results with acceptable processing time. Simulated Annealing (SA) is a meta-
heuristic for optimization consisting of a probabilistic local search technique based on analogy
with thermodynamics. Numerous works to solve PCV using SA have found good results or even
the optimal global solution. Thus, the objective of this work is to implement an algorithm using
SA to solve the PCV with the database Att48, Eil51 and Berlin52, comparing later the solutions
obtained with the results found in the literature. The results found for the three databases were
satisfactory and close to the optimal global solution, proving the effectiveness of the
methodology proposed in this work.

Keywords: operational research, traveling salesman problem, meta-heuristic, simulated


annealing, matlab

Introdução
O problema do Caixeiro Viajante (PCV) é um problema de otimização combinatória da
classe NP-Difícil que consiste na busca de um percurso com custo mínimo atravessando todas
as 𝑛 cidades do problema e ao final retornando à cidade na qual deu inicio ao tour (GUEDES,
2005). Tal problema tem aplicabilidade em diversas áreas como indústrias, empresas,
automobilística, transporte de passageiros, roteirização de serviços de reparos ou serviços
públicos, sequenciamento de genoma, logística de navios com limite de calado, etc. Logo, pode-
se ter uma visão dos grandes benefícios que um programa capaz de obter a solução ótima do
PCV pode trazer a sociedade. O PCV pode ser formalizado como dado um conjunto A =
{1,2, ...n} de cidades e uma matriz de custos 𝐶𝑇 (𝑛) = [𝐶𝑖, 𝑗] onde 𝐶𝑖,𝑗 corresponde ao custo
para ir da cidade i para a j, consiste em minimizar a função (POZO, 2008):

𝐶𝑇 (𝑛) = ∑ 𝐶𝑖,𝑖+1 + 𝐶𝑛,1 (1)


𝑖=1

Como se trata de um problema de complexidade exponencial, algoritmos determinísticos


tornam-se inviáveis para grandes instâncias tornando os algoritmos de aproximação
notoriamente vantajosos em relação a tempo de processamento e qualidade de resultado
(VITAL et al., 2016).
Entre os diversos métodos encontrados na literatura que tratam do PCV a meta-heurística
Simulated Annealing (SA) é uma técnica com grande potencial para obter boas soluções
evitando cair em mínimos locais. Possui analogia ao processo de arrefecimento de metais que
perdem sua flexibilidade conforme a temperatura do material vai diminuindo. O processo
consiste de duas etapas onde inicialmente a temperatura do sólido é aumentada para um valor
próximo de 1100ºC, que é a temperatura de início de transformação da fase perlítica em
austenita. Na fase seguinte o resfriamento é realizado lentamente até que o material se
solidifique por meio de um controle de arrefecimento. Caso este processo ocorra lentamente,
os átomos que constituem o metal organizam-se em uma estrutura uniforme. Do contrário, o
mesmo pode ao final do processo, ficar quebradiço em virtude da má organização dos átomos
(VIVAN, 2010).
De maneira análoga, o SA substitui a solução corrente por outra que esteja na sua
vizinhança (dentro do espaço de busca) de acordo com uma função objetivo e com uma variável
T. Tal variável tem analogia com a temperatura, pois quanto maior for T, maior a componente
aleatória que será inserida na próxima solução escolhida permitindo que todo o espaço de busca
seja explorado sob o custo de escolher ocasionalmente soluções piores que a atual. Conforme
o algoritmo avança, o valor de T é decrementado e o algoritmo torna-se com o passar das
iterações mais seletivo, convergindo para uma solução de boa qualidade. A escolha de uma
solução pior depende da diferença de custo entre a solução atual e a próxima e da temperatura
atual. Assim, quanto maior a diferença de custo menor a possibilidade de seleção, e quanto
maior a temperatura, maior a chance de uma solução pior que a atual ser escolhida. Isso permite
ao algoritmo realizar movimentos ruins em altas temperaturas.

Os movimentos ruins são permitidos por uma distribuição de probabilidade (PRESS et


al., 1986):

∆𝐸
𝑝(∆𝐸 ) = 𝑒 − 𝑇 (2)

A figura (1) apresenta o algoritmo do SA:

Figura 1 – Algoritmo Simulated Annealing

Fonte: (POZO, 2008)


A escolha dos valores iniciais dos parâmetros apresentados na figura (1) são essenciais
para o funcionamento adequado do SA. Os parâmetros são formados pela temperatura inicial
do processo, pela temperatura final, número de iterações e o índice de resfriamento de
temperatura. Tais valores, quando devidamente calibrados elevam as chances de obter uma
solução ótima global.
O algoritmo dá inicio a partir de uma solução gerada randomicamente ou por um método
heurístico, pois fornece uma solução inicial mais interessante. A cada iteração do processo,
soluções vizinhas são geradas (uma a uma), os quais podem se tornar a solução corrente caso o
custo do vizinho seja inferior ao custo do estado atual. Se o vizinho possuir custo superior a
solução atual, então é aplicado a formula de probabilidade (1). O resultado da formula é
comparada com um número aleatório que, se menor que o resultado de (1), será selecionado
como estado atual, para ter exploração de seus vizinhos (POZO, 2008).
Para cada iteração do processo de busca, a temperatura T é decrementada, fazendo com
que a possibilidade de escolher soluções piores que a atual seja menor conforme decorre o
processo.

Materiais e Métodos
Para a realização dos experimentos, instâncias do PCV da popular biblioteca TSPLIB
foram utilizadas (REINELT, 1991). Esta biblioteca possui mais de 100 exemplos com tamanhos
que variam de 14 a 85.900 cidades. Foram selecionados três problemas da biblioteca para serem
aplicados no software desenvolvido: att48, eil51 e berlin52. O primeiro problema está
relacionado com a distância geográfica das capitais dos Estados Unidos, o segundo com um
conjunto de 51 cidades e o último a distância entre 52 locais dentro de Berlim.
O presente trabalho faz uso de um método heurístico construtivo (HC) para partir de
soluções mais interessantes. O algoritmo gera um vetor com o número de cidades/locais do
problema em análise e seleciona uma das cidades aleatoriamente para ser a primeira. A partir
disso, o método seleciona a próxima cidade com menor distância repete o procedimento até
completar o tour fornecendo ao programa uma solução inicial de melhor qualidade.
O algoritmo foi desenvolvido no software Matlab R2016b versão 9.1.0.441655, que tem
sua linguagem própria, mas com grande semelhança nas regras sintáticas e semânticas da
linguagem C e Java. Os gráficos apresentados no trabalho também foram desenvolvidos neste
software. As simulações foram processadas em um computador com processador Intel® Core™
2 Duo, 3.00 GHz.

Resultados e Discussão
A metodologia proposta foi aplicada aos três problemas, sendo adotados os mesmos
parâmetros para cada simulação realizada. O valor de cada parâmetro foi definido com base em
uma série de simulações efetuadas no programa, ficando 𝐾𝐾 que representa o número máximo
de iterações em 100.000, 𝑁𝐾 que indica a quantidade de tentativas de transição em 10.000, 𝛽
representando o coeficiente de variação de temperatura com 0,90 e 𝛼 indicando o valor do
coeficiente de tentativas de transições com valor de 0,95. 𝛼 modifica, ao final de cada iteração,
o valor de Nk, reduzindo o tempo de processamento.
Os problemas att48, eil51 e belin52 possuem disponíveis na literatura suas melhores
soluções, sendo a solução ótima global com função objetivo de 30524, 426 e 7542,
respectivamente.
Os problemas utilizados no trabalho possuem solução ótima global disponíveis na
literatura, a melhor função objetivo encontrada é de 33524, 426 e 7542 para os problemas att48,
eil51 e berlin52, respectivamente.
O primeiro problema simulado apresenta a posição de 48 capitais dos Estados Unidos,
sua configuração e solução ótima global se encontram na biblioteca TSPLIB, assim como os
demais problemas desse trabalho. A configuração ótima é apresentada na tabela (1):

Tabela 1- Solução ótima global do problema Att48


1-14 1 8 38 31 44 18 7 28 6 37 19 27 17 43
Ordem
Tour

15-28 30 36 46 33 20 47 21 32 39 48 5 42 24 10
29-43 45 35 4 26 2 29 34 41 16 22 3 23 14 25
43-48 13 11 12 15 40 9
Fonte: O Autor

A figura 2 apresenta o progresso do programa desenvolvido ao longo das iterações. O


tempo de processamento da simulação foi de 150,58 segundos com 37 soluções propostas
selecionadas pelo algoritmo, e a função objetivo da melhor solução encontrada foi de 34.200,86.
A diferença entre o resultado obtido e o ótimo global do problema é de 676,86 ou 2,02% acima
da solução ótima global.

Figura 2 – Resultado do PCV com o banco de dados att48 e HC

Fonte: O Autor

A melhor solução encontrada pelo programa desenvolvido é apresentada na tabela (2).


Percebe-se a partir da tabela citada que não se identifica semelhança alguma com a solução
ótima global. Apesar disso, o resultado encontrado foi muito próximo principalmente se levado
em consideração ao tempo de processamento.

Tabela 2- Melhor solução do problema Att48 com HC obtida pelo programa


1-14 7 28 6 37 19 27 17 43 30 36 46 33 15 12
Ordem
Tour

15-28 20 47 21 39 32 24 10 45 35 4 26 42 2 29
29-43 5 48 25 14 13 23 11 40 3 34 41 16 22 1
43-48 8 9 38 31 44 18
Fonte: O Autor

Uma segunda simulação no problema Att48 é realizada, o método heurístico é desativado


para verificar se este não está levando o programa a mínimos locais. A figura (3) apresenta o
resultado do processo. Nota-se que o método heurístico construtivo, neste caso, levou o
programa a melhores resultados.

Figura 3 – Resultado do PCV com o banco de dados att48 e sem HC

Fonte: O Autor

O segundo problema resolvido possui sua configuração ótima global indicada na tabela
(3) com função objetivo de 426. Dentre os três problemas simulados, o eil51 apresentou maior
tempo de processamento com 176,93 segundos.

Tabela 3- Solução ótima global do problema Eil51


1-14 1 22 8 26 31 28 3 36 35 20 2 29 21 16
Ordem
Tour

15-28 50 34 30 9 49 10 39 33 45 15 44 42 40 19
29-43 41 13 25 14 24 43 7 23 48 6 27 51 46 12
43-51 47 18 4 17 37 5 38 11 32
Fonte: O Autor
Os resultados da simulação do problema eil51 são apresentados na figura (4). A melhor
solução obtida pelo algoritmo foi de 444.40, com diferença de 18,40 ou 4,32% acima da solução
ótima. Levando em consideração que o tempo de processamento foi de aproximadamente três
minutos, a solução obtida possui função objetivo aceitável.

Figura 4 – Resultado do PCV com o banco de dados Eil51 e HC

Fonte: O Autor

Um segundo teste foi realizado com o problema Eil51 desativando a etapa da heurística
construtiva para verificar se soluções melhores poderiam ser obtidas. A função objetivo da
melhor solução encontrada foi de 443,22 com 164,50 segundos de tempo de processamento
trazendo, portanto, pequenas diferenças na inclusão do método heurístico.

Tabela 4- Melhor solução do problema Eil51 com HC obtida pelo programa


1-14 33 45 15 37 17 44 42 19 40 41 13 25 14 18
Ordem
Tour

15-28 4 47 12 46 51 1 22 20 35 36 3 28 31 8
29-43 26 7 43 24 23 48 6 27 32 11 2 29 21 50
43-51 16 49 38 5 9 34 30 10 39
Fonte: O Autor

O problema Berlin52 apresenta a posição de 52 locais em Berlim sendo, portanto, o maior


problema utilizado no presente trabalho. A diferença de tamanho entre os problemas é pequena,
fazendo com que o tempo de processamento seja similar. A tabela (5) expõe a solução ótima
global e a figura (5) apresenta as melhores soluções encontradas no decorrer da simulação.
Tabela 5- Solução ótima global do problema Berlin52
1-14 1 49 32 45 19 41 8 9 10 43 33 51 11 52

Ordem
Tour
15-28 14 13 47 26 27 28 12 25 4 6 15 5 24 48
29-43 38 37 40 39 36 35 34 44 46 16 29 50 20 23
43-52 30 2 7 42 21 17 3 18 31 22
Fonte: O Autor

A solução ótima global do problema berlin52 é de 7542 e a melhor função objetivo obtida
com o algoritmo desenvolvido é de 7675,80, trazendo uma diferença de 133,8 em relação ao
ótimo global. Trata-se de uma diferença percentual de 1,77%, valor consideravelmente inferior
aos valores obtidos nos problemas anteriores. O tempo de processamento foi de 134,33
segundos. A tabela (6) apresenta a melhor solução obtida com HC

Tabela 6- Melhor solução do problema Berlin52 com HC obtida pelo programa


1-14 14 52 11 51 33 43 10 9 8 41 19 45 32 49
Ordem
Tour

15-28 35 34 44 46 16 29 50 20 23 30 2 7 42 21
29-43 17 3 18 31 22 1 36 39 40 37 38 48 24 5
43-52 15 6 4 25 12 28 27 26 47 13
Fonte: O Autor

Figura 5 – Resultado do PCV com o banco de dados Berlin52 e HC

Fonte: O Autor

Uma nova simulação foi realizada desconsiderando a heurística construtiva e a função


objetivo da melhor solução encontrada foi de 7841,40 com tempo de processamento de 176
segundos.
Independente das diferenças entre os valores obtidos em simulação e os valores ótimos
disponíveis na literatura, os resultados são viáveis e muito próximos do ótimo. Se compararmos,
por exemplo, a solução obtida apenas com o algoritmo heurístico construtivo no problema
Berlin52 (cujo valor é de 9341,03) com a melhor solução encontrada no programa (7542) será
possível observar uma diferença de 19,26% enquanto com o algoritmo completo essa diferença
é de apenas 1,77%, comprovando a eficiência do programa.

Figura 6 – Resultado do PCV com o banco de dados Berlin52 e sem HC

Fonte: O Autor

Conclusão
O programa desenvolvido no matlab com uso do SA apresentou bons resultados. Quando
comparado os resultados encontrados no programa com os disponíveis na literatura, foi possível
observar e averiguar a eficácia do programa construído. Os valores obtidos se aproximam
consideravelmente dos melhores valores encontrados na literatura.
O tempo de processamento também foi um diferencial para o programa. Problemas reais
possuem tempo de tomada de decisão variáveis, mas em sua maioria, períodos maiores que
cinco minutos são fornecidos. Logo, o programa permite obter ótimos resultados dentro desse
intervalo de tempo e, caso o tempo disponível para tomada de decisão seja de algumas horas,
os resultados podem se tornar ainda mais próximos do ótimo global. É importante observar que
o processador utilizado nas simulações foi lançado por volta de 2007. Hoje existem
processadores com velocidade de processamento muito superior reduzindo ainda mais o tempo
de processamento caso a simulação ocorra em um equipamento mais potente.
A heurística construtiva se mostrou pouco eficiente e, para o primeiro problema, trouxe
resultado pior. Logo, conclui-se que o uso da técnica exige uma análise mais extensa sobre o
problema em estudo.
O programa foi desenvolvido com base no problema didático do caixeiro viajante, mas
por este possuir muita semelhança com problemas reais como o de logística de navios com
limite de calado, é possível fazer outras aplicações do programa, sendo necessário acrescentar
algumas variáveis e restrições pertinentes ao problema.

Agradecimentos
Este trabalho foi realizado durante uma bolsa apoiada pela Coordenação de
Aperfeiçoamento de Pessoal de Nível Superior (CAPES).
Referências Bibliográficas

PRESS, Wm. H., B. Flannery, S. Teukolsky, Wm. Vettering, Numerical Recipes, 326-334,
Cambridge University Press, New York, NY, 1986.

REINELT, G., TSPLIB - A Traveling Salesman Problem Library, ORSA Journal on


Computing 3 (1991), pp. 376-384. Disponível em: <http://elib.zib.de/pub/mp-
testdata/tsp/tsplib/tsplib.html>

GUEDES, Allison da C. B.; LEITE, J. N. de F.; ALOISE, Dario J. Um algoritmo genético


com infecção viral para o problema do caixeiro viajante. Disponível em:
<http://www.propesq.ufrn.br/publica/artigos-1edicao/et/MSIC-ET-011.pdf>. Acesso em 12 de
outubro de 2017.

POZO, Aurora, Implementações do Simulated Annealing para o problema do Caixeiro


Viajante Simétrico, notas de aula. Disponível em:
<http://www.inf.ufpr.br/aurora/disciplinas/topicosia2/downloads/trabalhos/SimulatedAnneali
ngTSP.pdf>. Acesso em 12 de outubro de 2017.

VIVAN, Cristian Juliano, Aplicação do Método Simulated Annealing em um Problema


Real de Sequenciamento da Produção. Disponível em:
<http://acervodigital.ufpr.br/bitstream/handle/1884/25009>. Acesso em 13 de outubro de 2017.

VITAL, S. A. M., Moreira, F. B., Lima, R. L., Algoritmos Genéticos: Aplicação e Medição
da Eficiência do Operador de Crossover Ox para o Problema do Caixeiro Viajante
Simétrico. Disponível em: <
https://www.ifg.edu.br/attachments/article/3018/PIICT_2015_Anderson.pdf>. Acesso em 13
de outubro de 2017.