Planejamento Hierárquico Jacques Robin CIn-UFPE Planejamento de Ordem Parcial (POP) com linguagem STRIPS mais expressivo que resolução de problema porque usa a lógica para representar operadores declarativamente e composicionalmente restrição da lógica da 1a ordem com cálculo das situações restrito demais para domínios complexos de muitas aplicações reais necessidade de achar um melhor compromisso expressividade/eficiência aumentar formalismo e relaxar algumas restrições Limitações de POP-STRIPS Planejamento a um único nível de granularidade: • de POP-STRIPS para POP-HAD-STRIPS Precondições e efeitos não contextuais: • de POP-STRIPS para POP-DUNC Representação do tempo: • de POP-STRIPS para POP-TI-STRIPS Representação de recursos globalmente limitados: • de POP-STRIPS para POP-RC-STRIPS As aplicações reais mais complexas requerem: • POP-TIRC-HAD-DUNC! :) Decomposição Hierárquica: Planejar com refinamento incremental Hierarquia de operadores abstratos: • não direitamente executáveis (não primitivos) • com várias decomposições em termos de ações menos abstratas Construir POP inicial ao maior nível de abstração Recursivamente decompor ações abstratas Até POP final conter apenas de ações primitivas Verificar consistência global do POP final Sub-POPs largamente independentes: • espaço de busca reduzido • conhecimento composicional • uso e reuso de sub-POPs pre-fabricados ou já planejados Exemplo de operador não primitivo Decompose(o,p) Decompose(Construction, Plan(STEPS:{S1:Build(Foundation),S2:Build(Frame), S3: Build(Roof), S4:Build(Walls), S5: Build(Interior)} Orderings:{S1<S2<S3<S5, S2<S4<S5}, Bindings:{}, Links:{S1 Foundation S2, S2 Frame S3, S2 Frame S4, S3 Roof S5, S4 Walls S5})) Exemplo de decomposição hierárquica Build House Decomposes to Obtain Permit Construction Pay Builder Hire Builder Decomposes to Build Roof Build Foundation Build Frame Build Interior Build Walls POP-HD-SCRIPT Function POP-DH(plan,operators,methods) return plan inputs: plan, an abstract plan with start and goal steps( and possibly other steps) loop do if Solution?(plan) then return plan Sneed, c Select-Sub-Goal(plan) Choose-Operator(plan,operators,Sneed,c) Snomprim Select-Nonprimitive(plan) Choose-Decomposition((plan,methods,Snonprim) Resolve-Threats(plan) end Solução abstrata x primitiva P solução abstrata para O, se P decomposição consistente e completa de O a um nível de abstração dado, i.e., se 1. P é internamente consistente. 2. todo efeito de O é atingido por pelo menos 1 passo de P. 3. toda pré-condição dos passos de P é satisfeita por um passo em P ou ser uma das pré-condições de O P solução primitiva para O, se P verifica 1, 2, 3 e também: 4. todo passo de P é primitivo Propriedades necessárias para garantir POPHD mais eficiente do que POP Downward solution property (DSP): P solução abstrata => P abstração de pelo menos uma solução primitiva P1 Upward solution property (USP): P plano abstrato inconsistente => P abstração de nenhuma solução primitiva P1 Ação principal: sub-ação A1 de ação abstrata A conectada a todas as pré-condições e efeitos de A Propriedades necessárias para garantir POPHD mais eficiente do que POP DSP e USP nem sempre verificadas Toda decomposição de toda ação abstrata contém uma única ação principal => USP verificada DSP ou USP verificada => pior caso da busca para uma solução primitiva drasticamente reduzida Mesmo quando DSP ou USP não são verificadas, detalhar soluções abstratas em primeiro ainda é uma boa heurística Upward solution property: contra-exemplo •efeito ~watch de GiveComb ameaça precond watch de GiveChain •efeito ~hair de GiveChain ameaça precond hair de GiveComb Busca e decomposição hierárquica Consistente incompleto Consistente completo Inconsistente X: pode ser podado X X X X X X X X Downward Solution Property X X X X X X Upward Solution Property X Decomposição e compartilhamento Maioria das decomposições das ações abstratas independentes umas das outras Mas as vezes a única solução primitiva envolve compartilhamento de ações entre decomposições 2 possibilidades: • quando escolher decomposição de uma ação abstrata, verificar oportunidades e restrições de compartilhamento • escolher decomposição sem compartilhamento, e depois usar regras de revisão (chamadas críticas) para tornar o plano primitivo resultante em uma solução com ações corretamente compartilhadas Exemplo da necessidade de compartilhar Curtir Lua-de-mel & fazer bebê Casar-se & Casar-se & ir para lua-de-mel ter um bebê Curtir lua de mel & fazer bebê Casar-se Ir para lua de mel Ter bebê De POP-HD-STRIPS para POP-HAD STRIPS 2 formas ortogonais de planejamento hierárquico: • hierarquia de ações de vários níveis de abstração para decomposição • hierarquia de precondições de vários níveis de prioridade para aproximação Podem ser combinadas para reduzir busca: começar por planos completos e consistentes embora abstratos e aproximativos Exemplo de operador com precondições a 3 níveis de prioridades: Hierarquia de aproximação ! Ação principal UDP verificada Op(Action:Buy(x), Effect:Have(x) ^ ¬Have(Money), Precond:1:Sells(store,x) 2:At(store) 3:Have(Money))