GRASP Disciplina: ODST Professores: José Oliveira e Maria Carravilla Aluno: Marcelo Nogueira FEUP JANEIRO 2008
Otimização Achar a solução de um problema P tal que uma certa função critério f(x) seja maximizada (ou minimizada) onde x X Onde: x é uma solução do problema X é o espaço das soluções admissíveis é o espaço das soluções
Exemplo de função a ser otimizada y cost Valor de f(x) Plano das soluções
Estratégia: Solução Gulosa + Busca local Achar uma solução inicial de forma gulosa Melhorar a solução através de uma busca local, por exemplo, algoritmo 2-opt Problema: Isto produz pouca variedade na solução, podendo assim, ficar preso a um mínimo local
Solução Gulosa + Busca local x y cost Solução final da busca Soluções Gulosas
Como escapar dos mínimos locais?
GRASP Greedy Randomized Adaptive Search Procedure Consiste basicamente em repetir dois passos até que um certo critério de parada seja atingido Gerar uma solução inicial semi-gulosa (gulosa aleatorizada) Melhorar a solução inicial através de uma busca local e actualizar a melhor solução encontrada As soluções semi-gulosas são mais variadas que as soluções gulosas, com isto espera-se conseguir escapar de mínimos locais
GRASP Início Fase Construtiva: Solução semi-gulosa Fase de Melhoramento: busca local Critério de parada? não sim Fim
GRASP Solução final (melhor de todas achadas) cost Solução final x y cost Solução final (melhor de todas achadas) Solução final Solução final Soluções Semi-gulosas
O que é uma solução semi-gulosa?
Solução Gulosa A cada passo, seleccionar o candidato que maximize (ou minimize) a função de custo no momento Não pensa no futuro, faz a escolha melhor tendo em vista o presente
Solução Gulosa Ex: Knapsack Backpack: 8 unidades de espaço Heurística gulosa: escolher o item mais valioso por unidade (valor/espaço ocupado) Solução encontrada: itens 1 e 2 com valor total=7 Solução óptima: itens 2 e 3 com valor total=12 Item Valor Espaço Ocupado Valor/Espaço 1 2 5 3 1,66 7 1,4 4 9 1,28
Solução Semi-gulosa Consiste em, a cada passo, criar o que se chama de Restricted Candidate List (RCL) uma lista com os “n” melhores candidatos levando em consideração um algoritmo guloso Após criada a RCL, é escolhido, aleatoriamente, um elemento da lista e adicionado a solução parcial actual
Solução semi-gulosa Ex: Knapsack com tamanho da RCL=2 Backpack: 8 unidades de espaço Dois melhores candidatos: RCL = {1,2} – escolher aleatoriamente um a adicionar na mochila – suponha 1 Criar nova RCL = {2,3} – escolher aleatoriamente um para adicionar na mochila – suponha 3 (solução {1,3}) Possíveis soluções encontradas: {1,2}= 7; {1,3}= 9; {2,3}= 12; Item Valor Espaço Ocupado Valor/Espaço 1 2 5 3 1,66 7 1,4 4 9 1,28
Gulosas Vs. Aleatórias combinadas com busca local Em média, as soluções de uma busca local a partir de uma solução gulosa são melhores que as originadas de uma solução inicial aleatória As soluções de uma busca local a partir de uma solução aleatória são bem mais variadas que as originadas de uma solução inicial gulosa Ideal: utilizar soluções iniciais semi-gulosas para a fase de busca local
Parâmetros do GRASP Os parâmetros para ajustar no GRASP são: Tamanho da RCL Note-se que se o tamanho da RCL for 1, temos um algoritmo guloso, e se for máximo, temos um algoritmo aleatório A RCL também pode ter um tamanho variável, onde um elemento irá pertencer a RCL se sua contribuição para a função custo for x% do valor da função para o melhor candidato Critério de parada do algoritmo Normalmente um determinado número de operações ou um determinado tempo
Vantagens do GRASP Rápido Geralmente produz boas soluções Poucos parâmetros para serem ajustados
GRASP para o TSP Algoritmo geral Repita até critério de parada Calcule solução inicial semi-gulosa Melhore a solução por busca local (utilizei 2-opt) End
GRASP para o TSP Algoritmo de geração de solução semi-gulosa Repita até que todos os nós estejam na solução Escolha os “n” nós (vizinhos mais próximos ou inserção mais barata) e coloque-os na lista RCL Escolha aleatoriamente um componente da lista RCL e insira na solução actual End
Resultados obtidos 29 cidades: arquivo 51 cidades: arquivo
Resultados obtidos 1002 cidades - óptimo: 259045 Para 10 iterações (IMB) Tamanho RCL=1: 301066 (4 minutos) Tamanho RCL=2: 301066 (11 minutos) Para 300 iterações (VMP) Tamanho RCL=1: 312317 Tamanho RCL=2: 419553 Tamanho RCL=3: 505834
Resultados obtidos 18512 cidades (VMP) Para 10 iterações (21 minutos) Tamanho RCL=1: 1025010 Tamanho RCL=2: 1025010
Conclusões A velocidade do algoritmo GRASP depende da velocidade dos algoritmos construtivos e de melhoramentos utilizados Os resultados obtidos foram sempre melhores que as heurísticas não combinadas, contudo tais resultados ainda podem ser melhorados utilizando-se um algoritmo de vizinhança mais eficiente
Bibliografia José Fernando Oliveira Maria Antónia Carravilla, “Técnicas aproximadas para a resolução de problemas de Optimização Combinatória”, MEEC – Faculdade de Engenharia da Universidade do Porto GREEDY RANDOMIZED ADAPTIVE SEARCH PROCEDURES, LEONIDAS S. PITSOULIS AND MAURICIO G.C. RESENDE GREEDY RANDOMIZED ADAPTIVE SEARCH PROCEDURES, THOMAS A. FEO and MAURICIO G.C. RESENDE Otimização Combinatória, L.A.N. Lorena