Metaheurísticas

Horários das aulas

Ementa

Consulte Projeto Pedagógico do Curso.

Objetivos da disciplina

Conteúdo

Principais metaheurísticas usadas na literatura recente (algoritmos genéticos, simulated annealing, busca tabu, colônia de formigas, outras metaheurísticas bio-inspiradas, GRASP, dentre outras).

Referências principais

Obs: outras referências são descritas em cada tópico

Formas de avaliação

Serão aplicadas no mínimo duas avaliações, dentre testes dissertativos, apresentações de seminários e/ou desenvolvimento de projetos.

Cálculo da média parcial (2023/1)

(1,0(atividade avaliativa 1) + 6,0(atividade avaliativa 2) + 3,0(atividade avaliativa 3)) / 10,0

Critérios para aprovação

MATERIAIS PARA AS AULAS

Linguagem de programação

A linguagem de referência é o Julia. Você pode encontrar instruções de instalação e uso neste link.

Para auxiliá-lo na instalação do Julia pré-compilado + pré-requisitos + pacotes utilizados, baixe ESTE SCRIPT e siga as instruções contidas nele (testado no Ubuntu 22.04)

Pacotes e códigos em Julia

Apresentação

O problema do caixeiro viajante (Travelling Salesman Problem - TSP)

O problema do problema do caixeiro viajante (em inglês, Travelling Salesman Problem - TSP) serve como “saco de pancadas” para testarmos as implementações. O TSP é simples de entender, portanto não requer conhecimento profundo para começar a testar as metaheurísticas. Além disso, é um problema clássico e de difícil resolução.

Sobre geradores de números randômicos

A geração de números randômicos em computador é um tópico pesquisado até hoje. Os principais algoritmos utilizados geram números “pseudo-randômicos”, chamados assim por não serem verdadeiramente randômicos (os números se repetem em ciclos). Este não é um tópico central nessa disciplina, mas vale o comentário. No contexto das metaheurísticas, onde temos que gerar muitos números, é interessante utilizarmos bons geradores.

Cada linguagem adota um gerador como padrão. Por exemplo, o Python 3 adota o Mersenne Twister, um gerador proposto por M. Matsumoto e N. Makoto em 1998. Esse algoritmo é bastante utilizado e gera números com qualidade melhor comparados ao gerador padrão do C. No Julia, Mersenne Twister é implementado no pacote Random.jl.

O Julia (versão 1.8), por sua vez, utiliza como padrão um excelente gerador, mais moderno, conhecido como Xoshiro256++. Esse gerador foi proposto por D. Blackman e S. Vigna em 2018, é rápido e apresenta excelentes resultados em testes de qualidade. Assim, todas as chamadas de funções que retornam valores aleatórios (rand, randperm etc) usam este gerador por padrão (a menos que o usuário diga para usar outro gerador, claro). Os códigos apresentados nessa disciplina utilizam Xoshiro256++.

Para saber mais sobre geradores de número pseudo-aleatórios, consulte este link. Uma lista de diferentes geradores pode ser vista neste link.

METAHEURÍSTICA 1: Busca Tabu (Tabu Search - TS)

METAHEURÍSTICA 2: Simulated Annealing (SA)

METAHEURÍSTICA 3: Colônia de formigas (Ant Colony Optimization - ACO)

DICAS PARA CALIBRAÇÃO DE PARÂMETROS

METAHEURÍSTICA 4: Evolução Diferencial (Differential Evolution - DE)

METAHEURÍSTICA 5: Nuvem de partículas (Particle Swarm Optimization - PSO)

METAHEURÍSTICA 6: Algoritmo Genético (Genetic Algorithm - GA)

METAHEURÍSTICA 7: GRASP (Greedy Randomized Adaptive Search Procedure)

Pacotes de terceiros

OUTRAS METAHEURÍSTICAS

Gravitational Search Algorithm

Evolutionary Centers Algorithm

Leitura(s) recomendada(s)

Materiais de terceiros

ATIVIDADES PROPOSTAS (2023/1)

Atividade 1

ATIVIDADE para a semana entre 27/03 e 31/03, a ser discutida entre todos na aula do dia 06/04

Pesquise metaheurísticas na internet/artigos. Para cada metaheurística encontrada, faça uma descrição contendo:

Atividade 2

  1. Instale o Julia (caso não instalado)
  2. Instale o pacote TSPLIB.jl
  3. Carregue a instância berlin52 e teste a função de tspplot obtida neste link
  4. Implemente a função de custo (distância euclideana do percurso)
  5. Implemente a busca gulosa pelo vizinho mais próximo (Nearest Neighbor search – NN). Veja detalhes neste link
  6. Plote soluções obtidas por NN e compare com o valor ótimo (gravado em tsp.optimal)
  7. Implementar a heurística 2-OPT. Veja detalhes neste link. Use NN para inicializar. Comparar solução com anteriores.

Atividade 3

Serão avaliadas as implementações de todas as metaheurísticas apresentadas durante a disciplina. Cada aluno será “entrevistado” individualmente, onde mostrará ao professor o que fez, executará testes e responderá à eventuais perguntas. Não é necessário fazer slides para uma apresentação, a conversa será feita em frente ao computador. No entanto, o(a) estudante deverá organizar o roteiro de sua fala, testes que apresentará, dificuldades enfrentadas etc.

Critérios considerados na avaliação:

Atividade 4

Apresentação de um artigo selecionado. Cada estaudante escolherá um artigo e fará uma apresentação explicando:

O(A) estudante pode escolher um artigo da lista sugerida abaixo ou um artigo de sua preferência. No último caso, o artigo dependerá do aval do professor.

Critérios de pontuação da apresentação:

Critérios de avaliação:

Artigos sugeridos:

A Hybrid Grouping Genetic Algorithm for the Multiple-Type Access Node Location Problem
O. Alonso-Garrido, S. Salcedo-Sanz, L.E. Agustín-Blas, E.G. Ortiz-García, A.M. Pérez-Bellido, J.A. Portilla-Figueras.


A simple and robust Simulated Annealing algorithm for scheduling workover rigs on onshore oil fields
G.M. Ribeiro, G.R. Mauri, L.A.N. Lorena


A simple and effective genetic algorithm for the two-stage capacitated facility location problem
D.R.M. Fernandes, C. Rocha, D. Aloise, G.M. Ribeiro, E.M. Santos, A. Silva


A greedy randomized adaptive search procedure for the point-feature cartographic label placement
G.L. Cravo, G.M. Ribeiro, L.A.N. Lorena


Simulated annealing and tabu search approaches for the Corridor Allocation Problem
H. Ahonen, A.G.de Alvarenga, A.R.S. Amaral


A Biased Random-Key Genetic Algorithm for the Traffic Counting Location Problem
G. Clímaco, P.H. Gonzalez, G.M. Ribeiro, G.R. Mauri, L. Simonetti


Four-bar Mechanism Synthesis for n Desired Path Points Using Simulated Annealing
H. Martínez-Alfaro


Dynamic Load Balancing Using an Ant Colony Approach in Micro-cellular Mobile Communications Systems
S.-S. Kim, A.E. Smith, S.-J. Hong


Tabu Search Heuristic for Point-Feature Cartographic Label Placement
M. Yamamoto, G. Camara, L.A.N. Lorena


A GRASP algorithm for solving large-scale single row facility layout problems
G.L. Cravo, A.R.S. Amaral


Single row facility layout problem using a permutation-based genetic algorithm
D. Datta, A.R.S. Amaral, J.R. Figueira


Coevolutionary Genetic Algorithm to Solve Economic Dispatch
M.M.A. Samed, M.A.S.S. Ravagnani


GSA: A Gravitational Search Algorithm
Rashedi, Nezamabadi-pour, Saryazdi


A New Evolutionary Optimization Method Based on Center of Mass
Mejía-de-Dios, Mezura-Montes