240 likes | 315 Views
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
E N D
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 xX • Onde: • x é uma solução do problema • X é o espaço das soluções admissíveis • é o espaço das soluções
cost y x Exemplo de função a ser otimizada 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
cost y x Solução Gulosa + Busca local Solução final da busca Soluções Gulosas
GRASP • GreedyRandomizedAdaptiveSearchProcedure • 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
cost y x GRASP Solução final (melhor de todas achadas) Solução final Solução final Soluções Semi-gulosas
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
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;
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