• Nenhum resultado encontrado

Algoritmo híbrido para o problema do caixeiro viajante dinâmico: otimização por colônia de formigas + buscas locais

N/A
N/A
Protected

Academic year: 2021

Share "Algoritmo híbrido para o problema do caixeiro viajante dinâmico: otimização por colônia de formigas + buscas locais"

Copied!
62
0
0

Texto

(1)UNIVERSIDADE FEDERAL DE SANTA MARIA CENTRO DE TECNOLOGIA PROGRAMA DE PÓS-GRADUAÇÃO EM INFORMÁTICA. ALGORITMO HÍBRIDO PARA O PROBLEMA DO CAIXEIRO VIAJANTE DINÂMICO: OTIMIZAÇÃO POR COLÔNIA DE FORMIGAS + BUSCAS LOCAIS. DISSERTAÇÃO DE MESTRADO. Matheus Ricalde de Souza. Santa Maria, RS, Brasil 2018.

(2) Algoritmo Híbrido para o Problema do Caixeiro Viajante Dinâmico: Otimização por Colônia de Formigas + Buscas Locais. Matheus Ricalde de Souza. Dissertação apresentada ao Curso de Mestrado do Programa de Pós-Graduação em Informática, Área de Concentração em Computação Aplicada, da Universidade Federal de Santa Maria (UFSM, RS), como requisito parcial para obtenção do grau de Mestre em Ciência da Computação. Orientador: Felipe Martins Müller, Dr.. Santa Maria, RS, Brasil 2018.

(3)

(4)

(5) RESUMO Dissertação de Mestrado Programa de Pós-Graduação em Informática Universidade Federal de Santa Maria. ALGORITMO HÍBRIDO PARA O PROBLEMA DO CAIXEIRO VIAJANTE DINÂMICO: OTIMIZAÇÃO POR COLÔNIA DE FORMIGAS + BUSCAS LOCAIS. AUTOR: MATHEUS RICALDE DE SOUZA ORIENTADOR: FELIPE MARTINS MÜLLER Data e Local da Defesa: Santa Maria, 09 de março de 2018. O presente trabalho aborda a resolução do Problema do Caixeiro Viajante Dinâmico (PCVD), onde o mesmo possui uma grande relevância dentro da literatura, podendo ser aplicado a problemas reais como problemas de logística e telecomunicações. Os algoritmos de colônia de formigas são considerados uma das técnicas mais bem sucedidas para a resolução de vários problemas combinatórios, dentre eles o problema do caixeiro viajante. Para a resolução do problema propõe-se um algoritmo híbrido, que trabalha com a meta-heurística de otimização de colônia de formigas combinada com buscas locais aplicadas ao problema simétrico do caixeiro viajante dinâmico. Os testes foram realizados em cinco instâncias pertencentes à biblioteca do problema do caixeiro viajante (TSPLIB).. O algoritmo híbrido proposto mostrou-se eficaz na busca por. soluções, onde em todas as instâncias testadas ele superou as expectativas, alcançando superioridade em relação ao algoritmo memético comparado. Palavras-chave: Meta-Heurísticas, Busca Local, Otimização de Colônia de Formigas, Lin-kernighan, GENIUS, Problema do Caixeiro Viajante..

(6) ABSTRACT. Hybrid Algorithm for the Dynamic Traveling Salesman Problem: Optimization by Ant Colony + Local Search. AUTHOR: MATHEUS RICALDE DE SOUZA ADVISOR: FELIPE MARTINS MÜLLER. Date and Defense Place: Santa Maria, 09/03/2018.. The present work deals with the resolution of the Dynamic Traveling Salesman Problem (DTSP), it has a great relevance within the literature, being able to be applied to real problems as problems of logistics and telecommunications. Ant colony algorithms are currently considered one of the most successful techniques for solving various combinatorial problems, among them the traveling salesman problem. To solve the problem we propose a hybrid algorithm that works with the meta-heuristic Ant Colony Optimization combined with local searches applied to the symmetric of the dynamic traveling salesman problem. The tests were carried out in five instances belonging to the traveling salesman problem library (TSPLIB). The proposed hybrid algorithm proved to be effective in the search for solutions, where in all tested instances it exceeded expectations, reaching superiority compared to the memetic algorithm compared. Keywords: Meta-Heuristics, Local Search, Ant Colony Optimization, Linkernighan, GENIUS, Traveling Salesman Problem.

(7) LISTA DE FIGURAS Figura 1. Exemplo de uma instância do PCV (GOMES, 2008). ................................................. 11 Figura 2. Exemplo subciclos no PCV. ......................................................................................... 12 Figura 3. Exemplo de PCVD – Mudança de valores entre as cidades. ...................................... 13 Figura 4. Jogo Icosiano ............................................................................................................... 18 Figura 5. Classes da Complexidade Computacional (GAREY & JOHNSON, 1999). ................. 20 Figura 6. Ótimo Local e ótimo global. ......................................................................................... 22 Figura 7. GENI - Inserção tipo I................................................................................................... 24 Figura 8. GENI - Inserção tipo II.................................................................................................. 25 Figura 9. Unistringing Tipo I. ....................................................................................................... 26 Figura 10. Unistringing Tipo II. .................................................................................................... 27 Figura 11. Troca de 2-opt. ........................................................................................................... 28 Figura 12. Troca de 3-opt. ........................................................................................................... 28 Figura 13. Troca de 4-opt. ........................................................................................................... 29 Figura 14. Experimento da ponte dupla. ..................................................................................... 30 Figura 15. Exemplo de Solução PCV. ......................................................................................... 34 Figura 16. Remoção tipo I - US. .................................................................................................. 38 Figura 17. Remoção tipo II - US. ................................................................................................. 38 Figura 18. Inserção tipo I - US. ................................................................................................... 39 Figura 19. Inserção tipo II - US. .................................................................................................. 39 Figura 20.Movimentos LK em três níveis. ................................................................................... 42 Figura 21. Gráfico representando o US+ACO no problema lin318 (iterações x total). ............... 46 Figura 22. Gráfico representando o LK+ACO no problema lin318 (iterações x total). ............... 46 Figura 23. Gráfico representando o US+ACO no problema eil51 (iterações x total). ................. 48 Figura 24. Gráfico representando o LK+ACO no problema eil51 (iterações x total). ................. 48 Figura 25. Gráfico representando o US+ACO no problema kroA100 (iterações x total). ........... 50 Figura 26. Gráfico representando o LK+ACO no problema kroA100 (iterações x total). ........... 50 Figura 27. Gráfico representando o LK+ACO no problema kroA150 (iterações x total). ........... 52 Figura 28. Gráfico representando o US+ACO no problema kroA150 (iterações x total). ........... 52 Figura 29. Gráfico representando o US+ACO no problema kroA200 (iterações x total). ........... 54 Figura 30. Gráfico representando o LK+ACO no problema kroA200 (iterações x total). ........... 54.

(8) LISTA DE TABELAS Tabela 1. Resultados obtidos na instância lin318 - LK+ACO. .................................................... 45 Tabela 2. Resultados obtidos na instância lin318 - US+ACO..................................................... 45 Tabela 3. Resultados obtidos na instância eil51 - LK+ACO. ...................................................... 47 Tabela 4. Resultados obtidos na instância eil51 - US+ACO....................................................... 47 Tabela 5. Resultados obtidos na instância kroA100 - LK+ACO. ................................................ 49 Tabela 6. Resultados obtidos na instância kroA100 - US+ACO. ................................................ 49 Tabela 7. Resultados obtidos na instância kroA150 - LK+ACO. ................................................ 51 Tabela 8. Resultados obtidos na instância kroA150 - US+ACO. ................................................ 51 Tabela 9. Resultados obtidos na instância kroA200 - LK+ACO. ................................................ 53 Tabela 10. Resultados obtidos na instância kroA200 - US+ACO. .............................................. 53.

(9) LISTA DE ABREVIATURAS E SIGLAS. ACO. Ant Colony Optimization. AG. Algoritmo Genético. BT. Busca Tabu. GENI. Generalizaded Insertion Procedure. GRASP. Greedy Randomized Adaptative Search Procedure. LK. Lin Kernighan. NP. Non Deterministc Polynomial Time. P. Polynomial Time. PCV. Problema do Caixeiro Viajante. PCVD. Problema do Caixeiro Viajante Dinâmico. TSP. Travelling Salesman Problem. TSPLIB Travelling Salesman Problem Library US. Unstringing and Stringing.

(10) SUMÁRIO. 1.INTRODUÇÃO .............................................................................................. 11 1.1 Justificativa ............................................................................................... 14 1.2 Objetivos .................................................................................................. 15 1.2.1 Objetivo Geral: .................................................................................... 15 1.2.2 Objetivos Específicos: .......................................................................... 15 1.3 Estrutura do Trabalho ................................................................................. 16 2. REVISÃO BIBLIOGRÁFICA .......................................................................... 17 2.1 Problema do caixeiro viajante (Travelling Salesman Problem – TSP) .............. 17 2.2 Complexidade ......................................................................................... 19 2.3 Métodos de resolução ................................................................................. 20 2.3.1 Métodos exatos ....................................................................................... 20 2.3.2 Heurísticas.............................................................................................. 21 2.3.2.1 Heurísticas Construtivas .................................................................... 21 2.3.2.2 Heurísticas de Melhoramento ............................................................. 22 2.4 Meta-heurísticas ....................................................................................... 23 2.5 GENIUS ................................................................................................ 23 2.6 Lin-Kernighan ....................................................................................... 27 2.7 Otimização de Colônia de Formigas ......................................................... 29 3. HIBRIDIZAÇÃO DE OTIMIZAÇÃO DE COLÔNIA DE FORMIGAS + BUSCA LOCAL ............................................................................................................. 33 3.1 Formulação do Modelo ............................................................................... 33 3.2 Representação de uma Solução .................................................................... 34 3.3 População ................................................................................................. 35 3.4 Geração da População Inicial ...................................................................... 35 3.5 Atualização de feromônios ACO ................................................................. 36 3.6 ACO + GENIUS ........................................................................................ 37.

(11) 3.7 ACO + LK ................................................................................................ 40 4. ANÁLISE E RESULTADOS ........................................................................... 44 5. CONCLUSÕES .............................................................................................. 55 REFERÊNCIAS BIBLIOGRÁFICAS ................................................................... 56.

(12) 1.INTRODUÇÃO Este trabalho trata o problema do caixeiro viajante dinâmico e simétrico (PCVD), do inglês Dynamic Travelling Salesman Problem - DTSP, inicialmente é apresentada uma breve introdução do problema do caixeiro viajante (PCV) que permite uma melhor compreensão do problema. Suponha que uma pessoa Pi (i= 1) parta em viagem de sua cidade Cinicial, visite outras cidades Cj (j = 1,..., n) e retorne a Cinicial. O problema do caixeiro viajante consiste na busca de uma melhor rota, ou seja, a menor distância para percorrer todas as cidades. O problema pode ser representado como um conjunto de cidades Cj = (j = 1,..., n) que possui uma distância d(ci,cj) entre cada par de cidades, onde o objetivo é encontrar o menor caminho possível percorrendo todas as cidades pertencentes a C apenas uma vez. Uma solução para o problema é considerada factível se as restrições ou características do problema são satisfeitas completamente, ou seja, se o caixeiro visitou todas as cidades apenas uma vez e voltou a cidade de origem. A solução é considerada ótima se for considerada factível e minimizar um dado critério de otimalidade. (HOFFMAN & WOLFE, 1985). A Figura 1 ilustra uma instância do PCV. Nesta figura, as cidades são representadas pelos números 0 (zero) a N sendo a cidade inicial representada pelo numero 0 (zero). Cada d representa a distância entre as cidades, onde de ci até cj e de cj até ci possuem o mesmo valor.. Figura 1. Exemplo de uma instância do PCV (GOMES, 2008).. Apesar de o PCV ser um problema com uma descrição simples, sua complexidade em alguns casos pode ser extremamente alta. Um dos motivos é que sua solução ótima torna-se. 11.

(13) mais complexa e difícil de ser alcançada à medida que o número de cidades contidas em C aumenta. De acordo com Cunha (2000) o grande interesse no PCV deve-se a inúmeros problemas reais que podem ser modelados como PCV. Na literatura diversas variações do PCV foram propostas, onde as características básicas são as seguintes: . Total de cidades: número total de cidades a serem visitadas;. . Com retorno ou sem: caracterizado pela volta do caixeiro a Cinicial. Se o problema não possuir a restrição onde o caixeiro deve voltar à cidade de origem é considerado sem retorno, caso contrário é considerado com retorno;. . Possibilidade de subciclos: caracterizado pela permissão do caixeiro visitar mais de uma vez a cidade de origem, como ilustrado na Figura 2;. . Simétrico: caracterizado pela simetria das rotas. Onde se as distâncias entre ci e cj forem iguais, ou seja, se ci  cj = cj ci é considerado um problema simétrico, e casos onde ci  cj ≠ cj ci o problema é considerado assimétrico.. . Dinamismo: em alguns casos as cidades (locais) podem trocar de lugar ou pode ocorrer uma mudança de tempo para percorrer as cidades, causando assim um dinamismo no problema.. Figura 2. Exemplo subciclos no PCV.. Segundo Mavrovouniotis et. al.(2017) ao decorrer da última década o interesse no PCV dentro da literatura obteve um grande crescimento, principalmente nas versões dinâmicas do mesmo (Problema do caixeiro viajante dinâmico, PCVD), tanto em problemas. 12.

(14) onde a topologia das cidades muda (Angus e Hendtlass, 2002) quanto em problemas onde o tempo entre as cidades mudam de valor (França et. al., 1995). (Figura 3).. Figura 3. Exemplo de PCVD – Mudança de valores entre as cidades.. Ainda de acordo com Mavrovouniotis et. al. (2017), o PCVD pode ser representado como uma sequência de diferentes instâncias do PCV estático. Onde o dinamismo ocorre, porém a cada troca dinâmica o problema é considerado como um novo problema estático. Quando o intervalo entre as mudanças for considerado longo, a maneira de resolução considerado mais eficaz é considerada a utilização de métodos exatos (Cook, 2011). Nas aplicações reais do PCVD o intervalo entre as mudanças é relativamente curto tornando a utilização de métodos exatos inacessíveis (Soler et. al., 2007) (Gueta et. al, 2007), (Apiletti et. al., 2011). O PCV pertence à classe de problemas denominada NP-difícil. De acordo com Cormen (2002), problemas pertencentes a esta classe até o momento não são possíveis de serem resolvidos em tempo polinomial. Significando assim que o PCV possui ordem de complexidade exponencial, ou seja, quanto mais cidades possuir o problema maior será o esforço computacional para a resolução do mesmo. Mavrovouniotis et. al. (2017) recentemente propuseram algoritmos híbridos integrando ACO (Ant Colony System) com buscas locais, onde os autores afirmam que a utilização de algoritmos de otimização de formigas são altamente recomendados para a. 13.

(15) resolução do PCVD devido a capacidade de adaptação do mesmo, ressaltando que os caminhos de feromônios gerados antes de alguma mudança dinâmica auxiliam na aceleração da re-otimização do problema. Ainda de acordo com os autores os algoritmos de buscas locais exploram de uma forma eficaz espaços de busca no problema e o ACO possui uma grande capacidade de adaptação, fazendo com que a hibridização destas heurísticas produza um algoritmo poderoso para a resolução de PCVD, conseguindo escapar de ótimos locais e aumentando a proximidade da solução ótima.. 1.1 Justificativa Em alguns casos o PCV não pode ser resolvido manualmente, o que torna o problema muito complexo e dependendo da forma como ele é resolvido o processo pode ser demorado, podendo levar vários dias para ser concluído, e ainda não chegar a uma solução relativamente boa (VOUDOURIS & TSANG, 1999). Métodos computacionais de otimização são empregados para resolver este tipo de problema. Esses métodos têm como objetivo procurar uma solução respeitando todas as restrições do problema. Na otimização do PCV utilizam-se basicamente métodos heurísticos, no qual uma solução é encontrada, mas não garante que esta seja a solução ótima (RAO, 1980). As técnicas heurísticas buscam encontrar uma solução de qualidade em tempo polinomial de complexidade P. Porém para este tipo de problema as meta-heurísticas são as técnicas mais indicadas. (OLIVEIRA, 2015). Para que uma meta-heurística consiga encontrar soluções diferentes é necessário que a mesma consiga realizar movimentos para espaços ainda não explorados. De acordo com Johnson e McGeoch (1997), é necessário unir meta-heurísticas através de hibridizações para que a mesma consiga alcançar melhores resultados. A hibridização pode resultar em melhores resultados do que uma meta-heurística sozinha. Portanto neste trabalho são abordadas duas estratégias de hibridização unindo a Otimização por Colônia de Formigas com buscas locais US (pertencente ao GENIUS) e LinKernighan para a resolução do PCV dinâmico. A primeira aborda a utilização da fase US (Unstringing and Stringing) da busca local GENIUS com o algoritmo de ACO, onde a busca local recebe do ACO uma solução inicial e. 14.

(16) em cada iteração remove um vértice da rota e o reinsere em outra posição buscando uma melhor solução. Na segunda abordagem ocorre a busca local de LK, onde as trocas dos vértices são do tipo k-opt, nos quais k arcos são removidos de um roteiro e substituídos por outros k arcos, com a finalidade de diminuir a distância total a ser percorrida. Para as duas hibridizações citadas serão utilizados os dados do trabalho realizado por Mavrovouniotis et. al. (2017), no qual a melhor solução de otimização de colônia de formigas é passada para a meta-heurística GENIUS. O algoritmo híbrido proposto por Mavrovouniotis et. al. (2017) foi projetado para tratar de casos simétricos e assimétricos, porém para este trabalho serão tratados apenas os casos simétricos.. 1.2 Objetivos Este subcapítulo apresenta o objetivo geral e os específicos presentes no trabalho.. 1.2.1 Objetivo Geral:. Partindo do trabalho de Mavrovouniotis et. al. (2017) onde o autor propôs a metaheurística de otimização por colônia de formigas + busca local GENIUS para a resolução do problema do caixeiro viajante dinâmico, este trabalho tem como objetivo propor o uso da meta heurística otimização por colônia de formigas e a busca local de Lin-Kerrnighan (KERNIGHAN & LIN, 1970). O algoritmo híbrido a ser proposto neste trabalho será comparado com o proposto por Mavrovouniotis et al. (2017) através de 5 instâncias, com distâncias representadas por números inteiros, presentes no banco de dados do problema do Caixeiro Viajante TSPLIB (Traveling Salesman Problem Library) (REINELT, 1991), buscando encontrar uma melhor otimização para o PCVD.. 1.2.2 Objetivos Específicos:. São os seguintes os objetivos específicos: 1. Pesquisar e estudar técnicas heurísticas e meta-heurísticas; 2. Estudar as meta-heurísticas GENIUS (GENDREAU et al., 1992), Lin-Kernighan (KERNIGHAN & LIN, 1970) e Otimização de Colônia de Formigas (DORIGO et al., 1996);. 15.

(17) 3. Inserir a meta-heurística Lin-Kernighan para a resolução do Problema do Caixeiro Viajante Dinâmico juntamente com a meta-heurística de Otimização de Colônia de Formigas. 4. Avaliar o desempenho do algoritmo proposto em comparação com o desenvolvido por Mavrovouniotis et al. (2017). Diante do exposto, este trabalho visa encontrar uma otimização heurística para a resolução do PCVD através da hibridização de otimização de colônia de formigas com buscas locais.. 1.3 Estrutura do Trabalho Este trabalho se divide em 5 capítulos. No primeiro foi introduzido de forma breve o PCV e sua importância, assim como os objetivos almejados no desenvolvimento deste trabalho. No Capítulo 2 é apresentada a revisão bibliográfica, com temas cruciais para o entendimento do trabalho. O Capítulo 3 apresenta os algoritmos híbridos de Otimização de Colônia de Formigas, as buscas locais GENIUS e Lin-Kerninghan. A descrição do algoritmo heurístico é acompanhada de explicações e exemplos que auxiliam sua compreensão. No Capítulo 4 são apresentados os resultados computacionais obtidos pelos métodos propostos. O trabalho é finalizado com a apresentação das conclusões e referências bibliográficas.. 16.

(18) 2. REVISÃO BIBLIOGRÁFICA Este capítulo tem por objetivo conceituar o problema, explicando conceitos sobre complexidade e as aplicações práticas e métodos para a resolução do PCV. Uma maior ênfase é dada em meta-heurísticas e em buscas locais, buscando apresentar a ACO, Lin-Kernighan e GENIUS.. 2.1 Problema do caixeiro viajante (Travelling Salesman Problem – TSP) O PCV é um dos problemas mais estudados de otimização combinatória, que consiste em encontrar com o menor custo o trajeto entre um conjunto de cidades, passando exatamente uma vez por cada uma delas e ao final retornar à cidade de origem. A variante de retorno ao estado inicial é conhecida como o PCV com retorno (LAPORTE, 1992) e caso não seja imposto que deve se voltar à cidade inicial, é denominado PCV sem retorno (PAPADIMITRIOU, 1977). A origem do PCV não é precisamente estabelecida, porém de acordo com Goldberg & Lingle (1989) é creditada ao astrônomo, matemático e físico William Rowan Hamilton. Hamilton em 1859 desenvolveu um jogo denominado Jogo Icosiano (Figura 4), que constituía em um dodecaedro regular onde havia em cada um dos vértices (nós) o nome de uma cidade importante e o desafio era passar exatamente uma vez por cada cidade e voltar ao ponto de origem. (GOLDBERG & LINGLE, 1989). Quando as distâncias entre as cidades ao longo do processo trocam de valor, entram novas cidades no grafo ou quando são removidas cidades no grafo, o PCV passa a ser chamado de dinâmico e quando estes valores não mudam, o PCV é chamado de estático. Neste trabalho o dinamismo é abordado como a troca de distâncias entre as cidades, no qual a cada 10 iterações o algoritmo escolhe aleatoriamente duas ou mais cidades e troca os valores de distâncias entre elas como em Simões e Costa (2011) e em Melo et. al.,(2013).. 17.

(19) Figura 4. Jogo Icosiano. Existem variantes do PCV, como PCV múltiplo, proposto por Miler, Tucker e Zemlin (1960), onde são considerados m caixeiros percorrendo todas as cidades. O objetivo do PCV múltiplo é determinar um conjunto de percursos para os múltiplos caixeiros de forma que os mesmos percorram todas as cidades na menor distância possível, replicando a melhor solução encontrada por um caixeiro para os outros, através de compartilhamento da melhor rota. No PCV com janelas temporais é realizada a associação de cada cidade em uma janela de tempo que a mesma pode ser visitada (FOX, GAVISH & GRAVES, 1980). Este problema no mundo real tem sua aplicação em situações em que existem restrições quanto às horas em que cada vendedor poderá atender os seus clientes, ou seja, quando cada caixeiro poderá visitar alguma cidade. Mavrovouniots e Yang (2010) em seu trabalho trataram o PCV dinâmico, com mudança de topologia de cidades, através de um esquema de comunicação direta entre as formigas na ACO, onde as formigas podem trocar de cidades com outras formigas que pertencem a sua vizinhança. Eyckelhof e Snoek (2002) apresentam uma abordagem diferente utilizando colônia de formigas para o PCV dinâmico alterando os tempos de viagens. Tratam o dinamismo com estratégias para aperfeiçoar os feromônios deixados pelas formigas tanto local quanto globalmente. Com relação aos problemas-teste para o PCV na literatura estão disponíveis instâncias dentro da biblioteca de problemas do PCV denominada TSPLIB (REINELT, 1991).. 18.

(20) Problemas como o PCV dentro da teoria da complexidade são considerados problemas NP-difíceis, nesta teoria os problemas computacionais são classificados de acordo com a sua complexidade de resolução.. 2.2 Complexidade Garey e Johnson (2002) afirmam que dentro do contexto de algoritmos, complexidade se refere aos recursos necessários para que algum determinado algoritmo possa resolver um problema sob o ponto de vista computacional. Em relação à Teoria da Complexidade deve-se entender que os problemas são divididos em quatro classes, segundo a sua complexidade, em P, NP, NP-completo e NPdifícil. Onde: P (Polinomial Time): definido como o conjunto de todos os problemas que podem ser resolvidos por um algoritmo determinístico em tempo polinomial. NP (NonDeterministc Polinomial Time): definido como um conjunto de problemas que podem ser resolvidos por um algoritmo não determinístico em tempo polinomial, onde a complexidade do problema cresce exponencialmente em função do tamanho do mesmo. NP-difícil: definido como problemas cuja característica é a redução polinomial a partir de todo problema NP. NP-completo: definido para problemas pertencentes à intersecção das classes NP e NP-difícil. De acordo com Garey e Johnson (1999) é possível ilustrar a complexidade computacional como apresentado na Figura 5.. 19.

(21) Figura 5. Classes da Complexidade Computacional (GAREY & JOHNSON, 1999).. Um problema de otimização que é considerado NP-difícil, assim como o PCVD, é aquele cujo problema de decisão associado é NP-completo. Estes tipos de problemas não são sempre possíveis de encontrar a solução ótima de uma maneira rápida. Porém é possível o uso de alguns métodos de resolução para encontrar soluções que, provavelmente, são próximas da ótima.. 2.3 Métodos de resolução Atualmente existe um elevado número de problemas que podem ser considerados ou modelados como um PCV. Com isso, abordagens exatas e de aproximação como às heurísticas estão sendo utilizadas para a resolução do PCV simétrico e assimétrico.. 2.3.1 Métodos exatos Os métodos exatos garantem que a solução ótima seja encontrada, porém não são recomendados para a maioria dos PCVs. Problemas que pertencentes à classe NP-completo são difíceis ou quase impossíveis de serem encontrados em sua otimalidade. Os autores Dumitrescu e Stützle (2003) enfatizam algumas vantagens e desvantagens na aplicação de algoritmos exatos na busca por soluções em problemas de otimização combinatória. As vantagens são: . Saber se o algoritmo de fato encontrou a solução ótima;. . É possível encontrar limites inferiores e superiores em relação a solução ótima;. 20.

(22) . Permitem que espaços de busca onde a solução ótima não esta contida sejam desconsideradas. Porém como desvantagens pode-se ressaltar:. . Tamanho máximo das instâncias é limitado;. . O tempo de processamento e o custo computacional são elevados para instâncias consideradas relativamente pequenas;. . Consumo de memória pode ser muito alto, ocasionando precocemente o término do algoritmo. Os métodos heurísticos, embora não garantam encontrar soluções necessariamente. ótimas, permitem soluções próximas ao ótimo e, portanto são mais recomendados em resolução de problemas de otimização como o PCV (Osman, 1993).. 2.3.2 Heurísticas O PCV é um problema que possui um alto grau de dificuldade de ser resolvido em sua otimalidade, muitos autores na literatura abordam o uso de heurísticas para que soluções de melhor qualidade possam ser alcançadas. Para Holland (1975) uma abordagem utilizada a partir de um conjunto com métodos e regras que buscam uma solução de problemas é denominada como heurística. Heurísticas podem conter significados diferentes, mas para este trabalho ela será abordada como um método que não irá garantir aos algoritmos propostos à solução de otimalidade. As heurísticas utilizadas na resolução do PCV podem ser divididas em três grupos: heurísticas construtivas, heurísticas de melhoria (melhoramento) e meta-heurísticas.. 2.3.2.1 Heurísticas Construtivas. Cordenonsi (2008) define que heurísticas construtivas, ou algoritmos construtivos, tem seu início em uma solução vazia e a inserção de elementos ocorre através de um elemento por vez sequencialmente seguindo critérios propostos pela heurística até gerar a solução por completo. De acordo com Silver (2004), as heurísticas construtivas constroem uma solução elemento a elemento. A escolha de cada elemento está, geralmente, relacionada a uma. 21.

(23) determinada função de avalição para o problema. Tal função é bastante relativa, pois varia conforme o tipo de problema abordado. Dentre estes métodos é possível citar: 1. Procedimento do vizinho mais próximo (ROSENKRANTZ & LEWIS, 1977); 2. Savings de Clark e Wright (CLARKE & WRIGHT, 1964); 3. A fase construtiva GENI do GENIUS (GENDREAU et al., 1992).. 2.3.2.2 Heurísticas de Melhoramento. Marcondes (2008) afirma que as heurísticas de melhoramento, também chamadas de mecanismos de busca local, são técnicas baseadas nas buscas na vizinhança. Uma definição de vizinhança pode ser S representando o espaço de busca de um problema e F a função objetivo a minimizar. O conjunto N(s) ⊆ S, o qual depende da estrutura do problema tratado, reúne um número determinado de soluções S, denominado vizinhanças de S. Cada solução S. ∈ N(s) é chamada de vizinho de S e é obtida a partir de uma operação movimento. Heurísticas de melhoramento possuem um critério de parada, normalmente, quando os movimentos da vizinhança não melhoram a solução, denominado como um ótimo local. O ótimo global pode ser o ótimo local, ou seja, a melhor solução possível para o problema, mas não necessariamente um ótimo local será um ótimo global, pois não há garantias em relação a este fato. Na Figura 6 é apresentada a situação para os problemas de minimização.. Figura 6. Ótimo Local e ótimo global.. 22.

(24) 2.4 Meta-heurísticas. Ribeiro et. al, (1999) definem meta-heurísticas como procedimentos destinados a encontrar uma boa solução através de uma heurística subordinada, sendo modelada diferentemente para cada problema específico. As meta-heurísticas podem ser de busca local ou populacional. Na busca local o espaço de soluções a ser explorado é realizado através de movimentos, os quais são aplicados a cada passo sobre a solução corrente, gerando outra solução promissora na vizinhança. Já na populacional, a exploração ocorre com a recombinação de conjunto de soluções, com o intuito de aprimorá-las. Neste trabalho, foram utilizadas as buscas locais US e Lin-Kernighan combinados com a meta heurística populacional de Otimização de Colônia de Formigas, as quais são descritas nas seções 2.5, 2.6 e 2.7, respectivamente.. 2.5 GENIUS. O GENIUS, proposto por Gendreau et al. (1992) é composto por duas etapas: o método construtivo denominado GENI (Generalizaded Insertion Procedure) e o de melhoramento denominado US (Unstringing and Stringing). O Algoritmo 1 apresenta o pseudocódigo básico da meta-heurística GENIUS, onde V representa o conjunto de vértices e s a solução parcial ou completa do problema. A primeira fase, o GENI, é responsável pela construção de uma rota inicial, já a segunda fase, o US, é responsável pela melhoria da rota construída na primeira fase.. Algoritmo 1 GENIUS 1: 𝑠0 ← 𝐺𝐸𝑁𝐼(𝑉); 2: 𝑠 ← 𝑈𝑆(𝑠0 ); 3: 𝑅𝑒𝑡𝑜𝑟𝑛𝑒 𝑠;. Gendreu et al. (1992) afirmam que para cada vértice V a ser adicionado à rota, o procedimento GENI considera dois tipos de inserção: Stringing tipo I: Satisfazendo ck ≠ ci e ck ≠ cj. A inserção de c na rota, resulta na remoção de arestas (ci, ci+1), (cj, cj+1) e (ck , ck+1) e na inserção de (ci, c), (c, cj), (ci+1, ck) e (cj+1, ck+1) na rota. O pseudocódigo é representado no algoritmo 2. Onde v representa o vértice. 23.

(25) que não está na rota e será inserido entre os vértices vi e vj. V e vk representa um vértice. pertencente ao caminho de vj a vi. A Figura 7 ilustra a inserção do tipo I. Algoritmo 2 GENI – Inserção Tipo I 1: Dados os vértices 𝑐, 𝑐𝑖 , 𝑐𝑗 𝑒 𝑐𝑘 𝑒 𝑢𝑚𝑎 𝑠𝑜𝑙𝑢çã𝑜 𝑝𝑎𝑟𝑐𝑖𝑎𝑙 𝑠: 2: 𝑠´ ← 𝑠; 3: 𝑠𝑒 (𝑐𝑘 ≠ 𝑐𝑖 ⋀ 𝑐𝑘 ≠ 𝑐𝑗 ) então 4:. Remova de 𝑠´ os arcos (𝑐𝑖 , 𝑐𝑖+1 ), (𝑐𝑗 , 𝑐𝑗+1 )𝑒 (𝑐𝑘 , 𝑐𝑘+1 );. 5:. Insira em 𝑠´os arcos (𝑐𝑖 , 𝑐), (𝑐, 𝑐𝑗 ), (𝑐𝑖+1 , 𝑐𝑘 ) 𝑒 (𝑐𝑗+1 , 𝑐𝑘+1 );. 6:. 𝐼𝑛𝑣𝑒𝑟𝑡𝑎 𝑜 𝑠𝑒𝑛𝑡𝑖𝑑𝑜 (𝑐𝑖+1 , … , 𝑐𝑗 )𝑒 (𝑐𝑗+1 , … , 𝑐𝑘 );. 7: fim se 8: Retorne 𝑠´;. Figura 7. GENI - Inserção tipo I.. Stringing tipo II: Satisfazendo ck ≠ cj e ck ≠ cj+1; cl ≠ ci e cl ≠ ci+1. A inserção de c na rota, resulta na remoção das arestas (ci , ci+1), (cl-1, cl), (cj, cj+1) e (ck-1, ck), e na inserção das arestas (ci, c), (c, cj), (cl, cj+1), (ck-1, cl-1) e (ci+1, ck) na rota. O algoritmo 3 representa o pseudocódigo. Algoritmo 3 GENI – Inserção Tipo II 1: Dados os vértices 𝑐, 𝑐𝑖 , 𝑐𝑗 𝑒 𝑐𝑘 𝑒 𝑐𝑙 𝑒 𝑢𝑚𝑎 𝑠𝑜𝑙𝑢çã𝑜 𝑝𝑎𝑟𝑐𝑖𝑎𝑙 𝑠: 2: 𝑠´ ← 𝑠; 3: 𝑠𝑒 (𝑐𝑘 ≠ 𝑐𝑖 ⋀ 𝑐𝑘 ≠ 𝑐𝑗+1 ∧ 𝑐𝑙 ≠ 𝑐𝑖 ∧ 𝑐𝑙 ≠ 𝑐𝑖+1 ) então 4:. Remova de 𝑠´ os arcos (𝑐𝑖 , 𝑐𝑖+1 ), (𝑐𝑗 , 𝑐𝑗+1 )𝑒 (𝑐𝑘 , 𝑐𝑘−1 ) 𝑒 (𝑐𝑙 , 𝑐𝑙−1 );. 24.

(26) 5:. Insira em 𝑠´os arcos (𝑐𝑖 , 𝑐), (𝑐, 𝑐𝑗 ), (𝑐𝑖+1 , 𝑐𝑘 ), (𝑐𝑗+1 , 𝑐𝑙 )𝑒 (𝑐𝑘−1 , 𝑐𝑙−1 );. 6:. 𝐼𝑛𝑣𝑒𝑟𝑡𝑎 𝑜 𝑠𝑒𝑛𝑡𝑖𝑑𝑜 (𝑐𝑖+1 , … , 𝑐𝑙−1 )𝑒 (𝑐𝑙 , … , 𝑐𝑗 );. 7: fim se 8: Retorne 𝑠´;. A Figura 8 ilustra o movimento da inserção tipo II.. Figura 8. GENI - Inserção tipo II.. A fase GENI é interrompida quando a rota estiver completa, ou seja, todos os vértices forem adicionados a ela. O US é uma fase de pós-otimização, que conta com funções de retirada e de reinserção de um vértice em uma rota. A inserção ocorre da mesma forma que no GENI, já a retirada pode ser definida como: Unstringing tipo I: Remove uma aresta ci ∈ C da rota excluindo os arcos (ci−1, ci), (ci , ci+1), (cj , cj+1 e (cl , cl+1) e adicionando os arcos (ci−1, cl), (ci+1, cj) e (cl+1, cj+1). O pseudocódigo do Unstringing tipo I é apresentado no algoritmo 4. Algoritmo 4 US – Remoção Tipo I 1: Dados os vértices 𝑐𝑖 , 𝑐𝑗 𝑒 𝑐𝑙 𝑒 𝑢𝑚𝑎 𝑠𝑜𝑙𝑢çã𝑜 𝑝𝑎𝑟𝑐𝑖𝑎𝑙 𝑠: 2: 𝑠´ ← 𝑠; 3:. Remova de 𝑠´ os arcos (𝑐𝑖−1 , 𝑐𝑖 ), (𝑐𝑖 , 𝑐𝑖+1 ), (𝑐𝑗 , 𝑐𝑗+1 )𝑒 (𝑐𝑙 , 𝑐𝑙+1 );. 4:. Insira em 𝑠´os arcos (𝑐𝑖−1 , 𝑐𝑙 ), (𝑐𝑖+1 , 𝑐𝑗 ) 𝑒 (𝑐𝑗+1 , 𝑐𝑙+1 );. 5:. 𝐼𝑛𝑣𝑒𝑟𝑡𝑎 𝑜 𝑠𝑒𝑛𝑡𝑖𝑑𝑜 (𝑐𝑖+1 , … , 𝑐𝑙 )𝑒 (𝑐𝑙+1 , … , 𝑐𝑗 );. 6: Retorne 𝑠´;. 25.

(27) A Figura 9 apresenta uma ilustração do movimento de remoção tipo I.. Figura 9. Unistringing Tipo I.. Unstringing tipo II: Satisfazendo cj Np (ci+1), e para uma dada orientação seja ck Np (ci-1) uma aresta no caminho (ci +1,..., cj-2). Seja também c Np (ck+1) uma aresta no caminho (cj ,..., ck-1). Então os arcos (ci- 1, ci), (ci, ci+1), (cj-1, cj), (cl , cl+1) e (ck , ck+1) são removidos, enquanto as arestas (ci-1, ck), (cl+1, cj-1), (ci+1, cj) e (cl, ck+1) são inseridos. Os dois caminhos (ci+1,..., cj-1) e (cl+1,..., ck) são invertidos. O algoritmo 5 ilustra a remoção tipo II. Algoritmo 5 US – Remoção Tipo II 1: Dadas as arestas 𝑐𝑖 , 𝑐𝑗 , 𝑐𝑘 𝑒 𝑐𝑙 𝑒 𝑢𝑚𝑎 𝑠𝑜𝑙𝑢çã𝑜 𝑝𝑎𝑟𝑐𝑖𝑎𝑙 𝑠: 2: 𝑠´ ← 𝑠; 3:. Remova de 𝑠´ os arcos (𝑐𝑖−1 , 𝑐𝑖 ), (𝑐𝑖 , 𝑐𝑖+1 ), (𝑐𝑗−1 , 𝑐𝑗 ), (𝑐𝑙 , 𝑐𝑙+1 )𝑒 (𝑐𝑘 , 𝑐𝑘+1 );. 4:. Insira em 𝑠´os arcos (𝑐𝑖−1 , 𝑐𝑙 ), (𝑐𝑖+1 , 𝑐𝑗 ) 𝑒 (𝑐𝑗+1 , 𝑐𝑙+1 );. 5:. 𝐼𝑛𝑣𝑒𝑟𝑡𝑎 𝑜 𝑠𝑒𝑛𝑡𝑖𝑑𝑜 (𝑐𝑗 , … , 𝑐𝑘 )𝑒 (𝑐𝑙+1 , … , 𝑐𝑙 );. A Figura 10 apresenta os movimentos de remoção do tipo II.. 26.

(28) Figura 10. Unistringing Tipo II.. Para este trabalho não será utilizado o método construtivo do GENIUS, portanto será empregado apenas a busca local US.. 2.6 Lin-Kernighan. O algoritmo desenvolvido por Kernighan & Lin (1970), atualmente é busca local mais conhecida e utilizada para o problema do caixeiro viajante. De acordo com Goldbarg et al. (2006) as soluções geradas pela meta-heurística são de alta qualidade, e pela qualidade das soluções geradas, durante muitos anos, muitos autores o mencionaram na bibliografia como a melhor otimização entre os métodos heurísticos. Segundo Johnson e McGeoch (1997) o LK parte de um circuito inicial T e de um vértice inicial t1. Quando a troca a ser realizada está no passo i, a troca é realizada através da sequência: 1. O arco (t1, t2i) é removido, e adiciona-se o arco (t2i, t2i+1); 2. O arco (t2i+1, t2i+2) é escolhido para ser removido. Com sua remoção e com a adição do arco (t2i+2, t1) deve satisfazer o requisito de que um circuito novo seja formado. 3. O arco (t2i+2, t1) é removido quando o passo i+1 é executado. Onde t1 é o vértice inicial e t2 é o próximo vértice. As remoções e inserções são limitadas no processo de busca através do ganho da metaheurística. O critério, basicamente limita-se a trocas que gerem ganhos positivos, ou seja, reduzam o tamanho da rota. As figuras 11, 12 e 13 ilustram os movimentos de troca 2-opt, 3-opt e 4-opt realizados pelo algoritmo de LK.. 27.

(29) Figura 11. Troca de 2-opt.. Figura 12. Troca de 3-opt.. 28.

(30) Figura 13. Troca de 4-opt.. Outro mecanismo presente no LK é a análise de soluções alternativas nos níveis 1 e 2, quando uma nova solução é gerada com ganho zero. Sempre que isto ocorre novos arcos são escolhidos para troca.. 2.7 Otimização de Colônia de Formigas. A Otimização de Colônia de Formigas é considerada uma meta-heurística populacional. Proposta no início da década de 90 por Dorigo, baseou-se nas atividades cotidianas das colônias de formigas reais. Foi verificado que as formigas, à medida que se movimentam liberam um composto químico conhecido como feromônio. Quanto maior essas quantidades de feromônio, mais propensas às formigas estarão de seguir esta trilha. Desta forma, o método de otimização por colônia de formigas mostrou ser bastante eficiente para a solução de diversos problemas combinatórios, destacando-se entre eles o PCV (DORIGO et. al, 1996). Dentro do algoritmo, cada formiga constrói uma solução, ou uma rota, realizando movimentos em uma sequencia finita de estados. Os movimentos são selecionados a partir a partir da memória da formiga e na quantidade de feromônio acumulado na rota. Jones e Jinliang (2010) ainda afirmam que arcos que não foram visitados no início da rota serão menos visitados ao longo do tempo. Para evitar que todas as formigas se desloquem em direção à mesma região do espaço de busca, um mecanismo de evaporação pode ser incorporado à regra que define a transição de estados.. 29.

(31) Enquanto cada formiga constrói a sua solução, ela coleta informações sobre as características do problema e do seu próprio desempenho, utilizando tais informações para modificar a representação do problema, repassando essas informações para o resto da colônia. Além disso, cada formiga armazena informações sobre o seu passado, como a sequência de estados que gera a solução, cada movimento executado e o valor da solução gerada, formando assim a sua memória interna. Dorigo e Stützle (2010) citam em seu trabalho um experimento real realizado por Deneubourg, Aron, Goss, e Pasteels. O experimento consiste em uma ponte dupla com formigas da espécie Argentine em busca de alimento entre o ninho (ponto inicial) e a fonte de alimento, conforme representado na Figura 14.. Figura 14. Experimento da ponte dupla.. Os testes comprovaram que as formigas reais movem-se aleatoriamente em busca de alimento, ou seja, realizam buscas por possíveis soluções. Quando o alimento é encontrado elas retornam ao ninho e deixam um rastro de feromônio no caminho, indicando assim a outras formigas qual caminho percorrer. O experimento comprovou que as formigas seguiam o caminho com mais rastro de feromônio e que também era o mais curto. Bonabeau et al., (1999) define as características básicas do algoritmo de colônia de formigas como sendo: 1. A retroalimentação positiva em função das trilhas de feromônio; 2. O feromônio virtual, onde a quantidade é maior nas soluções boas e menor nas soluções não consideradas relativamente boas; 3. O cooperativismo das formigas, onde a exploração é coletiva; e. 30.

(32) 4. O reforço de feromônio nas rotas que atingiram melhores desempenhos. O algoritmo de colônia de formigas desenvolvido por Dorigo, na década de 1990, foi o primeiro algoritmo que se baseou no comportamento de formigas para a resolução de problemas de otimização (DORIGO e STÜTZLE, 2004). A solução parte de uma rota vazia onde a formiga inicia sua busca em uma determinada cidade (vértice) e vai ao encontro do próximo alimento (próxima cidade), cada informação sobre as arestas é armazenada para a tomada de decisão. A atualização do feromônio ocorre com o retorno da k-ésima formiga, este novo rastro de feromônio é assumido por todas as formigas. Esta atualização do feromônio permite que caminhos mais curtos sejam alcançados. A evaporação do feromônio permite que as formigas mudem as rotas, ou seja, ela tende a permitir que formigas possam explorar outros caminhos mais próximos do ótimo. Tende a permitir uma convergência das formigas para um subótimo, ou seja, evita uma estagnação da solução em um ótimo local, pois com a evaporação de feromônios as formigas podem se mover para soluções ainda não exploradas. De acordo com Dorigo e Stützle (2004), as principais características do algoritmo de colônia de formigas são: 1. Somente a adição de uma quantidade de feromônio não garante uma solução eficiente aos problemas de otimização; 2. Valores muito altos de evaporação pioram o algoritmo. 3. Quanto mais formigas, maior é a eficácia do algoritmo, porém também aumenta o tempo de processamento; 4. A evaporação de feromônio é um fator muito importante, principalmente em problemas de otimização complexos. O algoritmo de colônia de formigas deu origem a variações do mesmo, denominados como algoritmos de otimização de colônia de formigas, do inglês Ant Colony Optimization (ACO), partindo do mesmo principio do algoritmo de colônia de formigas com algumas variações. Dorigo e Stützle (2004) definem o ACO em três procedimentos: 1. A construção das soluções com as formigas; 2. A atualização dos feromônios; e 3. Ações daemon.. 31.

(33) A construção das soluções pelas formigas é baseada em um grafo, onde as formigas realizam movimentos entre os nós do grafo. Este movimento é realizado através da função heurística do problema. O segundo procedimento relacionado à atualização do feromônio consiste em quanto maior for a quantidade de feromônio na rota maior é a probabilidade da formiga seguir por esta rota. Porém a evaporação faz com que as formigas busquem rotas diferentes podendo chegar a soluções próximas do ótimo. As ações daemon representam rotinas de busca em um determinado local, ou seja, ações de busca local. O termo daemon dentro da área de otimização é relacionado a uma rotina criada para realizar tarefas específicas a serem executadas sempre quando for solicitada. No algoritmo 7 é apresentado o pseudocódigo resumido da meta-heurística ACO segundo Dorigo e Stützle (2004).. Algoritmo 6 Meta-heurística ACO 1: 𝐴𝑡𝑖𝑣𝑖𝑑𝑎𝑑𝑒𝑠 2: 𝐶𝑜𝑛𝑠𝑡𝑟𝑢çã𝑜𝑑𝑎𝑆𝑜𝑙𝑢çã𝑜 3: 𝐴𝑡𝑢𝑎𝑙𝑖𝑧𝑎çã𝑜𝑑𝑒𝐹𝑒𝑟𝑜𝑚ô𝑛𝑖𝑜 4: 𝐷𝑎𝑒𝑚𝑜𝑛 5: 𝐹𝑖𝑚𝑑𝑎𝑠𝑎𝑡𝑖𝑣𝑖𝑑𝑎𝑑𝑒𝑠. 32.

(34) 3. HIBRIDIZAÇÃO DE OTIMIZAÇÃO DE COLÔNIA DE FORMIGAS + BUSCA LOCAL O trabalho aqui desenvolvido está concentrado na otimização do problema do caixeiro viajante dinâmico e simétrico, objetivando minimizar o tempo máximo para visitar todas as cidades pertencentes a C. Para a otimização são apresentadas duas hibridizações, a primeira é uma implementação de ACO com busca local GENIUS proposta por Mavrovouniotis et. al (2017), em seguida é proposta uma hibridização de ACO com LK. Este capítulo está estruturado da seguinte forma: inicialmente é apresentada a formulação matemática para a resolução do PCV. Logo após é apresentada a representação da solução, assim como a população inicial, o tamanho da população. E por fim é explicado como acontece a evaporação dos feromônios das formigas na Otimização por colônia de formigas e os algoritmos híbridos ACO+GENIUS e ACO+LK.. 3.1 Formulação do Modelo. A formulação do modelo matemático será composta pela função objetivo do problema do caixeiro viajante e todas as restrições pertencentes ao mesmo, buscando assim a minimização do problema. O modelo do problema é apresentado a seguir. 𝑛. Função objetivo:. 𝑛. 𝑀𝐼𝑁 ∑ ∑ d𝑖𝑗 . x𝑖𝑗 𝑖=1 𝑗=1. Sujeito a: 𝑛. ∑ x𝑖𝑗 = 1,. 𝑗 = 1, … , 𝑛. (1). 𝑖 = 1, … , 𝑛. (2). ∀ S ⊂ V, S ≠ 0. (3). 𝑖=1 𝑛. ∑ x𝑖𝑗 = 1, 𝑗=1. ∑ ∑ x𝑖𝑗 ≤ |𝑆| − 1, 𝑖∈𝑆𝑗∈𝑆. x𝑖𝑗 ∈ {0,1}. (4). 33.

(35) A variável dij representa a distância entre as cidades, a variável inteira xij = 1 representa que a cidade j é visitada logo após a i, caso contrário xij = 0. A variável n representa o número de cidades contidas no problema. S representa um subconjunto de {1, 2,..., n}, e o símbolo “| |” denota a cardinalidade do conjunto. A restrição (1) garante que o somente um arco acorra entre os vértices i e j e a restrição (2) garanta que apenas um arco de i seja relacionado a j, garantindo assim que o caixeiro passe apenas uma vez por cada cidade. A restrição (3) garante que não ocorram vários ciclos disjuntos e sim apenas um ciclo completo.. 3.2 Representação de uma Solução A estrutura de uma solução do PCVD é representada como uma sequência ordenada de nós (cidades) que o caixeiro viajante visitou ou um vetor de inteiros de 0 a n representando as cidades. O critério de parada é definido pelo ponto de partida do caixeiro, podendo ser qualquer cidade (elemento do vetor), que está presente no inicio e no fim da lista ou pela exaustão do tempo. Por exemplo, se existem 11 cidades a serem visitadas uma possível solução é:. S = [ 5, 8, 1, 2, 3, 6, 10, 4, 7, 9, 0, 5 ]. Para facilitar o entendimento, este exemplo pode ser representado graficamente conforme a Figura 15.. Figura 15. Exemplo de Solução PCV.. 34.

(36) 3.3 População. A população é composta por n nós, representando o número de cidades. O valor de n varia de acordo com o problema. Por exemplo, o problema LIN318 pertencente ao banco de dados do problema do Caixeiro Viajante TSPLIB (Traveling Salesman Problem Library) possui 318 nós/cidades. Já o EIL51 também pertencente ao TSPLIB possui 51 nós/cidades.. 3.4 Geração da População Inicial. A população inicial do PCV estudado é gerada a partir do algoritmo de ACO. As formigas presentes no algoritmo são compostas por três funções: . Leitura de feromônios: cada formiga utiliza as informações armazenadas de outra formiga, a fim de construir sua solução;. . Construção de solução: após a formiga ler as informações de feromônios armazenadas pela colônia, ela constrói sua solução;. . Armazenamento de soluções: toda formiga ao concluir sua rota, armazena os dados para a colônia. Cada formiga k utiliza uma regra probabilística para escolher a próxima cidade a ser. visitada. De acordo com Mavrovouniots et. al. (2017) a tomada de decisão da formiga k sobre o deslocamento entre as cidades 𝑐𝑖 e 𝑐𝑗 é definida por:. 𝑘 𝑝𝑖𝑗. =. [ 𝒯𝑖 𝑗 ]𝛼 [𝜂𝑖𝑗 ]𝛽 ∑𝑙 ∈. 𝑁𝑖𝑘. [𝒯𝑖 𝑗. ]𝛼. [𝜂𝑖𝑗. ]𝛽. , 𝑖𝑓 𝑗 ∈ 𝑁𝑖𝑘. Onde 𝑇𝑖𝑗 e 𝜂𝑖𝑗 representam a rota de feromônios e a heurística presente entre as cidades ci e cj. A informação heurística é definida como 𝜂𝑖𝑗 = 1⁄𝑑′𝑖𝑗 , onde 𝑑′𝑖𝑗 representa a distancia entre as arestas. 𝑁𝑖𝑘 representa a vizinhança não visitadas pela formiga k adjacente ao vi. A influência relativa de 𝑇𝑖𝑗 e 𝜂𝑖𝑗 é determinada pelos parâmetros  e .. 35.

(37) 3.5 Atualização de feromônios ACO. As rotas de feromônios aplicadas pelas formigas no ACO são atualizadas a partir da aplicação de evaporação de feromônios, representados pela equação: 𝑇𝑖𝑗 = (1 − 𝜌)𝑇𝑖𝑗 , ∀(𝑖, 𝑗) Onde 𝑇𝑖𝑗 é o valor existente do feromônio, 𝜌 representa a taxa de evaporação que satisfaz 0 𝜌 ≤ 1.. Logo após a evaporação, a melhor formiga (best ant) deposita na rota o feromônio da seguinte maneira: 𝑏𝑒𝑠𝑡 𝑇𝑖𝑗 = 𝑇𝑖𝑗 + ∆𝜏𝑖𝑗 , ∀(𝑖, 𝑗) ∈ 𝑠 𝑏𝑒𝑠𝑡. 𝑏𝑒𝑠𝑡 Onde ∆𝜏𝑖𝑗 = 1⁄𝐶 𝑏𝑒𝑠𝑡 representa a quantidade de feromônio que a melhor formiga. deposita e 𝐶 𝑏𝑒𝑠𝑡 define a qualidade da solução 𝑠 𝑏𝑒𝑠𝑡 . No caso do depósito de feromônio ocorrer pela melhor formiga 𝑠 𝑏𝑠 , é definido que 𝐶 𝑏𝑒𝑠𝑡 = 𝐶 𝑏𝑠 e caso a formiga possua a melhor iteração 𝐶 𝑏𝑒𝑠𝑡 = 𝐶 𝑖𝑏 , onde 𝐶 𝑖𝑏 e 𝐶 𝑏𝑠 representam a formiga que possui a melhor iteração e a melhor formiga até o momento (bestso-far). Para uma melhor exploração nos estágios iniciais e nos estágios futuros os dois tipos de formigas são aplicadas alternadamente. Os limites inferiores e superiores são representados por 𝜏𝑚𝑖𝑛 𝑒 𝜏𝑚𝑎𝑥 respectivamente. Onde o valor de 𝜏𝑚𝑎𝑥 é limitado a 1⁄(𝜌𝐶 𝑏𝑠 ), representando uma estimada rota ótima, atualizada toda vez que uma melhor rota é encontrada. O valor de 𝜏𝑚𝑖𝑛 é definido por 𝜏𝑚𝑎𝑥 ⁄2 𝑛. Aplicando uma busca local o algoritmo pode perder a capacidade de realizar a adaptação, portanto as trilhas de feromônios são reinicializadas até 𝜏𝑚𝑎𝑥 sempre que ocorrer estagnação ou quando nenhuma solução melhor for encontrada para garantir a diversidade das soluções.. 36.

(38) A estrutura geral do algoritmo do ACO é apresentada a seguir, de acordo com Mavrovouniots et. al (2017).. Algoritmo 7 ACO. 1:. INPUT: não possui. 2:. OUTPUT: 𝑠 𝑏𝑠 ;. 3:. Inicializa_Trilha_de_Feromonio(𝜏0 ). 4:. Enquanto (condição não satisfeita). 5:. Construir_Solução. 6: 7:. 𝑠. 𝑖𝑏. 𝐹𝑜𝑟𝑚𝑖𝑔𝑎 ← 𝑃𝑟𝑜𝑐𝑢𝑟𝑎. se (𝑠 𝑖𝑏 < 𝑠 𝑏𝑠 ). 8:. 𝑠 𝑏𝑠 ← 𝑠 𝑖𝑏. 9:. Atualiza_Limites_de_Feromonio (𝜏𝑚𝑖𝑛 , 𝜏𝑚𝑎𝑥 ). 10:. Busca_Local(𝑠 𝑏𝑠 ). 11:. fim se. 12:. Atualiza_Feromonio. 13:. se (estagnado). 14:. Inicializa_Trilha_de_Feromonio (𝜏𝑚𝑎𝑥 ). 15:. fim se. 16:. fim enquanto. 3.6 ACO + GENIUS A busca local US do GENIUS basicamente remove e insere nós em uma rota a fim de melhorar a solução (subcapitulo 3.1). As remoções são do tipo I e II. A inserção dos nós (stringing) é basicamente o oposto da remoção, portanto são definidos dois tipos de inserções: Inserção tipo I e inserção tipo II. Mavrovouniots et. al (2017) ilustram através de imagens as inserções tipo I e II assim como as remoções tipo I e II. As figuras apresentadas pelo autor são apresentadas a seguir.. 37.

(39) Figura 16. Remoção tipo I - US.. .. Figura 17. Remoção tipo II - US.. 38.

(40) Figura 18. Inserção tipo I - US.. Figura 19. Inserção tipo II - US.. Uma das principais características da busca local US é conseguir escapar de ótimos locais, permitindo ao algoritmo explorar no espaço de busca soluções piores do que as já encontradas. Quando o movimento atual não consegue melhorar a solução, o algoritmo. 39.

(41) permite degradar a qualidade da solução para explorar áreas ainda não visitadas e talvez melhorar a solução. Por se tratar de uma busca local os movimentos que melhoram são sempre executados. O pseudocódigo do algoritmo de busca local US é apresentado algoritmo 9.. Algoritmo 8 Busca Local US. 1:. INPUT: 𝑠 𝑏𝑠 ;. 2:. OUTPUT: 𝑠 𝑟𝑏𝑠 ;. 3:. Enquanto existir melhoria. 4:. Calcula_Remoção(𝑠 𝑏𝑠 [𝑖]). 5:. Aplica_Melhor_Remoção(𝑠 𝑏𝑠 ). 6:. Calcula_Inserção(𝑠 𝑏𝑠 [𝑖]). 7:. Aplica_Melhor_Inserção(𝑠 𝑏𝑠 ). 8:. fim. 9:. fim Onde 𝑠 𝑏𝑠 representa a rota da melhor formiga (best ant) recebida do ACO e 𝑠 𝑟𝑏𝑠 a. solução local após a otimização do US. As funções Calcula_Remoção(𝑠 𝑏𝑠 [𝑖]) e Calcula_Inserção(𝑠 𝑏𝑠 [𝑖]) buscam qual tipo de remoção e inserção o algoritmo realizará.. 3.7 ACO + LK O Algoritmo de Lin & Kernighan (1973) atualmente é a busca local mais conhecida para o PCV. Baseado em trocas k-opt, porém com uma característica que o torna poderoso, onde o valor de k é variável. Em outras palavras, o algoritmo além de definir qual a melhor troca, ele define qual o melhor k para a iteração atual. O algoritmo de LK basicamente seleciona uma sequência de arestas (c1, x2, ..., xn) que trocadas por outras arestas (w1, w2, ..., wn ) retornam uma solução, ou rota, de menor custo. Uma descrição detalhada é apresentada no Algoritmo 10 (Helsgaun, 2000).. 40.

(42) Algoritmo 9 LK. 1:. INPUT: 𝑠 𝑏𝑠. 2:. n2i-1 = nósorteia_nó();. 3:. n2i = nó(n2i-1);. 4:. x[ i ] = (n2i-1,n2i);. 5:. n2i+1 = nótroca(n2i);. 6:. y[ i ] = (ni,ni+1);. 7:. g[ i ] = ganho(xaresta[ i ], yaresta[ i ]);. 8:. G = g[ i ]; Enquanto G ≤ G*;. 9: 10:. i = i + 1;. 11:. n2i = nó(n2i-1);. 12:. x[ i ] = (n2i-1,n2i);. 13:. n2i+1 = nótroca(n2i);. 14:. y[ i ] = (n2i,n2i+1);. 15:. g[ i ] = ganho(xaresta[ i ], yaresta[ i ]);. 16:. G = G + g[ i ];. 17:. Se não existem mais trocas de arestas que melhorem,. 18:. Se G > G*,. 19:. G* = G;. 20:. caminho = troca(xaresta, yaresta);. 21:. Fim. 22: 23:. Fim Fim. A rota inicial é construída a partir da solução recebida pelo ACO e então é sorteado um nó n2 onde se iniciam as trocas. A aresta contendo o nó inicial x[i]=(n1, n2) é escolhida e após a aresta de troca (y[i]) também é selecionada. A aresta de troca somente será selecionada se gerar algum ganho à solução. E assim sucessivamente até não haver mais ganhos. Escolhida a primeira aresta de troca, o processo iterativo tem seu inicio com i = 2, onde a cada etapa uma aresta é escolhida contendo o último nó escolhido na iteração anterior x[i] = (n2i−1,n2i), e escolhe-se uma aresta partindo de n2i satisfazendo algumas condições:. 41.

(43) i.. Se a aresta (n1,n2i) é criada, então um ciclo completo é formado;. ii.. A aresta y[i] é uma aresta não utilizada contendo o nó n2i;. iii.. Para garantir a disjunção entre x[i] e y[i], x[i] deve ser uma aresta diferente da já escolhida por y, e y[i] não pode ser uma aresta já escolhida pelo conjunto x;. iv.. O ganho deve ser sempre positivo, melhorando a solução objetivo;. v.. Antes da solução final é verificado se a ligação de n2i com n1 gera um custo menor do que o original. Terminada a construção do conjunto de arestas originais (x) e o conjunto de arestas de. troca (y), o novo caminho é construído e os passos são executados novamente até que não ocorra mais nenhuma melhora. Na Figura 25 é apresentado LK com os movimentos em três níveis.. Figura 20.Movimentos LK em três níveis.. Lin e Kernighan (1973) definiram sete regras a serem seguidas para um melhor desempenho do algoritmo. 1. São permitidas somente trocas sequenciais; 2. Uma aresta previamente excluída não pode ser adicionada, e uma aresta previamente adicionada não pode ser excluída; 3. O percurso deve resultar em um ciclo Hamiltoniano; 4. A busca é encerrada quando a rota encontrada for igual a ultima rota da solução. 5. Somente os cinco vizinhos mais próximos podem ser alcançados/adicionados. 6. O ganho parcial deve ser sempre positivo; 7. Se existem duas alternativas para a escolha da próxima aresta, é escolhida a que tiver o maior ganho.. 42.

(44) A regra 7 tem como objetivo guiar a busca e as regras 1 e 4 limitam a busca através de restrições de arestas.. 43.

(45) 4. ANÁLISE E RESULTADOS Neste capítulo é realizada a comparação dos resultados obtidos através da busca local de LK com os resultados obtidos pelo US. Para cada uma das instâncias, o algoritmo foi executado 10 vezes e nas comparações foram utilizados os melhores resultados. Para este trabalho todos os testes foram realizados em um computador com processador dual-core Intel i5 de 2,4 GHz, 6 GB de RAM e 1 TB de espaço no HD, ferramenta de desenvolvimento Visual Studio 2015 utilizando a linguagem de programação C++. O algoritmo proposto converte PCV estáticos em dinâmicos, com a frequência de dinamismo ajustada para cada 10 iterações, indicando assim alterações ambientais. Foram utilizadas 5 instâncias do TSPLIB, a eil52, a lin318, a kroA100, a kroA150 e a kroA200, escolhidas para testes pois possuem na literatura a sua solução ótima e podem gerar assim diferentes casos para testes do PCVD. As hibridizações são executadas em paralelo, onde para a busca loca US e para a busca local LK os parâmetros recebidos através da ACO são os mesmos. A frequência de troca foi ajustada para f = 10 e a magnitude ajustada para m = 0,75.. Para todas as tabelas, resultados em negrito indicam a melhor solução encontrada pelo algoritmo proposto. A porcentagem do gap é calculada a partir da solução ótima disponível na TSPLIB, através da diferença da solução ótima com a solução encontrada. O campo “total” representa a soma de todas as distâncias da solução. A primeira análise foi realizada na instância lin318, que possui 318 cidades. Apesar de não ser encontrada a solução em sua otimalidade, pode-se notar que em conjunto com a Otimização por Colônia de Formigas a busca local de Lin-Kernighan alcançou um gap mais próximo ao ótimo do que a US (solução ótima 42.042). Comparando as duas melhores soluções, 43752 no LK e 55025 no US, foi comprovado neste problema que a busca US alcançou uma pior solução que a busca LK.. Lin-Kernighan Instância. lin318. Número de Iterações. Total. Gap. 10. 44590 6,06%. 20. 44584 6,04%. 44.

(46) 30. 44820 6,60%. 40. 46143 9,75%. 50. 44034 4,73%. 60. 45034 7,11%. 70. 45796 8,92%. 80. 45091 7,25%. 90. 43752 4,06%. 100. 45664 8,61%. Tabela 1. Resultados obtidos na instância lin318 - LK+ACO.. US Instância. Número de. Total. Gap. 10. 56656. 34,76%. 20. 57404. 36,53%. 30. 59354. 41,17%. 40. 61227. 45,63%. 50. 59972. 42,64%. 60. 55025. 30,88%. 70. 57099. 35,81%. 80. 64860. 54,27%. 90. 56671. 34,79%. 100. 64954. 54,49%. Iterações. lin318. Tabela 2. Resultados obtidos na instância lin318 - US+ACO.. 45.

(47) Figura 21. Gráfico representando o US+ACO no problema lin318 (iterações x total).. Figura 22. Gráfico representando o LK+ACO no problema lin318 (iterações x total).. No problema lin318 o algoritmo proposto não ultrapassou uma diferença de 10% da solução ótima e a melhor solução encontrada obteve menos 5% de gap, atingindo assim o esperado para este problema. A segunda análise foi realizada na instância denominada eil51, que possui 51 nós/cidades e sua solução ótima é 426. A busca local de LK que em todas as iterações superou o US.. 46.

(48) Comparando as duas melhores soluções, 428 (gap de 0,46%) no LK e 459 (gap de 7,74%) no US, foi comprovado que a busca LK é superior ao US neste problema.. Lin-Kernighan Instância. eil51. Número de Iterações. Total. Gap. 10. 478 12,20%. 20. 478 12,20%. 30. 460. 7,98%. 40. 465. 9,15%. 50. 428. 0,46%. 60. 459. 7,74%. 70. 441. 3,52%. 80. 469 10,09%. 90. 470 10,32%. 100. 450. 5,63%. Tabela 3. Resultados obtidos na instância eil51 - LK+ACO.. US Instância. eil51. Número de. Total. Gap. 10. 459. 7,74%. 20. 474 11,26%. 30. 492 15,49%. 40. 504 18,30%. 50. 498 16,90%. 60. 537 26,05%. 70. 498 16,90%. 80. 527 23,70%. 90. 526 23,47%. 100. 507 19,01%. Iterações. Tabela 4. Resultados obtidos na instância eil51 - US+ACO.. 47.

(49) Figura 23. Gráfico representando o US+ACO no problema eil51 (iterações x total).. Figura 24. Gráfico representando o LK+ACO no problema eil51 (iterações x total).. As últimas três análises foram realizadas nos problemas da instância kroA, onde em cada instância o numero de cidades aumenta (kroA100, kroA150 e kroA200) sendo respectivamente 100, 150 e 200 cidades/nós. Nas três instâncias a busca local de LK foi superior a busca local US. No problema kroA100 a busca local de LK não ultrapassou 5,94% de gap e alcançou um valor muito próximo ao ótimo (gap de 0,06%), enquanto a busca local US não alcançou um gap inferior a 17,98%.. 48.

(50) Lin-Kernighan Instância. Número de Iterações. Total. Gap. 10. 21900 2,90%. 20. 21810 2,48%. 30. 21296 0,06%. 40. 22414 5,31%. 50. 22547 5,94%. 60. 22200 4,31%. 70. 21651 1,73%. 80. 22524 5,83%. 90. 22495 5,69%. 100. 22515 5,79%. kroA100. Tabela 5. Resultados obtidos na instância kroA100 - LK+ACO.. US Instância. kroA100. Número de Iterações. Total. Gap. 10. 28597 34,37%. 20. 28714 34,92%. 30. 28216 32,58%. 40. 25109 17,98%. 50. 29055 36,52%. 60. 29472 38,48%. 70. 29824 40.13%. 80. 31612 48,53%. 90. 27026 26,98%. 100. 29029 36,40%. Tabela 6. Resultados obtidos na instância kroA100 - US+ACO.. 49.

(51) Figura 25. Gráfico representando o US+ACO no problema kroA100 (iterações x total).. Figura 26. Gráfico representando o LK+ACO no problema kroA100 (iterações x total).. No problema kroA150 foi possível comprovar uma maior diferença entre as buscas locais. A busca local US não conseguiu alcançar um gap menor que 34,02% e a busca local de LK alcançou a solução ótima.. Lin Kernighan. 50.

(52) Instância. kroA150. Número de Iterações. Total. Gap. 10. 27279 2,84%. 20. 26888 1,37%. 30. 27006 1,81%. 40. 26524 0,00%. 50. 26760 0,88%. 60. 27029 1,90%. 70. 27201 2,55%. 80. 27080 2,09%. 90. 27167 2,42%. 100. 27679 4,35%. Tabela 7. Resultados obtidos na instância kroA150 - LK+ACO.. US Instância. kroA150. Número de Iterações. Total. Gap. 10. 35549 34,02%. 20. 36410 37,27%. 30. 36293 36,83%. 40. 35871 35,23%. 50. 37565 41,62%. 60. 36858 38,96%. 70. 36856 38,95%. 80. 37179 40,17%. 90. 38138 43,78%. 100. 38211 44,06%. Tabela 8. Resultados obtidos na instância kroA150 - US+ACO.. 51.

(53) Figura 27. Gráfico representando o LK+ACO no problema kroA150 (iterações x total).. Figura 28. Gráfico representando o US+ACO no problema kroA150 (iterações x total).. No problema kroA200 a diferença entre as duas buscas locais também foi grande. Assim como no problema kroA150 a busca local US somente conseguiu atingir valores muito altos comparados a busca local de LK, onde a melhor solução obtida pela busca local US (30386) é inferior em qualidade da pior solução encontrada por LK (30171).. Lin Kernighan Instância. Número de. Total. Gap. 52.

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

Este trabalho tem como objetivo geral a modelagem matemática no tempo discreto da predição do tempo de vida de baterias utilizando novas estruturas paramétricas lineares da teoria

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

é 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

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

Se os “crews” (tripulações, em inglês, gíria que designa os grupos que se reúnem para pichar) podem ser identificados àqueles grupos marginais (que Lefebvre diz serem

Atualmente as prefeituras têm apresentado dificuldade na cobrança de seus tributos. A inadimplência reflete nas contas públicas, uma vez que o montante não arrecadado se acumula