Baixe o app para aproveitar ainda mais
Prévia do material em texto
UNIVERSIDADE FEDERAL DO RIO GRANDE DO NORTE CENTRO DE TECNOLOGIA PROGRAMA DE ENGENHARIA DE PRODUÇÃO ALGORITMO MEMÉTICO COM INFECÇÃO VIRAL: UMA APLICAÇÃO AO PROBLEMA DO CAIXEIRO VIAJANTE ASSIMÉTRICO por FÁBIO FRANCISCO DA COSTA FONTES LICENCIADO EM MATEMÁTICA, UFRN, 2001. DISSERTAÇÃO SUBMETIDA AO PROGRAMA DE ENGENHARIA DE PRODUÇÃO DA UNIVERSIDADE FEDERAL DO RIO GRANDE DO NORTE COMO PARTE DOS REQUISITOS NECESSÁRIOS PARA A OBTENÇÃO DO GRAU DE MESTRE EM CIÊNCIAS EM ENGENHARIA DE PRODUÇÃO DEZEMBRO, 2006 © 2006 FÁBIO FRANCISCO DA COSTA FONTES TODOS OS DIREITOS RESERVADOS. O autor, aqui designado, concede ao Programa de Engenharia de Produção da Universidade Federal do Rio Grande do Norte permissão para reproduzir, distribuir, comunicar ao público, em papel ou meio eletrônico, esta obra, no todo ou em parte, nos termos da Lei. Assinatura do Autor: _________________________________________ APROVADO POR: ___________________________________________________________ Prof. Dario José Aloise, D.Sc. – Orientador, Presidente ___________________________________________________________ Prof. Otoniel Marcelino de Medeiros, D.Sc. – Membro Examinador ___________________________________________________________ Prof. Plácido Rogério Pinheiro, D.Sc. – Membro Examinador Externo ii FONTES, FÁBIO FRANCISCO DA COSTA ALGORITMO MEMÉTICO COM INFECÇÃO VIRAL: UMA APLICAÇÃO AO PROBLEMA DO CAIXEIRO VIAJANTE ASSIMÉTRICO [Rio Grande do Norte] 2006. xii, 72 p. 29,7 cm (UFRN/PEP, Mestrado, Engenharia de Produção, 2006). Tese de Mestrado - Universidade Federal do Rio Grande do Norte, Programa de Engenharia de Produção. 1. Pesquisa Operacional. 2. Algoritmos Evolutivos. 3.Infecção Viral. 4. Caixeiro Viajante Assimétrico. I. UFRN/PEP II. Título (série). iii CURRICULUM VITAE Fábio Francisco da Costa Fontes, filho de Francisco Fontes de Andrade e de Terezinha da Costa Fontes, nascido no dia 01 de Setembro de 1976, na cidade de Natal, Estado do Rio Grande do Norte. Titulação • Licenciado em Matemática pela Universidade Federal do Rio Grande do Norte – UFRN, no ano de 2001. • Especialista em Técnicas e Ferramentas de Apoio à Decisão pelo Departamento de Informática e Matemática Aplicada – DIMAP, da Universidade Federal do Rio Grande do Norte – UFRN, no ano de 2003. Atuação em Grupos de Pesquisa • Nome do Grupo: Heurísticas e paralelismo para problemas de otimização e de bioinformática. Instituição: Pontifícia Universidade Católica do Rio de Janeiro - PUC/RJ - Departamento de Informática. iv Dedico este trabalho a todos aqueles que direta ou indiretamente contribuíram para a minha formação acadêmica. Desde os meus professores do primário que apesar de serem pouco valorizados na hora de sua remuneração, faziam seu trabalho com muito amor e dedicação, passando pela minha família que sempre procurou deixar bem claro que a melhor forma de crescermos financeiramente e como cidadãos de bem, conscientes dos nossos direitos, seria através da educação, e chegando até aos meus professores acadêmicos que se dispunham, através do conhecimento adquirido ao longo de décadas, a manter viva e com qualidade a Universidade Pública deste querido Brasil. v AGRADECIMENTOS Agradeço Inicialmente a Deus por ter me abençoado com saúde, sabedoria e muita força de vontade para conquistar mais esta importante etapa da minha vida. Agradeço também a Nossa Senhora que acredito estar sempre intercedendo por mim junto a Deus. Agradeço ao meu Pai, Francisco Fontes, que apesar de ter partido desta vida quando eu tinha apenas 9 anos, conseguiu deixar inúmeros exemplos de como deve agir um pai, um filho, um irmão, um esposo e um homem. Agradeço a minha Mãe, Terezinha, minhas Tias Geralda e Irene, aos meus irmãos Denes e Fernanda e ao meu Avô Antônio, por sermos sempre tão unidos, nunca deixando faltar em nosso lar muito amor, carinho, educação e respeito ao próximo. Agradeço também a minha namorada, Adriana Carla, por estar sempre ao meu lado, apesar das minhas ausências nas horas de estudos e pesquisas, pelo seu amor, por ser parte da minha família e permitir-me fazer parte da sua boa família. Agradeço aos meus familiares: tios, tias, primos e primas, e a todos os meus amigos pela convivência tão harmoniosa que possuímos, fundamentais para encher a nossa alma de alegria. Aos novos amigos que conquistei no mestrado por terem enriquecido as nossas aulas com informações e bom humor, espero sempre manter a amizade. Em especial agradecer a Marcos Galvão e Werner que contribuíram para que nossas aulas de Pesquisa Operacional fossem horas de trocas de bons conhecimentos, a Solange pela ajuda no Abstract e, principalmente, o Alisson Guedes, por ter me ajudado a programar as idéias desenvolvidas neste trabalho. Agradeço aos meus anjos da guarda que conseguem aparecer em locais diversos, em momentos importantes, através de pessoas incríveis e conseguem cumprir seu papel de proteger-me. Obrigado a Marcelo Nunes e Benício Basílio, pois sem os dois eu não teria conseguido conciliar o estudo no mestrado com o trabalho. Agradeço a todos que fazem parte do PEP, por terem me proporcionado um ensino de excelência neste mestrado. E por fim, porém tão importante quanto todos citados anteriormente, gostaria de agradecer ao meu Orientador prof. Dr. Dario José Aloise, por ter sido um Orientador incansável, orientando-me até nas manhãs de domingo e cobrando resultados do trabalho até em meus sonhos. Como ser sociável eu fico contente em ter conquistado mais um amigo e como orientando espero que tenha ficado a altura do meu Orientador. vi Resumo da Dissertação apresentada à UFRN/PEP como parte dos requisitos necessários para a obtenção do grau de Mestre em Ciências em Engenharia de Produção. ALGORITMO MEMÉTICO COM INFECÇÃO VIRAL: UMA APLICAÇÃO AO PROBLEMA DO CAIXEIRO VIAJANTE ASSIMÉTRICO FÁBIO FRANCISCO DA COSTA FONTES Dezembro/2006 Orientador: Dario José Aloise Curso: Mestrado em Ciências em Engenharia de Produção A Otimização Combinatória é uma área fundamental para empresas que buscam vantagens competitivas nos diversos setores produtivos, e o Problema do Caixeiro Viajante Assimétrico, o qual se classifica como um dos mais importantes problemas desta área, devido a ser um problema da classe NP-difícil e também por possuir diversas aplicações práticas, tem despertado interesse de pesquisadores no desenvolvimento de Metaheurísticas cada vez mais eficientes para auxiliar na sua resolução, como é o caso do Algoritmo Memético, o qual é um algoritmo evolutivo que se utiliza dos operadores genéticos em combinação com um procedimento de busca local. Este trabalho explora a técnica de Infecção Viral em um Algoritmo Memético, onde a infecção substitui o operador de mutação por conseguir uma rápida evolução ou extinção de espécies (KANOH et al., 1996), proporcionando uma forma de aceleração e melhoria da solução. Para isto se desenvolveu quatro variantes de Infecção Viral aplicadas no Algoritmo Memético para resolução do Problema do Caixeiro Viajante Assimétrico, onde o agente e o vírus passam por um processo de Simbiose, as quais favoreceram a obtenção de um algoritmo evolutivo híbrido e computacionalmente viável. Palavras-Chave: Otimização Combinatória, Problema do Caixeiro Viajante Assimétrico, Algoritmo Memético, Infecção Viral. vii Abstract of Dissertation presented to UFRN/PEP as fullfilment of requirements to the degree of Master of Science in Production Engineering MEMETIC ALGORITHM WITH VIRAL INFECTION: AN APPLICATION TO THE ASSIMETRIC TRAVELLING SALESMAN PROBLEM FÁBIO FRANCISCO DA COSTA FONTES December/2006Dissertation Supervisor : Dario José Aloise Program: Master of Science in Production Engineering The Combinatorial Optimization is a basic area to companies who look for competitive advantages in the diverse productive sectors and the Assimetric Travelling Salesman Problem, which one classifies as one of the most important problems of this area, for being a problem of the NP-hard class and for possessing diverse practical applications, has increased interest of researchers in the development of metaheuristics each more efficient to assist in its resolution, as it is the case of Memetic Algorithms, which is a evolutionary algorithms that it is used of the genetic operation in combination with a local search procedure. This work explores the technique of Viral Infection in one Memetic Algorithms where the infection substitutes the mutation operator for obtaining a fast evolution or extinguishing of species (KANOH et al, 1996) providing a form of acceleration and improvement of the solution . For this it developed four variants of Viral Infection applied in the Memetic Algorithms for resolution of the Assimetric Travelling Salesman Problem where the agent and the virus pass for a symbiosis process which favored the attainment of a hybrid evolutionary algorithms and computational viable. Keywords: Combinatorial Optimization, Assimetric Travelling Salesman Problem, Memetic Algorithms, Viral Infection. viii SUMÁRIO LISTA DE TABELAS...................................................................................................xi LISTA DE FIGURAS ...................................................................................................xi LISTA DE ALGORITMOS .......................................................................................xii Capítulo 1 - INTRODUÇÃO........................................................................................1 1.1 - CONTEXTUALIZAÇÃO ..............................................................................................1 1.2- OBJETIVOS DA PESQUISA .........................................................................................4 1.2.1- Gerais...................................................................................................................4 1.2.2- Específicos ...........................................................................................................4 1.3- RELEVÂNCIA DA PESQUISA .....................................................................................4 1.3.1- Relevância Teórica ...............................................................................................4 1.3.2- Relevância Prática: ...............................................................................................5 1.4 – ORGANIZAÇÃO DA DISSERTAÇÃO........................................................................5 Capítulo 2 – REVISÃO TEÓRICA ...........................................................................7 2.1 – OTIMIZAÇÃO COMBINATÓRIA...............................................................................7 2.1.1 – O Problema do Caixeiro Viajante (PCV).............................................................9 2.1.2 – Aplicações Práticas do PCV ................................................................................9 2.1.3 – Variantes do PCV .............................................................................................11 2.2 – COMPLEXIDADE DE PROBLEMAS .......................................................................14 2.2.1 – Formulação Matemática do PCVA e complexidade...........................................14 2.3 – HEURÍSTICAS ...........................................................................................................15 2.3.1 – Heurísticas Construtivas....................................................................................15 2.3.1.1 – Vizinho Mais Próximo ...............................................................................16 2.3.1.2 – Inserção Mais Próxima...............................................................................17 2.3.1.3 – Inserção Mais Distante ...............................................................................17 2.3.1.4 – Inserção Mais Barata ..................................................................................17 ix 2.3.1.5 – Inserção Pelo Maior Ângulo .......................................................................18 2.3.1.6 – Método das Economias ..............................................................................18 2.3.1.7 – Heurística de Christofides ..........................................................................19 2.3.1.8 – Heurística GKS ..........................................................................................20 2.3.2 – Heurísticas de Busca Local ...............................................................................20 2.3.2.1 – Melhoria Iterativa.......................................................................................21 2.3.2.2 – Descida Mais Rápida..................................................................................21 2.3.2.3 – Método das k-substituições ou k-opt ...........................................................21 2.4 – METAHEURÍSTICAS ................................................................................................22 2.4.1- Analogia com Métodos Físicos ...........................................................................22 2.4.2 - Estratégias de Cálculos com Intensificação da Busca Local ...............................23 2.4.3 –Analogia com Processos Naturais ......................................................................25 2.4.4 – Métodos Híbridos (Algoritmo Memético) .........................................................27 Capítulo 3 – ALGORITMOS EVOLUTIVOS E INFECÇÃO VIRAL.........28 3.1 - ALGORITMOS EVOLUTIVOS ..................................................................................28 3.1.1 - Algoritmo Genético ...........................................................................................29 3.1.1.1 - O Cromossomo ...........................................................................................30 3.1.1.2 – A Seleção ...................................................................................................31 3.1.1.3 – O Cruzamento ............................................................................................34 3.1.1.4 – A Mutação .................................................................................................39 3.1.2 - Algoritmo Memético .........................................................................................41 3.1.2.1 – A Busca Local............................................................................................42 3.1.2.2 – A Geração ..................................................................................................42 3.2 - INFECÇÃO VIRAL.....................................................................................................43 3.2.1 – O Vírus .............................................................................................................44 3.2.2 – A População de Vírus .......................................................................................44 3.2.3 – A Infecção ........................................................................................................45 3.3 - O ALGORITMO MEMÉTICO COM INFECÇÃO VIRAL..........................................45 3.3.1 - Implementação 1 ...............................................................................................46 3.3.1.1 - A Infecção ..................................................................................................47 3.3.1.2 - A Simbiose .................................................................................................49 3.3.2 –Implementação 2...............................................................................................51 3.3.3 – Implementação 3...............................................................................................52 x 3.3.4 - Implementação 4 ...............................................................................................55 Capítulo 4 - EXPERIMENTAÇÃO .........................................................................57 4.1 - METODOLOGIA ........................................................................................................57 4.1.1 - Universo e Amostra ...........................................................................................58 4.1.2 - Coleta de Dados.................................................................................................58 4.1.3 - Tratamento dos Dados .......................................................................................58 4.2 – RESULTADOS E DISCUSSÕES................................................................................58 Capítulo 5 – CONCLUSÕES E RECOMENDAÇÕES......................................64 5.1 - CONCLUSÃO .............................................................................................................64 5.2 - RECOMENDAÇÕES PARA FUTURAS PESQUISAS ...............................................64 REFERÊNCIAS BIBLIOGRÁFICAS....................................................................66 xi LISTA DE TABELAS Tabela 3. 1 – Mapa de Adjacência do Edge Recombination Crossover .................................38 Tabela 4. 1 – Resultados da Implementação AMIV 1 x Algoritmo Memético Clássico .........60 Tabela 4. 2 – Resultados da Implementação AMIV 2 x Algoritmo Memético Clássico .........61 Tabela 4. 3 – Resultados da Implementação AMIV 3 x Algoritmo Memético Clássico..........62 Tabela 4. 4 – Resultados da Implementação AMIV 4 x Algoritmo Memético Clássico..........63 LISTA DE FIGURAS Figura 1. 1 - A cadeia de Valor...............................................................................................2 Figura 2. 1 – Unidade Móvel de Pistoneio ............................................................................13 Figura 2. 2 - Esquema de funcionamento do método K-opt...................................................22 Figura 2. 3 - Esquema de funcionamento da Metaheurística VNS.........................................25 Figura 3. 1 - Representações do Cromossomo ......................................................................30 Figura 3. 2 - Representação Ordinal .....................................................................................31 Figura 3. 3 – Roleta de cromossomos representados pela porcentagem de fitness .................32 Figura 3. 4 - Fluxograma do método de seleção por torneio com tamanho igual a 2 para um problema de minimização .............................................................................................33 Figura 3. 5 – Crossover de 1 ponto .......................................................................................34 Figura 3. 6 – Crossover de 2 pontos......................................................................................35 Figura 3. 7 – Operador Clássico de Mutação ........................................................................40 Figura 3. 8 - Representações do Agente................................................................................42 Figura 3. 9 - Exemplo de um vírus para um cromossomo de representação real ....................44 Figura 3. 10 – Processo de Transcrição.................................................................................48 Figura 3. 11 - Aumento do Vírus ..........................................................................................49 xii Figura 3. 12 – Processo de Transdução.................................................................................51 Figura 3. 13 – Normalização da população variável de vírus.................................................52 LISTA DE ALGORITMOS Algoritmo 2. 1 – Algoritmo Vizinho Mais Próximo..............................................................16 Algoritmo 2. 2 – Algoritmo Inserção Mais Próxima .............................................................17 Algoritmo 2. 3 – Algoritmo Inserção Mais Barata ................................................................18 Algoritmo 2. 4 – Algoritmo Inserção Pelo Maior Ângulo .....................................................18 Algoritmo 2. 5 – Algoritmo Método das Economias.............................................................19 Algoritmo 2. 6 – Algoritmo de Christofides..........................................................................20 Algoritmo 2. 7 – Algoritmo GKS .........................................................................................21 Algoritmo 3. 1 – Algoritmo Genético Clássico .....................................................................29 Algoritmo 3. 2 – Algoritmo Memético Clássico ...................................................................41 Algoritmo 3. 3 – Algoritmo Genético Com Infecção Viral....................................................43 Algoritmo 3. 4 – Algoritmo Memético Com Infecção Viral 1 ...............................................46 Algoritmo 3. 5 – Heurística de Inserção Arbitrária ...............................................................47 Algoritmo 3. 6 – Algoritmo Infecção....................................................................................48 Algoritmo 3. 7 – Simbiose 1.................................................................................................50 Algoritmo 3. 8 – Algoritmo Memético Com Infecção Viral 2 ...............................................52 Algoritmo 3. 9 – Algoritmo Memético Com Infecção Viral 3 ...............................................53 Algoritmo 3. 10 – Simbiose 2...............................................................................................54 Algoritmo 3. 11 – Simbiose 3...............................................................................................55 1 Capítulo 1 Introdução Este capítulo apresenta a importância da Otimização Combinatória diante do cenário competitivo existente nas indústrias, exemplificando situações da cadeia de valor na qual o uso de Metaheurísticas vem se tornando uma alternativa cada vez mais viável na obtenção de uma vantagem competitiva através de minimização do tempo, mão-de-obra e insumos. Tal cenário funciona como uma motivação para o desenvolvimento deste trabalho, justificando, assim, as necessidades da pesquisa com os objetivos a serem alcançados e sua importância social, econômica e científica. Para maior clareza do assunto, o capítulo foi dividido nos seguintes tópicos: contextualização, objetivos da pesquisa, relevância da pesquisa e organização da dissertação, sendo este último uma descrição de como as informações foram distribuídas ao longo desta dissertação. 1.1 - Contextualização A economia mundial hoje está forçando as empresas a buscarem vantagens competitivas através do tempo. A cadeia de valor (Figura 1.1), que é o conjunto de atividades, que acontecem dentro de uma empresa, com a finalidade de esta realizar seus negócios, necessita que suas atividades estejam muito bem organizadas e interligadas, para que a vantagem de tempo que, por exemplo, obtém-se na produção, não seja perdida na venda ou distribuição, assim como a aquisição de insumos não atrase o início da fabricação, entre outros. 2 Infra-estrutura empresarial Gerenciamento de recursos humanos Desenvolvimento de tecnologias Aquisição de insumos Logística interna Operações Logística externa Marketing e vendas Prestação de serviços Ativida- des-MeioAtividades-fim Fonte: (Adaptado de Porter & Millar, 1985 apud Laurindo). Figura 1. 1 - A cadeia de Valor Nas empresas, a agilidade nas vendas e na distribuição procura realizar o desejo dos clientes em um curto tempo, oferecendo-lhes, no momento da compra, não apenas o fator preço, mas também o tempo no qual o produto adquirido estará em suas mãos. Na aquisição de insumos, o fator primordial não deve ser apenas o fornecedor que oferece o menor preço, mas aqueles que consigam atender aos pedidos dentro dos prazos mínimos, oferecendo sempre matéria-prima de qualidade. Logisticamente falando, a facilidade de se fazer negócios significa que os fornecedores atendam aos compromissos e as entregas cheguem ao local e hora acertados (STALK apud MONTGOMERY e PORTER, 1998). Fator importante também na economia de tempo acontece durante a produção, quando o ambiente oferece uma seqüência ótima de matéria-prima entre células de manufatura. Este recurso consegue não só economia de tempo, mas economia de mão-de-obra (menos gasto com pessoal). No desenvolvimento tecnológico, procuram-se equipamentos que executem trabalhos repetitivos com maior perfeição e menores desperdícios de tempo, por exemplo, na otimização do funcionamento de equipamentos automáticos de perfuração, soldagem, etc. O gerenciamento de recursos humanos procura distribuir tarefas, visando minimizar sem sobrecarregar pessoal e equipamentos, pois os produtos finais têm prazos a serem cumpridos. Por estes e outros exemplos, e conscientes de que não basta apenas fabricar mais e melhor que seus concorrentes, e sim que estes produtos sejam fabricados com gastos mínimos Margem 3 e estejam acessíveis às pessoas em tempos cada vez menores, é que estudos na área de Otimização Combinatória merecem uma maior atenção. A Otimização Combinatória funciona como uma alternativa na busca de melhores resultados para vários problemas práticos, como: alocação de centros de distribuição; corte e empacotamento; escalonamento de tarefas; roteamento de veículos, tráfico aéreo, etc. Um célebre problema nesta área é o que aborda o assunto de minimização de rotas hamiltonianas, conhecido como problema do caixeiro viajante (PCV). O enunciado diz que um caixeiro viajante tem que visitar n cidades diferentes, iniciando e encerrando sua viagem na cidade de partida e passando por todas as outras uma única vez, não importando a ordem com que as cidades são visitadas. O PCV está classificado como um problema de Otimização Combinatória pertencente à classe dos problemas NP-difíceis, o que significa dizer que, apesar do uso de computadores de última geração, não se pode determinar a solução exata para problemas de grande porte (problemas práticos) em um tempo computacional viável. Devido a isso é que, desde a década de 70, tem havido cada vez mais interesse pelo estudo de métodos Heurísticos, isto é, algoritmos que buscam encontrar boas soluções próximas à solução ótima e em um tempo extremamente rápido (polinomial). Esse esforço de pesquisa levou ao surgimento, na década de 90, das heurísticas inteligentes, denominadas de Metaheurísticas, que resolvem os problemas de otimização combinatória NP-difícil de uma maneira mais flexível e para problemas de porte ainda maiores e com mais precisão, além de exigir pouco esforço computacional. Pois utilizam procedimentos de buscas em vizinhanças que evitam uma parada prematura em ótimos locais, direcionando a busca para uma solução aproximada, tão boa quanto possível do ótimo global desejado no problema proposto. Dentre estas, destacam-se: os Métodos Seqüenciais (Simulated Annealing, Busca Tabu, GRASP, entre outros), e os Populacionais (Colônia de Formigas; Otimização por Nuvem de Partículas; Algoritmo Genético (AG); entre outros). O Algoritmo Genético, inspirado na teoria da evolução de Charles Darwin, é um algoritmo probabilístico desenvolvido com a finalidade de ser aplicado em problemas diversos de Otimização Combinatória. Alguns autores como (NAKAHARA e SAGAWA, 1986 apud KANOH et al., 1996), propõem que, na teoria da evolução, o material genético pode ser transferido de um indivíduo para outro através de vírus, ou seja, um vírus carregando material genético pode infectar e transportar informações genéticas de um indivíduo para 4 outro. No caso da Memética, a evolução de uma população ocorre não apenas através dos operadores genéticos, mas também através da evolução cultural (busca local), ou seja, um indivíduo pode tornar-se forte ao longo de sua geração. Analogamente, o vírus memético tenta passar informações (características importantes) ao longo de gerações. Este trabalho propõe o uso da infecção viral no algoritmo memético. 1.2- Objetivos da Pesquisa 1.2.1- Gerais Esta pesquisa tem por objetivo propor e avaliar o uso de infecção viral em um algoritmo evolutivo (Algoritmo Memético) para a resolução de problemas de Otimização Combinatória NP-difícil. O Problema do Caixeiro Viajante Assimétrico através de instâncias disponibilizadas na TSPLIB1 é utilizado para validação da proposta. 1.2.2- Específicos Para atingir-se o objetivo maior deste trabalho, faz-se necessário passar por algumas etapas, consideradas essenciais, que são os objetivos específicos: • Desenvolver e aplicar o Algoritmo Memético com infecção viral ao Problema do Caixeiro Viajante Assimétrico; • Desenvolver um método de Infecção Viral que faz uso de uma população fixa de vírus e de uma população variável de vírus; • Desenvolver um método de Infecção Viral que faz uso de um processo de Simbiose, no qual o agente do Algoritmo Memético e o vírus obtêm benefícios após interagirem; • Comparar os resultados obtidos nas implementações desenvolvidas com os obtidos pelo Algoritmo Memético; 1.3- Relevância da Pesquisa 1.3.1- Relevância Teórica 1 http://www.iwr.uni-heidelberg.de/groups/comopt/software/TSPLIB95/ 5 Científica: Este estudo colabora com o enriquecimento da literatura sobre Metaheurísticas com infecção viral, as quais são algoritmos heurísticos inteligentes que podem ser usados em problemas diversos. Em especial este trabalho aborda o Problema do Caixeiro Viajante Assimétrico que é um problema de roteamento pertencente aos problemas de Otimização Combinatória da classe NP - difícil. Acadêmica: Sua contribuição acadêmica tem relevância significativa; seguindo a classificação da Associação Brasileira de Engenharia de Produção (ABEPRO2), este trabalho está dentro da Programação Matemática na área de Pesquisa Operacional. No Conselho Nacional de Desenvolvimento Científico e Tecnológico (CNPq3), o mesmo enquadra-se na Pesquisa Operacional, que pertence à área do conhecimento de Engenharias. No Programa de Engenharia de Produção da Universidade Federal do Rio Grande do Norte (PEP/UFRN4), ele foi desenvolvido na área de Tecnologias de Gestão da Produção e Operações, mais especificamente na linha de Pesquisa Operacional. 1.3.2- Relevância Prática: Esta pesquisa tem fundamental importância, não apenas nas empresas que exploram a logística e transporte/entrega de mercadorias, pois o PCV aparece em diversas outras situações práticas, como: Programação de operações de máquinas em manufatura; programação de transporte entre células de manufatura; otimização do movimento de ferramentas de corte; otimização de perfurações de furos e inserção de componentes eletrônicos em placas de circuito impresso; na solução de problemas de seqüenciamento de DNA; na solução de problemas de programação e distribuição de tarefas em plantas; análise de estruturas de cristais na cristalografia por Raios-X; etc. 1.4 – Organização da Dissertação Esta dissertação esta organizada em 5 capítulos, a saber: O capítulo 1 consta da introdução da dissertação, em que se esclarecem as necessidades teóricas e práticas destapesquisa, mostrando os objetivos que se deseja alcançar 2 www.abepro.org.br 3 www.cnpq.br 4 www.pep.ufrn.br 6 e também, como está documentado ao longo dos capítulos, o conhecimento construído neste trabalho; O capítulo 2 descreve o conceito de Otimização Combinatória com seus principais problemas e suas áreas de aplicações. Relata também formulações para o PCVA, bem como as principais Heurísticas e Metaheurísticas utilizadas para a resolução deste problema. O Capítulo 3 relata as características dos algoritmos evolutivos: Algoritmo Genético e Memético. Descreve as implementações do Algoritmo Memético com Infecção Viral desenvolvido neste trabalho. O capítulo 4 apresenta a metodologia utilizada e os resultados obtidos após se aplicarem os algoritmos desenvolvidos às instâncias do PCVA, existentes na TSPLIB, além das discussões geradas com os resultados. Por fim, o capítulo 5 relata as conclusões obtidas após toda a experiência da pesquisa, descrevendo as metas atingidas, recomendando áreas de aplicações práticas para o trabalho desenvolvido e sugerindo trabalhos futuros. 7 Capítulo 2 Revisão Teórica Este capítulo apresenta uma revisão sucinta dos principais problemas de Otimização Combinatória, justificando o uso do Problema do Caixeiro Viajante através da sua complexidade, aplicações práticas e pela quantidade de suas variantes. Descreve também as principais Heurísticas Construtivas e de Refinamento utilizadas no problema do Caixeiro Viajante Assimétrico e, por fim, relata as principais Metaheurísticas em suas classificações quanto à analogia com métodos físicos, estratégias de cálculos com intensificação da busca local, analogia com processos naturais e métodos híbridos. Para se conseguir uma estrutura clara e coesa, este capítulo foi dividido nos tópicos: Otimização Combinatória, Complexidade de Problemas, Heurísticas e Metaheurísticas. 2.1 – Otimização Combinatória Na Matemática Discreta, dado um conjunto finito, estudam-se os arranjos, grupamentos, ordenações ou seleções de uma coleção de subconjuntos deste conjunto, que em geral, constituem um conjunto finito dotado de estruturas particulares. Um exemplo seria o problema da existência de um Ciclo Hamiltoniano em um dado grafo, o qual pode ser resolvido pela permutação de vértices (BOAVENTURA NETO, 2006). Porém, quando se pretende obter o melhor arranjo, grupamento, ordenação ou seleção, entra-se no campo da Otimização Combinatória (CAMPELLO e MACULAN, 1994). Assim, dado um conjunto de itens E={1.2,...,n}, onde cada ítem possui um custo associado; e, uma série de restrições que devem ser respeitadas, o Problema de Otimização Combinatória (POC) consiste em escolher dentre os subconjuntos viáveis (F⊆ 2E) aquele que 8 apresenta o menor custo ou maior lucro (S*∈F, tal que c(S*)≤ c(S),∀S∈F), dependendo se no problema deseja-se minimizar ou maximizar (c(S*)≥ c(S)) a função objetivo (c:F �ℜ), onde c(S) representa a soma dos custos (lucros) dos elementos de cada subconjunto S. Alguns exemplos clássicos de POC são: • O Problema da Mochila (Knapsack Problem): dada uma lista de objetos com custos associados (preço, importância, etc), e uma mochila (caixa, contêiner, etc) com o seu limite de capacidade, o desafio é escolher os objetos a serem carregados dentro da mochila e que satisfaçam a restrição de capacidade da mesma, otimizando o valor do carregamento realizado. • O Problema do Número Cromático em Grafos: nesse problema, o objetivo é colorir todos os vértices com o menor número possível de cores, de modo que os vértices adjacentes não tenham a mesma cor. • O Problema de p-medianas: Em um problema de localização, deseja-se estabelecer os locais onde serão sediadas facilidades (fábricas, depósitos, hospitais, escolas, etc.) para atender, da melhor maneira possível, a um conjunto espacialmente distribuído de pontos de demanda. O problema de p-medianas é um problema clássico de localização. O objetivo é determinar os locais de p facilidades (denominadas medianas) em uma rede de n nós, de modo a minimizar a soma das distâncias entre cada nó de demanda e a mediana mais próxima. • Problema de Escalonamento (Scheduling Problem): Dado um conjunto de tarefas a serem realizadas e dispondo-se de vários recursos (máquinas, homens, etc) que podem realizar tais tarefas, o problema consiste em identificar a forma como os recursos devem ser alocados as tarefas, tal que, o conjunto de tarefas seja executado no menor tempo possível. • Problema de Corte: Neste problema, deseja-se encontra a melhor maneira de cortar um material (placa de metal, tecido, espuma, etc.) de forma que o desperdício seja mínimo. • O problema do Caixeiro Viajante (PCV): a ser visto com detalhes (aplicações, variantes, complexidade, etc) na próxima seção. • Etc. 9 2.1.1 – O Problema do Caixeiro Viajante (PCV) O Problema do Caixeiro Viajante (PCV) é um exemplo clássico de um POC, talvez o mais celebrado nesta área (CAMPELLO e MACULAN, 1994). Seu enunciado diz que um caixeiro viajante tem que visitar n cidades diferentes, iniciando e encerrando sua viagem na primeira cidade, não importando a ordem em que as cidades são visitadas. Neste problema, PCV, tem-se como restrição que o caixeiro não pode passar por uma cidade mais de uma vez e que deve encerrar sua viagem na cidade de origem. Os subconjuntos (soluções viáveis) são as possíveis rotas que o caixeiro viajante pode seguir. Os custos associados a estes subconjuntos são as distâncias percorridas entre as cidades ou os tempos, etc. 2.1.2 – Aplicações Práticas do PCV Um dos motivos para que o PCV seja um problema tão importante na área de otimização combinatória é devido à sua grande aplicação prática, que surge não apenas em problemas de roteamento, mas também em problemas práticos diversos, como: • Programação de transporte entre células de manufatura: No arranjo físico celular, os recursos transformados são pré-selecionados para movimentar-se para uma parte específica da operação (ou célula), na qual todos os recursos necessários a atender suas necessidades imediatas de processamento se encontram (SLACK, CHAMBERS & JOHNSTON, 2002). A célula pode ser montada para funcionar como arranjo físico por processo (por exemplo, uma célula que realiza apenas o processo de pintura de peças) e como arranjo físico por produto (por exemplo, uma célula que realiza apenas a confecção das bancadas de um automóvel). Portanto, para se produzir o objeto desejável por completo, num menor tempo possível, deve-se determinar uma seqüência ótima entre as células. • Otimização de perfurações de furos em placas de circuitos impressos; Durante a confecção de placas de circuito impresso, são realizadas centenas de furos para soldagem dos componentes eletrônicos. O equipamento de perfuração realiza vários furos de mesmo diâmetro e, como não existe uma ordem de precedência, o ideal será encontrar uma seqüência de furos que minimize o tempo de processamento. Este problema pode ser formulado como um PCV. Também se deve lembrar que numa placa de circuito impresso realizam-se furos de diferentes diâmetros, ou seja, após a máquina realizar uma série de furos, o equipamento de perfuração é mudado para 10 realizar outra série de furos, portanto a atividade é composta por uma seqüência de PCV. • A Inserção de Componentes Eletrônicos em Placas de Circuito Impresso: Para inserir automaticamente os componentes eletrônicos nos furos das placas de Circuito Impresso, é utilizada uma máquina de inserção (RABAK e SICHMAN, 2001). Cada máquina deve efetuar n tarefas, sendo necessários ajustes entre o término de uma operação e início de outra, os quais consomem tempo (tempo de setup). Segundo (LAPORTE, 1992) e (LAWLER et. al., 1985), o problema deencontrar uma seqüência apropriada de inserção dos componentes na placa, de forma a otimizar o tempo de processamento (tempo de execução mais tempo de setup), pode ser modelado como um PCV. • Mapeamento Físico de DNA: O DNA é composto das bases (Adenina-A, Citosina-C, Guanina-G e Timina-T); porém o número destas bases é extremamente grande, e as máquinas existentes só conseguem seqüenciar até mil bases, ou seja, não conseguem seqüenciar uma molécula inteira. Então, o DNA é quebrado em pedaços menores, chamados clones, e estes, em pedaços de mil bases. Após conseguirem-se os resultados dos clones, basta remontá-los em sua ordem original para que, juntos dêem o consenso da molécula de DNA; porém esta tarefa não é tão simples, pois não se sabe de que região da molécula original cada clone vem. O mapeamento de cada clone em sua respectiva região de origem no DNA é conhecido como o problema do mapeamento físico de DNA, o qual pode ser formulado como um Problema do Caixeiro Viajante. (CERQUEIRA e STELZER, 2005). • O Problema da Fiação do Computador: Em um computador, existem diversos módulos, cada um com um número de pinos. Necessita-se conectar um subconjunto destes pinos com os fios, de tal maneira que nenhum pino tenha mais de dois fios unidos a ele, garantindo que o comprimento do fio seja minimizado. • Análise de estruturas de cristais na cristalografia por Raios-X: Usa-se a difração por raio-X para determinar a estrutura dos cristais ou moléculas. Nesta técnica, faz-se incidir um feixe de Raios-X difratados numa placa fotográfica. Os padrões de difração são constituídos por padrões de pontos na placa e podem-se extrair conclusões sobre a estrutura do cristal, através das posições e intensidades destes pontos. Um detector mede a intensidade dos Raios-X, refletidos do material, saindo de várias posições. Em 11 alguns experimentos, o detector deve realizar até 3000 deslocamentos para fazer as medidas. Como o percurso realizado pelo detector na obtenção das medidas não possui uma seqüência obrigatória, ou seja, pode-se realizar o percurso desejado, então se deve minimizar o tempo de análise, escolhendo-se um percurso mínimo entre os pontos de medida. • Etc. 2.1.3 – Variantes do PCV Considerando Cij o custo para um caixeiro viajante seguir de uma cidade i para uma cidade j, se Cij = Cji, ∀ i, j ∈N, ou seja, se o custo de i para j for o mesmo de j para i temos um Problema do Caixeiro Viajante Simétrico (PCVS); porém se Cij ≠Cji, ∀ i, j ∈N, temos Problema do Caixeiro Viajante Assimétrico (PCVA) (CAMPELLO e MACULAN, 1994). Se o problema é simétrico e satisfaz a desigualdade triangular Cij + Cjk ≥ Cik, ∀ i, j, k ∈N, temos o Problema do Caixeiro Viajante Euclidiano (PCVE) O amplo uso do PCV Simétrico ou Assimétrico na resolução de diversos problemas reais se deparou em alguns momentos com algumas características novas, o que acabou por inseri-las na formulação do PCV, proporcionando o surgimento de algumas variantes. O Problema do Caixeiro Viajante Múltiplo (PCVM), também conhecido por problema de roteamento de veículos (PRV), consiste em, dados vários caixeiros ou veículos, estabelecer e organizar um itinerário eficiente para cada; ou seja, r itinerários para os veículos realizarem entregas de mercadorias, todos com origem e destino no mesmo vértice. O objetivo geral é minimizar o custo total de transporte no atendimento aos clientes (cidades); isto é, minimizar custos fixos, custos operacionais e o número de veículos envolvidos no transporte. Este tipo de problema vem recebendo bastante atenção de pesquisadores, como é mostrado em (GOLDEN e ASSAD, 1988). O Problema do Caixeiro Viajante com Janelas de Tempo (PCVJT) consiste no problema em que os atendimentos de cada cliente devem obedecer a intervalos de tempo (janelas), ou seja, a chegada a cada cliente deve atender às restrições de tempo pré- estabelecidas (horário). Neste caso, o problema é também interpretado como um problema de escalonamento (BOAVENTURA NETTO, 2006). O Problema de Orientação (PO) é uma variante do PCV (RAMESH, YOON e KARWAN, 1992), também conhecido pelas denominações: Problema do Caixeiro Viajante 12 Coletor de Prémios (Prize Collecting Traveling Salesman Problem - PCTSP) (BALAS 1989; BALAS 1995; RAMESH, YOON e KARWAN, 1992; VALENTIM 1998); Problema da Rota Orientada (Orienteering Tour Problem - OTP) (RAMESH, YOON e KARWAN, 1992) e, Problema do Caixeiro Viajante Seletivo (Selective Traveling Salesman Problem – STSP) (LAPORTE e MARTELO 1990, GENDREAU, LAPORTE e SEMET, 1998). No PCTSP, o caixeiro viajante recebe um prêmio a cada cidade que ele visita e paga uma penalidade a cada cidade que deixar de visitar. Como se deseja partir de uma cidade, visitar as outras cidades que formam o percurso uma única vez e retornar para a cidade de origem (BALAS 1989; BALAS 1995; VALENTIM 1998), deve-se minimizar o custo do percurso e a soma das penalidades, de forma a garantir um ganho que justifique o esforço empreendido. Dentre as variantes do PCTSP, algumas são o Multiobjective Vending Problem (MVP) (KELLER, 1985) e o Travelling Salesman Subtour Problem with Specified Nodes (SN-TSSP) (RENAUD e BOCTOR, 1998). O Problema de Orientação – OTP originou-se de uma modalidade de esporte na qual equipes competem entre si para encontrar uma rota com máxima premiação, onde em cada ponto desta rota (cidades) existe uma premiação e após uma equipe atingir aquele ponto e obter sua pontuação, as outras equipes que chegarem ao mesmo ponto terão uma pontuação menor, ou seja, aquela equipe que realizar o trajeto em menor tempo irá somar mais pontos que suas sucessoras e, portanto, será a vencedora. No OTP a rota é um caminho fechado, pois o percurso termina na cidade de origem. No STSP existe um bônus em cada cidade, porém o caixeiro não pode ultrapassar um limite estabelecido de cidade, ou seja, deve-se visitar no máximo um numero x de cidades, de forma a obter-se um máximo de bônus. No Problema de Otimização do Emprego da Unidade Móvel do Pistoneio (POE- UMP) a UMP, que é um veículo coletor de óleo (Figura 2.1), parte da Estação de Tratamento de Óleo (ETO), segue por n poços escolhidos para pistoneio numa seqüência determinada, realizando este processo de pistoneio5 e retorna à ETO somente ao final da jornada diária. 5 No processo de pistoneio móvel, o princípio de funcionamento é introduzir no poço de petróleo um copo de pistoneio que submerge em torno de 30 metros no óleo e é puxado através do cabo acionado pelo guincho para o tanque da UMP, que tem capacidade de 5m³. Esta operação é repetida até que se alcance um nível do poço em que não haja mais óleo para ser extraído (ALOISE et al., 2001). 13 Como existe um caminhão tanque que recolhe (suga) o óleo do tanque da UMP sempre que este tem armazenado uma boa quantidade, isto permite que o tanque da UMP nunca encha completamente, sendo possível tratar a UMP, no problema, como um veículo com capacidade de armazenamento de tamanho infinito (NEVES, 2000). Segundo (ALOISE, BARROS e NEVES, 2000) este problema poderia ser chamado de problema da coleta orientada PCO, o qual é classificado como uma variante do Problema de Orientação, pois apresenta as mesmas características do problema do caixeiro viajante seletivo com exceção dos tempos de montagem, operação e desmontagem da UMP em cada vértice (poço). Figura 2. 1 – Unidade Móvel de Pistoneio No Problema do Caixeiro Viajante Branco e Preto (PCVBP), considerando um grafo G (orientado ou não), de maneira que o conjunto de vértices associados está dividido em brancos e pretos, o objetivo é, além de seguir as mesmas restrições do PCV e encontrar o menor circuito hamiltoniano, partindo arbitrariamente de um vértice branco ou preto, ainda obedecer às restrições adicionais de cardinalidade e comprimento.Na restrição de cardinalidade, o número de vértices brancos entre dois vértices pretos consecutivos não pode ser superior a um número inteiro positivo Q, e na restrição de comprimento, a distância entre dois vértices pretos consecutivos não deve exceder um número positivo L. (MACIEL, MARTINHON e OCHI, 2005). Estes poucos exemplos de variações do PCV, junto com as suas aplicações práticas e os principais problemas existentes na Otimização Combinatória, servem para mostrar a grande importância que esta área tem e o quanto ela é utilizada nos mais diversos campos da ciência, passando pela computação (mineração de dados), aeronáutica (minimização do consumo de combustível nas turbinas de motores em aeronaves), biologia (alinhamento de DNA e proteínas), telecomunicações (Synchronous Optical NETwork - SONET), física (estados de energia mínima), logística (minimização de rotas), estatística (análise de dados), 14 economia (matrizes de entrada/saída), química (empacotamento de aminoácidos), administração (distribuição de tarefas) , etc. 2.2 – Complexidade de Problemas A obtenção de uma solução exata para os problemas de otimização combinatória, em geral, não é uma tarefa fácil, pois a enumeração completa de todas as soluções viáveis de um problema poderá conduzir à solução ótima em um número finito de passos; porém de tal ordem de grandeza, que o computador mais avançado levaria séculos no processo de cálculo (CAMPELLO e MACULAN, 1994). Assim, métodos exatos de enumeração implícita têm sido cada vez mais explorados no sentido de diminuir substancialmente o número dessas soluções viáveis. Por outro lado, métodos heurístico/metaheurísticos, que fornecem soluções próximas do ótimo, vêm sendo desenvolvidos e aplicados nessas situações. Mais recentemente, pesquisas envolvendo uma combinação de métodos exatos e metaheurísticos encontram-se em evidência, buscando obter melhores resultados na resolução de problemas de grande porte para problemas de otimização combinatória NP-difíceis6. 2.2.1 – Formulação Matemática do PCVA Na programação inteira, que segundo (CAMPELLO e MACULAN, 1994) é um dos campos mais férteis da otimização combinatória, consegue-se modelar diversos problemas com as variáveis de decisão assumindo apenas valores inteiros. No caso do problema do caixeiro viajante assimétrico, a primeira formulação foi proposta por (DANTZIG, FULKERSON e JOHNSON, 1954), que definiram ser a variável binária xij (i≠j) igual a 1 se e somente se o arco (vi, vj) for usado na solução ótima e 0, caso contrário. Formulação: 6 http://astarte.csr.unibo.it/matheuristics2006/ )4.3()12;(,1 , −≤≤⊆−≤∑ ∈ nSVSSx Svv ij ji )1.3(∑ ≠ = ji ijij xczMinimizar )2.3(),...,1(1: 1 nixàSujeito n j ij ==∑ = )5.3();,...,1,(}1,0{ jinjixij ≠=∈ ∑ = == n i ij njx 1 )3.3(),...,1(1 15 As restrições (3.2) e (3.3) garantem que, para cada vértice, há somente uma aresta de entrada e uma de saída. A restrição (3.4) garante a eliminação de sub-rotas. Outras formulações surgiram como, por exemplo, a de (GAVISH e GRAVES, 1978), que propuseram as seguintes restrições para eliminação de sub-rotas: Nesta, as restrições correspondem a um problema de fluxo em redes e as variáveis yij , que representam a ordem em que as arestas são visitadas assumem valores inteiros na solução ótima. Com esta nova formulação, conseguiu-se reduzir as (2n -2) restrições de (3.4) para (n²+3.n) restrições. Entretanto, o número de passos necessários para a obtenção da solução ótima do PCV ainda cresce exponencialmente com o número de variáveis, o que torna o problema intratável computacionalmente e pertencente à classe de problemas NP-difíceis. Para resolução dos problemas NP-difíceis de dimensões significativas, que é o caso da maioria dos problemas práticos, utilizam-se Heurísticas e Metaheurísticas, algoritmos que conseguem achar uma solução próxima à exata em um tempo computacional viável. As seções a seguir apresentam algumas dessas Heurísticas e Metaheurísticas com vistas à sua aplicação ao Problema do Caixeiro Viajante Assimétrico. 2.3 – Heurísticas Segundo (BARR et al., 2001), Métodos Heurísticos, também chamados algoritmos aproximativos, procedimentos inexatos, algoritmos incorretos, ou simplesmente heurísticos são usados para identificar boas soluções aproximadas para cada problema em menos tempo que os algoritmos exatos (quando este existir). 2.3.1 – Heurísticas Construtivas As Heurísticas de métodos construtivos iniciam, sem nenhum resultado, a solução de um problema e constroem passo a passo uma solução viável. Apresentam algoritmos gulosos, os quais, devido a enxergarem apenas o que está mais próximo do objetivo desejado, são ∑ ∑ ≠ = ≠ = ==− n ij j n ij j jiij niyy 1 2 ,...,2,1 njenixny ijij ,...,3,2,...,2,1,)1( ==−≤ jienjiyij ≠=≥ ,...,2,1,,0 16 também chamados de algoritmos míopes. Quando se trata de solucionar o PCV, as variações desta classe de algoritmo, que se apresentam com maior destaque, são: o vizinho mais próximo, a inserção mais próxima, a inserção mais distante, a inserção mais barata, a inserção pelo maior ângulo e o método das economias. Outros algoritmos, também de grande importância, são: o algoritmo de Christofides, que segue os conceitos dos métodos baseados na árvore geradora de peso mínimo e o GKS que, segundo (GLOVER et al, 1999), é uma heurística que oferece melhores resultados na resolução de problemas assimétricos do caixeiro viajante, se comparado com os ditos gulosos. 2.3.1.1 – Vizinho Mais Próximo Desenvolvida por (BELMORE e NEMHAUSER, 1988), consiste em, dado um grafo G = (V,A), partir de um vértice inicial e construir uma solução escolhendo, a cada iteração, o vértice mais próximo do último vértice escolhido para compor a solução. Este processo é realizado até que se tenha visitado todos os vértices (Algoritmo 2.1). Este algoritmo é de ordem O(n²) e o ciclo Hamiltoniano obtido sofre forte influência da escolha do vértice inicial. Esta influência é eliminada repetindo o procedimento n vezes, tomando a cada vez um vértice diferente, onde o algoritmo resultante será de ordem O(n³) (CAMPELLO e MACULAN, 1994). Algoritmo 2. 1 Algoritmo Vizinho Mais Próximo Fonte: (CAMPELLO E MACULAN, 1994). Quanto às heurísticas de inserção, que originalmente foram desenvolvidas por (ROSENKRANTZ, STEARNS e LEWIS, 1977), no contexto do (PCVS), o processo será 1 Algoritmo VP (G = (N, M)) [Tour em G] 2 Início 3 Ler {G = (N, M) com N = {1, 2,.... n} e ci j ,∀ i, j ∈ N}; 4 H:={1}; 5 x0 := 0; 6 N:=N \ {1 }; 7 i := 1 ; 8 Enquanto N ≠ ∅ fazer 9 Início 10 Escolher j∈ N tal que ci j = mínimo {c i k} ; 11 H := H ∪ { j }; 12 x0 : = x0 + ci j ; 13 N := N \ {j}; 14 i := j ; 15 Fim; 16 Escrever (H:= H∪ {1}, x0 := x0 + cj 1 }; 17 Fim. 17 manter em um grafo um ciclo em cada iteração e inserir a próxima cidade no ciclo, de forma ótima. 2.3.1.2 – Inserção Mais Próxima Nesta heurística, o ciclo é iniciado com apenas um vértice e a cada iteração este ciclo vai aumentando, parando no momento em que é formado um ciclo Hamiltoniano (Algoritmo 2.2). Esta Heurística é de Ordem O(n³). Algoritmo 2. 2 Algoritmo Inserção Mais Próxima Fonte: (RIBEIRO, C. C., 2002). 2.3.1.3 – Inserção Mais Distante Esta Heurística, também de Ordem O(n³), difere da anterior no passo 1 do algoritmo, onde nesta deve-se encontrar o vértice k fora do ciclo corrente, cuja aresta de menor comprimento que o liga a este ciclo é máxima. Este procedimento acaba por se tornar mais eficiente que a Heurística de inserção maispróxima, porque os primeiros poucos pontos mais distantes esboçam um perfil geral do ciclo, que será refinado posteriormente (BENTLEY, 1992). 2.3.1.4 – Inserção Mais Barata Este procedimento é uma simples melhoria das Heurísticas anteriores, pois, ao invés de separar os passos 1, onde se seleciona o novo nó que irá incorporar ao circuito a cada iteração, e 2, no qual se seleciona a posição onde este nó entrará no circuito, acabou-se por fazer a escolha da melhor combinação destes passos em conjunto (Algoritmo 2.3). Isso forneceu uma Heurística que apresenta melhores soluções; porém o tempo de processamento é cerca de n vezes maior ( RIBEIRO, C. C., 2004). Passo 0: Inicializar o ciclo com apenas um vértice. Passo 1: Encontrar o vértice k fora do ciclo corrente cuja aresta de menor comprimento que o liga a este ciclo é mínima. Passo 2: Encontrar o par de arestas (i,k) e (k,j) que ligam o vértice k ao ciclo, minimizando cik + ckj - cij Inserir as arestas (i,k) e (k,j) e retirar a aresta (i,j). Passo 3: Retornar ao passo 1. 18 Algoritmo 2. 3 Algoritmo Inserção Mais Barata Fonte: (RIBEIRO, C. C., 2002). 2.3.1.5 – Inserção Pelo Maior Ângulo Desenvolvida por (NORBACK e LOVE, 1979), esta Heurística se inicia com um ciclo composto por todos os nós que formam a envoltória convexa do grafo, e vão-se inserindo neste ciclo os nós internos a esta envoltória, cujo ângulo entre as arestas seja máximo, parando no momento em que se obtém um ciclo hamiltoniano (Algoritmo 2.4). Algoritmo 2. 4 Algoritmo Inserção Pelo Maior Ângulo Fonte: (RIBEIRO, C. C., 2002). 2.3.1.6 – Método das Economias Esta Heurística foi inicialmente proposta por (CLARKE e WRIGHT, 1963) para o Problema de Roteamento de Veículos. Sua idéia básica é partir da pior situação possível, a qual seria a escolha arbitrária de um vértice-base do grafo completo e construir ciclos de tamanho 2 deste vértice para cada um dos (n – 1) restantes. A fusão de dois ciclos é realizada Passo 0: Inicializar o ciclo com apenas um vértice. Passo 1: Encontrar o vértice k fora do ciclo corrente e o par de arestas (i,k) e (k,j) que ligam o vértice k ao ciclo, minimizando cik + ckj - cij Passo 2: Inserir as arestas (i,k) e (k,j) e retirar a aresta (i,j). Passo 3: Retornar ao passo 1. Passo 0: Inicializar o ciclo com a envoltória convexa dos nós do grafo. Passo 1: Inserir cada um dos nós não pertencentes à envoltória convexa aplicando uma heurística de inserção: encontrar o vértice k fora do ciclo corrente e o par de arestas (i,k) e (k,j) que ligam o vértice k ao ciclo, tal que, o ângulo formado pelas arestas (i,k) e (k,j) seja máximo. Passo 2: Retornar ao passo 1. 19 a cada iteração, com base no conceito de economia, que seria a conexão direta deles através da aresta (i, j) e remoção das arestas (1, i) e (j, 1), obtendo com isto uma economia de sij = c1i + cj1- cij (Algoritmo 2.5). Este procedimento se repete até obter um ciclo hamiltoniano. Segundo (CAMPELLO e MACULAN, 1994), esta Heurística é de ordem O(n². log2 n); porém, se com o intuito de eliminar a influência do vértice-base, realizar o procedimento considerando os (n – 1) vértices restantes como vértice inicial, esta heurística será de ordem O(n³. log2 n). Algoritmo 2. 5 Algoritmo Método das Economias Fonte: (RIBEIRO, C. C., 2002). 2.3.1.7 – Heurística de Christofides Esta Heurística segundo (CAMPELLO e MACULAN, 1994) é de ordem O(n³) e é um método baseado na árvore geradora de peso mínimo, o qual segue o raciocínio de que, eliminando-se qualquer aresta de uma rota, obtém-se uma árvore geradora (Algoritmo 2.6). Portanto a árvore geradora mínima de um grafo constitui um limite inferior para o Ciclo Hamiltoniano ótimo. A Heurística de Christofides, além do conceito de Matching Perfeito Mínimo, ainda utiliza alguns ajustes em uma operação chamada atalho, para transformação da árvore geradora mínima em uma rota. Algoritmo 2. 6 Algoritmo de Christofides Passo 0: Escolher um vértice base inicial Passo 1: Construir subciclos de comprimento 2 pelo vértice base e por cada um dos n-1 nós restantes. Passo 2: Calcular as economias sij = c1i + cj1 - cij e ordená-las em ordem decrescente. Passo 3: A cada iteração, maximizar a distância economizada sobre a solução anterior, combinando-se dois subciclos (um chegando e outro saindo do nó 1) e substituindo-os por uma nova aresta: percorrer a lista de economias e realizar as trocas que mantêm uma rota iniciando no vértice 1 e passando pelos demais nós, até obter um ciclo hamiltoniano. Passo 0: Encontre a árvore geradora mínima T Passo 1: Encontre o Matching perfeito mínimo M no grafo completo Passo 2: Encontre um caminho Euleriano Passo 3: aplique a operação de atalho até obter o ciclo Hamiltoniano. 20 2.3.1.8 – Heurística GKS Esta Heurística foi desenvolvida por (GLOVER et al, 1999), baseando-se na Heurística Karp-Steele patching para resolução de problemas do caixeiro viajante assimétricos, sendo também responsável por produzir ciclos de boa qualidade para algumas instâncias do PCV. Através da resolução do Problema da Alocação Linear sobre a matriz de distâncias da instância a ser resolvida, gera-se um conjunto (ciclo-fator) de sub-ciclos em que, ao longo das iterações da GKS, estes sub-ciclos se unem, até formarem um ciclo único de peso mínimo (Algoritmo 2.7). Algoritmo 2. 7 Algoritmo GKS Fonte: (GLOVER et al, 1999). 2.3.2 – Heurísticas de Busca Local Quanto às Heurísticas de refinamento, a solução inicial é obtida, tanto aleatoriamente, como através de um método construtivo e, utilizando-se modificações nos elementos da solução corrente, consegue-se melhorá-la. O processo ocorre através de uma busca local realizada na vizinhança da solução onde, encontrando-se um ponto como melhor solução, este passará a ser a nova solução. A busca local não está livre de terminar no primeiro ótimo local encontrado; porém ela pode fornecer uma solução de qualidade. Dentre os fatores que vão favorecer uma melhor solução estão: a solução inicial utilizada, a vizinhança escolhida e a estratégia de busca empregada (algoritmo busca local com melhoria iterativa, com descida mais rápida, método das k-substituições ou k-opt e etc). Passo 0: Construa um ciclo-fator F de peso Mínimo Passo 1: Feito o exame dos diferentes ciclos em F, escolha um par de arcos tal que, remendando (isto é, removendo os arcos escolhidos e adicionando outros dois arcos que unam ambos os ciclos) obtenhamos um ciclo fator (com um ciclo a menos) de peso mínimo (dentro da estrutura de remendar) Passo 2: Repita o passo 1 até que o ciclo fator atual esteja reduzido a um único ciclo. Use este ciclo como uma solução aproximada para o PCV. 21 2.3.2.1 – Melhoria Iterativa Neste procedimento de busca, a cada iteração seleciona-se a primeira solução encontrada na vizinhança, mais refinada que a solução corrente. 2.3.2.2 – Descida Mais Rápida Para este procedimento, realiza-se, para solução corrente, uma busca em toda a sua vizinhança e escolhe-se a melhor solução aprimorante da região pesquisada. Em (RIBEIRO, C. C., 2004), existem alguns exemplos de vizinhança para o problema do caixeiro viajante, que podem ser utilizados nos dois procedimentos acima. Um primeiro exemplo mostrado seria: dada uma solução ),...,,...,,,,...,( 111 njiii πππππππ +−= , a vizinhança éobtida através da troca da posição (permutação) de duas cidades consecutivas. Então, a vizinhança ficaria: }{ 1,...,1),...,,,,...,()( 1111 −=∴= +− niN niii ππππππ . Outra vizinhança seria conseguida através da troca da posição de duas cidades quaisquer onde, para a mesma solução ),...,,...,,,,...,( 111 njiii πππππππ +−= , teríamos: }{ nijniN niiji ,...,1;1,...,1),...,,...,,,,...,()( 1112 +=−=∴= +− πππππππ Uma terceira vizinhança para a solução ),...,,,...,,,,...,( 1111 njjiii ππππππππ ++−= , seria obtida através da inserção de uma cidade em uma posição qualquer, ficando: }{ nijniN njijii ,...,1;1,...,1),...,,,,...,,,...,()( 11113 +=−=∴= ++− ππππππππ . 2.3.2.3 – Método das k-substituições ou k-opt Segundo (CAMPELLO e MACULAN, 1994), este algoritmo tenta todas as substituições de k arestas, sendo o melhor Ciclo Hamiltoniano obtido ao final do processo denominado k-ótimo. Uma Heurística que se baseia na aplicação desta técnica é a de (LIN e KERNIGHAN, 1973). Pensando-se em um circuito hamiltoniano, o qual é uma solução para o PCV, a vizinhança com este método é obtida quando escolhendo-se k arestas quaisquer, elimina-as e substitui-as por outras k arestas, de modo a formar um novo circuito hamiltoniano de menor custo. 22 Um esquema de funcionamento deste procedimento está detalhado na Figura 2.2, representando uma substituição do tipo 3-opt. Dada uma solução inicial H Remover k elementos da solução H, obtendo uma solução não viável H’ Construir todas as soluções viáveis contendo H’ Escolher a melhor dentre as soluções encontradas Esta solução passará a ser a nova solução H na iteração seguinte Figura 2. 2 - Esquema de funcionamento do método k-opt A busca local também pode ser utilizada como uma heurística subordinada, pois serve às Metaheurísticas, aprimorando na vizinhança a solução que estas obtêm. 2.4 – Metaheurísticas É um processo iterativo ou de refinamento de solução de problemas, que organiza e direciona heurísticas subordinadas, pela combinação de diferentes conceitos, podendo manipular uma solução completa, incompleta ou um conjunto de soluções, tentando evitar parada prematura em ótimo local. O processo de achar uma boa solução consiste em aplicar a cada passo uma heurística subordinada que tenha sido projetada para cada problema particular e, como uma tentativa para escapar de ótimos locais, algumas delas permitem controlar a deterioração das soluções para diversificar a busca (NORONHA, ALOISE e SILVA, 2001). 2.4.1- Analogia com Métodos Físicos Simulated Annealing é uma variante da técnica de busca local, que se baseia nos resultados da termodinâmica, onde as soluções viáveis dos problemas de Otimização 23 Combinatória são tratados como estados de sistemas físicos e seus custos à energia desses estados. Annealing - corresponde a um processo térmico em que um cristal liquefeito, sob altas temperaturas, atinge o ponto de solidificação através de uma lenta e gradativa diminuição de sua temperatura, e o sistema, conseqüentemente atinge um estado de energia mínima. No Simulated Annealing, as altas temperaturas possibilitam a escolha de soluções ruins, evitando com isto a parada em ótimos locais e, ao longo das iterações, sob o controle de determinados parâmetros, a temperatura vai diminuindo e, com ela, a possibilidade de aceitação de soluções ruins, o que favorece as chances de encontrar um ótimo global. 2.4.2 - Estratégias de Cálculos com Intensificação da Busca Local Busca tabu O método Busca Tabu foi proposto por (GLOVER, 1986), sendo uma Metaheurística de melhoramento local que faz uso de memórias para proibir ou selecionar determinados tipos de movimentos. Após escolhido um movimento dentro de uma vizinhança, o mesmo passa a pertencer a uma lista tabu (lista proibida), permanecendo nesta lista até que os parâmetros pré-definidos sejam cumpridos. Lembrando que retirar um movimento de uma lista tabu para reutilizá-lo como solução não significa que estará formando ciclos, pois a lista tabu será diferente a cada iteração do algoritmo. Este algoritmo também faz uso de uma memória de longo prazo, onde são armazenadas as soluções elites (soluções mais utilizadas), servindo para um processo de intensificação, pois se pode usar um movimento que tenha fornecido boas respostas, ou um processo de diversificação, para fazer uso de movimentos pouco utilizados, os quais favoreçam a fuga de ótimos locais. Multi-Start No procedimento Multi-Start são geradas várias soluções iniciais aleatoriamente, e através do procedimento de busca local são encontrados mínimos locais para cada solução inicial, utilizando-se como resposta o melhor mínimo local. 24 Como as soluções iniciais são geradas aleatoriamente, o algoritmo está sujeito a fazer uso de soluções boas ou ruins. GRASP A Metaheurística GRASP (Greedy Randomized Adaptive Search Procedures) foi proposta por (FEO e RESENDE, 1989). Na sua forma padrão, é implementada como um algoritmo Multi-Start onde, em cada iteração, é gerado, a partir de Heurísticas Construtivas, um ponto inicial; numa segunda fase (Busca Local), determina-se um ótimo local. Após cada iteração, é guardado o melhor ótimo local encontrado dentre todas as iterações, sendo considerado o ótimo global, o melhor ótimo local. Por ser um algoritmo que se utiliza de pontos iniciais gerados a partir de heurísticas construtivas e, conseqüentemente, de uma probabilidade de serem, em sua maioria, boas soluções, esta Metaheurística apresenta bons resultados na busca da solução ótima. VND e VNS A Metaheurística VNS (Variable Neighborhood Search) - Pesquisa em Vizinhança Variável foi proposta por (MLADENOVIC e HANSEN, 1997). Nesta Metaheurística, utiliza-se um conjunto finito de vizinhanças pré-definidas, onde se realiza uma busca local em uma primeira vizinhança e, quando não ocorrer mais melhoria da solução, parte-se para uma outra vizinhança. Na vizinhança seguinte, não se encontrando melhoria, segue-se pelas outras vizinhanças; e, naquela em que se encontrar uma melhor solução, retorna-se à primeira vizinhança e inicia-se todo o processo. O algoritmo encerra-se quando se utilizam todas as vizinhanças e não se encontra uma melhor do que a incumbente. O uso de várias vizinhanças contribui para encontrar a solução ótima, pois no uso de apenas uma vizinhança o resultado pode ser comprometido caso a mesma seja inadequada. Quanto à Metaheurística VND (Variable Neighborhood Descent) – Descida em Vizinhança Variável, a mudança de vizinhança é realizada durante a busca local, ou seja, depois de encontrado um ótimo local na primeira vizinhança, testa-se este ótimo nas outras vizinhanças; caso se encontre uma melhor solução, retorna-se para a vizinhança inicial e novamente se começa o processo com este novo valor inicial. 25 Procedimento: 1. Enquanto melhorar a solução usar a vizinhança 1, senão passar para as vizinhanças 2,...,n; 2. Quando em alguma vizinhança intermediária encontra-se uma melhor solução, volta-se para a vizinhança 1 e recomeça-se o processo. InInííciocio N 1 N 2 N 3 Figura 2. 3 - Esquema de funcionamento da Metaheurística VNS 2.4.3 - Analogia com Processos Naturais Colônia de Formigas (Ant Colonies) A Metaheurística colônia de formigas é baseada em uma população de agentes que simulam o comportamento das formigas para resolver um problema de otimização. As formigas, durante seu deslocamento, deixam um rastro de uma substância chamada feromônio, que as auxilia a seguirem o melhor trajeto entre o formigueiro, uma fonte de alimento e o retorno ao formigueiro, ou para contornar obstáculos. Isto é, através de uma comunicação química, as formigas, gradativamente, seguem o percurso mais utilizado, e conseqüentemente com maior concentração de feromônio. Noalgoritmo, é escolhida para cada formiga uma cidade inicial; e, a cada passo, as formigas escolhem probabilísticamente a próxima cidade a visitar. A probabilidade de escolha da cidade a ser visitada está diretamente ligada à quantidade de feromônio existente na cidade. Portanto, nas primeiras iterações, como nenhuma cidade ainda foi visitada, diferentes percursos serão feitos pelas várias formigas; mas, com o aumento das iterações, as cidades mais visitadas, ou seja, com melhores soluções, terão uma maior migração das formigas, concluindo-se o algoritmo com aquela cidade com maior índice de feromônio, sendo um ótimo global. 26 Importante destacar que, neste algoritmo, não é realizado um movimento de uma formiga por cada iteração (um único agente), mas é realizado por todas as formigas, em cada iteração, um movimento diferente. Portanto, em uma iteração, todas as formigas se deslocam (população de agentes), podendo, para algumas delas, o destino ser semelhante ou não. Otimização por Nuvem de Partículas A Otimização por nuvem de partículas (Particle Swarm Optimization - PSO) foi inicialmente desenvolvida por (KENNEDY e EBERHART, 1995), como um algoritmo que simula o comportamento de um bando de pássaros em revoada. O algoritmo possui uma população de partículas, com posições e velocidades em um espaço de problema n dimensional, de forma aleatória, com distribuição uniforme. Durante cada iteração, as partículas percorrem o espaço de busca do problema. Em cada iteração, o algoritmo guarda a melhor solução encontrada por cada partícula (pbest) e a melhor solução encontrada entre todas as partículas (gbest). Assim como os pássaros, que se comunicam e acabam seguindo em uma mesma direção, a nuvem de partículas no algoritmo tende a seguir na direção da melhor solução do problema. Algoritmo Genético É um modelo computacional que adaptou a teoria da evolução natural das espécies para resolução, predominantemente, de problemas que são modelados como problemas de otimização. A população de indivíduos é representada por um conjunto de possíveis soluções para determinado problema. Através de operadores de seleção, cruzamento e mutação, geram- se novas descendências de populações, e somente os indivíduos mais aptos (melhores soluções) sobrevivem. Maiores detalhes sobre o algoritmo genético e os operadores genéticos serão explanados no capítulo 3. 27 2.4.4 – Métodos Híbridos (Algoritmo Memético) Nos métodos híbridos, os algoritmos são compostos de uma fase de busca global, onde se faz uso de uma Metaheurística baseada em processos naturais, e de uma fase de busca local (aprendizado cultural individual – evolução memética). Em (GLOVER e LAGUNA, 1997), relata-se que o relacionamento do Algoritmo Genético com a Busca Tabu cria combinações híbridas potencialmente úteis, e em (COELHO e MARIANI, 2005), apresenta-se um algoritmo memético que utiliza em sua busca global uma técnica de otimização por nuvem de partículas e na busca local, um método conhecido por Hooke-Jeeves. Em (COELHO, 2003), a metodologia híbrida, que apesar de controvérsias também é conhecida por algoritmos meméticos, apresenta a maior dificuldade quanto à escolha do momento de parar o procedimento de busca estocástica para iniciar o procedimento de busca determinística. Nos próximos capítulos, serão mais detalhadas as características de um clássico algoritmo memético, também conhecido como Algoritmo Genético Híbrido (MOSCATO, 1989, 1999), o qual utiliza na sua busca global a Metaheuristica Algoritmo Genético acrescida de uma busca local após cada geração de indivíduos. 28 Capítulo 3 Algoritmos Evolutivos e Infecção Viral Este capítulo começa por descrever os Algoritmos Evolutivos conhecidos por Algoritmo Genético e Algoritmo Memético, procurando fazer, para ambos, uma relação com os processos de evolução natural; também cita as principais características e tipos de operadores de seleção, cruzamento e mutação, adequados para quando se pretende solucionar o Problema do Caixeiro Viajante Assimétrico. Relata também o processo de Infecção Viral, justificando o uso do vírus na evolução do Algoritmo Genético e Memético, através da atuação do vírus genético e memético na população de seres humanos, culminando, portanto, numa estrutura adequada de um Algoritmo Memético com Infecção Viral. Visando relatar os dados numa seqüência lógica, o capítulo está distribuído nos seguintes tópicos: Algoritmos Evolutivos, Infecção Viral e o Algoritmo Memético com Infecção Viral. 3.1 - Algoritmos Evolutivos Segundo (RIBEIRO FILHO, G, 2001), o termo “Algoritmos Evolutivos” vem sendo usado para descrever quaisquer procedimentos iterativos baseados em seleção e variação de populações. Estes algoritmos trabalham com um conjunto de estruturas que representam soluções cuja finalidade é a sobrevivência do mais apto. Somente aquelas estruturas mais adaptadas dentro do conjunto conseguem evoluir, através de operadores genéticos, para novas gerações de populações, as quais fornecem melhores soluções. 29 Hoje, os Algoritmos Evolutivos formam uma classe de algoritmos muito estudada, com muitas variações e aplicações bem sucedidas na resolução de problemas em várias áreas da ciência (MICHALEWICZ, 1996; MICHALEWICZ e FOGEL, 2000, apud RIBEIRO FILHO, G, 2001). Dentre suas variações, existe o Algoritmo Genético, que se utiliza de transições probabilísticas para a evolução da população de soluções. 3.1.1 - Algoritmo Genético O algoritmo genético, inspirado na teoria da evolução das espécies de Charles Darwin (DARWIN, 1859), foi proposto por John Holland (HOLLAND, 1975), com o objetivo inicial de simular matematicamente os fenômenos de adaptação, naturais ou artificiais, visando importar estes mecanismos, com todas as características e vantagens do processo, para ambientes computacionais. O algoritmo, o qual utiliza os conceitos de genes, cromossomos, cruzamento, mutação e seleção (Algoritmo 3.1), recebeu um grande impulso, quanto à sua aplicação, a partir de 1980, sendo utilizado em diversas áreas de aplicação científica. Os grandes responsáveis pela forte utilização do Algoritmo Genético foram: a popularização dos computadores, o aparecimento de sistemas cada vez mais rápidos e potentes e a grande versatilidade e excelência de resultados apresentados pelo algoritmo diante deste cenário. Algoritmo 3. 1 Algoritmo Genético Clássico Na primeira linha do algoritmo 3.1, está representada a população inicial do algoritmo. Esta população é composta de soluções que podem ser geradas aleatoriamente, ou através de uma Heurística construtiva. 1: P � População Inicial; 2: avaliar P; 3: enquanto condição não satisfeita faça 4: P’ � Seleção( P ); 5: P � Cruzamentos( P’ ); 6: P � Mutações ( P ); 7: avaliar P; 8: fim enquanto 9: Solução � Melhor indivíduo( P ); 30 3.1.1.1 - O Cromossomo Cada indivíduo da população inicial é representado por um cromossomo (Figura 3.1), os quais podem ter uma representação binária, inteira (símbolos) ou real, dependendo da classe de problema que se deseja resolver. Cada cromossomo é constituído de vários genes. Figura 3. 1 - Representações do Cromossomo Pensando-se no problema do caixeiro viajante, três codificações constantemente usadas para representar um cromossomo seriam: a ordinal, a de adjacência (adjacency) e a de caminho (path). Na codificação ordinal, desenvolvida por (GREFENSTETTE et al., 1985), usa-se uma lista de referência (caminho canônico) para construir um cromossomo que representa uma rota desejada. Para representar, por exemplo, o caminho corrente (1 5 2 6 4 3 8 7) nesta codificação, utilizando-se como caminho
Compartilhar