1 / 30

José de Jesús Pérez-Alcázar MAC 5788 - IME/USP segundo semestre de 2005

Planejamento em Inteligência Artificial. Capítulo 4 Planejamento em Espaço de Estados. José de Jesús Pérez-Alcázar MAC 5788 - IME/USP segundo semestre de 2005. Motivação. Quase todos os procedimentos de planejamento são procedimentos de busca

jemma
Download Presentation

José de Jesús Pérez-Alcázar MAC 5788 - IME/USP segundo semestre de 2005

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Planejamento em Inteligência Artificial Capítulo 4 Planejamento em Espaço de Estados José de Jesús Pérez-Alcázar MAC 5788 - IME/USP segundo semestre de 2005

  2. Motivação • Quase todos os procedimentos de planejamento são procedimentos de busca • Os procedimentos de planejamento têm diferentes espaços de busca • Dois exemplos: • Planejamento em espaço de estados • Cada nodo representa um estado do mundo • Um plano é uma trajetória a través do espaço • Planejamento em espaço de planos • Cada nodo é um conjunto de operadores parcialmente instanciados, mais algumas restrições • Impor mais e mais restrições, até obtermos um plano.

  3. Planejamento como Busca

  4. Tópicos • Planejamento em Espaço de Estados • Busca para frente • Busca para atrás • Lifting • STRIPS • O mundo dos blocos

  5. Forward Search take c3 … take c2 move r1 …

  6. Propriedades • Forward-search é válida (“sound”) • Para qualquer plano retornado por qualquer um dos seus rastreamentos não-determinísticos, este plano é uma solução garantida • Forward-search também é completa • Se uma solução existe então ao menos um dos rastreamentos não-determinísticos da Forward-search retornará uma solução.

  7. s1 a1 s4 a4 s0 sg s2 a2 s5 … a5 a3 s3 Implementações determinísticas • Algumas implementações determinísticas de busca para frente: • breadth-first search • best-first search • depth-first search • greedy search • Breadth-first e best-first search são corretos e completos • Mas eles em geral não são práticos porque precisam de muita memória • O requerimento de memória é exponencial em função do tamanho da solução • Na prática, more melhorusar a depth-first search ou greedy search • Pior-caso: requerimento de memória é linear em função do tamanho da solução • correto mas não completo • Porém o planejamento clássico tem unicamente um número finito de estados • Sendo assim, podemos fazer “depth-first search” usando verificação de laços

  8. Fator de ramificação da Forward Search • Forward search pode ter um fator de ramificação muito grande (veja exemplo) • Porque isto é ruim: • Implementações determinísticas podem gastar tempo tentando muitas ações irrelevantes • Precisa de uma boa função heurística e/ou procedimento de “pruning”. a1 a2 a3 a3 … a50 a1 a2 meta Estado inicial

  9. Busca para trás (“Backward”) • Para busca para frente (“forward”), começamos no estado inicial e calculamos as transições de estados • novo estado = (s,a) • Para busca para trás (“backward”), começamos pela meta e calculamos transições inversas de estados • Novo conjunto de sub-metas = -1(g,a)

  10. Transições inversas de estados • O que significa -1(g,a)? • Primeiro precisamos definir relevância: • Uma ação a é relevante para uma meta g se • a faz no mínimo um dos literais de g verdadeiro • g effects(a) ≠  • a não faz qualquer dos literais de g falso • g+ effects–(a) =  • g– effects+(a) =  • Se a for relevante para g, então • -1(g,a) = (g – effects(a))  precond(a)

  11. g1 a1 a4 g4 g2 g0 a2 s0 a5 g5 a3 g3

  12. Eficiência da “Backward Search” • O fator de ramificação da busca para trás é pequena no nosso exemplo • Existem casos onde pode ainda ser muito grande • Muitas instâncias de operadores são avaliados a1 a2 a3 a3 … a50 a1 a2 meta Estado inicial p(a,a) foo(a,a) p(a,b) foo(x,y) precond: p(x,y) effects: q(x) foo(a,b) p(a,c) q(a) foo(a,c) …

  13. Lifting • Podemos reduzir o fator de ramificação se nós instanciamos parcialmente os operadores • Isto é chamado de lifting p(a,a) foo(a,a) p(a,b) foo(x,y) precond: p(x,y) effects: q(x) foo(a,b) p(a,c) q(a) foo(a,c) … foo(a,y) q(a) p(a,y)

  14. Busca para trás Lifted • Mais complicado que a busca Backward • Seguir a pista de quais substituições foram desenvolvidas • Porém isto tem um fator de ramificação muito menor

  15. O espaço de busca é ainda muito grande • A busca Lifted-backward-search gera um espaço de busca menor que a Backward-search, porém este ainda pode ser muito grande • Se alguns subproblemas são independentes e algo mais causa problemas em algum outro lugar, nos tentaremos todas as ordenações possíveis antes de perceber que não há solução • Mais sobre isto no Capítulo 5 (Planejamento em Espaço de Planos) a b c b a goal b a b a c b c a c b

  16. Outras formas de reduzir a Busca • Estratégias de controle de busca • Será tratado mais tarde • Part III do livro • Por enquanto, só dois exemplos • STRIPS • Empilhamento de blocos “block-stacking”

  17. STRIPS • π  o plano vazio • Fazer uma busca para trás modificada desde g • No lugar de -1(s,a), cada novo conjunto sub-metas é só precond(a) • Cada vez que você acha uma ação que é executável no estado atual, então STRIPS compromete a execução desse operador e não deixa fazer “backtracking” do compromisso • Repita até que todas as metas são satisfeitas π = a6, a4 s = ((s0,a6),a4) g6 satisfeita em s0 g1 a1 a4 a6 g4 g2 g a2 g3 a5 g5 a3 a3 g3 Trajetória atual de busca

  18. STRIPS

  19. Revisão rápida do Mundo dos Blocos c unstack(x,y) Pre: on(x,y), clear(x), handempty Eff: ~on(x,y), ~clear(x), ~handempty, holding(x), clear(y) a b c a b stack(x,y) Pre: holding(x), clear(y) Eff: ~holding(x), ~clear(y), on(x,y), clear(x), handempty c a b pickup(x) Pre: ontable(x), clear(x), handempty Eff: ~ontable(x), ~clear(x), ~handempty, holding(x) c b a putdown(x) Pre: holding(x) Eff: ~holding(x), ontable(x), clear(?x), handempty c a b

  20. A Anomalia de Sussman Estado inicial meta • Sobre este problema, STRIPS não pode produzir uma solução sem redundâncias a b c c a b

  21. O Problema de Atribuição de Registros • Formulação em variáveis de estado: Estado Inicial: {valor(r1)=3, valor(r2)=5, valor(r3)=0} Meta: {valor(r1)=5, valor(r2)=3} Operador: atribuir(r,v,r’,v’) precond: valor(r)=v, valor(r’)=v’ efeitos: valor(r)=v’ • STRIPS não pode resolver este problema

  22. Versão DWR da anomalia de Sussman

  23. Como solucionar isto? • Várias formas: • Fazer algo diferente a busca no espaço de estados • e.g., Capítulo 5–8 • Usar busca no espaço de estados para frente ou para trás, com conhecimento específico dodomínio para recortar (prune) o espaço de busca • Podemos resolver os dois problemas de forma fácil • Exemplo: “block stacking” usando busca para frente

  24. Conhecimento Específico do Domínio • Um problema de planejamento do mundo dos blocos P = (O,s0,g) é solucionávelSe s0 e g satisfazem algumas condições de consistência simples • g não deveria mencionar nenhum bloco não mencionado em s0 • um bloco não pode estar sobre outros dos blocos ao mesmo tempo • etc. • Pode checa-las em tempo O(n log n) • Se P é solucionável, podemos facilmente construir uma solução de tamanho O(2m), onde m é o numero de blocos • Mover todos os blocos para a mesa, então construir pilhas desde baixo (bottom) • Podemos fazer isto em tempo O(n) • Com conhecimento específico adicional do domínio podemos melhorar ainda mais…

  25. Estado inicial meta a d b e c c a b d Conhecimento Específico Adicional do Domínio • Um bloco x precisa ser movimentado se alguma das condições seguintes é verdade: • s contem ontable(x) e g contem on(x,y) • s contem on(x,y) e g contem ontable(x) • s contem on(x,y) e g contem on(x,z) para algum y≠z • s contem on(x,y)e y precisa ser movimentado

  26. estado inicial meta a d b e c c a b d Algoritmo Específico do Domínio loop if there is a clear block x such that x needs to be moved and x can be moved to a place where it won’t need to be moved then move x to that place else if there is a clear block x such that x needs to be moved then move x to the table else if the goal is satisfied then return the plan else return failure repeat

  27. Soluciona Facilmente a Anomalia de Sussman loop if there is a clear block x such that x needs to be moved and x can be moved to a place where it won’t need to be moved then move x to that place else if there is a clear block x such that x needs to be moved then move x to the table else if the goal is satisfied then return the plan else return failure repeat estado inicial meta a c b a b c

  28. Propriedades • O algoritmo block-stacking: • correto, completo, garantia de terminação • Executa em tempo O(n3) • Pode ser modificado para executar em tempo O(n) • Freqüentemente acha soluções ótimas (mais curtas) • Porém algumas vezes somente perto do ótimo (Exercício 4.22 no livro) • Lembre que PLAN LENGTH é NP-completo

  29. Algoritmo de empilhamento de contenedores

More Related