Você está na página 1de 41

Minicurso de Metaheursticas

Jos Andr e Flvio Marcelo

Roteiro
Bl bl bl de Algoritmos Metaheursticas Algoritmos Genticos GRASP VNS

Bl bl bl de Algoritmos
Algoritmo: Uma seqncia de instrues bem definidas e no ambgas. Implementado para resolver um problema.
Determinsticos: O resultado de cada operao determinado de forma nica (Alg. Caminho mnimo, Ordenao, rvore Geradora Mnima, etc.) No Determinsticos: Capaz de escolher uma dentre vrias alternativas possveis a cada passo (heursticas).

Bl bl bl de Algoritmos
Em geral, os algoritmos podem ser avaliados utilizando-se o tempo de execuo e a quantidade de memria utilizada. O tempo de execuo o parmetro mais utilizado para avaliao da eficincia de algoritmos.
O tempo de execuo depende dos seguintes fatores: do programador, dos dados de entrada, da qualidade do cdigo, do hardware utilizado e da complexidade do algoritmo implementado.

Bl bl bl de Algoritmos
A funo que associa o tempo de execuo de um algoritmo ao tamanho (n) dos dados denominada complexidade em tempo do algoritmo. Classes de Problemas e funes de complexidade (1) f(n)=1 = C. Constante (2) f(n)= O(log n) = C. Logartmica (Busca Binria,
Ordenao) (3) f(n)= O(n) = C. Linear (Busca Linear) (4) f(n)= O(n2) = C. Quadrtica ( Soma de Matrizes)

Bl bl bl de Algoritmos

(5) f(n)= O(n3) = C. Cbica ( Produto de Matrizes, Caminho Mnimo Floyd) (6) f(n)=O(2n) = C. Exponencial (No so teis sob o ponto de vista prtico (Satisfabilidade). (7) f(n)=O(n!)=C. Fatorial . Bem pior que (6) (Caixeiro Viajante). Os tipos (6) e (7) aparecem na soluo de problemas quando se usa a fora bruta para resolv-los.

Bl bl bl de Algoritmos

Comparao de vrias funes de complexidade


Funo 10 20 30 Tamanho n 40 50 60 100 150 n 0,000001 0,000002 0,000003 0,000004 0,000005 0,000006 0,00001 0,000015 2 n 0,00001 0,00004 0,00009 0,00016 0,00025 0,00036 0,001 0,00225 3 n 0,0001 0,0008 0,0027 0,0064 0,0125 0,0216 0,1 0,3375 5 n 0,01 0,32 2,43 10,24 31,25 77,76 1000 7593,75 n 2 0,000102 0,104858 107,3742 109951,163 1,13E+08 1,15E+11 1,27E+23 1,43E+38 n! 0,36288 2,43E+11 2,65E+25 8,1592E+40 3,04E+57 8,32E+74 9,3E+150 5,7E+255 Em um segundo 10.000.000

Influncia do aumento de velocidade dos computadores no tamanho t do problema (tempo de 1h)


Funo Computador Computador Computador Atual 100 x + rpido 1000 x + rpido t1 t2 t3 t4 100.t1 10.t2 4,6.t3 t4+6,6 1000.t1 31,6.t2 10.t3 t4+10

n 2 n 3 n n 2

Bl bl bl de Algoritmos
Algoritmos polinomiais (tempo de execuo) a funo de complexidade O(p(n)), onde p(n) um polinmio. Algoritmos Exponenciais (tempo de execuo), cuja funo de complexidade O(cn).

Metaheursticas
Heurstica qualquer mtodo desenvolvido para resolver um determinado tipo de problema. As metaheursticas so defnidas como heursticas de uso mais geral ou uma heursticas das heursticas. Exemplo de heursticas - k-mdias (Centrides) - Insero Vizinho mais prximo (PCV)

Metaheursticas
So de uso geral
Simples de implementar Possuem mecanismos que possibilitam escapar de
solues de baixa qualidade.

Baixo tempo computacional So robustas (instncias de tamanho variado)

Metaheursticas
Produzem timos globais ou timos locais de
qualidade superior aos timos produzidos por uma heurstica.

Podem ser utilizadas conjuntamente com


formulaes exatas (quando aplicveis) . - Gerao de Bounds - Soluo de Partida

Metaheursticas
Heursticas Metaheursticas

Algoritmos Genticos
Criados por Holland (1975) baseiam-se nos processos observados na evoluo natural. Similarmente teoria biolgica dos sistemas naturais, os melhores indivduos sobrevivem e geram descendentes com suas caractersticas hereditrias.

Algoritmos Genticos
Caractersticas: Usam tcnicas de aleatorizao So robustos e de uso geral Trabalham unicamente com o valor da funo objetivo (restries podem ser incorporadas). Utilizam somente regras probabilsticas

Algoritmos Genticos
Terminologia: Cromossomo (uma soluo para o problema) Populao (conjunto de cromossomos) Gene (elementos do cromossomo)

Algoritmos Genticos
Passos necessrios para construir um algoritmo gentico (AG): Escolha da forma de representao dos cromossomos (possveis solues) Gerao da Populao Inicial (p cromossomos) Se p for pequeno o algoritmo tende a convergir para mnimos locais pobres. (utilizar em mdia p=100) Avaliao da funo objetivo para cada cromossomo

Algoritmos Genticos
Passos necessrios para construir um algoritmo gentico (AG): Utilizao de Operadores Genticos: (1) Reproduo dos melhores cromossomos para as geraes seguintes. Utiliza-se o mtodo do torneio ou mtodo da roleta viciada.

Algoritmos Genticos
Passos necessrios para construir um algoritmo gentico (AG): Reproduo Roleta Viciada.
Soluo Funo Objetivo Probabilidade de Seleo C1 15.84 0.078 C2 88.20 0,435 C3 12.10 0.060 C4 31.50 0.155 C5 55.08 0.272 Prob. Acumulada 0.078 0.513 0.573 0.728 1.000

Sortear cinco valores entre 0 e 1 e comparar com a probabilidade acumulada qi, considerando q0=0. Se qi-1<rqi, selecionamos o cromossomo Ci. Considere, por exemplo : r1=0.5083, r2=0.7712, r3=0.2792, r4=0.6913, r5=0.0053 C2, C5, C2, C4, C1. (problema minimizao 1/fobj)

Algoritmos Genticos
Passos necessrios para construir um algoritmo gentico (AG): Reproduo Mtodo do Torneio. Considerando que a populao tenha p cromossomos, efetuar p selees (A.A.S) de k cromossomos (k<m). Em cada seleo, escolher o melhor cromossomo (funo objetivo).
Selees Valores de FOBJ C1,C2 15.84, 88.20 C2,C3 88.20, 12.10 C1,C3 15.94, 12.10 C4,C1 31.50, 15.84 C5,C1 55.08, 15.84 Cromossomo Escolhido C2 C2 C1 C4 C5

Algoritmos Genticos
Passos necessrios para construir um (AG): (2) Cruzamento (Crossover) : Possibilita a combinao de trechos dos cromossomos. Ou seja, troca partes das solues, produzindo novas solues. Selecionar um percentual (25% a 75%) de cromossomos e efetuar o cruzamento dois a dois.
Cromossomo 1 Cromossomo 2 Novo crom. 1 Novo crom. 2 Tipos de Crossover: Um ponto, Dois pontos, k pontos ou uniforme.

Algoritmos Genticos
Passos necessrios para construir um (AG): (3) Mutao (Mutation): Corresponde a uma pequena perturbao em uma soluo (cromossomo), objetivando regenerar algum cromossomo que tenha sido eliminado. Seleciona-se um percentual baixo de cromossomos e um percentual baixo (1% a 5%) de genes em cada cromossomo.
Posies em azul sofreram mutao.

Algoritmos Genticos
Aplicao do AG: Problema de Agrupamento. Def: Considere um conjunto de n objetos com s atributos (variveis). Deseja-se distribuir os objetos em k grupos, de forma que os objetos mais homogneos entre si fiquem em um mesmo grupo, considerando uma particular funo objetivo (desvio quadrtico, varincia, mediana, etc). Solues:
n 16 16 32 k 2 3 3 Nmero Possibilidades 32.767 7.141.686 308.834.550.658.326

Algoritmos Genticos
Aplicao do AG: Problema de Agrupamento. Representao de uma soluo (possvel agrupamento dos objetos). Utilizar um vetor de n posies. Cada posio conter um valor entre 1 e k. Gerar p cromossomos. Ex: k=3 e n=8.
1 1 3 3 2 1 2 1 1 2 3 2 3 1 1 1 1 2 2 2 2 3 1 2 1 1 1 2 3 3 3 3

Algoritmos Genticos
Aplicao do AG: Problema de Agrupamento. Cruzamento 1 ponto:
Cromossomos Pais Cromossomos Filhos

1 1 1 1

2 1 2 1

1 2 1 2

3 1 1 3

1 2 2 1

2 3 2 3

1 1 1 1

3 3 3 3

Algoritmos Genticos
Aplicao do AG: Problema de Agrupamento. Mutao:
Antes Mut. Depois Mut.
3 3 2 2 3 3 1 1 2 3 1 1 1 1 3 3

Algoritmos Genticos
Aplicao do AG: Problema de Agrupamento. Aplicao da Reproduo, Cruzamento e Mutao, considerando como critrio de parada: q geraes, ou t geraes sem melhora, ou um tempo mximo de processamento. Ao final do processamento, o cromossomo com menor (problema de minimizao ) valor da funo objetivo corresponder melhor soluo vivel (agrupamento).

GRASP (Greedy Randomize Adaptive Search Procedure)


Metaheurstica multi-start na qual cada iterao consiste de duas fases: Construo e Busca Local. Construo: Constri uma soluo vivel so Busca Local: Aplica procedimentos de busca em uma vizinhana de so produzindo uma soluo s, objetivando solues de melhor qualidade.

GRASP (Greedy Randomize Adaptive Search Procedure)


(1) so Procedimento_Construo(semente); (2) s Busca_Local(so); (3) Atualize_Soluo(s,sbest) Executar os passos (1), (2) e (3) durante t iteraes sbest= melhor soluo obtida at o momento. Refinamentos do GRASP: GRASP com Filtro, GRASP com Path Relinking e GRASP Reativo.

GRASP (Greedy Randomize Adaptive Search Procedure)


GRASP com Filtro: Executar m vezes o procedimento de construo e definir como so a melhor das solues. GRASP com Path Relinking: Trabalha com mais de uma soluo na busca local Uma soluo base (sb) e uma soluo guia (sg). Atravs de movimentos constri solues intermedirias (si).

GRASP (Greedy Randomize Adaptive Search Procedure)


GRASP com Path Relinking:
sb si(1) si(2) si(3) sg

f=2

f=2.3

f=1.9

f=1.8

f=1.95

GRASP (Greedy Randomize Adaptive Search Procedure)


Procedimento_Construo so0 Defina Lista de Candidatos (LC) composta por todos os elementos que podem compor uma soluo. Avalie os custos de insero de cada elemento e LC em so. Construir (partindo de LC) uma Lista de Candidatos Restrita (LCR) (2)Selecione um elemento e da LCR (3) Adicione e em so e remova e de LC (4) Atualize os custos de insero Executar (1)-(4) at que LC fique vazia.

GRASP (Greedy Randomize Adaptive Search Procedure)


LCR Avalie o custo de cada elemento e de LC (custo(e)) Cmin mnimo {custo(e)|eLC} Cmax mximo {custo(e)|eLC} Critrio (1) Adicionar em LCR os k elementos de LC e que tm os menores custos associados (problema de minimizao) Critrio (2) LCR ={eLC|custo(e)Cmin+.(Cmax-Cmin)} [0,1]

GRASP (Greedy Randomize Adaptive Search Procedure)


AINDA SOBRE A LCR Aps a definio da LCR selecionar aleatoriamente um elemento e em LCR e atualizar a soluo so e a LC. Critrio (2) LCR ={eLC|custo(e)Cmin+.(Cmax-Cmin)} SE =0 Guloso , SE =1 Aleatrio. GRASP Reativo: no um parmetro fixo. A cada p iteraes atualizado.

GRASP
Aplicao do GRASP: Problema de Caixeiro Viajante Dado um conjunto de m cidades e definidas as distncias entre todas as cidades, tomadas duas a duas, deseja-se determinar um tour que passe por todas as cidades (ciclo) de forma que a soma das distncias seja mnima. Solues = (m-1) !
Estrutura:Grafo Cidades = Ns Ligaes=Arestas (com distncias entre duas cidades i e j)

GRASP
Aplicao do GRASP: Problema de Caixeiro Viajante Procedimento de Construo: 1o elemento da soluo so uma das m cidades (aleatria). LC (inicialmente as m-1 cidades) (1) Avalio o custo de insero de cada um dos m-1 ns na rota. (2) Critrio (2) (=0.5) LCR ={eLC|custo(e)Cmin+.(Cmax-Cmin)}

GRASP
Aplicao do GRASP: Problema de Caixeiro Viajante (3) Seleciono um elemento e de LCR que corresponde a um n para ser inserido na rota. (4) Atualizo LC (5) Nova LCR ...

GRASP
Aplicao do GRASP: Problema de Caixeiro Viajante Procedimento de Busca Local: Escolher um n i da rota Escolher um n j da rota Trocar de posio i com j
b i

c d j

D-(Dia+Dib)+(Dja+Djb)-(Djc+Djd)+(Dic+Did)

VNS (Variable Neighborhood Search)


VNS : Uma metaheurstica muito utilizada para a resoluo de problemas de otimizao combinatria. Consiste em uma sistemtica troca de vizinhanas conjugada com a aplicao de uma busca local. (0) Definio de uma estrutura de vizinhanas V1, V2, ...,Vk,...,Vkmax. (kmax = mximo de vizinhanas) (1)Definio de uma soluo inicial x. (2) Defina k = 1(primeira vizinhana)

VNS (Variable Neighborhood Search)


(3) Perburbao Gerar um ponto x (aleatoriamente) na k-sima vizinhana de x (x Vk(x)) (4) Aplique a busca local sobre xe obtenha x. (5) Atualizao (Mover ou No) : Se o valor da funo objetivo f(x) melhor que o valor atual f(x_atual) x=x e continue em V1, caso contrrio k=k+1 (muda de vizinhana). Os passos 3,4 e 5 so repetidos at que k=kmax

VNS (Variable Neighborhood Search)

V1

VNS (Variable Neighborhood Search)

V1 V1 V2