BUSCA TABU Parte III E. G. M. de Lacerda UFRN/DCA 23/10/2006
Memória de Prazo Longo Memória Baseada na Freqüência Estratégia Oscilatória Path-relinking
Memória Baseada na Freqüência Fornece um tipo de informação que complementa a informação fornecida pela memória de curto prazo. É usada para implementar tanto estratégias de intensificação como de diversificação.
Medidas de Freqüência Medidas de Transição Conta o número de vezes em que um atributo foi modificado. Medidas de Residência Conta o número de iterações em que um atributo permaneceu em particular posição.
Medidas de Freqüência - Exemplos Medida de transição (problema da mochila) Conta o número de vezes em que a variável i mudou de 1 para 0 ou vice-versa. Medida de residência (problema da mochila) Conta o número de vezes que a variável i assumiu o valor 1 na solução corrente.
Medidas de Freqüência - Exemplo Medidas de Transição (%) Medidas de Residência (%)
Medidas de Transição - Exemplos Problema da k-árvore mínima Conta o número de vezes em que uma aresta foi adicionada (ou deletada) da solução corrente. Problema das n-rainhas Conta o número de vezes em que a rainha i foi trocada com a rainha j.
Medidas de Residência - Exemplos Problema da k-árvore-mínima Conta o número de vezes em que uma aresta fez parte da solução corrente. Problema das n-rainhas Conta o número de vezes em que a rainha i ocupou a coluna c na solução corrente.
Medidas sobre Soluções de Elite Se a medida de residência é obtida sobre o subconjunto de soluções de elite (i.e., soluções de alta qualidade) então esta medida indica que atributos com alta freqüência são atrativos. Se a medida de residência é obtida sobre subconjunto de soluções de baixa qualidade, então esta medida indica o oposto.
Medidas sobre Soluções de Elite Medidas de Residência (em percentagem) Sobre todas as soluções Sobre as soluções de elite
Exemplo de Intensificação Neste exemplo, usaremos a informação da freqüência para intensificar a busca. O objetivo da intensificação é explorar as regiões do espaço de busca que parecem ser mais promissoras; De tempos em tempos, o procedimento normal da busca é interrompido para dar inicio a uma fase de intensificação.
Exemplo de Intensificação Uma simples estratégia de intensificação: IDEIA: “congelar” os componentes das soluções que são consideradas atrativos e reiniciar a busca modificando apenas as partes “livres” da solução.
Exemplo de Intensificação Considere o Problema do Caixeiro Viajante PASSO 1: armazena as soluções de elite (i.e., soluções de alta qualidade): Exemplo: as soluções de mínimos locais cujo valor é próximo do valor da melhor solução. PASSO 2: calcule a freqüência de residência de arestas contidas nas soluções de elite. As arestas com alta freqüência são consideradas bons atributos (boas arestas).
Exemplo de Intensificação Boas arestas, encontradas com alta freqüência nas soluções de elite. Obs: as boas arestas têm freqüência acima de certo limite definido pelo usuário.
Exemplo de Intensificação PASSO 3 – construa uma solução contendo as boas arestas e faça tabu a retirada delas da solução (i.e., congele boas arestas). PASSO 4 – Continue a busca normalmente usando apenas arestas “livres”.
Exemplo de Intensificação Exemplo de solução inicial para a fase de intensificação: Estas arestas estão “fixas”, não podem ser retiradas durante a busca.
Exemplo de Intensificação Alternativa: ao invés de “congelar” as boas arestas, podemos penalizar movimentos que removem arestas com penalidade proporcional a freqüência da aresta.
Exemplo de Diversificação I Suponha que a freqüência é medida sobre todas as soluções geradas. A diversificação pode ser alcançada penalizando movimentos que incorporem atributos com alta freqüência. ValorMovimento' = ValorMovimento + d * Freq(atributo) Onde d é a constante de penalidade.
Exemplo de Diversificação I Similarmente, poderiamos incentivar movimentos que incorporem atributos com baixa freqüência. ValorMovimento' = ValorMovimento - d * Freq(atributo) Onde d é a constante de incentivo (i.e., penalidade negativa).
Exemplo de Diversificação I Exemplo de estratégia de diversificação para o problema das n-rainhas: Armazena-se a freqüência de trocas rainhas. A informação da freqüência penalizará troca de rainhas com grande freqüência de troca. Neste exemplo, sua aplicação será restrita apenas a movimentos sem melhora.
Exemplo de Diversificação I Iteração 26 A matriz triangular Inferior armazena a frequência de trocas de rainhas. ValorMovimento' = ValorMovimento + Freq(i,j)
Exemplo de Diversificação II Diversificação por reiniciação IDÉIA: Forçar a inclusão de atributos raramente utilizados na solução corrente (ou na melhor solução) e reiniciar a busca.
Exemplo de Diversificação II A diversificação por reiniciação permite explorar novas regiões do espaço de busca. reinicio da busca inicio
Exemplo de Diversificação II Exemplo: problema da mochila Seja freq(i) a freqüência de residência do valor 1 na variável si. Altere a solução corrente da seguinte forma: Se freq(i) é muito alto então si = 0 Se freq(i) é muito baixo então si = 1 Reinicie a busca com a solução modificada.
Exemplo de Diversificação II Exemplo: problema das n-rainhas Seja freq(i,c) a freqüência de residência da rainha i na coluna c. Construa uma solução tal que a probabilidade da rainha i estar na coluna c é inversamente proporcional a freq(i,c). Reinicie a busca com a solução modificada.
Exemplo de Diversificação III Uma solução gulosa para o exemplo de programação de tarefas é construída pela regra do mais cedo prazo final. Solução gulosa (4,1,2,3,5,6)
Exemplo de Diversificação III Estratégia: a frequência será utilizada para alterar a ordem gulosa adicionando um viés ao prazo final. PrazoFinalComVies = PrazoFinal + d * freqüencia A freqüencia mede a percentagem de vezes em que uma tarefa foi concluída sem atraso.
Exemplo de Diversificação III Nova solução = (1,4,2,5,3,6) Reinicie a busca com esta solução!