300 likes | 374 Views
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
E N D
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 • 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.
Tópicos • Planejamento em Espaço de Estados • Busca para frente • Busca para atrás • Lifting • STRIPS • O mundo dos blocos
Forward Search take c3 … take c2 move r1 …
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.
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
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
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)
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)
g1 a1 a4 g4 g2 g0 a2 s0 a5 g5 a3 g3
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) …
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)
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
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
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”
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
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
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
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
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
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…
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
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
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
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