620 likes | 834 Views
Busca com Informação e Exploração “Busca heurística”. Humberto César Brandão de Oliveira hcbo@cin.ufpe.br. Busca heurística - Escopo. Definição Estratégias de busca com Informação Funções heurísticas Algoritmos de busca local e problemas de otimização Busca local em espaço contínuo
E N D
Busca com Informação e Exploração“Busca heurística” Humberto César Brandão de Oliveirahcbo@cin.ufpe.br
Busca heurística - Escopo • Definição • Estratégias de busca com Informação • Funções heurísticas • Algoritmos de busca local e problemas de otimização • Busca local em espaço contínuo • Agente de busca on-line e ambientes desconhecidos
Problema da busca cega • Se a combinação de caminhos até o objetivo for exponencial a busca cega dificilmente encontrará a resposta do problema em um tempo polinomial.
Instância • Como encontrar um barco perdido? • não podemos procurar no oceano inteiro... • Informações relevantes: • Velocidade do vento; • Direção do vento; • ...
Definição • Como na busca cega, utiliza a definição do problema para efetuar a busca. • Utiliza conhecimento específico do problema (informações) • Não procura a melhor solução do problema, procura uma boa solução, ou simplesmente alguma solução.
Busca pela melhor escolha • Estratégia: tenta expandir o nó supostamente mais próximo a origem (heurística), através de uma estimativa; • Avalia nós através da funçãoh(n) • h(n) depende do problema
Exemplo • Objetivo: Encontrar um bom caminho de Arad à Bucareste. • h(n) = distância em linha reta do nó n até o objetivo (Bucareste)
Características da Busca Gulosa pela melhor escolha • Não é ótima (como dado no exemplo anterior); • É incompleta;
A* • Avalia a combinação de duas funções: • f(n) = g(n) + h(n); onde: • g(n) é o custo real da origem até o nó n; • h(n) é a distância em linha reta do objetivo até o nó n.
A*: Características • Desde que h(n) não superestime o custo para alcançar o objetivo, A* é ótima. • Completa. • A* expande o nó de menor valor de f na fronteira do espaço de estados. • Olha o futuro sem esquecer do passado, armazenando todos os caminhos anteriores.
Distância em linha reta para Bucharest: 75 + 374 239 239 + 178 220 140 + 253 118 + 329 220 + 193 317 317 + 98 418 366 455 336 + 160 A* 449 417 393 447 413 415 496
Comportamento • Custo de tempo: • exponencial com o comprimento da solução, porém boas funções heurísticas diminuem significativamente esse custo • Custo memória: O(bd) • guarda todos os nós expandidos na memória • para possibilitar o backtracking • Eficiência ótima • só expande nós com f(n) f*, onde f* é o custo do caminho ótimo
A* de aprofundamento iterativo (AIA*) • igual ao aprofundamento iterativo, sua principal diferença é que seu limite é dado pela função de avaliação (f) (contornos), e não pela profundidade (d).
Busca heurística com limite de memória • BRPM – Busca recursiva pelo melhor • Semelhante a busca recursiva em profundidade; • Diferença: Não desce indefinidamente. Ela controla a recursão pelo valor de f. Se existir algum nó em um dos ancestrais que ofereça melhor estimativa que o nó atual, a recursão retrocede e a busca continua no caminho alternativo.
BRPM Arad 366 Arad Sibiu 393 447 Fagaras Oradea R. Vilcea 413 415 526 Pitesti Sibiu 417 553
BRPM Arad 366 Arad Sibiu 393 447 Fagaras Oradea R. Vilcea 417 415 526 Sibiu Bucareste 591 450
BRPM Arad 366 Arad Sibiu 393 447 Fagaras Oradea R. Vilcea 417 450 526 Pitesti Sibiu 417 553 Bucareste R. Vilcea 418 607
A* Limitado pela memória simplificado (LMSA*) • Utiliza toda a memória disponível; • Quando a memória está cheia, ele elimina o pior nó folha (maior custo de f) para continuar a busca.
A* Limitado pela memória simplificado (LMSA*) • A atividade constante de paginação causa degradação do desempenho do sistema . • É completo, se a profundidade do nó objetivo mais raso for menor que o tamanho da memória. • É ótimo se qualquer solução ótima for alcançável.
Funções heurísticas • O desempenho da busca está totalmente relacionado a qualidade da função heurística utilizada. • Como medir a qualidade de uma função heurística?
Exatidão heurística • Uma maneira de caracterizar a exatidão heurística é através do fator de ramificação efetiva (b*). • Considere N o número de nós gerados para alcançar o objetivo, e d a profundidade da solução. Então: • N = 1 + b* + (b*)2 + ... + (b*)d • Uma boa função heurística terá b* bem próximo de 1.
Funções heurísticas • Se o custo real para alcançar n é 150. • h1(n) = 56; //heurística 1 • h2(n) = 140; //heurística 2 • h2(n) >= h1(n); • Dizemos que h2 domina h1. Isso pode ser traduzido na forma: A heurística 2 é melhor que a heurística 1, pois terá um menor fator de ramificação. Desde que h1 e h2 não superestimem o custo real.
Funções heurísticas • Como escolher uma boa função heurística h? • h depende de cada problema particular. • h deve ser admissível • não superestimar o custo real da solução • Existem estratégias genéricas para definir h: • Relaxar restrições do problema; • Resolver subproblemas de maneira exata.
Heurísticas de aprendizagem a partir da experiência • Utiliza-se aprendizado indutivo; • São utilizadas técnicas como o aprendizado por reforço para diagnosticar o valor de h(n).
Busca local • Existem problemas, que o caminho até a solução é irrelevante: • N-rainhas; • Caixeiro Viajante • Roteamento de Veículos • Timetabling
Vantagens de algoritmos de busca local • Utilizam pouquíssima memória (geralmente constante); • Freqüentemente encontram boa soluções em espaços de busca infinitos (contínuos) – para os quais, os algoritmos sistemáticos são inadequados. • A busca local não estima a distância do estado atual até o objetivo: • Em alguns problemas não é trivial (ou impossível) estimar esta distância.
Conceitos básicos Máximo global f(x) Planície Máximo local Máximo local (plano) x
Subida na encosta“Hill Climbing” • O algoritmo procura o pico, onde nenhum vizinho tem valor mais alto.
Subida na encostaAlgoritmo básico Função SubidaNaEncosta(problema) retorna um ótimo local Entrada: um problema Variáveis: corrente : Nó vizinho: Nó corrente = criarEstadoInicial(problema) Repita vizinho = acharMelhorSucessor(corrente) se vizinho.funcaoObjetivo <= corrente.funcaoObjetivo então retornar corrente; fim se corrente = vizinho; Fim repita
Variações 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: Reinicia a subida várias vezes, até encontra um valor satisfatório. Muito utilizado em redes neurais (técnica para melhor adaptar os pesos sinápticos do backpropagation).
Subida na encostaAnálise • O algoritmo é completo? • SIM, uma vez que cada nó tratado pelo algoritmo é sempre um estado completo (uma solução) • O algoritmo é ótimo? • TALVEZ, quando iterações suficientes forem permitidas... • 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 uma boa solução rapidamente
Recozimento simulado • Meta heurística baseada no resfriamento de metais. • Adaptação da Subida na encosta • Pode adotar um estado que oferece perda (encosta abaixo). • Capaz de fugir de ótimos locais.
Quando descer a encosta? • O algoritmo admite descidas desde que estas não sejam ”bruscas demais” (decisão tomada em função do tempo)
Busca em feixe local • Passo 0: Começa com k estados gerados aleatoriamente. • Passo 1: Os sucessores dos k estados são calculados. • Passo 2: Caso algum estado seja o objetivo, o algoritmo pára. • Passo 3: São selecionados os melhores k sucessores de todos os estados para o próximo passo. • Passo 4: Volta ao passo 1.
Busca em feixe local • Muito parecido com a execução paralela de uma busca local, mas o algoritmo oferece uma vantagem: • Ele concentra a busca onde são oferecidas as melhores soluções (onde ele supõe que pode encontrar os melhores valores para o problema).
Exemplo: • f(k0) = 25 -> N(k0) = S1, S2, S3 • f(k1) = 49 -> N(k1) = S4, S5, S6, S7 • f(k2) = 52 -> N(k2) = S8, S9 • ________________________ • f(S1) = 26; f(S2) = 23; f(S3) = 30; • f(S4) = 49; f(S5) = 48; f(S6) = 53 ; f(S7) = 56; • f(S8) = 50; f(S9) = 55;
Algoritmos Genéticos • Baseados na teoria da evolução das espécies de Darwin. • É uma variação da busca em feixe local.
Algoritmos GenéticosConceitos básicos • População Inicial • Gerada Randomicamente – tamanho m. • Direcionada: • Em alguns problemas, encontrar um indivíduo válido é uma problema de otimização, portanto necessitam de heurísticas para gera-lo. • Exemplos: Problema de Roteamento de Veículos com Janela de Tempo, Timetabling (horários escolares).
Algoritmos GenéticosConceitos básicos • Seleção dos Pais: • Inclui o passo de avaliação dos indivíduos: • Fitness (mensura o quanto cada indivíduo está adaptado ao ambiente). • Pode ter executada por diferentes técnicas: • Roleta (probabilístico) • Torneio entre indivíduos
Algoritmos GenéticosConceitos básicos • Recombinação (cruzamento) • Merge entre dois ou mais indivíduos (n:1):r(i1, i2, ...) = ix • A maneira com que é feito depende da representação dos indivíduos: • Binária • Inteira • Ponto flutuante • Objetos Compostos • Acrescenta indivíduos na população
Algoritmos GenéticosConceitos básicos • Mutação • Ocorre na relação de 1:1 • m(i1) = ix • A maneira com que é feito depende da representação dos indivíduos: • Binária • Inteira • Ponto flutuante • Objetos Compostos • Não afeta no tamanho da população
Seleção dos sobreviventesExemplo Nova população: S1 -> f(S1) = 12; S2 -> f(S2) = 13; S3 -> f(S3) = 10; • População • S1 -> f(S1) = 10; • S2 -> f(S2) = 12; • S3 -> f(S3) = 11; • NS1 -> f(NS1) = 13; • NS1 -> f(NS2) = 9;
Característica de sucesso para o algoritmo genético: Diferencial • A recombinação eleva a qualidade da busca, pois oferece uma maior diversidade para a população de indivíduos.
Busca local em espaço contínuo • Origem no século XVII (Newton e Leibniz). • Função sucessor gera infinitos novos estados