Busca Local
Otimização É a busca da melhor solução para um dado problema.
Consiste em tentar várias soluções e usar a informação obtida
para conseguir soluções cada vez melhores.
Exemplo: ajustar a imagem da TV com antena
As técnicas de otimização, geralmente, apresentam:
Espaço de busca: onde estão todas as possíveis soluções do
problema;
Função objetivo/avaliação: utilizada para avaliar as soluções
produzidas, associando a cada uma delas uma nota.
Os estados são representados sobre uma superfície (gráfico) a altura de qualquer ponto na superfície corresponde à função de
Busca Local
O algoritmo se “move” pela superfície em busca de
pontos mais altos (maximizar os objetivos)
Há variações quando se quer minimizar o custo, no caso
a busca é pelos pontos mais baixos.
O ponto mais alto corresponde à solução ótima
máximo global
nó onde a função de avaliação atinge seu valor máximo
Aplicações: problemas de otimização
por exemplo, linha de montagem, escalação de horario, etc.
Topologia de Espaço de Estados
Algoritmos de Melhorias Iterativas
Esses algoritmos guardam apenas o estado atual, e não vêem além dos vizinhos imediatos do estado
Contudo, muitas vezes são os melhores métodos para tratar problemas reais muito complexos.
Algoritmos:
Subida da Encosta ou Gradiente Ascendente
Hill-Climbing
só faz modificações que melhoram o estado atual
Têmpera Simulada
Simulated Annealing
pode fazer modificações que pioram o estado temporariamente para fugir de máximos locais
Tabu Search
Guarda o melhor estado de todas iterações e cria uma lista Tabu com estados repetidos
Algoritmo Genético
Subida da Encosta - Hill-Climbing
O algoritmo não mantém uma árvore de busca: guarda apenas o estado atual e sua avaliação
É simplesmente um “loop” que se move na direção crescente
da função de avaliação (para encontrar um máximo) Algoritmo:
1. Escolhe aleatoriamente uma solução.
2. Gera uma nova solução (vizinha) a partir da atual. 3. Se custo (solução nova) < custo (solução atual),
– Aceita solução nova. Se não,
– Não aceita solução nova (continua com a atual).
Subida da encosta - Hill Climbing
O algoritmo procura o pico, onde nenhum vizinho tem valor mais
Variantes da Subida na encosta
Subida de encosta estocástica: gera vários sucessores (vizinhança – N(S)), e escolhe ao acaso, um que ofereça melhora na função objetivo.
Subida de encosta pela primeira escolha: O primeiro
sucessor de N(S) gerado que oferece melhora, passa a ser o novo estado corrente. É muito utilizada quando cada
estado possui milhares de sucessores.
Subida de encosta com reinício aleatório: “se não tiver
sucesso na primeira vez, continue tentando”. Gera estados iniciais ao acaso, parando ao encontrar um objetivo.
Subida da Encosta - Problemas
O algoritmo move-se sempre na direção que apresenta
melhor resultado
Isso pode levar a 3 problemas:
1. Máximos locais 2. Planícies (platôs) 3. Encostas e Picos
Subida da Encosta Problemas
-solução
Nos casos apresentados, o algoritmo chega a um ponto de onde não faz mais progresso
Solução: reinício aleatório (random restart)
O algoritmo realiza uma série de buscas a partir de estados
iniciais gerados aleatoriamente
Cada busca é executada
Até encontrar um objetivo
Até que um número máximo estipulado de iterações seja atingido
O sucesso deste método depende muito do formato da superfície do espaço de estados:
se há poucos máximos locais, o reinício aleatório encontra
Subida da Encosta
Subida da Encosta: análise
O algoritmo é completo? Não, para problemas onde os nós não são estados completos
e.g., jogo dos 8-números
Sim, para problemas de otimização
uma vez que cada nó tratado pelo algoritmo é sempre um estado
completo (uma solução)
O algoritmo é ótimo?
Não, pois o algoritmo para ao encontrar um máximo local. Sim, caso seja utilizado o subida na encosta com reinício
Simulated Annealing
•
Subida na Encosta
Sem movimentos “encosta abaixo” (incompleto) Reinicio aleatório (completo, porém ineficiente)
•
Simulated Annealing
Simulated Annealing
•
Simula o processo de arrefecimento dos materiais
Arrefecimentos lentos conduzem a produtos mais puros,
sem imperfeições
•
Adaptação da Subida na encosta
•
Pode adotar um estado que oferece perda (encosta
abaixo)
Simulated Annealing
Idéia base:
Se a nova solução gerada for melhor que a atual (melhor
= menor custo), esta nova solução é aceita.
Se for pior, a nova solução pode ser aceita com uma dada
probabilidade.
Esta probabilidade é controlada por um parâmetro
chamado de temperatura, que diminui ao longo das iterações.
Simulated Annealing
Algoritmo:
1. Escolhe aleatoriamente uma solução.
2. Gera uma nova solução (vizinha) a partir da atual. 3. Se custo (solução nova) < custo (solução atual),
– Aceita solução nova. Se não,
– Aceita solução nova com probabilidade: p = e [ –(custo(sol. nova) – custo(sol. atual)) / Temperatura]
4. Repete 2 e 3 até terminarem as iterações permitidas.
Observação:
O parâmetro ‘Temperatura’ vai diminuindo a cada N
Simulated Annealing
Para valores de temperatura próximos de zero
a expressão DE/T cresce
a expressão e-DE/T tende a zero
a probabilidade de aceitar um valor de próximo menor
que corrente tende a zero
o algoritmo tende a aceitar apenas valores de próximo
maiores que corrente
Conclusão
com o passar do tempo (diminuição da temperatura),
este algoritmo passa a funcionar como Subida da Encosta
Criterios de Parada
•
Encontrou o objetivo
•
O número máximo de iterações admitidas na
resolução do problema
•
Quando a temperatura tomar valores tão pequenos
Implementação SA
Implementação: Representação das soluções:
Como as soluções serão consideradas no espaço de busca. Função de custo (ou avaliação):
‘Nota’ atribuída a cada solução.
Operador (ou mecanismo de geração de vizinhos):
Como novas soluções serão geradas a partir da atual.
Esquema de esfriamento:
Como a temperatura será reduzida ao longo da execução.
Caixeiro Viajante com SA
Representação das soluções:
Seqüência de cidades do percurso.
Ex.: s = [B,D,E,C,A]
Função de custo (ou avaliação):
Distância do percurso.
Ex.: custo(s) = 6+4+5+4+2 = 21
Operador (geração de vizinhos):
Permutar 2 cidades consecutivas escolhidas aleatoriamente.
Ex.: s’ = [B,E,D,C,A]
Esquema de esfriamento:
Temperatura inicial: T(0) = 1
Regra de esfriamento: T(i+1) = 0.9 *T(i)
Aceita a nova solução se e-DE/T > 0.05
Tabu Search
Idéia Base:• A partir da solução atual, gerar um conjunto de novas soluções.
• Aceitar sempre a melhor solução deste conjunto.
Pode ser melhor ou pior que a solução atual.
• Guardar na memória:
A melhor solução encontrada desde o início da execução. Uma Lista Tabu, contendo as K soluções mais recentemente
visitadas. Estas soluções são proibidas (para evitar ciclos). • A solução final dada pelo algoritmo é a melhor solução
Tabu Search
Algoritmo: Escolhe aleatoriamente uma solução.
Guarda a solução em melhor solução e na lista tabu. Gera um conjunto de N soluções vizinhas à atual.
Aceita a solução de menor custo entre os N vizinhos (que não
esteja na lista tabu).
Atualiza melhor solução e insere a nova solução na lista tabu.
Repete 3 a 5 até terminarem as iterações permitidas. Retorna melhor solução.
Observação:
Caixeiro Viajante com Tabu Search
Representação das soluções:
Seqüência de cidades do percurso.
Ex.: s = [B,D,E,C,A]
Função de custo (ou avaliação):
Distância do percurso.
Ex.: custo(s) = 6+4+5+4+2 = 21
Operador (geração de vizinhos):
Permutar 2 cidades consecutivas,
gerando 5 vizinhos por iteração.
Ex.: s1 = [D,B,E,C,A] s2 = [B,E,D,C,A] s3 = [B,D,C,E,A] s4 = [B,D,E,A,C] s5 = [A,D,E,C,B] Máximo de 2 iterações.
Comparativo
Esforço computacional por iteração:
Uma iteração de Tabu Search exige mais esforço
computacional do que uma iteração de Simulated
Annealing (mais operações).
Porém, em geral, Tabu Search precisa de menos
iterações para convergir, pois avalia um conjunto de
vizinhos a cada iteração.
Exercício:
Problema de busca: O Mapa do Brasil precisa ser pintado utilizando
apenas 3 cores. Cada região deve ser pintada com uma cor. Regiões conectadas (adjacentes) não podem possuir a mesma cor.
a) Descreva a formulação do problema para a utilização das técnicas de
buscas cegas
b) Crie uma heurística e faça o passo a passo para, partindo do estado
inicial, encontrar uma solução objetivo utilizando as técnicas de busca gulosa e A*.
c) Descreva a formulação do problema para a implementação
da técnica Simulated Annealing. Mostre o passo a passo da execução.
d) Descreva a formulação do problema para a
implementação da técnica Tabu Search. Mostre o passo a passo da execução.