universidade do vale do itajaÍ centro de …siaibib01.univali.br/pdf/gregorio cacciari.pdf · the...
TRANSCRIPT
UNIVERSIDADE DO VALE DO ITAJAÍ CENTRO DE CIÊNCIAS TECNOLÓGICAS DA TERRA E DO MAR
CURSO DE CIÊNCIA DA COMPUTAÇÃO
ANÁLISE COMPARATIVA DO DESEMPENHO DE METAHEURÍSTICAS APLICADAS À RESOLUÇÃO DE UMA APLICAÇÃO REAL ENVOLVENDO
O PROBLEMA DO CAIXEIRO VIAJANTE
Área de Pesquisa Operacional
por
Gregório Cacciari
Edson Tadeu Bez, Dr.
Orientador
São José (SC), dezembro de 2007
UNIVERSIDADE DO VALE DO ITAJAÍ CENTRO DE CIÊNCIAS TECNOLÓGICAS DA TERRA E DO MAR
CURSO DE CIÊNCIA DA COMPUTAÇÃO
ANÁLISE COMPARATIVA DO DESEMPENHO DE METAHEURÍSTICAS APLICADAS À RESOLUÇÃO DE UMA APLICAÇÃO REAL ENVOLVENDO
O PROBLEMA DO CAIXEIRO VIAJANTE
Área de Pesquisa Operacional
por
Gregório Cacciari
Relatório apresentado à Banca Examinadora do Trabalho de Conclusão do Curso de Ciência da Computação para análise e aprovação. Orientador: Edson Tadeu Bez, Dr.
São José (SC), dezembro de 2007
DEDICATÓRIA
Aos meus pais, José Luiz e
Carmen, exemplos de ética, índole e integridade – professores da minha vida;
À minha esposa, Patrícia. Que com muito amor e perseverança, vençamos as dificuldades juntos para sempre; e
Isabel, minha filha. O melhor presente da minha vida, e a solução ótima para todos os meus problemas.
iii
AGRADECIMENTOS
À irmã e irmãos, que estando perto ou longe, me cobraram este trabalho com tanta
insistência. Aqui está.
Aos familiares que fizeram o mesmo, direta ou indiretamente.
Ao orientador, Dr. Edson Bez, que soube guiar este estudante durante os dez meses da
realização deste trabalho (e espero que continuemos), o fazendo com paciência e dedicação.
Aos demais professores que acreditaram no meu esforço e que, com o proferir de suas
palavras repletas de conhecimento, me ajudaram a entender tão facilmente que o que eu julgava ser
verdade, não era tão verdade assim.
Às professoras Anita Fernandes e Fernanda Cunha, coordenadoras de curso, enquanto estive
como aluno desta universidade.
Finalmente, aos meus amigos de universidade, de escola e de infância, que também
esperavam pela conclusão desta saga. E que outra seja iniciada.
iv
SUMÁRIO
LISTA DE ABREVIATURAS.................................................................. vi
LISTA DE FIGURAS ............................................................................... vii
LISTA DE QUADROS .............................................................................. ix
LISTA DE EQUAÇÕES ............................................................................ x
RESUMO ................................................................................................... xii
ABSTRACT .............................................................................................. xiii
1 INTRODUÇÃO ...................................................................................... 1
1.1 PROBLEMATIZAÇÃO ..................................................................................... 2
1.1.1 Formulação do Problema ................................................................................. 2
1.1.2 Solução Proposta ............................................................................................... 3
1.2 OBJETIVOS ........................................................................................................ 3
1.2.1 Objetivo Geral ................................................................................................... 3
1.2.2 Objetivos Específicos ........................................................................................ 4
1.3 METODOLOGIA ................................................................................................ 4
1.4 ESTRUTURA DO TRABALHO ....................................................................... 6
2 FUNDAMENTAÇÃO TEÓRICA ........................................................ 7
2.1 INTRODUÇÃO ................................................................................................... 7
2.2 PROBLEMA DO CAIXEIRO VIAJANTE ...................................................... 8
2.2.1 Introdução .......................................................................................................... 8
2.2.2 Formulação Matemática do Problema ......................................................... 10
2.3 APLICAÇÕES DO PROBLEMA DO CAIXEIRO VIAJANTE.................. 11
2.4 TÉCNICAS PARA A SOLUÇÃO DO PCV ................................................... 12
2.4.1 Sistema das formigas ...................................................................................... 12
2.4.2 Algoritmos Genéticos ...................................................................................... 17
2.4.3 Simulated Annealing ....................................................................................... 25
2.5 PROBLEMA DE APLICAÇÃO ...................................................................... 29
2.6 CENÁRIOS REAIS ........................................................................................... 30
3 PROJETO ............................................................................................. 32
3.1 PSEUDOCÓDIGOS .......................................................................................... 32
3.1.1 SISTEMA DAS FORMIGAS ........................................................................ 32
3.1.2 ALGORITMOS GENÉTICOS ...................................................................... 33
3.1.3 SIMULATED ANNEALING ......................................................................... 34
3.2 TESTES .......................................................................................................... 34
3.2.1 Estrutura dos testes ......................................................................................... 35
3.2.2 Domínio de aplicação dos testes ..................................................................... 37
3.2.3 Sistema computacional utilizado ................................................................... 39
v
3.2.4 Execução dos testes do Sistema das Formigas ............................................. 39
3.2.5 Execução dos testes de Algoritmos Genéticos .............................................. 45
3.2.6 Execução dos testes de Simulated Annealing ............................................... 52
3.2.7 Comparativo entre as metaheurísticas ......................................................... 55
4 CONCLUSÕES .................................................................................... 59
REFERÊNCIAS BIBLIOGRÁFICAS ................................................... 61
LISTA DE ABREVIATURAS
AG Algoritmo Genético AS Ant System, ver SF CX Cycle Crossover GA Genetic Algorithm, ver AG GNA Gerador de Números Aleatórios mPCV Problema dos Múltiplos Caixeiros Viajantes NN Nearest Neighbor NP-Hard Não-polinomial difícil OX Order Crossover PCI Placa de Circuito Impresso PCV Problema do Caixeiro Viajante PMX Partially Matched Crossover SA Simulated Annealing SF Sistema das Formigas TCC Trabalho de Conclusão de Curso TSP Traveling Salesman Problem, ver PCV UNIVALI Universidade do Vale do Itajaí
LISTA DE FIGURAS
Figura 1. Extremos locais e globais de uma função ............................................................................. 8
Figura 2. Resultados da resolução do PCV sobre território estadunidense. ......................................... 9
Figura 3. Turnê do cavalo (Knight’s Tour) ........................................................................................ 10
Figura 4. Disposição de cidades e suas possíveis conexões. .............................................................. 13
Figura 5. Resultados alcançados para as formigas 1 (a), 2 (b) e 3 (c). ............................................... 16
Figura 6. Proporção dos indivíduos da população na roleta .............................................................. 20
Figura 7. Cruzamento entre dois indivíduos com um ponto de corte. ............................................... 21
Figura 8. Tratamento de inconsistência com Partially Matched Crossover. ..................................... 22
Figura 9. Tratamento de inconsistência com Order Crossover. ........................................................ 22
Figura 10. Tratamento de inconsistência com Cycle Crossover. ....................................................... 23
Figura 11. Mutação por troca de genes. ............................................................................................. 24
Figura 12. Arranjo inicial de caminhos em primeira iteração, com energia �0. ............................... 26
Figura 13. Tentativa de solução melhor com novo rearranjo, com energia �1. ................................ 27
Figura 14. Em uma execução, o limite tende ao zero em decorrência do valor de ∆. ....................... 28
Figura 15. Exemplos de coordenadas de pontos em formato GERBER RS-274X ............................ 30
Figura 16. Pontos de furação para uma placa de circuito impresso qualquer. ................................... 31
Figura 17. Pseudocódigo para o sistema das formigas. ...................................................................... 32
Figura 18. Pseudocódigo para algoritmos genéticos. ......................................................................... 33
Figura 19. Pseudocódigo para simulated annealing. .......................................................................... 34
Figura 20. Formato de saída dos dados coletados em uma execução de simulated annealing .......... 36
Figura 21. Exemplo de placa de circuito impresso perfurada ............................................................ 37
Figura 22. Coordenadas GERBER para a placa de circuito impresso da Figura 21 .......................... 38
Figura 23. Mapa de furos composto a partir da leitura de um arquivo GERBER ............................. 38
Figura 24. Gráfico α x resultado obtido para sistema das formigas, com β=5, τ =1, ρ =0.99, K=30 e C = 30. ........................................................................................................................................ 40
Figura 25. Gráfico α x tempo decorrido para sistema das formigas, com β=5, τ =1, ρ =0.99, K=30 e C = 30. ........................................................................................................................................ 40
Figura 26. Gráfico quantidade de formigas x resultado para sistema das formigas, com α=1, β=5, τ=1, ρ =0.99 e C = 30. ................................................................................................................ 42
Figura 27. Gráfico quantidade de formigas x tempo decorrido para sistema das formigas, com α=1,
β=5, τ=1, ρ =0.99 e C = 30. ........................................................................................................ 42
Figura 28. Gráfico número de ciclos x resultado para sistema das formigas, com α=1, β=5, τ=1, ρ =0.99 e K = 70. ........................................................................................................................... 43
Figura 29. Gráfico quantidade de formigas x tempo decorrido para sistema das formigas, com α=1,
β=5, τ=1, ρ =0.99 e K = 70. ........................................................................................................ 44
Figura 30. Gráfico percentual de cruzamento x resultado para algoritmos genéticos, com M=0, G=200, P=100 e seleção elitista. ................................................................................................ 45
Figura 31. Gráfico percentual de cruzamento x tempo decorrido para algoritmos genéticos, com M=0, G=200, P=100 e seleção elitista. ...................................................................................... 46
Figura 32. Gráfico percentual de mutação x resultado obtido para algoritmos genéticos, com C=60, G=200, P=100 e seleção elitista. ................................................................................................ 47
Figura 33. Gráfico percentual de mutação x tempo decorrido para algoritmos genéticos, com C=60, G=200, P=100 e seleção elitista. ................................................................................................ 47
Figura 34. Gráfico tamanho da população x resultado obtido para algoritmos genéticos, com C=60, M=4, G=200 e seleção elitista. ................................................................................................... 48
Figura 35. Gráfico tamanho da população x tempo decorrido para algoritmos genéticos, com C=60, M=4, G=200 e seleção elitista. ................................................................................................... 49
Figura 36. Gráfico número de gerações x resultado obtido para algoritmos genéticos, com C=60, M=4, P=100 e seleção elitista. ................................................................................................... 50
Figura 37. Gráfico número de gerações x tempo decorrido para algoritmos genéticos, com C=60, M=4, P=100 e seleção elitista. ................................................................................................... 51
Figura 38. Gráfico temperatura x resultado para simulated annealing, com ∆=0.99........................ 53
Figura 39. Gráfico temperatura x tempo decorrido para simulated annealing, com ∆=0.99 ............ 53
Figura 40. Gráfico delta (∆) x resultado obtido para simulated annealing, com T = 4 ..................... 54
Figura 41. Gráfico delta (∆) x tempo decorrido para simulated annealing, com T = 4 ..................... 55
Figura 42. Visualização parcial do circuito impresso com furos eqüidistantes. ................................ 57
Figura 43. (a) Soluções obtidas: (a) sistema das formigas; (b) algoritmos genéticos; e (c) simulated
annealing. ................................................................................................................................... 57
LISTA DE QUADROS
Quadro 1. Marcos históricos na obtenção de resultados sobre o PCV ................................................. 9
Quadro 2. Disposição de formigas e suas probabilidades p calculadas. ............................................ 15
Quadro 3. Parâmetros de inicialização do algoritmo. ........................................................................ 15
Quadro 4. Seleção aleatória de indivíduos. ........................................................................................ 19
Quadro 5. Seleção de indivíduos por roleta. ...................................................................................... 19
Quadro 6. Seleção de indivíduos elitista. ........................................................................................... 20
Quadro 7. Tipos de valores relevantes para captura, referentes ao algoritmo simulated annealing .. 35
Quadro 8. Tipos de valores relevantes para captura, referentes a Algoritmos Genéticos .................. 36
Quadro 9. Tipos de valores relevantes para captura, referentes ao Sistema das Formigas ................ 36
Quadro 11. Hardware do ambiente de testes e desenvolvimento ....................................................... 39
Quadro 12. Software do ambiente de testes e desenvolvimento ........................................................ 39
Quadro 12. Comparativo entre sistema das formigas, algoritmos genéticos e simulated annealing. 56
LISTA DE TABELAS
Tabela 1. Resultados obtidos para primeira bateria de testes do sistema das formigas. .................... 41
Tabela 2. Resultados obtidos para a segunda execução do sistema das formigas ............................. 42
Tabela 3. Resultados obtidos para a terceira execução do sistema das formigas ............................... 44
Tabela 4. Resultado final para o sistema das formigas. ..................................................................... 44
Tabela 5. Resultados obtidos para primeiras execuções de Algoritmos Genéticos ........................... 46
Tabela 6. Resultados obtidos para o segundo teste de Algoritmos Genéticos ................................... 48
Tabela 7. Resultados obtidos para o terceiro teste de Algoritmos Genéticos .................................... 49
Tabela 8. Resultados obtidos para o quarto teste de algoritmos genéticos ........................................ 51
Tabela 9. Resultado final para algoritmos genéticos, com C=60%, M=4%, G=200 e P=100. .......... 51
Tabela 10. Resultados obtidos para primeiras execuções de simulated annealing ............................ 52
Tabela 11. Resultados obtidos para execuções posteriores de simulated annealing ......................... 54
Tabela 12. Resultado final para simulated annealing, com T=4 e delta=0.99 ................................... 55
LISTA DE EQUAÇÕES
Equação 1 . ......................................................................................................................................... 11
Equação 2 . ......................................................................................................................................... 11
Equação 3 . ......................................................................................................................................... 14
Equação 4 . ......................................................................................................................................... 14
Equação 5 . ......................................................................................................................................... 14
Equação 6 . ......................................................................................................................................... 16
Equação 8 . ......................................................................................................................................... 27
Equação 9 . ......................................................................................................................................... 27
Equação 10 ......................................................................................................................................... 27
RESUMO
CACCIARI, Gregório. Análise comparativa do desempenho de metaheurísticas aplicadas à resolução de uma aplicação real envolvendo o problema do caixeiro viajante. São José, 2007. 50 f. Trabalho de Conclusão de Curso (Graduação em Ciência da Computação)–Centro de Ciências Tecnológicas da Terra e do Mar, Universidade do Vale do Itajaí, São José, 2007.
O problema do caixeiro viajante (PCV) é transposto para diversas situações reais que envolvem agendamentos, roteirizações e minimização de caminhos. Uma das situações reais diretamente relacionadas ao PCV é o seqüenciamento de furos em um processo de fabricação de placas de circuito impresso. A redução do tempo de passeio da broca perfuratriz é conseqüência direta da qualidade da solução de menor caminho encontrada. Um dos objetivos deste trabalho é resolver este problema de minimização de custos de fabricação por meio de três metaheurísticas: algoritmos genéticos, sistema das formigas e simulated annealing. As metaheurísticas são facilmente adaptáveis e seu uso é relativamente simples. Com base na implementação destes métodos, serão realizados testes e gerados resultados. Com a análise destes resultados de testes, outro objetivo consiste em discorrer sobre o desempenho destas técnicas de otimização. É esperado resultado tal que leve à conclusão sobre qual método tem melhor desempenho na resolução deste problema, analisado sob diversos pontos de vista.
Palavras-chave: Problema do Caixeiro Viajante. Sistema das Formigas. Algoritmos Genéticos.
ABSTRACT
The traveling salesman problem (TSP) is projected to a number of real situations that involve
scheduling, routing and path minimization. One of these real situations directly related to the TSP
is the drilling sequencing in printed circuit boards production. The time reduction of the total
movement of the plotting drill is directly bound to the quality of minimized path found. An objective
of this work is to solve this minimization problem of production costs by applying three
metaheuristics: genetic algorithms, ant system and simulated annealing. Metaheuristics are easily
adaptable and the use of them is relatively simple. Based on the implementation of these methods,
tests are going to be executed and a package of results will be presented. With these results
acquired, objective turns to discuss on the performance of these optimization techniques. Results
expected are such that it will be leaded to a conclusion on which method has better performance
when solving this problem, analyzed under different points of view.
Keywords: Traveling Salesman Problem. Genetic Algorithms. Ant System.
1 INTRODUÇÃO
São numerosos os exemplos de empresas cuja área de atuação está ligada a atividades como
distribuição, transportes, entregas, despachos, envios e afins. Todas estas tarefas podem ser
consideradas o cerne do funcionamento destas empresas. Se uma empresa de distribuição de
bebidas tem deficiências no setor financeiro ou na infra-estrutura interna em itens como limpeza,
organização ou quadro de horários há certa quantidade de prejuízo na qualidade final do serviço.
Porém, as dificuldades podem estar em lugares relativamente críticos no fluxo de trabalho da
instituição.
A supracitada deficiência poderia estar localizada justamente no setor responsável pela
distribuição direta do produto. Uma falha no setor de manutenção de caminhões como uma demora
excessiva em realizar serviços de mecânica, poderia causar indisponibilidade de unidades
destinadas à distribuição e entrega. Deficiências no setor responsável pelo planejamento das rotas
causariam, por exemplo, um aumento desnecessário da quilometragem percorrida por cada unidade
de entrega.
Um desperdício dessa ordem, em um setor pelo qual a empresa baseia a sua reputação e,
logicamente, as suas apostas de retorno econômico, causa, certamente, uma perda muito grande na
eficiência do seu serviço.
Problemas de definição de rotas são críticos em quase todas as empresas com maior
significância nos seus mercados. Empresas cujo volume de distribuição é pequeno têm problemas
pequenos para resolver, enquanto as empresas de maior porte têm e buscam resolver problemas de
maior magnitude.
Esse tipo de problema associado à definição de rotas pode ser projetado em vários cenários.
No cenário da empresa pequena, por exemplo, uma panificadora, com poucos trabalhadores e,
supondo, apenas um entregador de pães, o problema é muito diminuto. Na maioria destes casos o
entregador não conhece rotas, endereços, códigos de entrega ou sistemas similares. Ele conhece
cada um dos moradores que são seus clientes e isso basta. A convivência com o serviço e a
improvável alteração brusca do quadro de clientes faz com que sua lista de entrega seja facilmente
administrável.
Transportando este problema para um contexto maior, nota-se que a importância da correta
definição de rotas aumenta significativamente, pois pequenas distorções de soluções podem gerar
grandes quantidades de gastos desnecessários.
2
Ao tomar como exemplo uma empresa de transportes aéreos, amplifica-se a problemática ao
nível de que, sem ajuda computacional, seja impraticável determinar a melhor seqüência, por
exemplo, de aeroportos a visitar. O cenário fica pior ao se considerar mais de um estado ou,
impossível de se resolver em tempo viável ao estender o problema para cobrir um país em sua
totalidade. No cenário destas empresas, realizar um planejamento de rotas errôneo pode acarretar
em centenas de milhares de quilômetros de desperdício anual de combustível.
Adotando este tipo de cenário, têm-se como itens a serem considerados distância entre
aeroportos, número de aeroportos, início e fim do percurso e retorno ou não ao aeroporto de origem.
Considera-se também que, uma mudança em um único aeroporto pode causar uma completa
desconfiguração de rotas. Uma ausência de compromissos naquele local em um dia específico pode
fazer com que o aeroporto que normalmente seria o subseqüente passível de visita, torne-se um
grande desperdício de recursos. Há de se considerar também que uma aeronave tenha a necessidade
de terminar o seu dia em um aeroporto determinado para fins de manutenção, por exemplo.
1.1 PROBLEMATIZAÇÃO
1.1.1 Formulação do Problema
As situações descritas na introdução são caracterizadas como problemas de roteirização. Em
particular, um problema clássico é o Traveling Salesman Problem (TSP), ou Problema do Caixeiro
Viajante (PCV). O PCV, de acordo com Schrijver (2000) e Gutin e Punnen (2003), é caracterizado
por: dado um número n de cidades e suas distâncias intermediárias, deve-se encontrar uma rota que
passe por todas as cidades exatamente uma única vez. Ao considerar-se as cidades como nós e as
distâncias entre elas como arcos, pode-se transplantar este problema para aeroportos, ligações
elétricas ou furações em uma placa de circuito impresso.
No ponto de vista do usuário, ou o interessado na resolução do problema, o TSP encontra-se
resolvido quando, em um tempo aceitável, é encontrada uma solução ótima ou, na grande maioria
dos casos, muito próxima da ótima. Também é necessário que a solução venha a convergir para
valores próximos do ótimo e não divergir.
Precisamente, o problema a ser tratado neste trabalho é comparar o desempenho de execução
de diferentes métodos para a resolução de um problema baseado no PCV. A aplicação deste PCV é
3
a roteirização necessária para que uma máquina que realize furos em uma placa de circuito
impresso possa fazer o menor caminho possível, com o menor tempo possível.
1.1.2 Solução Proposta
Para resolver problemas deste tipo, pode-se fazer uso de técnicas computacionais
denominadas metaheurísticas. Esse tipo de técnica é caracterizado por, dado um determinado tipo
de problema, convergir rapidamente para um resultado aceitável. As metaheurísticas são facilmente
adaptáveis e seu uso é relativamente simples. Por causa disso, podem ser otimizadas para cada
problema com diversos tipos de ajuste.
É comum utilizar apenas um tipo de algoritmo para resolver um PCV. Técnicas como
Algoritmos Genéticos (GOLDBERG, 1989; LUGER, 2004; SENGOKU & YOSHIHARA, 1999;
CHAMBERS, 1995) são utilizados em diversos tipos de situações, bem como Colônia de Formigas
(DORIGO, 1996), simulated annealing (KIRKPATRICK, GELATT & VECCHI, 1983) ou Clarke-
Wright (CLARKE & WRIGHT, 1964)
Propõe-se, aqui, a análise de técnicas utilizadas anteriormente em outros trabalhos para a
solução do problema. Com a seleção dos algoritmos para modelagem e implementação dos
mesmos, será realizada uma bateria de testes. A partir daí, será feito o estudo sobre os resultados e a
formulação de considerações finais sobre os valores de desempenho alcançados.
A solução proposta envolve modelagem e implementação das técnicas abordadas. Com o
software desenvolvido e implementado em C++, o trabalho é de realizar testes com os algoritmos
selecionados de maneira tal que produzam resultados facilmente comparáveis entre si. A mesma
métrica, então, será adotada como saída padrão das execuções destes algoritmos.
1.2 OBJETIVOS
1.2.1 Objetivo Geral
O objetivo geral deste projeto é realizar uma análise comparativa de desempenho de três
metaheurísticas na resolução de um problema real de roteirização.
4
1.2.2 Objetivos Específicos
O trabalho consiste em várias etapas, cada uma a ser trabalhada e detalhada de maneira tal
que conduza o experimento para sua validação científica. Os objetivos específicos deste projeto de
pesquisa são descritos assim:
• Pesquisar e analisar trabalhos anteriores que abordam problemas clássicos de TSP;
• Estudar os tipos de métodos e algoritmos mais utilizados na resolução de problemas de
roteirização;
• Definir um problema relacionado para ser abordado neste estudo;
• Elencar as técnicas de metaheurísticas que serão utilizadas;
• Modelar os algoritmos selecionados para a resolução do problema;
• Implementar computacionalmente os algoritmos; e
• Realizar os testes computacionais com os algoritmos implementados.
1.3 METODOLOGIA
Etapa de pesquisa
Este trabalho é de caráter técnico, exploratório e não-dissertativo. Como relativo à área de
ciências exatas, são apresentados aqui itens como modelos, tabelas, imagens, diagramas e similares.
A interpretação deste documento não deve ser feita de maneira subjetiva, pois o método é de
demonstração científica de conceitos pré-existentes.
Fundamentar este trabalho envolve pesquisa bibliográfica em diversas fontes, tanto em
bibliotecas quanto em dissertações, teses, artigos e demais textos encontrados na internet. A procura
de obras relativas ao assunto partirá das aplicações para os fundamentos, permitindo visualizar
também, como os autores construíram suas soluções. A partir dos trabalhos lidos, será iniciada
seleção dos tipos de algoritmo que despertaram mais interesse do autor. Elencados estes, serão
escolhidos os autores que melhor abordaram estes assuntos, não necessariamente aplicando-os, mas
fundamentando e conduzindo a novas pesquisas sobre seus usos na prática.
5
Estes algoritmos, então, serão implementados na linguagem C++, compondo,
posteriormente, um software de demonstração de execução de cada um deles. A principal função
deste é gerar resultados válidos e passíveis de análise para comparações do mesmo algoritmo na
resolução de problemas diferentes e de algoritmos diferentes para a resolução do mesmo problema.
Etapa de desenvolvimento
Esta etapa visa transformar o modelo resultante da etapa anterior em um código-executável
experimental que seja capaz de realizar os testes propostos. Além de realizar os testes, o software
desenvolvido deve produzir como saída informações que sejam facilmente usadas em modelos
estatísticos.
Etapa de validação
Nesta etapa, foram realizados diversos testes de execução do código e a comparação entre
os resultados obtidos. Cada método terá suas propriedades comparadas com os outros métodos,
como por exemplo, os resultados de suas iterações uma a uma, as suas velocidades de convergência
e demais aspectos. Estas propriedades também serão rotuladas como vantagens e desvantagens
relativas.
A atividade de realização de testes consiste na execução dos softwares construídos. Tendo o
ambiente e os valores de entrada preparados, os testes foram realizados diversas vezes com os
diferentes métodos preparados. O software registrará os valores obtidos na execução para posterior
análise.
Após, houve a reunião das informações extraídas e preparação de um relatório de execução
do software com os critérios que forem julgados pertinentes. Uma documentação com os valores
numéricos obtidos com a execução dos testes computacionais será apresentada.
Também será apresentada, ao final dos testes, uma documentação com análise comparativa
de desempenho, contendo gráficos, planilhas e outros recursos visuais que ajudem o leitor no
entendimento.
Etapa de documentação
Esta etapa consiste em obter como resultado toda a documentação referente ao processo de
pesquisa científica, abordando desde a etapa inicial de descrição do problema até a etapa final de
6
validação. A documentação deve ter qualidade tal que seja possível que outros pesquisadores a
usem, tanto para realizar o mesmo procedimento quanto para referência e estudos.
1.4 ESTRUTURA DO TRABALHO
Este documento está dividido em quatro capítulos, os quais elaborados de tal forma que seja
possível abreviar seus conteúdos como exposto a seguir.
Uma introdução, apresentada no Capítulo 1, trouxe uma visão ampla do trabalho,
contextualizando e agregando relevante necessidade científica na aplicação dos problemas citados.
De aviões a entregas de pães, nota-se a possibilidade de usar métodos computacionais para resolver
tais problemas.
No Capítulo 2, será apresentada a fundamentação teórica deste trabalho. Serão discutidos os
primeiros conceitos de algoritmos e resolução de problemas, assim como observações sobre
otimizações e inteligência artificial. O problema do caixeiro viajante (PCV) será definido e
encaixado em situações e aplicações existentes. Finalmente, serão enumeradas técnicas de
algoritmos para resolver este tipo de problema. Também é apresentado para o leitor um problema de
aplicação. Uma das aplicações recorrentes do PCV é o de agendar máquinas de furação de placas de
circuito impresso (PCI) para que façam seu trabalho com no menor tempo possível. Um texto mais
elaborado consta, indicando exemplos e detalhes mais aprofundados sobre o problema.
O terceiro capítulo apresenta o modelo proposto de um código-fonte, suas características e
que resultados deve emitir para que seja realizada a análise comparativa em si. Ainda neste mesmo
capítulo, constará o cronograma de atividades para o TCC II, que, em sua natureza, abrange a
implementação em si e os já citados testes.
Finalmente, no quarto e último capítulo, serão apresentadas as conclusões finais, onde são
abordados os resultados de toda a execução dos testes e demais informações pertinentes ao
entendimento do desenvolvimento científico deste trabalho.
7
2 FUNDAMENTAÇÃO TEÓRICA
2.1 INTRODUÇÃO
A ciência da computação, como outras, tornou-se ubíqua e pervasiva. Profissionais de todas
as áreas usam as facilidades que ela provê para resolver problemas de diversas grandezas.
Computadores e suas programações são importantes em tarefas que demandam um grande número
de cálculos, por exemplo, para resolver problemas. Problemas mais simples, como tarefas de
repetição, também teriam imprecisão e significativo tempo de atraso se realizados por humanos.
Nos sistemas computacionais, esta seqüência de passos é conhecida por algoritmo, como
afirmam Cormen et al. (2001):
Informalmente, um algoritmo é um procedimento bem definido que toma um ou mais valores como entrada e produz um ou mais valores como saída. Um algoritmo é, portanto, uma seqüencia de passos que transforma entrada em saída. Podemos ver um algoritmo também como uma ferramenta para resolver um problema computacional bem definido.
Se o algoritmo é um procedimento computacional específico para a resolução de um
problema, é aceitável que este é tão complexo quanto o problema. Se o problema for simples, o
algoritmo é simples. Se o problema é complicado, o algoritmo assim o é.
Em problemas não-polinomiais difíceis (NP-hard), o tempo para que se chegue a uma
solução exata por meio de métodos determinísticos é extenso demais para que estes sejam
praticados. Para o problema do caixeiro viajante, por exemplo, a complexidade cresce
exponencialmente de acordo com o número de pontos a serem percorridos. (CUNHA, BONASSER
& ABRAHÃO, 2002)
Este tipo de situação envolve problemas de máximo e mínimo, ou seja, de otimização. No
campo da matemática e área de pesquisa operacional, os pontos de máximo e mínimo, presentes no
domínio de uma função, podem ser classificados como locais e globais. Os mínimos e máximos
locais (Figura 1, pontos L1 e L2) detém os extremos dos valores em um dado intervalo, enquanto os
globais (Figura 1, pontos G1 e G2) são, absolutamente, os extremos em todo o domínio da função.
Figura 1. Extremos locais e globais de uma função
O uso de algoritmos em problemas de pesquisa operacional é combinado com métodos
científicos como estatística ou teoria dos grafos. Tal combi
de métodos estocásticos, se chegue a soluções muito próximas de um teórico valor ideal. Métodos
estocásticos são aqueles cuja execução não é determinística, pois seu c
diretamente ligado a valores gerados aleatoriamente.
2.2 PROBLEMA DO
2.2.1 Introdução
O problema do caixeiro viajante
de cidades, visitar cada uma destas cidades apenas uma
maneira que este caminho seja o menor possível. (BRYANT
O PCV, em sua forma padrão, apresenta custos simétricos entre pontos. Ou seja, a distância
(custo) de se viajar da cidade
cidade C1 (GATECH, 2007)
Dantzig, Fulkerson e Johnson foram os primeiros a resolver computacionalmente o PCV, em
1954 (SCHRIJVER, 2000; REINHELT, 1994). Os pesquisadores na ocasião usaram o território
norte-americano para realizar os cálculos. O resultado
0
2
4
6
8
10
12
0
8
. Extremos locais e globais de uma função
O uso de algoritmos em problemas de pesquisa operacional é combinado com métodos
como estatística ou teoria dos grafos. Tal combinação de técnicas permite que,
de métodos estocásticos, se chegue a soluções muito próximas de um teórico valor ideal. Métodos
estocásticos são aqueles cuja execução não é determinística, pois seu c
diretamente ligado a valores gerados aleatoriamente.
O CAIXEIRO VIAJANTE
O problema do caixeiro viajante (PCV) consiste em encontrar um roteiro em um número tal
, visitar cada uma destas cidades apenas uma vez e retornar à cidade de origem de
ue este caminho seja o menor possível. (BRYANT & BENJAMIN, 2000)
O PCV, em sua forma padrão, apresenta custos simétricos entre pontos. Ou seja, a distância
(custo) de se viajar da cidade C1 para a cidade C2 é a mesma de se viajar da cidade
Dantzig, Fulkerson e Johnson foram os primeiros a resolver computacionalmente o PCV, em
(SCHRIJVER, 2000; REINHELT, 1994). Os pesquisadores na ocasião usaram o território
ano para realizar os cálculos. O resultado é ilustrado na Figura
10 20 30 40
L1
L2
G1
G2
O uso de algoritmos em problemas de pesquisa operacional é combinado com métodos
nação de técnicas permite que, por meio
de métodos estocásticos, se chegue a soluções muito próximas de um teórico valor ideal. Métodos
estocásticos são aqueles cuja execução não é determinística, pois seu comportamento está
consiste em encontrar um roteiro em um número tal
vez e retornar à cidade de origem de
BENJAMIN, 2000)
O PCV, em sua forma padrão, apresenta custos simétricos entre pontos. Ou seja, a distância
de se viajar da cidade C2 para a
Dantzig, Fulkerson e Johnson foram os primeiros a resolver computacionalmente o PCV, em
(SCHRIJVER, 2000; REINHELT, 1994). Os pesquisadores na ocasião usaram o território
Figura 2.
50
9
Figura 2. Resultados da resolução do PCV sobre território estadunidense. Fonte: (GATECH, 2007)
Um histórico da evolução das soluções do PCV pode ser visto no Quadro 1. A progressão
dos resultados não se deu apenas em decorrência do aumento do poder de cálculo dos sistemas
computacionais neste período de tempo, mas também pela otimização dos algoritmos (GATECH,
2007).
Quadro 1. Marcos históricos na obtenção de resultados sobre o PCV
Ano Pesquisador Pontos Contexto 1954 Dantzig, Fulkerson, Johnson 49 Cidades (Estados Unidos). 1971 Held, Karp. 64 Pontos aleatórios. 1975 Camerini, Fratta, Maffioli 67 Pontos aleatórios. 1977 Grötschel 120 Cidades (Alemanha). 1980 Crowder, Padberg 318 Furação em PCI. 1987 Padberg, Rinaldi 532 Cidades (Estados Unidos). 1987 Grötschel , Holland 666 Cidades (globo) 1987 Padberg, Rinaldi 2392 Furação em PCI. 1994 Applegate, Bixby, Chvátal, Cook 7397 Furação em PCI. 1998 Applegate, Bixby, Chvátal, Cook 13509 Cidades (Estados Unidos) 2001 Applegate, Bixby, Chvátal, Cook 15112 Cidades (Alemanha) 2004 Applegate, Bixby, Chvátal, Cook , Helsgaum 24978 Cidades (Suécia) Fonte: GATECH (2007).
Resultados mais recentes incluem roteirização em praticamente países inteiros. No ano de
2004, um novo marco foi alcançado ao adaptar o mapa da Suécia ao PCV (APPLEGATE et al.
2006 apud GATECH, 2007). No caso, o país conta com quase 25,000 cidades.
10
Porém, a primeira ocorrência deste tipo de problema relatada partiu de Euler, em 1759.
(BRYANT & BENJAMIN, 2000) Especificamente, este consistia em mover uma peça de xadrez
(um cavalo) para todas as posições exatamente uma vez (Figura 3). Os números representam a
ordem da movimentação da peça.
42 57 44 9 40 21 46 7
55 10 41 58 45 8 39 20
12 43 56 61 22 59 6 47
63 54 11 30 25 28 19 38
32 13 62 27 60 23 48 5
53 64 31 24 29 26 37 18
14 33 2 51 16 35 4 49
1 52 15 34 3 50 17 36
Figura 3. Turnê do cavalo (Knight’s Tour)
Fonte: Adaptado de Applegate, et al. (APPLEGATE, 2006)
2.2.2 Formulação Matemática do Problema
Em um grafo G(N,A) qualquer, dado o seu conjunto de nós N e arcos A, considerando-se que
a matriz de custo C representa os menores custos possíveis entre os nós N e que as distâncias entre ��� são representadas por +∞ quando i = j e, também, que os valores da matriz de rotas ��� assuma
valores zero (0) para ausência de rota e um (1) para presença de rota naquele arco ���, a solução é
dada pelo menor somatório de produtos entre os elementos ��� e ���, com intervalo de 1 até n
cidades. (BODIN, et al, 1983 apud NUNES, 1998). O problema do caixeiro viajante pode ser
apresentado com a formulação conforme a Equação 1
11
Minimizar
������ ���
���
s.a.:
������ 1 �� 1,2, …�� ������ 1 �� 1,2, … �� � ����� � � ��� 0 �� ��� 1 �i, j 1,2, . . . , n�
Equação 1
O conjunto S (Equação 2) compõe uma restrição adicional, onde não é possível haver sub-
rotas. Ou seja, não é permitido uma rota {A,B,C,D} e outra {F,G,H,I} em um conjunto de cidades X
qualquer, onde X = {A,B,C,D,E,F,G,H,I}. Tampouco são permitidos conjuntos vazios.
� ! �����: �����# $ |&| ' 1��# para todo subconjunto não vazio de & !2,3, … n77
Equação 2
2.3 APLICAÇÕES DO PROBLEMA DO CAIXEIRO VIAJANTE
Aplicações diversas podem ser vistas como um PCV. Foulds (1992 apud CHAMBERS,
1995) apresenta um problema recorrente na indústria farmacêutica, no qual o mesmo maquinário é
utilizado para fabricar diferentes tipos de drogas. No caso, a droga é fabricada uma por vez. Quando
a droga d� chega ao final da linha de produção, a droga d� está no início. O problema é que após o
processamento de cada etapa, o equipamento precisa ser limpo. Este tempo de limpeza varia com a
droga processada. Se os tempos de limpeza são diferentes e os equipamentos tornam-se disponíveis
para uso em tempos variáveis, qual a melhor rota de equipamentos que a nova droga (droga d�) deve seguir para que haja o mínimo de tempo de limpeza até o início do processamento da droga
subseqüente?
12
Reinhelt (1994) descreve numerosos exemplos. Aplicações do PCV podem ser vistas em
controle de robôs em processos de fabricação quando realizam diferentes tarefas (tais quais como
perfurações, cortes, planificações) com diferentes parâmetros. Outro problema é o de roteirizarão de
veículos, onde o melhor caminho tem que ser o menor possível e o que não exceda a carga máxima
permissível do caminhão. Um outro exemplo é o de pesquisa em sítios arqueológicos. Em um
conjunto de sepulturas, há de se determinar quais pessoas foram enterradas antes e depois, baseado
nos pertences de cada um. Os pertences (mais evoluídos ou mais simples) definem a distância de
tempo entre os sepultamentos daquelas pessoas.
Reinhelt também menciona o uso do PCV em fabricação de placas de circuito impresso. O
caminho que a máquina de furação tem que percorrer para realizar todos os furos na placa tem que
ser o menor possível, haja vista a limitação de velocidade deste equipamento.
2.4 TÉCNICAS PARA A SOLUÇÃO DO PCV
São diversas as técnicas utilizadas para a solução de um PCV, dentre as quais, é possível
elencar os algoritmos genéticos (AG), sistema das formigas (SF) e simulated annealing (SA).
Outros métodos são utilizados para resolver o mesmo tipo de problema, porém, o foco deste
trabalho é nos três supracitados.
2.4.1 Sistema das formigas
O sistema das formigas (SF, ou AS - Ant System) traz uma abordagem copiada da natureza
para que seja possível resolver problemas de otimização, como é o caso do PCV. (DORIGO, 1996)
Na natureza, algumas formigas são quase cegas e tem pouca capacidade de memória.
Mesmo assim, conseguem determinar e manter caminhos ótimos entre o ninho e a comida. As
formigas adaptam-se ao meio de tal maneira que, momento após momento, mesmo se o meio tiver
mudado, elas ainda assim encontram um novo caminho para a comida.
O mecanismo de manter o caminho é criado pelas formigas com um depósito de
feromônios. Certos tipos de formigas deixam um rastro desse hormônio quando do seu caminhar na
procura pelo alimento.
Em um momento inicial, as formigas que saem do ninho não têm um trilho de feromônios
evidente para seguir, fato este que acarreta em aleatoriedade na escolha do caminho. Quando as
13
formigas encontram este alimento (o próximo no, no PCV), elas retornam pelo caminho que contém
mais feromônio do que os outros. Ou seja, retornam pelos seus próprios caminhos traçados (contém
mais feromônio do que outros caminhos que não foram percorridos). No seu retorno, as formigas
reforçam o trilho com mais depósitos do hormônio, deixando-o ainda mais evidente.
A próxima formiga (ou a mesma) na escolha do caminho para uma nova busca de alimento
agora realiza uma escolha tendenciosa para percorrer o terreno. O caminho com mais feromônios é
percorrido. O processo continua para várias formigas que saem do ninho, o que mantém o caminho
ativo.
Porém, o caminho pode não ser o melhor. Outro grupo de formigas pode ter encontrado um
caminho alternativo para o alimento. Se este for menor, a razão feromônio/distância é mais
vantajosa. Este caminho novo, então, passa a ter maiores chances de ser escolhido do que o anterior.
Estrutura e execução do algoritmo
A modelagem computacional deste ambiente se dá por meio de formigas artificiais. Alguns
comportamentos das formigas reais são imitados. Demais controles são implementados, como pesos
para distância e feromônio. Esta implementação refere-se ao método original do Ant System. Outras
melhorias são possíveis, com diversas variações deste algoritmo. Porém, o foco deste trabalho
consiste apenas em apresentar o sistema original. Um tratamento matemático para a persistência de
feromônios é também implementado, como descrito adiante.
Para um conjunto de arcos A que ligam pontos de um conjunto P, estes em um mapa, têm-
se, então, uma disposição de cidades. Cada um dos arcos que vão de uma cidade à outra têm um
custo associado. Na Figura 4, o arco �89 tem custo de valor 12 enquanto �:; tem valor 13, e assim
por diante. Nota-se que há simetria entre os pontos. O arco �<= tem o mesmo custo do arco �=<.
Figura 4. Disposição de cidades e suas possíveis conexões.
14
As formigas artificiais são, inicialmente, distribuídas em pontos aleatórios do mapa de
pontos. Para cada formiga, então, há uma regra de transição. Esta regra define a probabilidade de
escolha das formigas em relação a cada arco possível de ser escolhido. Na Equação 3, >�� representa
a atratividade do arco. O arco ��� tem este valor calculado com base no valor inverso de seu custo
(?���, como representado na Equação 4.
@��A BCDCE FG��HI . F>��HJ∑ LG�MNIM�OP . L>�MNJ se � � QA���0 caso contrário
S
Equação 3
>�� 1?��
Equação 4
O conjunto J é composto pelas cidades ainda não visitadas. Há ainda dois parâmetros de
pesos, α e β que evidenciam o quanto são significantes os valores de G�� (a quantidade de feromônio
em um arco ���) e >�� (o valor de atratividade em um arco ���), respectivamente.
A cada transição efetuada pelas formigas, o conjunto J relativo àquela formiga é diminuído
em um elemento até que, ao se esgotarem todas as possibilidades de transição, a formiga volte para
a sua cidade de origem. Após todas as formigas completarem as suas rotas pelo grafo, deve-se
realizar uma atualização global.
A atualização global consiste em calcular os efeitos desta natureza artificial, a inserção de
feromônios por cada formiga que passou em um arco ��� e a evaporação de feromônios em todos
os arcos. A inserção e evaporação são aplicadas no mesmo cálculo, como descrito nas equações 5 e
6.
G�� TG�� U ∆G��
∆G�� ∆G��AVA��
Equação 5
Equação 6
15
∆G��A BDE 1WA , se a k ' ésima formiga utilizar o arco ��� em sua rota.0 , caso contrário.
S
A variável T é um coeficiente de manutenção do feromônio, este sendo o complemento do
coeficiente de evaporação (exemplo: evaporação de 2% implica em T 0,98). O acréscimo de
feromônio se dá pelo operando ∆G��. O número de formigas é representado por m. Se a formiga ^
utilizar o arco ���, em sua rota, aquela recebe um incremento de ∆G��A , onde este valor é a razão
entre o feromônio depositado pela formiga ^ e o custo da rota. Caso o arco não seja utilizado pela
formiga em sua rota, aquele arco não recebe incremento de feromônio algum.
Cada formiga possui um índice de cidades visitadas. Este índice é chamado de lista tabu e é
modificado ao final de cada atualização global com os valores das cidades _ percorridas. No
próximo ciclo, cada formiga consulta sua lista tabu e retira das suas possibilidades de transição os
nós presentes nela.
Para um exemplo de resolução do problema apresentado no grafo explicitado na Figura 4,
insere-se três (3) formigas de acordo com o disposto no Quadro 2. Os parâmetros de inicialização
do algoritmo são os dispostos no Quadro 3.
Quadro 2. Disposição de formigas e suas probabilidades p calculadas.
Formiga (`� Partida p1 p2 p3 p4 1 _8 @<== 0,18 @<a= 0,22 @<b= 0,24 @<c= 0,36 2 _d @b<= 0,24 @b== 0,26 @ba= 0,20 @bc= 0,30 3 _: @c<= 0,32 @c== 0,27 @ca= 0,14 @cb= 0,27
Quadro 3. Parâmetros de inicialização do algoritmo.
Parâmetro Valor Importância de feromônio (α) 2,00 Importância de custo (β) 1,00 Feromônio inicial (τ) 1,00 Coeficiente de evaporação (ρ) 0,99
O cálculo efetuado, segundo a Equação 3 é assim realizado para todos os arcos possíveis a
serem percorridos a partir de um ponto. Para a formiga k=1, a substituição de valores na equação
pode ser ilustrada de acordo com a Equação 7.
16
O mesmo é repetido para cada uma das formigas. A Figura 5 representa o resultado
alcançado para o cálculo de probabilidades.
@<= e L1Nf. F1 12g H�L1Nf. F1 12g H� U L1Nf. F1 10g H� U L1Nf. F1 9g H� U L1Nf,. F1 6g H� 0,18S
@<a e L1Nf. F1 10g H�L1Nf. F1 12g H� U L1Nf. F1 10g H� U L1Nf. F1 9g H� U L1Nf,. F1 6g H� 0,22S
@<b e L1Nf. F1 9g H�L1Nf. F1 12g H� U L1Nf. F1 10g H� U L1Nf. F1 9g H� U L1Nf,. F1 6g H� 0,24S
@<c e L1Nf. F1 6g H�L1Nf. F1 12g H� U L1Nf. F1 10g H� U L1Nf. F1 9g H� U L1Nf,. F1 6g H� 0,36S
Equação 7
(a)
(b)
(c)
Figura 5. Resultados alcançados para as formigas 1 (a), 2 (b) e 3 (c).
p1;
18,00%
p2;
22,00%p3;
24,00%
p4;
36,00%
p1;
24,00%
p2;
26,00%
p3;
20,00%
p4;
30,00%
p1;
32,00%
p2;
27,00%
p3;
14,00%
p4;
27,00%
17
Supondo que o resultado de um gerador de números aleatórios (GNA) desse como saída
0,514 para as formiga 1, 0,224 para a formiga 2 e 0,901 para a formiga 3, tem-se escolhidos para a
transição, os arcos �<a, �b< e �cb, respectivamente. Assim, cada formiga tem sua lista tabu
acrescentada do índice da cidade escolhida. A atualização do feromônio é realizada e um novo ciclo
de transição se inicia. Quando do final dos ciclos de transição, ou seja, quando todas as formigas
completarem suas voltas pelo grafo, a primeira iteração está completa.
À medida que o algoritmo prossegue em sua execução, os depósitos de feromônio vão
sofrendo alterações. Os caminhos percorridos por mais formigas acumulam mais feromônio (pois
um mesmo arco pode ser atualizado por n formigas) e este acaba ficando mais significativo nos
cálculos de probabilidade. É justamente na relevância dos caminhos que se dá a otimização.
O algoritmo pode ter estabelecidos diversos critérios de parada. Tais quais razão de
convergência, limite máximo de iterações ou simplesmente tempo absoluto (processar por n
minutos).
2.4.2 Algoritmos Genéticos
Algoritmos genéticos são algoritmos de procura baseados nos ciclos de seleção natural e
genética. Consiste em uma técnica de usada para encontrar soluções aproximadas em problemas de
otimização (máximo e mínimo) e procura.
Estrutura de dados
O método de algoritmos genéticos está baseado em estruturas existentes na natureza.
Indivíduos e suas capacidades, cromossomos e reproduções são utilizados neste método como base
da execução em direção à solução. Holland (HOLLAND, 1975) criou um método eficaz e com
baixo custo computacional para resolver estes problemas. Cada iteração está baseada em algoritmos
simples (se, logicamente, for utilizado o método original ou com poucas alterações).
O algoritmo genético funciona com a manipulação de valores em certos tipos de estrutura,
estas assim enumeradas (CHAMBERS, 1995):
Um indivíduo é uma solução. Se há 10 soluções diferentes para um problema, então há 10
indivíduos. Um conjunto de indivíduos forma uma população. Computacionalmente uma
população pode ter apenas um indivíduo.
18
Cromossomo é a informação que constrói uma solução. Os cromossomos de um indivíduo
serão lidos por meio de uma função. O que retornará o seu grau de aptidão em relação ao problema.
Cada cromossomo é composto de um ou mais genes. Um gene, como elemento integrante
do cromossomo, carrega a unidade mínima de informação de um problema. Se o problema trabalha
com numeração binária, cada gene representa um bit. Se o problema trabalha com cores, cada gene
representa um número inteiro ou hexadecimal que represente uma cor. Ainda, em se tratando do
PCV, cada gene pode representar um índice de uma cidade.
A utilização dos valores dos genes na composição total do valor do cromossomo faz com
que o indivíduo portador tenha uma aptidão defronte ao contexto do problema. Esta aptidão é
chamada de fitness. O fitness representa numericamente a qualidade daquela solução e seu valor é
decorrência de cálculo exercido sobre o cromossomo. Este cálculo é denominado função objetivo.
Há problemas os quais é suficiente que cada cromossomo tenha apenas uma grandeza, o que
acarreta um fenótipo simples. Como exemplo, pode-se requerer apenas que o fator “temperatura”
determine a qualidade da solução.
Entretanto, há problemas que têm na sua solução mais de um parâmetro a ser considerado.
Projetando o uso de algoritmos genéticos em um sistema de arrefecimento de motores, pode-se
tomar como exemplo que a solução mais adequada é aquela que contiver menos do fator
“temperatura” e mais do fator “viscosidade”. O fitness desta solução é baseado nos cromossomo
composto pelos valores de “temperatura” e “viscosidade”.
Operadores genéticos
Chegar a uma solução depende de manipular as estruturas de genes, cromossomos e
indivíduos de maneira tal que se permita a evolução dos resultados no decorrer do tempo. Estas
iterações são dadas a cada grupo de operações sobre os indivíduos de uma população, resultando em
uma nova geração (um novo conjunto de indivíduos). Tais operadores são denominados seleção,
cruzamento (crossover) e mutação (GOLDBERG, 1989).
A seleção é o processo no qual os indivíduos de uma população são avaliados de acordo
com o fitness. Indivíduos com o fitness mais apropriado para o problema são submetidos a um
determinado tipo de seleção e, se escolhidos, passam para a etapa de cruzamento.
No método de seleção aleatória, quaisquer pares de indivíduos são escolhidos, não obstante
suas aptidões tampouco se estas são próximas do ponto ótimo atual ou não. Um bom gerador de
números aleatórios (GNA) deve ser empregado neste ponto. Em uma população muito grande pode
19
haver repetição de indivíduos caso o GNA esteja limitado a sementes muito pequenas. O exemplo
do Quadro 4 traz uma população cujo fitness dos indivíduos é resultado de uma função objetivo de
conversão de valores binários para decimais.
Quadro 4. Seleção aleatória de indivíduos.
Ind. Cromossomo Fitness Probabilidade de escolha (%)
Intervalo (∆∆∆∆)
l� 00001 1 1,204 0 ≤ ∆ < 0,01204 lf 11010 26 1,204 0,01204 ≤ ∆ < 0,02408 … … ... ... ... lmn 11111 31 1,204 0,56588 ≤ ∆ < 0,57792 … … ... ... ... lno 01101 13 1,204 0,98728 ≤ ∆ < 1
A probabilidade de escolha é a mesma para todos os indivíduos. Um GNA é lançado tantas
vezes quanto o número de indivíduos se deseja selecionar desta população. Por exemplo, se cada
indivíduo tem aproximadamente 1,204% de chance de escolha, o número gerado de 0,573 cairia no
48º intervalo (48ª classe da distribuição) e aquele indivíduo α seria selecionado.
O método de seleção por roleta (Quadro 5) é um dos tradicionalmente usados. Consiste em
criar uma roleta tendenciosa (ou desbalanceada), na qual cada indivíduo α da população tem seu
espaço nesta roleta (Figura 6).
Quadro 5. Seleção de indivíduos por roleta.
Núm. Cromossomo Fitness Probabilidade de escolha (%) Intervalo (∆∆∆∆) l� 01101 169 14,4 0 ≤ ∆ < 0,144 lf 11000 576 49,2 0,144 ≤ ∆ < 0636 lo 01000 64 5,5 0,636 ≤ ∆ < 0,691 lm 10011 361 30,9 0,691 ≤ ∆ < 1 Fonte: Adaptado de Goldberg (1989).
Este espaço segue a mesma proporção que o seu valor do fitness tem em relação à soma dos
fitness de todos os indivíduos. A seleção é feita com base em um número aleatório. Como exemplo,
se o número de saída do GNA fosse 0,723, o indivíduo número 4 seria selecionado para
cruzamento.
20
Figura 6. Proporção dos indivíduos da população na roleta
Fonte: Adaptado de GOLDBERG (1989).
Um terceiro método a ser enumerado é o de seleção elitista. Aqui, o pré-requisito para a
seleção é o de que haja uma classificação prévia baseada no fitness dos indivíduos. Apenas os
indivíduos com o melhor fitness estão aptos à etapa de cruzamento (Quadro 6).
Quadro 6. Seleção de indivíduos elitista.
Núm. Cromossomo Fitness Limiar de seleção Selecionado lf 11000 576 Acima Sim lm 10011 361 Acima Sim l� 01101 169 Abaixo Não lo 01000 64 Abaixo Não Fonte: Adaptado de Goldberg (1989).
Sendo um limiar determinado (a população representada no Quadro 6 é baseada em um
limiar de 50%), a faixa de indivíduos acima do limiar de seleção selecionada em detrimento da
metade inferior. Os indivíduos selecionados (lf e lm) estão agora sujeitos à operação de
cruzamento.
A operação de cruzamento é binária. Os dois operandos, indivíduos de uma população
(pais), têm seus genes combinados para que se produza um ou mais novos indivíduos (filhos). No
exemplo da Figura 7, o cromossomo é composto por 10 genes, que poderiam representar cidades
em um mapa.
Intervalo 1;
14.40%
Intervalo 2;
49.20%
Intervalo 3;
5.50%
Intervalo 4;
30.90%
21
Ponto de corte
Indivíduo A A B C D E F G H I
Indivíduo B I H F G E D B C A
Cruzamento (Indivíduo 1, Indivíduo 2) = Filho 1, Filho 2
Filho 1 A B C D E F B C A
Filho 2 I H F G E D G H I
Figura 7. Cruzamento entre dois indivíduos com um ponto de corte.
O cruzamento é dado pela combinação das partes do cromossomo A com a parte
complementar do cromossomo B. O ponto de corte pode ser escolhido por meio de uma função
aleatória. Também é possível definir mais de um ponto de corte, como mostra o exemplo da Figura
8. Definidos estes pontos, parte-se para a troca de genes e criação de dois novos indivíduos.
Porém, no caso específico do PCV (no qual cidades não podem ser repetidas), a Figura 7
também revela uma inconsistência no cruzamento dos dois indivíduos. Uma inconsistência foi
criada nos filhos 1 e 2, pois há repetição de genes em seus cromossomos (genes A, B e C repetidos
no Filho 1 e genes G,H e I repetidos no filho 2). No PCV isso é crítico, pois quebra a premissa de
que uma solução passa por um nó apenas uma vez.
O tratamento de inconsistência é dado por meio de operadores de reordenamento. Holland
(1987, apud GOLDBERG 1989) cita os métodos PMX (Partially Matched Crossover), OX (Order
Crossover) e CX (Cycle Crossover).
Considerando os indivíduos da Figura 8, nota-se que os indivíduos l�p e lfp sofrem de
inconsistência em seus genes, após cruzamento com dois pontos de corte.
O método PMX (Figura 8) aborda trocas de posição entre os genes. Ao verificar o indivíduo l�p, nota-se que a primeira inconsistência é o gene “3” na oitava posição. Este mesmo gene “3”
encontra-se na quinta posição do indivíduo lf. Retorna-se a quinta posição do indivíduo l�, cujo
valor é “6”. Substitui-se, então, o valor “3” conflitante com o valor “6” não-conflitante no indivíduo l�p.
22
l� = 9 8 4 | 5 6 7 | 1 3 2 10 αf = 8 7 1 | 2 3 10 | 9 4 5 6 α�′ = 9 8 4 | 2 3 10 | 1 3 2 10 αf′ = 8 7 1 | 5 6 7 | 9 4 5 6 α�′′ = 9 8 4 | 2 3 10 | 1 6 5 7 αf′′ = 8 10 1 | 5 6 7 | 9 4 5 6
Figura 8. Tratamento de inconsistência com Partially Matched Crossover.
Adaptado de Goldberg (1989)
O mesmo processo é realizado com o próximo conflito “2”, cuja posição é a quarta do
indivíduo lf. O quarto elemento do indivíduo l�, “5” é posto em seu lugar. Seguindo esta regra
para o mesmo indivíduo e realizando novamente o processo para o indivíduo lfp, a inconsistência é
tratada e termina-se o processo com dois indivíduos válidos.
Os métodos OX (Figura 9) e CX (Figura 10) tratam as inconsistências de maneira diferente.
Toma-se como exemplo os mesmos indivíduos l� e lf originais da Figura 8.
lfr = 8 R 1 | 2 3 10 | 9 R 4 R lfr′ = 2 3 10 | R R R | 9 4 8 1 lf ′ = 2 3 10 | 5 6 7 | 9 4 8 1
Figura 9. Tratamento de inconsistência com Order Crossover.
Adaptado de Goldberg (1989)
Sendo as inconsistências primeiramente detectadas no método OX, estas são marcadas,
dando prioridade de integridade à cadeia entrante. Os genes conflitantes são removidos do indivíduo lfr (marcados no exemplo da com um R) e o espaço destinado à cadeia entrante do indivíduo l� (5,
6, 7) é criado ao se deslocar a cadeia original (2, 3, 10) para o início do cromossomo, como se pode
notar no indivíduo lfr′. Os genes restantes (9, 4, 8, 1) são concatenados ao final do espaço
reservado (R, R, R).
Ao final, o espaço reservado é substituído pela cadeia entrante, oriunda do indivíduo l�, o
que resulta no cromossomo do indivíduo lfp.
23
s� = 9 8 2 1 7 4 5 10 6 3 tu = 1 2 3 4 5 6 7 8 9 10 1� s�p = 9 - - - - - - - - - 2� s�p = 9 - - 1 - - - - - - 3� s�p = 9 - - 1 - 4 - - 6 – 4)s�p = 9 2 3 1 5 4 7 8 6 10 1� tup = 1 - - - - - - - - - 2� tup = 1 - - 4 - - - - - - 3� tup = 1 - - 4 - 6 - - 9 – 4)tup = 1 8 2 4 7 6 5 10 9 3
Figura 10. Tratamento de inconsistência com Cycle Crossover.
Adaptado de Goldberg (1989).
O método CX, assim como o PMX, depende de posicionamento de genes para ser aplicado.
Porém, sua lógica é diferente, tratando dos valores como dependentes um dos outros no seu
posicionamento. O conceito de pontos de corte é descartado nesta técnica, dando lugar á seqüência
de passos apresentada.
Dado um par de indivíduos s�e sf, o primeiro passo é, a partir do primeiro gene do
indivíduo s�, começar as seleções. O indivíduo s�p recebe, então, o gene “9”, originário da posição
1. Na mesma posição 1 do indivíduo sf, consta o gene “1”. Este, localizado na posição 4 do
indivíduo s�, é então inserido na posição 4 do indivíduo s�p. O inverso acontece com o indivíduo sfp. Este recebe o “1” da primeira posição de sf. No
indivíduo s� o gene com valor “1” está na quarta posição. Então sfp recebe em sua quarta posição
de sf. E assim por diante.
O mesmo padrão é seguido a partir daí. Na Figura 10, o gene “6” do indivíduo s� projetaria
o gene “9” do indivíduo sf em uma quarta iteração. Porém, este valor fecha o ciclo (daí o nome do
método). Os demais genes então são trocados entre s�e sf, gerando os indivíduos s�v e sfp ao final.
24
A mutação é o último passo para o desenvolvimento de uma nova geração de indivíduos.
Este operador unário é responsável por trocar aleatoriamente os aspectos de um ou mais
cromossomos.
A mutação é importante porque a população inicial pode excluir um componente essencial da solução. Se nenhum membro da população inicial tiver um “1” na primeira posição, então a recombinação não poderá reproduzir um descendente que o tenha (LUGER, 2004).
Uma mutação pode ajudar a encontrar um melhor ponto ótimo ou uma nova direção para
encontrar um novo ótimo global (um pico em problemas de máximo ou um vale em problemas de
mínimo). Essa mutação pode não ter resultados instantâneos. Porém, ao longo prazo, o processo
pode ser benéfico em posterior cruzamento (CHAMBERS, 1995).
Dado um indivíduo l qualquer (Figura 11), uma operação de mutação aplicada sobre este
produziria um distúrbio em seus genes. Um novo indivíduo lp mutado tem seus genes e,
conseqüentemente, seu fitness alterado.
l = 9 8 4 | 5 6 7 | 1 3 2 10
Mutação (Troca de genes)
l’ = 9 1 4 | 5 6 7 | 8 3 2 10
Figura 11. Mutação por troca de genes.
Uma mutação pode ocorrer com troca entre 2 ou mais genes. Para qualquer número n de
genes escolhidos aleatoriamente, pode-se fazer uma rotação deles. Por exemplo, se os genes nas
posições 1 (gene A), 2 (gene B), 17 (gene C), 91 (gene D) e 133 (gene E) forem escolhidos, uma
rotação simples para a direita montaria uma nova disposição dentro do cromossomo.
Os genes A, B, C, D e E, estariam dispostos dentro do cromossomo, na ordem E, A, B, C e
D, sendo que o gene anterior assumiria a posição do gene posterior. Mudanças significativas podem
ocorrer no fitness do cromossomo, o que abriria possibilidades de procura por um novo mínimo em
outra região.
Ao final da mutação, esta aplicada em n indivíduos, tem-se uma nova geração de indivíduos,
chamada de w�. Um nível satisfatório de otimização pode ser encontrado com base em um número
de iterações antes do critério de parada. Tais iterações levam a uma geração w, após um número tal
25
de iterações absoluto (exemplo: parar após 1000 iterações) ou após várias gerações (também há de
se definir este número) sem progressão significativa na convergência.
2.4.3 Simulated Annealing
O método de simulated annealing (SA), assim como o sistema das formigas e algoritmos
genéticos, é utilizado para problemas genéricos de otimização. É um método que, em sua lógica, há
uso de elementos aleatórios, o que o torna um método probabilístico.
O nome é proveniente na área de metalurgia. O termo de SA vem do trabalho de Nicholas
Metropolis (METROPOLIS, 1953 apud KIRKPATRICK et al,1983) e, naquele, o annealing ou
"recozimento" consiste em aquecer um material e resfriá-lo de maneira controlada. O calor inicial
desprende as estruturas moleculares de maneira tal, que, com o posterior resfriamento, haja melhor
possibilidade de um rearranjo que minimize os defeitos da estrutura como um todo.
Na computação aplicada, o SA é utilizado em diversos problemas de otimização. O PCV é
um deles. Kirkpatrick, Gelatt e Vecchi (1983) apresentaram o uso do SA em problemas de
otimização.
Metropolis apresentou o algoritmo SA como sendo uma simulação eficiente de átomos em
equilíbrio em uma dada temperatura. Transportando este conceito para o PCV, os átomos em
equilíbrio seriam o conjunto de arcos melhor para o problema de minimização do caminho em um
instante n da evolução do algoritmo, ou seja, a solução do problema.
Estrutura e execução do algoritmo
A execução do algoritmo de SA é realizada com base em diversas grandezas. As
distribuições e o estado desta execução contêm grandezas tais que, com o passar das iterações,
limitam as probabilidades de mudança e rearranjo de posições – ou caminhos, no caso do PCV.
O SA trabalha com as grandezas energia (E), temperatura (T) e variação da temperatura
(ou delta — ∆∆∆∆). Tais valores são utilizados respectivamente como qualidade da solução (distancia
percorrida), critério de parada e fator de aceitação de solução contrária. A temperatura e sua
variação, por exemplo, induzem à aceitação ao não de energias que levem a hill-climbing em
problemas de mínimo, assim como gradient-descent em problemas de máximo. Ou seja, escapar de
mínimos locais. (RUSSELL & NORVIG, 1995).
26
A primeira grandeza a ser considerada é energia (E). Assim como o recozimento real, o AS
também contém energia. Com uma distribuição inicial aleatória de caminhos (Figura 12), tem-se
calculado o estado inicial da simulação por meio de uma função objetivo, resultando em um valor
denominado �x.
Figura 12. Arranjo inicial de caminhos em primeira iteração, com energia �x.
Tendo o valor �x na primeira iteração, o próximo passo é tentar um rearranjo (Figura 13)
dos caminhos de maneira tal que se consiga uma redução do caminho mínimo. É possível utilizar
técnicas já adotadas no método de algoritmos genéticos, como mutação da solução.
Se novo arranjo de caminhos é testado defronte ao arranjo anterior, obtendo, então, uma
variação de energia (∆E). Se esta variação (Equação 8) for menor ou igual à zero (∆E ≤ 0), ou seja,
se a energia nova for menor do que a anterior (�x y ���, este novo arranjo é aceito imediatamente,
substituindo o valor anterior.
0
5
10
15
20
25
30
35
40
45
0 5 10 15 20 25 30 35
Co
ord
en
ad
a Y
Coordenada X
27
Figura 13. Tentativa de solução melhor com novo rearranjo, com energia ��.
∆z z� ' zx
Equação 8
O novo arranjo pode produzir uma solução piorada. Entretanto, isso não significa que esta
será descartada. Este caso é tratado de maneira probabilística. Há uma chance na qual esta solução
com energia �� pior do que a solução anterior com energia �x seja aceita. A função de
probabilidade (Equação 9) é diretamente relacionada com as grandezas de temperatura e o valor da
variação de energia ∆E.
{�∆�� |}∆:/�
Equação 9
Com a aceitação da nova solução com energia ��, inicia-se a nova iteração com mudanças
no parâmetro temperatura. Esta mudança é relacionada com o delta do algoritmo. Se, por exemplo,
o delta (∆) for de 0,99, a nova temperatura será de 99% da anterior, de acordo com a Equação 10.
���� ��∆
Equação 10
0
5
10
15
20
25
30
35
40
45
0 5 10 15 20 25 30 35
Co
ord
en
ad
a Y
Coordenada X
28
Com isso, simula-se o comportamento do recozimento do material, ao permitir que
rearranjos mais abrangentes possam ocorrer em temperaturas mais altas (quando as moléculas estão
mais livres e passíveis de variação) do que em temperaturas mais baixas (quando a matéria está
mais presa e as estruturas estão estáveis).
A implicância da temperatura e variação de energia abre a possibilidade de que em
temperaturas mais elevadas haja maiores rearranjos da solução. Na diminuição da temperatura,
saltos muito grandes permitem uma procura mais eficaz de outros mínimos locais.
A temperatura também é critério de parada para que se cesse o resfriamento e seja aceita a
melhor solução encontrada naquele momento. Como mostrado na Figura 14 o delta (∆) sempre
conserva uma fração da temperatura (eixo y, intervalo de 0 a 200) no decorrer das iterações (eixo x,
intervalo de 0 a 1200) e o limite deste decréscimo é zero. Logo, utilizar o zero como critério de
parada causaria uma demora muito longa (observando o fato da perda de precisão em algumas
implementações com ponto flutuante, o tempo de espera seria finito).
Figura 14. Em uma execução, o limite tende ao zero em decorrência do valor de ∆.
Outro critério de parada é o de “congelamento” do estado. Este congelamento ocorre
quando, em um número n de sucessivas iterações, não há mais mudança de estado na matéria.A
seqüência de temperaturas e o número de rearranjos tentados para que se alcance esta estabilidade é
chamado de annealing schedule. (KIRKPATRICK et al., 1983)
Como dito, um annealing schedule define após quantas iterações desde o início da execução
deve-se aceitar uma solução. Este número também pode ser contado a partir da homeostase da
0
20
40
60
80
100
120
140
160
0 200 400 600 800 1000 1200
Te
mp
era
tura
(y
)
Iterações (x)
29
solução no decorrer das iterações ou quando a simulação é resfriada para uma temperatura T
qualquer.
2.5 PROBLEMA DE APLICAÇÃO
A problemática envolvida na fabricação de placas de circuito impresso (PCI) é complexa,
em especial na roteirização da furação, haja vista a grande quantidade de possibilidades a serem
consideradas para determinar o menor esforço possível.
No geral, as perfurações da placa têm diferentes diâmetros. Como as brocas da máquina
perfuratriz têm que ser trocadas para que sejam feitos cada um dos tipos de furos, a realização
destas furações de maneira seqüencial causaria um atraso e um custo de proporções inaceitáveis.
Supondo que uma PCI tenha 100 furos a serem feitos. Nesta placa, haveria 5 diâmetros
diferentes. A cada furo a ser perfurado, haveria a verificação do diâmetro. Se o tipo de furo
constatado for compatível com o tipo de broca, bastaria esta se deslocar para as coordenadas
corretas e fazer o furo em si. Caso o furo a ser feito tenha um diâmetro muito diferente, a máquina
precisa voltar para o repositório de brocas, deixar a broca antiga no lugar, capturar a nova broca e
fazer o furo seguinte.
Um potencial desastre de desperdício de tempo é desenhado. O fator do constante atraso
causado pelas sucessivas operações de troca de brocas é, por si só, passível de otimização. O ideal
seria, primeiro, fazer todos os furos com a primeira broca, todos com a segunda broca e assim por
diante. O número de trocas de broca estaria reduzido ao total de brocas utilizadas, menos um. O fato
agravante (e o objeto que compõe o escopo deste estudo) estaria ao realizar um agendamento de
furações tal qual a perfuratriz percorra caminhos muito longos para realizar os furos com uma
mesma broca.
Reinhelt (1994) diz que o problema a ser resolvido é cessar este agravante ao agendar o
seqüenciamento de furos do mesmo tipo de maneira tal que o tempo total de perfuração seja
minimizado. Ou seja, percorrer todos os furos usando o menor tempo e distâncias possíveis, tal qual
o PCV.
30
2.6 CENÁRIOS REAIS
Economicamente falando, a necessidade de diminuir os tempos de perfuração é evidente. O
tempo de funcionamento de uma máquina deve ser bem aproveitado para que a razão entre
depreciação e o número de placas perfuradas seja o máximo possível.
Nestes cenários reais, o projeto dos furos da placa é normalmente utilizado como entrada
para o sistema de perfuração. Estes projetos são, em sua maioria, arquivos do tipo GERBER.
Diversos fabricantes utilizam este padrão para alimentar suas máquinas com as instruções. Como
afirmado por Schmidt (2000), arquivos padrão GERBER, DXF ou HPGL são baixados para o
sistema que faz os furos, as trilhas e rotas, usando uma variedade de instrumentos de precisão.
Os arquivos GERBER RS-274X seguem um padrão de instruções que, dentre estas,
destacam-se para o PCV apenas as funções de deslocamento da broca. Estas funções são chamadas
de dados de coordenadas. (DIBARTOLOMEO, 1995). Os dados de coordenadas podem ser
divididos em:
• Dados X/Y. Estes definem posições lineares ao longo dos eixos X e Y; e
• Dados I/J. Estes são utilizados para desenhos de arcos.
Para o problema do caixeiro viajante, os dados X/Y são suficientes, pois representam as
coordenadas dos furos a serem feitos pela máquina perfuratriz. Um exemplo de dados no formato
X/Y pode ser descrito como na Figura 15.
X295Y373 X397Y442 X365Y269
X426Y274 X223Y426 X148Y104
X205Y465 X427Y279 X312Y470
X487Y262 X376Y108 X500Y243
Figura 15. Exemplos de coordenadas de pontos em formato GERBER RS-274X
Com um número maior de pontos representados por este padrão, é possível representar
furações para placas mais complexas. O exemplo da Figura 16 é similar a muitos dispositivos que
31
precisam de perfuração. Neste, pode-se notar uma padronização dos furos (vários pontos no mesmo
valor de ordenada, por exemplo).
Uma aplicação comercial que usasse os algoritmos apresentados neste trabalho manipularia
entradas em formato GERBER (as coordenadas no padrão apresentado na Figura 15) de maneira tal
que se produzisse saída ordenada.
Figura 16. Pontos de furação para uma placa de circuito impresso qualquer.
Esta saída pode ser utilizada como resultado de uma última etapa, esta uma pré-otimização
de um arquivo GERBER para que se alimente uma máquina de furação de placas circuito impresso
– maquina CNC.
32
3 PROJETO
Neste capítulo, são apresentados pseudocódigos que serão utilizados como base para a
implementação dos algoritmos estudados em linguagem C++, que, agora, compõem um programa
experimental de demonstração de execução de cada um deles. A principal função é gerar resultados
válidos e passíveis de análise, tanto individualmente quanto comparados uns aos outros.
3.1 PSEUDOCÓDIGOS
3.1.1 SISTEMA DAS FORMIGAS
O pseudocódigo apresentado na Figura 17 representa a atual implementação do algoritmo do
sistema das formigas.
CriarFormigas(k)
{
Para (i=0; i <k; i++)
{
Formiga(k);
Formiga(k)->PrimeiroNó(n%tamanho_do_grafo);
}
}
Rodar()
{
CriarFormigas(y);
int Tour = x;
Enquanto (Tour)
{
Para cada formiga k
{
Enquanto (nó)
{
Int nó = EscolhePróximoNó; //..com base nas regras de transição
Formiga(k)->AcrescentaNó(n%tamanho_do_grafo);
}
}
Para cada formiga k
{
Atualiza mapa de feromônios
}
Tour--;
}
}
Figura 17. Pseudocódigo para o sistema das formigas.
33
3.1.2 ALGORITMOS GENÉTICOS
O método de algoritmos genéticos está implementado com base no pseudocódigo
pesquisado, como representado na Figura 18.
Inicialização( )
{
Tempo � 0; //contador de tempo Gerações � 0; //contador de gerações
//Determinar grafo com coordenadas de um arquivo externo;
Ler arquivo( );
Criar indivíduos( );
Rodar( );
}
Criar indivíduos( )
{
Para cada indivíduo k
{
Gerar cromossomo aleatório;
}
}
Rodar( )
{
Enquanto (condição atual n≠ condição de parada m)
{
Para cada indivíduo
{
Calcular fitness;
}
Organizar população por melhor fitness;
m = tamanho da população/2;
Apagar indivíduos piores;
n = 0;
Para (n =0; n <m; n++)])
{
Efetuar Crossover(individuo[random(n)], individuo[random(n)]);
}
Para cada indivíduo sorteado
Mutar Indivíduo aleatório;
Atualizar condição atual n;
}
}
Figura 18. Pseudocódigo para algoritmos genéticos.
34
3.1.3 SIMULATED ANNEALING
Finalmente, o simulated annealing segue o modelo apresentado na Figura 19.
Inicialização( )
{
Tempo � 0; //contador de tempo Iterações � 0; //contador de iterações
Delta � 0,99; //exemplo: 1% de queda de temperatura
Temperatura � 100; //exemplo: 100
//Determinar grafo com coordenadas de um arquivo externo;
Ler arquivo( ); /
Rodar();
}
Rodar( )
{
Arranjo inicial = Arranjo Aleatório( );
Arranjo atual = Arranjo inicial;
Enquanto (condição atual n≠ condição de parada m)
{
Arranjo novo = Mutação (Arranjo atual);
Se (Energia(Arranjo novo) <= Energia(Arranjo atual))
{
Arranjo atual = Arranjo novo;
Atualiza temperatura;
}
Senão
{
Teste = valor aleatório;
Se (teste > resultado do cálculo de probabilidade);
Arranjo atual = Arranjo novo;
}
Atualizar condição atual n;
}
}
Figura 19. Pseudocódigo para simulated annealing.
3.2 TESTES
A realização de uma bateria de testes bem elaborada é necessária para que se possa concluir
este estudo com êxito. O trabalho realizado com base em testes oriundos de um sistema de
aquisição de informações mal-elaborado e, principalmente, sem ter em foco o que se quer testar, se
torna inválido do ponto de vista do trabalho.
35
O escopo deste processo de investigação técnica limita-se aos resultados numéricos obtidos
pelas execuções das metaheurísticas abordadas neste trabalho. Qualidade do algoritmo, testes caixa-
branca, caixa-preta, usabilidade e demais quesitos abordados em disciplinas de engenharia de
software não fazem parte do escopo desta bateria de testes. Ou seja, não é o software e seus quesitos
de qualidade que estão sendo testados, e sim o comportamento das metaheurísticas.
3.2.1 Estrutura dos testes
Os testes têm como insumos os valores adquiridos dos algoritmos em momentos específicos
de suas execuções. Para cada uma das metaheurísticas, um conjunto de valores é gravado em vários
arquivos de registro para serem utilizados em futura análise.
Por exemplo, o algoritmo empregado para a execução da metaheurística simulated
annealing captura os valores necessários no início e no final de cada iteração. Este pequeno sistema
de aquisição de dados enumera valores de interesse para captura, tais quais como expostos no
Quadro 7.
Quadro 7. Tipos de valores relevantes para captura, referentes ao algoritmo simulated annealing
Núm. Item a ser coletado Tipo 1 Tempo de início de iterações long int 2 Tempo de final de iterações long int 3 Temperatura inicial double 4 Temperatura atual double 5 Arranjo desta iteração double 6 Melhor arranjo desde o início das iterações double
É coerente afirmar que o primeiro tempo de início de iterações é o marco zero da execução,
bem como o último tempo de final de iterações é o milestone de término da mesma. Estes valores
são referentes ao Epoch (IEEE, 2004), cujo ponto inicial é 1o. de Janeiro de 1970. Exemplificando,
uma execução que inicie no momento com um epoch timestamp de 1194723747776 e termine em
1194723788765, acarreta em um tempo total de execução de 40989ms.
A temperatura e iteração no instante o qual a melhor solução foi encontrada são calculadas
com base nos registros gerados pelo algoritmo.
A mesma metodologia de mensuração de tempo é aplicada às outras metaheurísticas. Para
algoritmos genéticos, segue lista de itens passives de registro (Quadro 8).
36
Quadro 8. Tipos de valores relevantes para captura, referentes a Algoritmos Genéticos
Núm. Item a ser coletado Tipo 1 Tempo de início de iterações long int 2 Tempo de final de iterações long int 3 Geração atual int 4 Melhor fitness da geração double 5 Melhor fitness desde o início das iterações double
Pela natureza das três metaheurísticas adotadas neste trabalho, os campos a serem coletados
são muito parecidos. Para o sistema das formigas, o Quadro 9 explica o que é coletado em cada
execução.
Quadro 9. Tipos de valores relevantes para captura, referentes ao Sistema das Formigas
Núm. Item a ser coletado Tipo 1 Tempo de início de iterações long int 2 Tempo de final de iterações long int 3 Ciclo Atual int 4 Melhor resultado do ciclo double 5 Melhor resultado desde o início das iterações double
Os testes foram projetados para uma execução em lotes. Um problema a ser resolvido com
simulated annealing pode ser testado n vezes para cada configuração de ajustes. Como exemplo, o
primeiro teste observa um número 100 de vezes uma execução do algoritmo com as configurações
de temperatura e delta ajustadas em 100 e 0,99 respectivamente.
Os resultados obtidos deste teste são registrados em arquivo no padrão estabelecido na
Figura 20, onde os números separados por ponto-e-vírgula representam na ordem de seqüência em
que se encontram: tempo de início de iterações, tempo de final de iterações, temperatura inicial,
temperatura atual e valor do arranjo desta iteração.
403334882;403334914;0;13612.755859;13612.755859;99.000000
403334914;403334945;1;13933.748047;13612.755859;98.010002
...
...
403344101;403344117;456;2810.256836;2633.389160;1.012241
403344117;403344132;457;2807.430176;2633.389160;1.002118
Figura 20. Formato de saída dos dados coletados em uma execução de simulated annealing
37
Para cada série de dados como esta, calcula-se em qual instante de tempo, iteração e
temperatura se obteve a melhor solução. A mesma leitura é feita para os três tipos de resultados das
metaheurísticas, obedecendo os tipos de campos determinados em cada uma delas.
Com o resultado obtido na análise de cada uma das séries (o total de séries é igual ao
número de observações), é realizado o cálculo da média dos valores dos campos. Para o mesmo
exemplo de simulated annealing, são calculados os valores médios de melhor valor de arranjo,
temperaturas, tempo decorrido e iterações.
Com o final da análise de um conjunto de séries, passa-se para a próxima configuração do
algoritmo e o processo é repetido. Ao final de todas as séries, tem-se o melhor rendimento do
algoritmo para as configurações atuais e, a partir daí, pode-se passar para uma nova etapa de testes,
com ajustes finos de configuração. Como exemplo, se a primeiras séries testaram o valor de delta
ajustado em 0,99 e a temperatura em diferentes ajustes entre 15 e 23, passa-se a testar a melhor
temperatura para execução como ponto fixo e varia-se, a partir daí, o valor de delta.
No término destes testes de ajuste fino, elege-se a configuração ideal para que se possa
realizar, finalmente, o comparativo com as outras metaheurísticas.
3.2.2 Domínio de aplicação dos testes
O domínio de aplicação dos testes, como já citado, consiste em determinar o melhor
caminho para realizar a furação em placas de circuito impresso. A placa de circuito impresso
escolhida é apresentada na Figura 21. São 118 pontos, representados por coordenadas. Este
conjunto de coordenadas GERBER para esta placa é descrito na Figura 22 e o mapa de furos está
representado na Figura 23.
Figura 21. Exemplo de placa de circuito impresso perfurada
Fonte: Adaptado de Microwizard Official Website (MICROWIZARD,2007)
38
X241Y322
X13Y218
X198Y21
X145Y70
X143Y339
X31Y252
X31Y304
X189Y139
X273Y195
X30Y271
X13Y304
X294Y230
X30Y286
X163Y218
X381Y184
X33Y184
X42Y92
X338Y203
X13Y200
X94Y70
X181Y21
X272Y262
X214Y235
X102Y184
X146Y21
X197Y71
X364Y184
X102Y201
X130Y71
X49Y199
X111Y21
X163Y200
X239Y305
X242Y269
X214Y252
X214Y156
X76Y72
X163Y269
X276Y174
X163Y322
X364Y273
X381Y220
X273Y230
X163Y305
X102Y97
X338Y185
X312Y174
X144Y322
X272Y248
X162Y338
X215Y321
X32Y219
X33Y201
X215Y139
X215Y304
X216Y288
X112Y71
X381Y305
X92Y339
X188Y158
X215Y201
X294Y175
X214Y339
X145Y113
X137Y227
X48Y339
X294Y263
X163Y287
X381Y201
X215Y116
X41Y109
X273Y211
X31Y234
X217Y269
X163Y21
X13Y253
X363Y219
X179Y97
X363Y238
X77Y21
X102Y114
X213Y97
X181Y71
X137Y261
X164Y70
X381Y237
X293Y247
X246Y178
X128Y21
X363Y288
X163Y253
X49Y183
X41Y128
X236Y188
X92Y321
X381Y254
X364Y201
X163Y234
X215Y218
X13Y286
X295Y196
X241Y252
X13Y236
X254Y188
X381Y289
X295Y211
X180Y113
X381Y272
X137Y243
X364Y254
X13Y183
X363Y305
X13Y270
X94Y21
X49Y321
X241Y339
X240Y288
X147Y97
Figura 22. Coordenadas GERBER para a placa de circuito impresso da Figura 21
Figura 23. Mapa de furos composto a partir da leitura de um arquivo GERBER
39
3.2.3 Sistema computacional utilizado
O sistema computacional utilizado para a realização dos testes tem como características de
hardware (Quadro 10) e software (Quadro 11):
Quadro 10. Hardware do ambiente de testes e desenvolvimento
Hardware Item Especificações CPU AMD Athlon XP CPU Family 6 Model 8 Stepping 1 Set MMX, SSE Integer, SSE FP Clock rate 1800 MHz RAM 256
Quadro 11. Software do ambiente de testes e desenvolvimento
Software Item Especificações Sistema Operacional Microsoft Windows XP, 5.1 Service Pack 2 Ambientes de desenvolvimento
Borland C++ Builder, v6.0, Microsoft Visual C++ Express
3.2.4 Execução dos testes do Sistema das Formigas
Os testes realizados com o Sistema das Formigas foi, a princípio, ajustado com a
configuração determinada abaixo.
• Importância de feromônio (α): sendo l � � e � é um conjunto definido como � !1,3,5,7,97; • Importância de custo (β): 5;
• Feromônio inicial (τ): 1;
• Coeficiente de evaporação (ρ): 0.99;
• Quantidade de formigas (K): 30; e
• Número de ciclos (C): 30.
Com esta primeira configuração, pretende
demais importância ao parâmetr
manteria no resto da execução. O inverso, com
formigas em um greedy algorithm
próximo, mesmo que o grafo total tenha uma disposição pior ao final)
testes iniciais, expostos na Figura
Figura 24. Gráfico α x resultado
Figura 25. Gráfico α x tempo decorrido
3172.00
3174.00
3176.00
3178.00
3180.00
3182.00
3184.00
3186.00
3188.00
1
Re
sult
ad
o o
bti
do
0.00
10.00
20.00
30.00
40.00
50.00
60.00
70.00
1
Te
mp
o d
eco
rrid
o (
s)
40
Com esta primeira configuração, pretendeu-se dimensionar a relação
demais importância ao parâmetro α acarretaria em um desbalanço inicial de feromônios que se
manteria no resto da execução. O inverso, com β superdimensionado, transformaria o sistema das
greedy algorithm (um sistema ambicioso ou guloso – que privilegia o nó mais
mesmo que o grafo total tenha uma disposição pior ao final) Seguem os resultados d
Figura 24, Figura 25 e Tabela 1.
x resultado obtido para sistema das formigas, com β=5C = 30.
tempo decorrido para sistema das formigas, com β=5,
C = 30.
1 3 5 7
α
3 5 7
α
a relação α/β no algoritmo. Dar
acarretaria em um desbalanço inicial de feromônios que se
imensionado, transformaria o sistema das
que privilegia o nó mais
Seguem os resultados dos
=5, τ =1, ρ =0.99, K=30 e
=5, τ =1, ρ =0.99, K=30 e
9
9
41
Tabela 1. Resultados obtidos para primeira bateria de testes do sistema das formigas.
Teste Configuração Tempos de execução (s) Resultados obtidos
α β ρ K C Mínimo Médio Máximo Mínimo Médio Máximo 1 1 5 .99 30 30 2.062 28.26237 60.750 3067.24 3185.64 3312.72 2 3 5 .99 30 30 2.688 41.56657 80.234 3098.93 3185.90 3293.94 3 5 5 .99 30 30 3.078 47.16290 89.172 3065.26 3186.45 3312.25 4 7 5 .99 30 30 3.547 56.53793 110.266 3075.63 3176.93 3266.30 5 9 5 .99 30 30 4.032 65.50573 144.765 3039.46 3185.73 3299.67
Com o distanciamento de α e β, sendo β>α, nota-se um melhor rendimento do algoritmo. Os
resultados médios são muito parecidos. Porém, com α=1 e β=5, a menor foi de 3067.24, enquanto
as demais passam de 3200. O tempo de execução, de aproximadamente 28 segundos, é bem inferior
aos 41,5 segundos da segunda configuração mais rápida. Logo, assume-se que a configuração
listada no teste “1” da Tabela 1 é a melhor até então.
Na verificação da relação correta entre os valores α e β, o próximo passo compreende o teste
de quantidade de formigas a serem dispostas no grafo. As formigas não são sempre alocadas nos
primeiros nós do grafo, em seqüência. Porém, não há acúmulo de formigas em nós, enquanto
houver nós com menos formigas que o nó com mais formigas. Isso implica que neste grafo com 118
nós, haveria 118 formigas, uma em cada nó; 236 formigas, duas em cada nó; ou 150 formigas,
sendo 32 nós com 2 formigas e os 88 restantes com apenas uma.
O teste, portanto, não testa a densidade de formigas em uma certa região (pois são
espalhadas aleatoriamente) e sim a quantidade delas no grafo. Os ajustes foram testados de acordo
com os parâmetros:
• Importância de feromônio (α): 1;
• Importância de custo (β): 5;
• Feromônio inicial (τ): 1;
• Coeficiente de evaporação (ρ): 0.99;
• Quantidade de formigas (K): k, sendo que ^ � � e � é um conjunto definido como � !30,70,1107; e
• Número de ciclos (C): 30.
Os resultados alcançados para esta configuração estão expressados na Figura 26, Figura 27 e
Tabela 2.
Figura 26. Gráfico quantidade de formigas
Figura 27. Gráfico quantidade de formiga
Tabela 2. Resultados obtidos para
Teste Configuração
α β ρ K
1 1 5 .99 30 302 1 5 .99 70 303 1 5 .99 110 30
3090.00
3100.00
3110.00
3120.00
3130.00
3140.00
3150.00
3160.00
3170.00
3180.00
3190.00
3200.00
Re
sult
ad
oo
bti
do
0.00
20.00
40.00
60.00
80.00
100.00
120.00
140.00
Te
mp
o d
eco
rrid
o (
s)
42
quantidade de formigas x resultado para sistema das formigas
τ=1, ρ =0.99 e C = 30.
quantidade de formigas x tempo decorrido para sistema das formigas, com
β=5, τ=1, ρ =0.99 e C = 30.
. Resultados obtidos para a segunda execução do sistema das formigas
Tempos de execução (s) Resultados obtidosC Mínimo Médio Máximo Mínimo30 2.06200 28.26237 607.50 3067.2430 5.98400 70.67137 185.141 2981.9630 8.00000 126.2907 299.625 3036.93
30 70
Quantidade de formigas
30 70
Quantidade de formigas
sistema das formigas, com α=1, β=5,
para sistema das formigas, com α=1,
o sistema das formigas
Resultados obtidos Mínimo Médio Máximo 3067.24 3185.64 3312.72 2981.96 3128.76 3239.11 3036.93 3123.13 3207.17
110
110
A diferença de tempo entre a utilização de 70
(resultado: 3123.13) não compensa o uso do número maior. Há um consumo de tempo muito
elevado entre estas duas configurações. Quando
56% menor no alcance deste resultado. Logo, prossegue
teste.
Este teste do sistema das formigas
de uma execução. O restante da configuração
formigas.
• Importância de feromônio (
• Importância de custo
• Feromônio inicial (
• Coeficiente de evaporação (
• Quantidade de formigas (
• Número de ciclos (
C={30,60,90,120}
Para este último ajuste no sistema das
Figura 28, Figura 29 e Tabela
Figura 28. Gráfico número de ciclos
3090.00
3095.00
3100.00
3105.00
3110.00
3115.00
3120.00
3125.00
3130.00
3135.00
Re
sult
ad
oo
bti
do
43
de tempo entre a utilização de 70 (resultado: 3128.76
não compensa o uso do número maior. Há um consumo de tempo muito
elevado entre estas duas configurações. Quando K=70, o tempo de execução é apro
r no alcance deste resultado. Logo, prossegue-se com esta configuração para o último
teste do sistema das formigas visa determinar o melhor ajuste para o
de uma execução. O restante da configuração é mantido, com os novos ajust
Importância de feromônio (α): 1;
Importância de custo (β): 5;
Feromônio inicial (τ): 1;
Coeficiente de evaporação (ρ): 0.99;
Quantidade de formigas (K): 70; e
Número de ciclos (C): sendo c � C e C é um conjunto definido como
={30,60,90,120}
Para este último ajuste no sistema das formigas, foram obtidos os valores representados na
Tabela 3.
número de ciclos x resultado para sistema das formigas, com
=0.99 e K = 70.
30 60
Número de Ciclos
3128.76) ou 110 formigas
não compensa o uso do número maior. Há um consumo de tempo muito
, o tempo de execução é aproximadamente
esta configuração para o último
o melhor ajuste para o número de ciclos
é mantido, com os novos ajustes para quantidade de
é um conjunto definido como
formigas, foram obtidos os valores representados na
formigas, com α=1, β=5, τ=1, ρ
90
44
Figura 29. Gráfico quantidade de formigas x tempo decorrido para sistema das formigas, com α=1,
β=5, τ=1, ρ =0.99 e K = 70.
Tabela 3. Resultados obtidos para a terceira execução do sistema das formigas
Teste Configuração Tempos de execução (s) Resultados obtidos
α β ρ K C Mínimo Médio Máximo Mínimo Médio Máximo 1 1 5 .99 70 30 5.98400 70.67171 185.141 2981.96 3128.76 3239.11 2 1 5 .99 70 60 4.53100 128.726 252.937 2962.33 3104.34 3169.71 3 1 5 .99 70 90 12.42200 307.6407 730.578 2981.87 3102.93 3192.42
Com o final destas observações, a configuração escolhida é a listada como teste “1” na
Tabela 3. Seus resultados não são melhores do que os testes “2” e “3” da mesma tabela, mas seu
custo é consideravelmente menor do que dos outros testes, com 55% do tempo gasto com o segundo
teste mais rápido. Assim, os resultados a serem comparados com as outras metaheurísticas estão
descritos na Tabela 4.
Tabela 4. Resultado final para o sistema das formigas.
Metaheurística Tempos de execução (ms) Resultados obtidos
Mínimo Médio Máximo Mínimo Médio Máximo Sistema das Formigas
5984.00 70671.37 185141 2981.96 3128.76 3239.11
0.00
50.00
100.00
150.00
200.00
250.00
300.00
350.00
30 60 90
Te
mp
o d
eco
rrid
o (
s)
Número de Ciclos
3.2.5 Execução dos testes de Algoritmos Genéticos
Os testes realizados com a metaheurística de Algoritmos Genéticos tiveram como
parâmetros iniciais de configuração os listados a seguir, os primeiros de uma série de
refinamentos em busca de melhor desempenho:
• Chance de mutação (
• Chance de cruzamento (
X={20,40,60,80,100};
• Número de gerações (
• Tamanho da população (
• Seleção elitista, privilegiando os 50% de indivíduo
A possibilidade dos valores serem
houver chance de elementos sofrerem mutação.
melhor resultado ocorreu com um percentual de 60%. A
aproximadamente 15.1 segundos
daquela instância de teste. A
Tabela 5 apresenta os resultados alcançados para esta primeira configuração.
Figura 30. Gráfico percentual de cruzamento x resultado
6000.00
7000.00
8000.00
9000.00
10000.00
11000.00
12000.00
13000.00
14000.00
Re
sult
ad
oo
bti
do
45
Execução dos testes de Algoritmos Genéticos
Os testes realizados com a metaheurística de Algoritmos Genéticos tiveram como
parâmetros iniciais de configuração os listados a seguir, os primeiros de uma série de
a de melhor desempenho:
Chance de mutação (M): 0%;
Chance de cruzamento (x%): sendo x ∈ X e X é um conjunto definido como
={20,40,60,80,100};
Número de gerações (G): 200;
Tamanho da população (P): 100; e
Seleção elitista, privilegiando os 50% de indivíduos com melhor
A possibilidade dos valores serem diminuídos com maior eficiência
houver chance de elementos sofrerem mutação. O gráfico representado na
do ocorreu com um percentual de 60%. A Figura 31 indica um
aproximadamente 15.1 segundos do início ao final da execução para encontrar a melhor solução
apresenta os resultados alcançados para esta primeira configuração.
percentual de cruzamento x resultado para algoritmos genéticos,G=200, P=100 e seleção elitista.
20 40 60 80
Percentual de cruzamento
Os testes realizados com a metaheurística de Algoritmos Genéticos tiveram como
parâmetros iniciais de configuração os listados a seguir, os primeiros de uma série de 4
é um conjunto definido como
s com melhor fitness.
maior eficiência pode aumentar se
O gráfico representado na Figura 30 indica que o
indica um tempo decorrido de
encontrar a melhor solução
apresenta os resultados alcançados para esta primeira configuração.
para algoritmos genéticos, com M=0,
100
46
Figura 31. Gráfico percentual de cruzamento x tempo decorrido para algoritmos genéticos, com M=0, G=200, P=100 e seleção elitista.
Tabela 5. Resultados obtidos para primeiras execuções de Algoritmos Genéticos
Teste Configuração Tempos de execução (s) Resultados obtidos
C M G P Mínimo Médio Máximo Mínimo Médio Máximo 1 20 0 200 100 0.14000 4.28964 9.43700 3114.53 11335.83 17923.67 2 40 0 200 100 3.71900 9.77689 13.71800 7776.81 8962.18 12699.80 3 60 0 200 100 11.81300 15.09596 21.62500 6621.70 7753.09 9188.77 4 80 0 200 100 0.53200 15.98375 22.09400 3498.75 10013.06 11600.48 5 100 0 200 100 6.54700 12.85693 23.28100 11694.93 12856.93 13941.64
Na verificação dos resultados com mutação, foi utilizado o melhor resultado alcançado no
teste de cruzamento como ponto de partida desta segunda etapa, que agora está configurada com os
seguintes valores:
• Chance de mutação (M): m%, sendo que � ∈ � e � é um conjunto definido como
� !0,4,8,12,167;
• Chance de cruzamento (X): 60%;
• Número de gerações (G): 200;
• Tamanho da população (P): 200; e
• Seleção elitista, privilegiando os 50% de indivíduos com melhor fitness.
Para a mutação, foi adotado um procedimento híbrido, utilizando da técnica de nearest
neighbor (FORMAN, 2005) adotada na metaheurística de simulated annealing. Os resultados são
expressivos em relação ao teste anterior, como pode ser melhor visualizado na Figura 32 e Figura
0.00
2.00
4.00
6.00
8.00
10.00
12.00
14.00
16.00
18.00
20 40 60 80 100
Te
mp
o d
eco
rrid
o (
s)
Percentual de cruzamento
33. Com taxas de mutação maiores, o comportamento da metaheurística mantém a qualidade dos
resultados, mas piora em tempo de execução. Pois a mutação NN consome tempo e as gerações
demoram mais a acontecer. A
Figura 32. Gráfico percentual de mutação x resultado obtido
Figura 33. Gráfico percentual de mutação x
2760.00
2780.00
2800.00
2820.00
2840.00
2860.00
2880.00
2900.00
Re
sult
ad
oo
bti
do
2.76
2.78
2.80
2.82
2.84
2.86
2.88
2.90
2.92
Re
sult
ad
oo
bti
do
(s)
47
o maiores, o comportamento da metaheurística mantém a qualidade dos
resultados, mas piora em tempo de execução. Pois a mutação NN consome tempo e as gerações
A Tabela 6 apresenta os valores obtidos para este teste.
percentual de mutação x resultado obtido para algoritmos genéticos, com G=200, P=100 e seleção elitista.
percentual de mutação x tempo decorrido para algoritmos genéticos, com G=200, P=100 e seleção elitista.
4 8 12
Percentual de Mutação
4 8 12
Percentual de Mutação
o maiores, o comportamento da metaheurística mantém a qualidade dos
resultados, mas piora em tempo de execução. Pois a mutação NN consome tempo e as gerações
ste teste.
para algoritmos genéticos, com C=60,
para algoritmos genéticos, com C=60,
16
16
Tabela 6. Resultados obtidos para
Teste Configuração
C M G P
1 60 0 200 100 112 60 4 200 100 3 60 8 200 100 4 60 12 200 100 5 60 16 200 100
Entre o valor final de
obtido pelo teste 5 da mesma ta
chegar neste valor é significativamente maior
Um terceiro teste de algoritmos genéticos visa buscar o melhor ajuste para o tamanho da
população, e está configurado desta maneira:
• Chance de mutação (
• Chance de cruzamento (
• Número de gerações (
• Tamanho da população (
P={20,60,100,140,180,180,220,260};
• Seleção elitista, privile
Os testes realizados para mensurar a
do algoritmo trouxeram os resultados representados na
Figura 34. Gráfico tamanho da
2760.00
2780.00
2800.00
2820.00
2840.00
2860.00
2880.00
2900.00
2920.00
2940.00
2960.00
2980.00
Re
sult
ad
o o
bti
do
48
. Resultados obtidos para o segundo teste de Algoritmos Genéticos
Tempos de execução (s) Resultados obtidosMínimo Médio Máximo Mínimo 11.81300 15.09596 21.62500 6621.70 1.71900 13.46944 24.43800 2701.34 3.96900 19.96596 33.76600 2673.58 3.23500 24.52714 41.70300 2717.56 6.25000 30.62636 50.95300 2657.70
Entre o valor final de 2882.67 obtido pelo teste “1” da Tabela 6 e o valor final de 2812.49
da mesma tabela, a primeira escolha seria o segundo valor. Porém o custo para se
chegar neste valor é significativamente maior e a diferença de resultado não é expressiva.
Um terceiro teste de algoritmos genéticos visa buscar o melhor ajuste para o tamanho da
ão, e está configurado desta maneira:
Chance de mutação (M): 4%;
Chance de cruzamento (X): 60%
Número de gerações (G): 200;
Tamanho da população (P): sendo p ∈ P e P é um conjunto definido como
={20,60,100,140,180,180,220,260}; e
Seleção elitista, privilegiando os 50% de indivíduos com melhor
Os testes realizados para mensurar a influência do tamanho da população
os resultados representados na Figura 34, Figura 35
tamanho da população x resultado obtido para algoritmos genéticos, com M=4, G=200 e seleção elitista.
20 60 100 140 180
Tamanho da População
Algoritmos Genéticos
Resultados obtidos Médio Máximo 7753.09 9188.77 2882.67 3052.77 2843.33 3003.45 2820.14 2964.62 2812.49 2945.29
e o valor final de 2812.49
, a primeira escolha seria o segundo valor. Porém o custo para se
e a diferença de resultado não é expressiva.
Um terceiro teste de algoritmos genéticos visa buscar o melhor ajuste para o tamanho da
é um conjunto definido como
giando os 50% de indivíduos com melhor fitness.
população no comportamento
35 e Tabela 7.
algoritmos genéticos, com C=60,
180 220
49
Figura 35. Gráfico tamanho da população x tempo decorrido para algoritmos genéticos, com C=60, M=4, G=200 e seleção elitista.
Tabela 7. Resultados obtidos para o terceiro teste de Algoritmos Genéticos
Teste Configuração Tempos de execução (s) Resultados obtidos
C M G P Mínimo Médio Máximo Mínimo Médio Máximo 1 60 4 200 20 0.15700 2.59594 4.46900 2833.24 2954.30 3428.60 2 60 4 200 60 1.71900 13.46944 24.43800 2701.34 2882.67 3052.77 3 60 4 200 100 1.21900 7.84916 15.98400 2772.20 2900.75 3055.48 4 60 4 200 140 2.79700 17.13968 32.17100 2685.99 2856.85 2986.49 5 60 4 200 180 4.81300 26.29204 42.51500 2678.09 2850.62 3009.70 6 60 4 200 220 10.53100 33.99463 50.93800 2684.91 2837.98 2965.80
Nota-se que a oscilação dos tempos de execução para a obtenção do melhor resultado é mais
acentuada nestes testes do que em outros testes realizados anteriormente. O teste 6 da Tabela 7, por
exemplo, obteve em suas últimas gerações os melhores resultados, com valores médios de 2837.98
a 33,99 segundos de execução. O fato do teste 3da mesma tabela alcançar um resultado de 2900.75
a 7,85 segundos não implica que este tenha maiores ou menores taxas de convergência do que o
anterior, pois a 7,85 segundos as observações que compuseram este teste podem ter obtido valores
similares.
Subentende-se também que aos 33,99 segundos uma última mutação ou um cruzamento
pode ter resultado em um indivíduo com maior aptidão. A chance de isso ocorrer aumenta com uma
população maior, pois os indivíduos têm mais chances de serem selecionados e sofrer mutações
0.00
5.00
10.00
15.00
20.00
25.00
30.00
35.00
40.00
20 60 100 140 180 220
Te
mp
o d
eco
rrid
o (
s)
Tamanho da População
benéficas (não que as prejudiciais não ocorram, pois as chances aumentam para as mutações com
resultados de dois tipos).
O resultado do teste número
com o segundo menor tempo de execução. Com um nú
de se conseguir melhores resultados, em decorrência de se
indivíduo sofrer mutação.
Finalmente, o último teste tem como objetivo testar o quanto o número de gerações influi no
resultado. A configuração adotada é esta
• Chance de mutação (
• Chance de cruzamento (
• Tamanho da população (
• Número de gerações (
G={200,300,40
• Seleção elitista, privilegiando os 50% de indivíduos com melhor
Com o final dos testes realizados para algoritmos genéticos, elegeu
Tabela 8 da última configuração testada (
Figura 36. Gráfico número de gerações
2000.00
2200.00
2400.00
2600.00
2800.00
3000.00
3200.00
3400.00
200
Re
sult
ad
o o
bti
do
50
benéficas (não que as prejudiciais não ocorram, pois as chances aumentam para as mutações com
número 3 da Tabela 7 não é o melhor deste conjunto, mas foi obtido
nor tempo de execução. Com um número maior de iterações, há a possibilidade
se conseguir melhores resultados, em decorrência de se estender o nú
Finalmente, o último teste tem como objetivo testar o quanto o número de gerações influi no
resultado. A configuração adotada é esta:
Chance de mutação (M): 4%;
Chance de cruzamento (X): 60%;
Tamanho da população (P): 100;
ero de gerações (g): sendo g ∈ G e G é um conjunto definido como
00,500,600};
Seleção elitista, privilegiando os 50% de indivíduos com melhor
Com o final dos testes realizados para algoritmos genéticos, elegeu
da última configuração testada (Tabela 9).
número de gerações x resultado obtido para algoritmos genéticos, com M=4, P=100 e seleção elitista.
200 300 400 500
Número de Gerações
benéficas (não que as prejudiciais não ocorram, pois as chances aumentam para as mutações com
o melhor deste conjunto, mas foi obtido
mero maior de iterações, há a possibilidade
o número de chances de um
Finalmente, o último teste tem como objetivo testar o quanto o número de gerações influi no
é um conjunto definido como
Seleção elitista, privilegiando os 50% de indivíduos com melhor fitness.
Com o final dos testes realizados para algoritmos genéticos, elegeu-se o teste número 1 da
para algoritmos genéticos, com C=60,
600
51
Figura 37. Gráfico número de gerações x tempo decorrido para algoritmos genéticos, com C=60, M=4, P=100 e seleção elitista.
Tabela 8. Resultados obtidos para o quarto teste de algoritmos genéticos
Teste Configuração Tempos de execução (s) Resultados obtidos
C M G P Mínimo Médio Máximo Mínimo Médio Máximo 1 60 4 200 100 1.219 7.849 15.984 2772.20 2900.75 3055.48 2 60 4 300 100 1.984 15.863 32.344 2689.85 2862.76 3032.15 3 60 4 400 100 1.469 19.452 43.250 2662.01 2860.94 3039.13 4 60 4 500 100 5.921 26.377 56.375 2727.69 2854.12 2960.28 5 60 4 600 100 4.891 27.770 67.594 2708.53 2849.06 2965.36
Apesar de ter o maior valor entre todos os outros testes, conseguiu este com quase metade
do tempo do que o teste número 2 da mesma tabela. A diferença de tempos para obtenção de um
resultado justifica esta escolha, pois a diferença destes resultados é muito pequena ao relacionar um
teste com outro.
Tabela 9. Resultado final para algoritmos genéticos, com C=60%, M=4%, G=200 e P=100.
Metaheurística Tempos de execução (s) Resultados obtidos
Mínimo Médio Máximo Mínimo Médio Máximo Algoritmos Genéticos
1.219 7.849 15.984 2772.20 2900.75 3055.48
0.00
5.00
10.00
15.00
20.00
25.00
30.00
200 300 400 500 600
Te
mp
o d
eco
rrid
o (
s)
Número de Gerações
52
3.2.6 Execução dos testes de Simulated Annealing
Os testes realizados com a metaheurística simulated annealing tiveram como parâmetros
iniciais de configuração os listados a seguir. A execução do algoritmo produziu uma série de
resultados, apresentados na Tabela 10.
• Delta (∆) = 0.99;
• Temperaturas, valoradas de acordo com elementos � sendo que � ∈ � e � é um
conjunto definido como � !100,90,80,70,60,50,40,30,20,10,8,6,4 | 27.
• Observações (O) = 100;
Tabela 10. Resultados obtidos para primeiras execuções de simulated annealing
Teste Configuração Tempos de execução (ms) Resultados obtidos
T ∆∆∆∆ Mínimo Médio Máximo Mínimo Médio Máximo 1 2 0.99 156.00 735.64 1344.00 2599.11 2657.44 2735.94 2 4 0.99 156.00 1241.27 2563.00 2580.55 2624.88 2680.95 3 6 0.99 188.00 1807.45 3422.00 2565.88 2620.00 2678.21 4 8 0.99 875.00 2137.79 4016.00 2572.07 2616.66 2680.66 5 10 0.99 1125.00 2680.15 4328.00 2581.67 2618.99 2673.41 6 20 0.99 2594.00 3953.42 6094.00 2566.69 2719.24 2669.45 7 30 0.99 3469.00 4755.62 6531.00 2569.25 2620.82 2674.43 8 40 0.99 4109.00 5322.38 7063.00 2567.20 2618.37 2667.27 9 50 0.99 4406.00 5781.77 7531.00 2568.69 2620.20 2674.55
10 60 0.99 4766.00 6108.86 7969.00 2577.09 2616.58 2669.97 11 70 0.99 5110.00 6474.85 8219.00 2568.60 2616.81 2659.20 12 80 0.99 5375.00 6833.57 8656.00 2566.06 2616.87 2660.42 13 90 0.99 5828.00 7214.36 8672.00 2568.98 2615.57 2655.55 14 100 0.99 5954.00 7477.03 9547.00 2569.15 2617.73 2672.04
É perceptível que para todas as temperaturas varridas nesta primeira fase de testes, os
resultados obtidos nos finais de cada teste são muito similares. A determinação de um arranjo ótimo
é postergada em decorrência de se utilizar temperaturas mais elevadas como ponto de partida,
aceitando mais facilmente soluções piores no início da execução. Tal fato é constatado no gráfico
representado na Figura 39. Os gráficos representados na mostram que, independentemente da
temperatura de início, o resultado final é similar (Figura 38).
Figura 38. Gráfico temperatura x resultado
Figura 39. Gráfico temperatura x tempo decorrido
A etapa seguinte de testes se deu com a variação da variável
mantendo T = 4. A temperatura com este valor foi escolhida para dar continuidade aos testes em
decorrência de ter apresentado melhores resultados do que com a temperatura ajustada em T = 2. É
possível que resfriar o arranjo a partir de
para que haja um melhor rearranjo de arcos.
2560.00
2580.00
2600.00
2620.00
2640.00
2660.00
2680.00
2700.00
2720.00
2740.00
2
Re
sult
ad
os
ob
tid
os
0.00
1.00
2.00
3.00
4.00
5.00
6.00
7.00
8.00
2 4
Te
mp
o d
eco
rrid
o (
s)
53
temperatura x resultado para simulated annealing
temperatura x tempo decorrido para simulated annealing
A etapa seguinte de testes se deu com a variação da variável
mantendo T = 4. A temperatura com este valor foi escolhida para dar continuidade aos testes em
decorrência de ter apresentado melhores resultados do que com a temperatura ajustada em T = 2. É
possível que resfriar o arranjo a partir de uma temperatura igual a 2 acarrete em tempo insuficiente
para que haja um melhor rearranjo de arcos.
4 6 8 10 20 30 40 50 60
Temperatura Inicial
6 8 10 20 30 40 50 60 70
Temperatura Inicial
simulated annealing, com ∆=0.99
simulated annealing, com ∆=0.99
A etapa seguinte de testes se deu com a variação da variável ∆ como configuração,
mantendo T = 4. A temperatura com este valor foi escolhida para dar continuidade aos testes em
decorrência de ter apresentado melhores resultados do que com a temperatura ajustada em T = 2. É
2 acarrete em tempo insuficiente
70 80 90
80 90 100
Logo, os novos testes consistem em utilizar das seguintes configurações
melhorar o valor de delta. O resultado é apresentado na
• Temperatura (T)
• Delta (∆), valoradas de acordo com elementos
definido como
As qualidades das soluções pioram, de acordo com o gráfico expressado na
medida em que se diminui o valor de
Tabela 11. Resultados obtidos para execuções posteriores de
Teste Configuração Tempos de execução (
T ∆∆∆∆ Mínimo1 4 0.01 0.0152 4 0.10 0.0153 4 0.20 0.0154 4 0.30 0.0165 4 0.40 0.0156 4 0.50 0.0167 4 0.60 0.0168 4 0.70 0.0469 4 0.80 0.062
10 4 0.90 0.06211 4 0.99 0.156
Figura 40. Gráfico delta (
2500.00
2600.00
2700.00
2800.00
2900.00
3000.00
3100.00
3200.00
3300.00
3400.00
0.01 0.1
Re
sult
ad
oo
bti
do
54
Logo, os novos testes consistem em utilizar das seguintes configurações
O resultado é apresentado na Tabela 11.
T) = 4;
, valoradas de acordo com elementos , sendo que
D={0.99, 0.90, 0.80, ... , 0.20, 0.10, 0.01};
As qualidades das soluções pioram, de acordo com o gráfico expressado na
medida em que se diminui o valor de ∆.
. Resultados obtidos para execuções posteriores de simulated annealing
Tempos de execução (s) Resultados obtidosMínimo Médio Máximo Mínimo
15 0.026 0.063 2984.45 15 0.027 0.062 2978.94 15 0.022 0.047 2946.48 16 0.043 0.062 2718.36 15 0.044 0.062 2729.59 16 0.044 0.078 2715.16 16 0.060 0.093 2651.78 46 0.095 0.141 2647.07 62 0.118 0.157 2631.70 62 0.193 0.297 2596.33
156 1.241 2.563 2580.55
delta (∆) x resultado obtido para simulated annealing
0.1 0.2 0.3 0.4 0.5 0.6 0.7
Valor de delta
Logo, os novos testes consistem em utilizar das seguintes configurações, estas visando
que d ∈ D e D é um conjunto
As qualidades das soluções pioram, de acordo com o gráfico expressado na Figura 40, à
nnealing
Resultados obtidos Médio Máximo
3271.90 3933.65 3255.18 4007.50 3256.00 3526.92 2922.42 3301.19 2917.31 3243.43 2933.67 3284.86 2854.49 3273.41 2788.71 2943.59 2748.89 2916.86 2710.61 2866.99 2624.88 2680.95
simulated annealing, com T = 4
0.8 0.9 0.99
55
Ao serem analisados os dados obtidos, é perceptível que com um ∆ muito pequeno (um
resfriamento abrupto) não há tempo hábil para que se chegue a melhores soluções. Quanto ao tempo
decorrido, a Figura 41 traz em seu gráfico o resultado obtido.
Figura 41. Gráfico delta (∆) x tempo decorrido para simulated annealing, com T = 4
Com tal exposição dos resultados de teste para simulated annealing, pode-se afirmar que
para o problema apresentado, a configuração que apresentou melhores resultados foi a mostrada na
Tabela 12.
Tabela 12. Resultado final para simulated annealing, com T=4 e delta=0.99
Metaheurística Tempos de execução (ms) Resultados obtidos
Mínimo Médio Máximo Mínimo Médio Máximo Simulated Annealing
0.156 1.241 2.563 2580.55 2624.88 2680.95
3.2.7 Comparativo entre as metaheurísticas
Feitas as análises individuais de cada uma das metaheurísticas estudadas neste trabalho, há
de se comparar seus melhores desempenhos individuais. Os três tipos de algoritmo se comportam
de maneiras bem distintas quanto ao tempos de execução e qualidade das soluções.
0.00
0.20
0.40
0.60
0.80
1.00
1.20
1.40
0.01 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 0.99
Te
mp
o d
eco
rrid
o (
s)
Valor de delta
56
Quanto ao tempo decorrido, simulated annealing, pela sua simplicidade, obteve tempo
médio de 1,241 segundos para chegar a uma solução de uso viável. O tempo decorrido para
algoritmos genéticos é 632,47% maior, enquanto que o alcançado pelo sistema das formigas
representa um aumento de 5694%.
O resultado obtido por simulated annealing também foi o melhor entre as três
metaheurísticas. Em comparação com algoritmos genéticos, foi 9.51% menor. Defronte ao sistema
das formigas, também apresentou uma rota mais eficaz, com uma diminuição de 16,10%. Tais
resultados são apresentados no Quadro 12.
Quadro 12. Comparativo entre sistema das formigas, algoritmos genéticos e simulated annealing.
Metaheurística Tempos de execução (s) Resultados obtidos
Mínimo Médio Máximo Mínimo Médio Máximo Sistema das Formigas
5984.00 70.671 185.141 2981.96 3128.76 3239.11
Algoritmos Genéticos
1219.00 7.849 15.984 2772.20 2900.75 3055.48
Simulated Annealing
156.00 1.241 2.563 2580.55 2624.88 2680.95
Da maneira como um algoritmo genético é concebido, a possibilidade de se jogar uma boa
solução fora é grande, geração após geração. Dois indivíduos muito bons podem ser descartados se
selecionados para cruzamento. Seus filhos não podem ser tão bons quanto o pai. Isso permite que se
busque outros mínimos no domínio da solução.
O mesmo acontece com temperaturas elevadas em simulated annealing, pois arranjos piores
lançados a cada iteração são freqüentemente aceitos como novos pontos de partida para o próximo
rearranjo, acarretando em muitas iterações “perdidas”. Porém, é isso que aumenta o espaço de busca
do algoritmo, visando alcançar mínimos globais.
No sistema das formigas, valores muito distantes entre α e β provocam estagnação do
caminho encontrado. Se α se tornar muito maior do que β, o primeiro caminho que se tornar mais
evidente em depósitos de feromônio dificilmente será mudado. Como os caminhos de feromônio
são todos iguais no início da execução e o valor de atratividade terá pouca importância, todos os
caminhos têm a mesma chance de serem escolhidos. Caso contrário, Se α se tornar muito menor do
que β, as formigas avidamente escolhem o nó mais próximo e tendem a se comportar como
simulated annealing.
57
Neste caso, não haveria comunicação entre as formigas por meio dos depósitos de
feromônio, deixando de integrarem um conjunto que usa de inteligência em grupo para se tornarem
apenas formigas que tentam, por si só, chegarem a um ponto ótimo. Este problema específico de
118 pontos de uma placa de circuito impresso tem suas particularidades. Uma delas é que vários dos
seus pontos possuem distâncias iguais entre si (Figura 42)
Figura 42. Visualização parcial do circuito impresso com furos eqüidistantes.
(a)
(b)
(c)
Figura 43. (a) Soluções obtidas: (a) sistema das formigas; (b) algoritmos genéticos; e (c) simulated
annealing.
58
Dependendo do algoritmo selecionado para resolver este problema, a solução encontrada foi
uma única sequência de nós otimizada (como em simulated annealing) ou ser um conjunto de várias
boas subseqüências. (Figura 43).
Ao ser utilizado o sistema das formigas ou algoritmos genéticos, as soluções mais
encontradas representam subseqüências (cadeias) otimizadas, em detrimento de uma otimização
global.
59
4 CONCLUSÕES
Realizadas as etapas de pesquisa em bibliotecas universitárias, internet, periódicos e demais
fontes de informação, conseguiu-se chegar a um projeto implementado para a realização de testes
afim de encerrar a este trabalho de conclusão de curso.
Na área de pesquisa operacional, muito se aprendeu ao ler conteúdo de referências
bibliográficas básicas, como David Goldberg (1989) e mais atuais, como Lance Chambers (1995) e
Grigori Gutin (2003). Sobre o sistema das formigas, a grande maioria dos conteúdos encontrados
foram artigos, dissertações e teses. A abordagem deste assunto foi realizada com o trabalho básico
de Marco Dorigo (1992).
Por fim, simulated annealing. O assunto é bem explorado e o algoritmo de fácil
compreensão, se comparado aos dois previamente citados. O trabalho de Kirkpatrick (1983) é bem
claro em suas afirmativas, o que o tornou o algoritmo uma evidente escolha.
A realização de diversos testes e a obtenção de resultados esclareceu diversos
comportamentos destes algoritmos ao serem aplicados para o problema das placas de circuito
impresso. Pelas características deste problema é mais rápido recalcular sucessivas vezes o grafo
com a técnica de nearest neighbor (NN). A enumeração dos resultados exposta neste trabalho ao
utilizar de NN, concluiu-se que para um problema deste porte, o algoritmo simulated annealing é,
de fato, o de maior eficiência.
Há de se prolongar a implementação deste sistema. Em algoritmos genéticos, por exemplo,
podem ser pesquisados outros métodos de tratamento de inconsistência, outras visões no que se
refere à seleção elitista, por torneio. Pode-se, também, reunir outros métodos de mutação a serem
utilizados em futuras implementações.
No sistema das formigas, a criação de otimizações nos depósitos de feromônios pode ser
realizada. Um sistema elitista de formigas faria com que as n melhores formigas re-depositassem
feromônios nos arcos os quais passaram.
As possibilidades de estudo se estendem ao considerar as técnicas que agregam partes
diferentes dos algoritmos em uma resolução de um problema em comum. Algoritmos híbridos
podem ser implementados para obter maior eficiência em termos de resultado e velocidade de
processamento. O código está aberto para possibilidades de hibridização, pois quaisquer operações
de uma metaheurística podem ser aplicadas em outra. Um exemplo mais próximo seria uma
população de formigas que cruzariam sofrendo mutações com NN.
60
Quanto ao código-fonte, implementado na linguagem C++, as otimizações que podem ser
feitas, constituiriam em ajustes em loops e operações matemáticas. O código-executável consiste
em um processo extremamente consumidor de tempo e abre-se a oportunidade de se reimplementar
grande parte dos algoritmos utilizando Assembly.
Por exemplo, a técnica de ordenamento quicksort foi implementada na seleção elitista de
algoritmos genéticos e poderia ser reescrita. Há vários outros modelos de ordenamento que podem
ser implementados para aumentar a rapidez de execução. Técnicas desejáveis a serem integradas,
radix sort, insertion sort e merge sort, têm ganho demonstrado sobre quicksort e,
conseqüentemente, melhorariam os tempos de execução destes testes (GOSLIN, HARISSON &
BORITZ, 2001).
Ainda, da maneira que foi implementado, o código constitui uma API de metaheurísticas
pronta para ser utilizada em futuro desenvolvimento. Em sua versão inicial, que gerou os resultados
apresentados aqui, apenas as metaheurísticas apresentadas foram implementadas. Acrescentar
outros métodos de otimização e de apoio, como mais geradores de números aleatórios, acarretaria
em mais flexibilidade de programação de outros algoritmos.
Com a entrega deste trabalho de conclusão de curso, os esforços estão concentrados em
posteriores estudos, melhorias nas técnicas de implementação e desenvolvimento de um ambiente
didático flexível, de testes e estudos.
E, assim como o assunto despertou interesse do autor, seja sobre as metaheurísticas ou sobre
qualquer instância do problema do caixeiro viajante, deve fazer o mesmo com futuros outros
estudantes de pesquisa operacional.
REFERÊNCIAS BIBLIOGRÁFICAS
APPLEGATE, D., BIXBY, R., CHVÁTAL, V., COOK, W. The Traveling Salesman Problem: A Computational Study. Princeton University Press. Princeton, Estados Unidos. 2006 BRYANT, K., BENJAMIN, A. Genetic algorithms and the traveling salesman problem. Department of Mathematics, Harvey Mudd College. Claremont, Estados Unidos, 2000
CHAMBERS, L. Practical handbook of genetic algorithms: applications volume 1. CRC Press, Londres, Inglaterra, 1995 CLARKE, G., WRIGHT, J. Scheduling of vehicles from a central depot to a number of delivery points. In: Operations Research, vol. 12, pp. 568-581. Manchester, Inglaterra. 1964. CORMEN, T., LEISERSON, C., RIVEST, R., STEIN.C Introduction to algorithms, second Edition. The MIT Press. Cambridge, Estados Unidos, 2001. CUNHA, C., BONASSER, U., ABRAHÃO, F. “Experimentos computacionais com heurísticas de melhorias para o problema do caixeiro viajante”. In: Panorama Nacional de Pesquisa em Transportes – Anais do XVI ANPET, ANPET, Rio de Janeiro, v.1, p.105-117. Rio de Janeiro, Brasil, 2002 DIBARTOLOMEO, S. What's all this about RS274X anyway? Artwork Conversion Software, Inc., Santa Cruz, Estados Unidos, 1995. Artigo disponível em http://www.artwork.com/gerber/274x/rs274xrevd_e.pdf em 1º de junho de 2007. DORIGO, M. Optimization by a colony of cooperating agents. Université Libre de Bruxelles, Bélgica, 1996. FORMAN, S. Explanation of the Nearest Neighbor Algorithm, Mathematics and Computer Science Department, Saint Joseph's University. Filadélfia, Estados Unidos, 2005. Disponível em http://www.baseball-reference.com/travel/class/nearest.html em 07/08/2007. GATECH The traveling salesman problem website. Georgia Institute of Technology. Georgia, Estados Unidos, 2007. Disponível em http://www.tsp.gatech.edu em 11 de junho de 2007. GLOVER, F. Tabu search fundamental and uses. University of Colorado, Boulder, Colorado, Estados Unidos,1995. GOLDBERG, D.E. Genetic algorithms in search, optimization and machine learning. Reading, Estados Unidos, 1989. GOSLING, J., HARISSON, J., BORITZ, J. Sorting Algorithms. University of British Columbia. Calfórnia, Estados Unidos, 2001. Disponível em http://www.cs.ubc.ca/spider/harrison/Java/sorting-demo.html em 10/10/2007.
62
GUTIN, G., PUNNEN, A. The traveling salesman problem and its variations. Kluwer Academic Publishers, Dordrecht, Holanda, 2003. HOLLAND, J. Adaptation in Natural and Artificial Systems. The University of Michigan Press, Michigan, Estados Unidos, 1975. IEEE 1003.1-2004, Standard for information technology - portable operating system interface (POSIX). Base definitions, 2004. Disponível em ieeexplore.ieee.org/servlet/opac?punumber=9156 Em 11/09/2007. KIRKPATRICK, S., GELATT, C., VECCHI, M. Optimization by Simulated Annealing in Science, nº 4598, volume 220, pp. 671-680, 1983 LUGER, F.G. Inteligência artificial: estruturas e estratégias para a resolução de problemas complexos. 2ª Edição, Ed. Bookman. Rio de Janeiro, Brasil., 2004. NUNES, L.F. Algoritmos Genéticos Aplicados na Abordagem de um Problema Real de Roteirização de Veículos. Dissertação de mestrado. Universidade Federal do Paraná. Curitiba, Brasil, 1998. RUSSELL, S., NORVIG, P. Artificial intelligence: a modern approach. Second Edition. Prentice-Hall, New Jersey, Estados Unidos, 2004. REINHELT, G. The traveling salesman: computational solutions for TSP applications. Editora Springer-Verlag. Berlim, Alemanha, 1994. SCHMIDT, S. PCB Prototyping Systems Put to Work: On-site fabrication of high-precision prototype circuit boards speeds time to market. Wireless Design & Development. 2000. Disponível em: http://www.lpkfusa.com/articles/prototyping/wdd_04_2000.pdf em 25 de maio de 2007. SCHRIJVER, A. On the history of combinatorial optimization. Centre for Mathematics and Computer Science, Amsterdã, Holanda, 2000. SENGOKU, H., YOSHIHARA, I. A fast TSP solver using GA on JAVA. Systems Development Laboratory, Hitachi Japan Ltd., Japão, 1999. Disponível em: http://www.gcd.org/sengoku/docs/arob98.pdf em 25 de maio de 2007.