Busca Tabu
Lucas Fernandes - abril 2011
Roteiro
 Algoritmos de busca   Funcionamento
 Heurísticas           Código
 Metaheurísticas       Problema das n-Rainhas
 Busca local           Execução do TSM
 Busca tabu
 Conceitos básicos
Algoritmos de busca
Dois tipos
  Força bruta
  Heurística
Vantagens e desvantagens
Busca em listas
Busca em árvores
Busca em grafos
Heurísticas em algoritmos
de buscas
As heurísticas são funções usadas como alternativas
em algoritmos de busca
Visam diminuir o tempo computacional de uma busca
Nem sempre apresentam uma solução ótima
O trabalho de escolher uma heurística adequada para
um problema geralmente é feito pela IA
Tipos de heurísticas
 Heurística de construção: uma ou mais soluções são
 construídas elemento a elemento, baseando-se em
 critérios até que se encontre a solução
 Heurísticas de busca em vizinhança: parte de uma
 solução possível e tenta melhorar a mesma através de
 trocas, remoções ou inserções, até que seja atingido
 algum critério (geralmente uma solução ideal)
 Heurísticas sistemáticas: a árvore de espaço de
 soluções é percorrida sob critérios de ramificação e
 corte da mesma
Tipos de heurísticas


 Heurísticas híbridas: resulta da combinação de uma ou
 mais heurísticas, de tipos diferentes
 Metaheurísticas: o tipo mais sofisticado, consiste de
 uma heurística simples que é analisada por um
 procedimento que explora o problema e seu espaço
 de soluções
Exemplos de uso de
heurísticas

Busca de melhor caminho em um grafo
Busca de virus
Desktops semânticos
Metaheurística
Geralmente utilizada quando não se conhece um
algoritmo eficiente para resolver o problema
São usadas para melhorar os resultados obtidos por
funções heurísticas
“Evoluem” com o tempo, aprendendo sobre o que foi
feito anteriormente de maneira a melhorar as próximas
soluções
Termo cunhado por Fred Glover, em 1986
Busca local
É também considerada uma metaheurística
Busca uma solução ótima dentro de um conjunto de
soluções possíveis (o espaço de busca)
Parte de uma solução candidata inicial para a uma
solução vizinha, i.e. vértices vizinhos em um grafo
Geralmente, cada solução candidata tem mais de uma
solução vizinha. A escolha de qual será a próxima deve
ser feita tomando em consideração apenas a
vizinhança da solução candidata atual, por isso é
chamada de busca local
Busca local
É iterativa, métodos para encerrar a busca podem
involver o tempo de execução ou um certo número de
iterações sem apresentar melhora na solução
Considerada um algortimo de busca incompleto uma
vez que pode encerrar sem ter encontrado uma
solução ótima
Na prática é pouco provável que a solução encontrada
em pouco tempo seja próxima da ótima, por isso
foram feitas várias tentativas de melhorar o algortimo,
resultando por exemplo na busca tabu
Busca tabu

Um algoritmo de busca baseado em metaheurística
Um método de otimização matemática, da classe dos
métodos de pesquisa local
Melhora os métodos de pesquisa local usando
estruturas de memória
Busca tabu

Muito usada nas telecomunicações e em otimização
de trajetórias
Estudada principalmente no ramo da IA
Surgiu na década de 70
Fred Glover formalizou sua estrutura também em 1986
Busca tabu
É uma estratégia para resolver problemas de
otimização combinatorial as quais a aplicação abrange
da teoria de grafos e conjuntos de matróides à
problemas de programação linear gerais, puros e
mistos. É um procedimento adaptativo com a
habilidade de fazer uso de muitos outros métodos,
como algoritmos de programação linear e heurísticas
especializadas, que são dirigidas para superar as
limitações da otimização local. (Glover, 1988)
Conceitos básicos
Solução       Vizinhança
 Inicial        Original
 Corrente       Modificada (reduzida
                ou espandida)
 Melhor
              Tabu
Movimento
                Status
 Atributos
                Regra de ativação
 Valores
Funcionamento

Busca possíveis soluções a partir de um ponto
conhecido
Caso seja uma solução possível, marca o ponto como
tabu para que ele não seja visitado repetidamente
Para que todos os pontos sejam visitados, ao contrário
da busca local, a busca tabu modifica a estrutura de
vizinhos a cada solução
Funcionamento

Busca o ótimo local, mesmo que seja necessário fazer
movimentos que não melhorem a solução em relação
ao passo atual
Mantém uma lista de soluções já visitadas, chamada
de lista tabu para evitar que elas sejam revisitadas
Procedimento        Gerar solução
   heurístico      inicial e inicializar
                                                       PARAR
                     estruturas de
                        memória

Restrições tabu                                             Não
    Lista de           Construir
  candidatos         estruturas de         Sim    Mais iterações?
  Critério de          vizinhos
   aspiração         modificadas


   Regras de
    escolhas       Escolher melhor               Atualizar estruturas   Curto e longo
modificadas para        vizinho                      de memória              prazo
diversificação e
 intensificação


  Recomeçar            Executar
                                                  Atualizar melhor
Religar caminhos    procedimentos
                                                      solução
    Oscilação       especializados
   estratégica
Código
k := 1.
generate initial solution
WHILE the stopping condition is not met DO
    Identify N(s). (Neighbourhood set)
    Identify T(s,k). (Tabu set)
    Identify A(s,k). (Aspirant set)
    Choose the best s‘ |  N(s,k) = {N(s) - T(s,k)}+A(s,k).
    Memorize s’ if it improves the previous best known solution
    s := s’.
    k := k+1.
END WHILE
Memória a curto prazo



O principal objetivo da memória a curto prazo é evitar
movimentos reversos e ciclos
Exemplo 1

Após um movimento que muda o valor de xi de 0 para
1, gostariamos que o valor de xi não volte a ser 0
numa próxima iteração
    Atributo a recordar: i
    Regra de ativação tabu: move(xi←0) é tabu se i é
    tabu-ativo
Exemplo 2

Após um movimento que muda as posições dos
elementos i e j, gostariamos que na próxima iteração
os valores de i e j não mudassem novamente
    Atributo a recordar: i e j
    Regra de ativação tabu: move(i j) é tabu se
    ambos i e j são tabu-ativos
Tabu, or not tabu, that is the
question.
 Somente movimentos podem ser tabu. Atributos não
 são tabu, somente podem ser tabu-ativos
 Um movimento pode ser tabu se conter um ou mais
 atributos tabu-ativos
 A classificação de um movimento tabu (tabu ou não
 tabu) é determinada pela regra de ativação
Movimento


 O movimento         Sim    O movimento
contém atributos
                              é tabu?
  tabu-ativos?
                                     Sim
                   Não
        Não                 O movimento
                           satisfaz o critério
                            de aspiração?
   Movimento         Sim
                                     Não
   permitido
                             Movimento
                            não permitido
Flexidade de busca

O número de movimentos permitidos na vizinhança da
solução corrente depende de:
  Tipo de movimento
  Regras de ativação tabu
  Número de movimentos permitidos
  Critério de aspiração
Número de movimentos
permitidos
Estático
  O número de movimentos (TabuTenure) é fixo e se
  mantém durante toda a busca
  Os atributos se mantém tabu-ativos pelo mesmo
  número de iterações
Dinâmico
  O valor do TabuTenure não é constante durante a
  busca
  A duração dos atributos também varia
Critério de aspiração

       Por objetivo
          Um movimento tabu se torna permissível se
          possibilitar uma solução melhor do que um valor
          aspirado
       Por direção da busca
          Um movimento tabu se torna permissível se a
          direção da busca (melhorando ou não) não se altera

O critério de aspiração permite aceitar uma solução baseado em sua qualidade, mesmo que tal
                            solução faça movimentos da lista tabu.
Lista de candidatos


 São usados para reduzir o número de soluções
 examinadas em um determinada iteração
 Elas isolam regiões da vizinhança contendo
 movimentos que se aproximam de atributos desejáveis
Problema das n-Rainhas
Consiste em colocar rainhas em um tabuleiro de
xadrez, onde elas só são capazes de executar os seus
movimentos tradicionais de modo que elas não
consigam capturar umas as outras
Ou seja, nenhuma rainha pode estar na mesma linha,
coluna ou diagonal da outra
Uma simplificação do problema á chamada de
problema das 8 rainhas, onde são usadas 8 rainhas no
tabuleiro
Problema das n-Rainhas

É um problema computacionalmente muito caro de se
resolver
São possíveis 4.426.265.368 (64!/(56!8!)) com oito
rainhas no tabuleiro, mas apenas 92 soluções existem
nesse cenário (12 únicas)
Diversas heurísticas existem para que esse problema
torne-se computacionalmente viável, uma delas é a
busca tabu
Algoritmo
n-Rainhas

Busca tabu

  • 1.
  • 2.
    Roteiro Algoritmos debusca Funcionamento Heurísticas Código Metaheurísticas Problema das n-Rainhas Busca local Execução do TSM Busca tabu Conceitos básicos
  • 3.
    Algoritmos de busca Doistipos Força bruta Heurística Vantagens e desvantagens Busca em listas Busca em árvores Busca em grafos
  • 4.
    Heurísticas em algoritmos debuscas As heurísticas são funções usadas como alternativas em algoritmos de busca Visam diminuir o tempo computacional de uma busca Nem sempre apresentam uma solução ótima O trabalho de escolher uma heurística adequada para um problema geralmente é feito pela IA
  • 5.
    Tipos de heurísticas Heurística de construção: uma ou mais soluções são construídas elemento a elemento, baseando-se em critérios até que se encontre a solução Heurísticas de busca em vizinhança: parte de uma solução possível e tenta melhorar a mesma através de trocas, remoções ou inserções, até que seja atingido algum critério (geralmente uma solução ideal) Heurísticas sistemáticas: a árvore de espaço de soluções é percorrida sob critérios de ramificação e corte da mesma
  • 6.
    Tipos de heurísticas Heurísticas híbridas: resulta da combinação de uma ou mais heurísticas, de tipos diferentes Metaheurísticas: o tipo mais sofisticado, consiste de uma heurística simples que é analisada por um procedimento que explora o problema e seu espaço de soluções
  • 7.
    Exemplos de usode heurísticas Busca de melhor caminho em um grafo Busca de virus Desktops semânticos
  • 8.
    Metaheurística Geralmente utilizada quandonão se conhece um algoritmo eficiente para resolver o problema São usadas para melhorar os resultados obtidos por funções heurísticas “Evoluem” com o tempo, aprendendo sobre o que foi feito anteriormente de maneira a melhorar as próximas soluções Termo cunhado por Fred Glover, em 1986
  • 9.
    Busca local É tambémconsiderada uma metaheurística Busca uma solução ótima dentro de um conjunto de soluções possíveis (o espaço de busca) Parte de uma solução candidata inicial para a uma solução vizinha, i.e. vértices vizinhos em um grafo Geralmente, cada solução candidata tem mais de uma solução vizinha. A escolha de qual será a próxima deve ser feita tomando em consideração apenas a vizinhança da solução candidata atual, por isso é chamada de busca local
  • 10.
    Busca local É iterativa,métodos para encerrar a busca podem involver o tempo de execução ou um certo número de iterações sem apresentar melhora na solução Considerada um algortimo de busca incompleto uma vez que pode encerrar sem ter encontrado uma solução ótima Na prática é pouco provável que a solução encontrada em pouco tempo seja próxima da ótima, por isso foram feitas várias tentativas de melhorar o algortimo, resultando por exemplo na busca tabu
  • 11.
    Busca tabu Um algoritmode busca baseado em metaheurística Um método de otimização matemática, da classe dos métodos de pesquisa local Melhora os métodos de pesquisa local usando estruturas de memória
  • 12.
    Busca tabu Muito usadanas telecomunicações e em otimização de trajetórias Estudada principalmente no ramo da IA Surgiu na década de 70 Fred Glover formalizou sua estrutura também em 1986
  • 13.
    Busca tabu É umaestratégia para resolver problemas de otimização combinatorial as quais a aplicação abrange da teoria de grafos e conjuntos de matróides à problemas de programação linear gerais, puros e mistos. É um procedimento adaptativo com a habilidade de fazer uso de muitos outros métodos, como algoritmos de programação linear e heurísticas especializadas, que são dirigidas para superar as limitações da otimização local. (Glover, 1988)
  • 14.
    Conceitos básicos Solução Vizinhança Inicial Original Corrente Modificada (reduzida ou espandida) Melhor Tabu Movimento Status Atributos Regra de ativação Valores
  • 15.
    Funcionamento Busca possíveis soluçõesa partir de um ponto conhecido Caso seja uma solução possível, marca o ponto como tabu para que ele não seja visitado repetidamente Para que todos os pontos sejam visitados, ao contrário da busca local, a busca tabu modifica a estrutura de vizinhos a cada solução
  • 16.
    Funcionamento Busca o ótimolocal, mesmo que seja necessário fazer movimentos que não melhorem a solução em relação ao passo atual Mantém uma lista de soluções já visitadas, chamada de lista tabu para evitar que elas sejam revisitadas
  • 17.
    Procedimento Gerar solução heurístico inicial e inicializar PARAR estruturas de memória Restrições tabu Não Lista de Construir candidatos estruturas de Sim Mais iterações? Critério de vizinhos aspiração modificadas Regras de escolhas Escolher melhor Atualizar estruturas Curto e longo modificadas para vizinho de memória prazo diversificação e intensificação Recomeçar Executar Atualizar melhor Religar caminhos procedimentos solução Oscilação especializados estratégica
  • 18.
    Código k := 1. generateinitial solution WHILE the stopping condition is not met DO     Identify N(s). (Neighbourhood set)     Identify T(s,k). (Tabu set)     Identify A(s,k). (Aspirant set)     Choose the best s‘ |  N(s,k) = {N(s) - T(s,k)}+A(s,k).     Memorize s’ if it improves the previous best known solution     s := s’.     k := k+1. END WHILE
  • 19.
    Memória a curtoprazo O principal objetivo da memória a curto prazo é evitar movimentos reversos e ciclos
  • 20.
    Exemplo 1 Após ummovimento que muda o valor de xi de 0 para 1, gostariamos que o valor de xi não volte a ser 0 numa próxima iteração Atributo a recordar: i Regra de ativação tabu: move(xi←0) é tabu se i é tabu-ativo
  • 21.
    Exemplo 2 Após ummovimento que muda as posições dos elementos i e j, gostariamos que na próxima iteração os valores de i e j não mudassem novamente Atributo a recordar: i e j Regra de ativação tabu: move(i j) é tabu se ambos i e j são tabu-ativos
  • 22.
    Tabu, or nottabu, that is the question. Somente movimentos podem ser tabu. Atributos não são tabu, somente podem ser tabu-ativos Um movimento pode ser tabu se conter um ou mais atributos tabu-ativos A classificação de um movimento tabu (tabu ou não tabu) é determinada pela regra de ativação
  • 23.
    Movimento O movimento Sim O movimento contém atributos é tabu? tabu-ativos? Sim Não Não O movimento satisfaz o critério de aspiração? Movimento Sim Não permitido Movimento não permitido
  • 24.
    Flexidade de busca Onúmero de movimentos permitidos na vizinhança da solução corrente depende de: Tipo de movimento Regras de ativação tabu Número de movimentos permitidos Critério de aspiração
  • 25.
    Número de movimentos permitidos Estático O número de movimentos (TabuTenure) é fixo e se mantém durante toda a busca Os atributos se mantém tabu-ativos pelo mesmo número de iterações Dinâmico O valor do TabuTenure não é constante durante a busca A duração dos atributos também varia
  • 26.
    Critério de aspiração Por objetivo Um movimento tabu se torna permissível se possibilitar uma solução melhor do que um valor aspirado Por direção da busca Um movimento tabu se torna permissível se a direção da busca (melhorando ou não) não se altera O critério de aspiração permite aceitar uma solução baseado em sua qualidade, mesmo que tal solução faça movimentos da lista tabu.
  • 27.
    Lista de candidatos São usados para reduzir o número de soluções examinadas em um determinada iteração Elas isolam regiões da vizinhança contendo movimentos que se aproximam de atributos desejáveis
  • 28.
    Problema das n-Rainhas Consisteem colocar rainhas em um tabuleiro de xadrez, onde elas só são capazes de executar os seus movimentos tradicionais de modo que elas não consigam capturar umas as outras Ou seja, nenhuma rainha pode estar na mesma linha, coluna ou diagonal da outra Uma simplificação do problema á chamada de problema das 8 rainhas, onde são usadas 8 rainhas no tabuleiro
  • 30.
    Problema das n-Rainhas Éum problema computacionalmente muito caro de se resolver São possíveis 4.426.265.368 (64!/(56!8!)) com oito rainhas no tabuleiro, mas apenas 92 soluções existem nesse cenário (12 únicas) Diversas heurísticas existem para que esse problema torne-se computacionalmente viável, uma delas é a busca tabu
  • 31.