480 likes | 634 Views
Planejamento (Cap. 11 do Russell). Prof. Paulo Santos Mestrado FEI. Aula baseada nos slides de Tom Lenaerts (INRIA). Planning. O problema de planejamento Planejamento como busca em espaço de estados Planejamento de ordem parcial Grafos de Planejamento
E N D
Planejamento (Cap. 11 do Russell) Prof. Paulo Santos Mestrado FEI Aula baseada nos slides de Tom Lenaerts (INRIA)
Planning • O problema de planejamento • Planejamento como busca em espaço de estados • Planejamento de ordem parcial • Grafos de Planejamento • Planejamento em lógica proposicional
O problema de planejamento • Gerar sequências de ações para executar tarefas e atingir objetivos. • Representação: states, actions and goals • Busca por soluções de problemas sobre um espaço de planos. • Auxiliar em aplicações práticas, ex.: • design e produção • operações militares • jogos • exploração espacial
O problema de planejamento • aumento de escala para problemas complexos (comparando com os agentes busca e lógico vistos até aqui) • Planejamento clássico: • ambientes completamente observáveis, determinísticos, finitos, estáticos e discretos • (Planejamento não-clássico: • ambientes parcialmente observáveis ou estocásticos)
Questões centrais • Para um agente de planejamento utilizando métodos de busca… • Quais ações são relevantes? • Encontrar boas funções heurísticas? • Estimativa para o custo de um estado? • Heurística dependente ou independente do problema • como tirar proveito da decomposição do problema? • Suposição: a maioria dos problemas reais é quase-decomponível. I.e., o planejador pode trabalhar em sub-objetivos independentemente, mas talvez deva realizar algum trabalho adicional para combinar os subplanos resultantes.
A linguagem de problemas de planejamento • O que seria uma “boa” linguagem? • Suficientemente expressiva para descrever uma grande variedade de problemas. • Restritiva o bastante para permitir que algoritmos eficientes operem sobre ela. • Deve permitir a decomposição de problema em subproblemas. • Linguagens: • STRIPS: Stanford Research Institute Problem Solver • ADL: Action Description Language • ... • PDDL: Planning Domain Definition Language
Características gerais das linguagens • Representação de estados • Decompor o mundo em condições lógicas que representam um estado como uma conjunção de literais positivos • literais proposicionais: Poor Unknown • literais de 1a ordem (básicos -- grounded e livres de funções): At(Plane1, Melbourne) At(Plane2, Sydney) • Hipótese de mundo fechado • (quaisquer condições não mencionadas em um estado são falsas) • Representação de objetivos (goals) • Estado parcialmente especificado, representado como uma conjunção de literais básicos positivos • Um estado proposicional s satisfaz a um objetivo g se s contém todos os literais em g (e possivelmente outros).
Características gerais das linguagens • Representação de ações • Ação = Precondição + Efeito Action(Fly(p,from, to), PRECOND: At(p,from) Plane(p) Airport(from) Airport(to) EFFECT: ¬AT(p,from) At(p,to)) = esquema de ação (p, from, to devem ser instanciadas) • Nome da ação e lista de parâmetros • PRECOND: Precondição (conj. de literais livres de função) • o que deve ser verdadeiro em um estado antes da aplicação da ação • EFFECT : Efeito (conj. de literais livres de função que descrevem como o estado se altera quando a ação é executada) • literais positivos devem ser considerados verdadeiros no estado sucessor à ação; e negativos, falsos. • Add-list vs delete-list in Effect
Semântica da linguagem • Como as ações afetam os estados... • Uma ação é aplicável em todos os estados que satisfazem as suas precondições. • Para esquemas de ações de primeira ordem, as suas aplicabilidades envolvem uma substituição para as variáveis em PRECOND. At(P1,JFK) At(P2,SFO) Plane(P1) Plane(P2) Airport(JFK) Airport(SFO) Satisfazem : At(p,from) Plane(p) Airport(from) Airport(to) com ={p/P1,from/JFK,to/SFO} Portanto, a ação Action(Fly(p,from, to) é aplicável.
Semântica da linguagem • O resultado da execução da ação a em um estado s é o estado s’, em que: • s’ é o mesmo que s exceto que • Qualquer literal positivo P no efeito de a é adicionado a s’ • Qualquer literal negativo ¬P é removido de s’ At(P1,SFO) At(P2,SFO) Plane(P1) Plane(P2) Airport(JFK) Airport(SFO) • Hipótese de STRIPS: • todo literal não mencionado em efeito permanece inalterado • (evita o problema do quadro representacional)
Expressividade e extensões • STRIPS: tornar os alg. de planejamento mais simples e eficientes • simplificação principal: literais livres de função • permite a proposicionalização de qualquer esquema de ação • STRIPS é insuficientemente expressiva para alguns domínios reais: • Variante do STRIPS:Action Description language (ADL) Action(Fly(p:Plane, from: Airport, to: Airport), PRECOND: At(p,from) (from to) EFFECT: ¬At(p,from) At(p,to))
Expressividade e extensões • Vários formalismos de planejamento foram sistematizados em uma linguagem padrão: Planning domain definition language (PDDL) • permitindo que diferentes sistemas permutem problemas benchmark e comparem seus resultados; • Inclui sublinguagens correspondentes a STRIPS, ADL e às redes hierárquicas
Ex: Transporte aéreo de cargas Representação do problema de planejamento STRIPS: Init(At(C1, SFO) At(C2,JFK) At(P1,SFO) At(P2,JFK) Cargo(C1) Cargo(C2) Plane(P1) Plane(P2) Airport(JFK) Airport(SFO)) Goal(At(C1,JFK) At(C2,SFO)) Action(Load(c,p,a) PRECOND: At(c,a) At(p,a) Cargo(c) Plane(p) Airport(a) EFFECT: ¬At(c,a) In(c,p) Action(Unload(c,p,a) PRECOND: In(c,p) At(p,a) Cargo(c) Plane(p) Airport(a) EFFECT: At(c,a) ¬In(c,p) Action(Fly(p,from,to) PRECOND: At(p,from) Plane(p) Airport(from) Airport(to) EFFECT: ¬ At(p,from) At(p,to) Possível plano: [Load(C1,P1,SFO), Fly(P1,SFO,JFK), Load(C2,P2,JFK), Fly(P2,JFK,SFO)]
Ex: Pneu sobressalente Representação do problema em ADL: Este exemplo está alem do STRIPS: literal negativo na pre-condição Init(At(Flat, Axle) At(Spare,trunk)) Goal(At(Spare,Axle)) Action(Remove(Spare,Trunk) PRECOND: At(Spare,Trunk) EFFECT: ¬At(Spare,Trunk) At(Spare,Ground)) Action(Remove(Flat,Axle) PRECOND: At(Flat,Axle) EFFECT: ¬At(Flat,Axle) At(Flat,Ground)) Action(PutOn(Spare,Axle) PRECOND: At(Spare,Ground) ¬At(Flat,Axle) EFFECT: At(Spare,Axle) ¬At(Spare,Ground)) Action(LeaveOvernight PRECOND: EFFECT: ¬ At(Spare,Ground) ¬ At(Spare,Axle) ¬ At(Spare,trunk) ¬ At(Flat,Ground) ¬ At(Flat,Axle) )
Ex: Mundo dos blocos Init(On(A, Table) On(B,Table) On(C,Table) Block(A) Block(B) Block(C) Clear(A) Clear(B) Clear(C)) Goal(On(A,B) On(B,C)) Action(Move(b,x,y) PRECOND: On(b,x) Clear(b) Clear(y) Block(b) (b x) (b y) (x y) EFFECT: On(b,y) Clear(x) ¬ On(b,x) ¬ Clear(y)) Action(MoveToTable(b,x) PRECOND: On(b,x) Clear(b) Block(b) (b x) EFFECT: On(b,Table) Clear(x) ¬ On(b,x)) Ações espúrias são possíveis: Move(B,C,C)
Planejamento como busca em espaço de estados • São possíveis ambos: encadeamento para frente e para trás • Planejamento por progressão • busca por encadeamento para frente • Considerar os efeitos de TODAS as ações em um dado estado • Planejamento por regressão • busca por encadeamento para trás • Para atingir um objetivo, buscar o que deve ser verdadeiro no estado anterior (e assim recursivamente).
Algoritmo de progressão • Formulação como busca em um espaço de estados: • estado inicial = estado inicial do problema de planejamento • Literais não presentes são falsos • Ações = aplicáveis se precondições são satisfeitas • Adicionar efeitos positivos, excluir (deletar) os negativos • Teste de objetivo = verifica se o estado satisfaz o objetivo do problema de planejamento • custo do passo = cada ação custa 1 • Sem símbolos funcionais … qualquer algoritmo (completo) de busca é um algoritmo de planejamento completo. • Ineficiente: (1) muitas ações irrelevantes são geradas (2) a abordagem fracassa sem uma boa heurística.
Algoritmo de Regressão • Como determinar predecessores? • Quais são os estados a partir dos quais a aplicação de uma dada ação leva ao objetivo? Objetivo = At(C1, B) At(C2, B) … At(C20, B) Ação relevante para o primeiro literal: Unload(C1,p,B) Funciona somente se as precondições forem satisfeitas. I.e. qqr estado predecessor deve incluir estas precondições, no caso: At(C1, p) At(p, B) Predecessor =In(C1, p) At(p, B) At(C2, B) … At(C20, B) o subobjetivo At(C1,B) não deve estar presente neste estado. • Ações não devem desfazer literais desejados: ações devem ser consistentes) • Vantagem principal: somente ações relevantes são consideradas (fator de ramificação < que progressão). • Uma ação é relevante para um objetivo se ela alcança um dos elementos da conjunção do objetivo.
Algoritmo de Regressão • Processo geral para a construção de predecessores • Dada uma descrição de objetivo G, seja A uma ação relevante e consistente • O predecessor correspondente é descrito a seguir: • Quaisquer efeitos positivos de A que aparecem em G são eliminados. • Cada literal de precondição de A é adicionado, a menos que já apareça. • Qualquer dos algoritmos de busca pode ser usado para executar a busca. • O término acontece quando é gerada uma descrição de predecessor que é satisfeita pelo estado inicial do problema de planejamento. • No caso de 1a ordem, a satisfação pode requerer uma substituição de variáveis na descrição de predecessor.
Algoritmo de Regressão A principal vantagem da busca por regressão é que ela nos permite gerar somente ações relevantes. • considere o problema de ter 20 itens no aeroporto B: In(C1,B) ^ In(C2,B) ^ ... ^ In(C20,B) • Regredir do objetivo até a ação Descarregar(C1, p, B) • gera o primeiro elemento da conjunção, levando a um predecessor: In(C1,p) ^ In(p,B) ^ ... ^ In(C20,B) • Este estado é satisfeito pelo estado inicial: In(C1,P12) ^ In(P12, B) ^ In(C2,B) ^ ... ^ In(C20,B) • considerando-se a substituição {p/P12} e a ação Descarregar(C1,P12,B)
Heuristicas para planejamento em espaço de estados • Nenhum dos algoritmos de progressão ou regressão são eficientes sem uma boa heurística • Quantas ações são necessária para atingir o objetivo? • A solução completa é NP-difícil, deve-se encontrar uma boa estimativa
Heuristicas para planejamento em espaço de estados • Dois procedimentos para se encontrar uma heurística admissível: • Encontrar a solução ótima para um problema relaxado. • Remover todas as precondições das ações • hipótese de independência de subobjetivo: O custo de resolver uma conjunção de objetivos é aproximadamente igual ao somatório dos custos de resolver cada subobjetivo independentemente. • Otimista: quando existem interações negativas entre os subplanos correspondentes a cada subobjetivo (e.g. quando uma ação em um subplano exclui um objetivo atingido por outro subplano) • Pessimista (inadmissível): quando os subplanos contêm ações redundantes
Planejamento de ordem parcial • Planejamento por progressão ou regressão no espaço de estado são formas de busca de planos totalmente ordenados. • Exploram sequências estritamente lineares de ações conectadas de forma direta ao início ou ao objetivo. Não podem tirar proveito da decomposição do problema. • Sempre tomam decisões sobre como definir sequências de ações sobre todos os subproblemas
Planejamento de ordem parcial • A idéia é desenvolver um algoritmo que funcionasse independentemente sobre vários subobjetivos, os resolvesse com subplanos e depois combinasse os subplanos • Estratégia do compromisso mínimo (Least commitment strategy): • retardar a escolha da ordem de aplicação de algumas ações durante a busca.
Exemplo: calçar um par de sapatos Goal(RightShoeOn LeftShoeOn) Init() Action(RightShoe, PRECOND: RightSockOn EFFECT: RightShoeOn) Action(RightSock, PRECOND: EFFECT: RightSockOn) Action(LeftShoe, PRECOND: LeftSockOn EFFECT: LeftShoeOn) Action(LeftSock, PRECOND: EFFECT: LeftSockOn) Planejador: combinar duas sequências de ações (1)leftsock, leftshoe (2)rightsock, rightshoe
Planejamento de ordem parcial • Qualquer algoritmo de planejamento que possa inserir duas ações em um plano sem especificar qual delas deve ser executada primeiro.
POL : problema de busca • Estados são planos não terminados. • O plano vazio contém somente as ações início e fim. • Cada plano possui 4 componentes: • Um conjunto de ações (passos do plano) • Um conjunto de restrições de ordenação: A < B • Cíclos representam contradições. • Um conjunto de vínculos causais (causal links) • Um plano não pode ser estendido com a adição de uma nova ação C que entra em conflito com o vínculo causal (se o efeito de C for ¬p e se C pode vir depois de A e antes de B) • Um conjunto de precondições abertas. • Precondição aberta: não é alcançada por alguma ação no plano. Os planejadores trabalharão para reduzir o número de precondições abertas até o conjunto vazio (sem inserir contradições)
POL : problema de busca • Um plano é consistente sse não existirem ciclos nas restrições de ordenação e nem conflitos com os vínculos causais.. • Um plano consistente sem precondições abertas é uma solução. • Toda linearização de uma solução de ordem parcial é uma solução de ordem total cuja execução a partir do estado inicial alcançará um estado objetivo.
Resolvendo POL • Assumindo problemas de planejamento proposicionais: • O plano inicial contém Start e Finish, a restrição de ordenação Start < Finish, nenhum vínculo causal, e todas as precondições em Finish abertas. • Função successor: • escolhe uma precondição aberta p em uma ação B e • gera um plano sucessor para todo modo consistente possível para escolher uma ação A que alcance p. • Teste de objetivo
Impondo consistência • Quando da geração de um plano sucessor: • O vínculo causal A--p->B e a restrição de ordenação A < B é adicionada ao plano. • se A é novo, adicione também start < A • Resolver conflitos entre novos vínculos causais e todas as ações existentes no plano • Resolver conflitos entre a ação A (se nova no plano) e todos os vínculos existentes no plano.
Exemplo: problema do pneu furado Init(At(Flat, Axle) At(Spare,trunk)) Goal(At(Spare,Axle)) Action(Remove(Spare,Trunk) PRECOND: At(Spare,Trunk) EFFECT: ¬At(Spare,Trunk) At(Spare,Ground)) Action(Remove(Flat,Axle) PRECOND: At(Flat,Axle) EFFECT: ¬At(Flat,Axle) At(Flat,Ground)) Action(PutOn(Spare,Axle) PRECOND: At(Spare,Groundp) ¬At(Flat,Axle) EFFECT: At(Spare,Axle) ¬Ar(Spare,Ground)) Action(LeaveOvernight PRECOND: EFFECT: ¬ At(Spare,Ground) ¬ At(Spare,Axle) ¬ At(Spare,trunk) ¬ At(Flat,Ground) ¬ At(Flat,Axle) )
Pneu furado • Plano inicial: iniciar com os EFFECTS da ação Start e as PRECOND da ação Finish.
Tomar uma precondição aberta: At(Spare, Axle) • Somente PutOn(Spare, Axle) é aplicável • Adicione vínculo causal: • Adicione restrição : PutOn(Spare, Axle)< Finish
Tomar outra precondição aberta: At(Spare, Ground) • Somente Remove(Spare, Trunk) é aplicável • Adicione o vínculo causal: • Adicionar restrição : Remove(Spare, Trunk)< PutOn(Spare,Axle)
Tomar uma precondição aberta: At(Spare, Axle) • LeaveOverNight é aplicável • conflito: • Para resolver, adicionar restrição : LeaveOverNight< Remove(Spare, Trunk) • Adicionar vínculo causal:
Tomar uma precondição aberta: At(Spare, Trunk) • Somente Start é aplicável • Adicionar vínculo: • Conflito: do vínculo com o efeito At(Spare,Trunk) de LeaveOverNight • Nenhum reordenamento é possível. • retroceder
Remover LeaveOverNight e vínculos causais • Adicionar agora Remove(Flat, Axle) • Termina o plano
Grafos de planejamento (Para vosso divertimento) • Utilizados para produzir boas heurísticas • Soluções podem ser também obtidas por GRAPHPLAN. • Consistem de uma sequência de níveis correspondentes a passos no plano . • Nível 0 é o estado inicial. • Cada nível consiste de um conjunto de literais e ações. • Literais = tudo o que poderia ser verdade naquele instante, dependendo das ações executadas nos passos anteriores. • Ações = todas as ações que poderiam ter suas precondições satisfeitas, dependendo dos literais verdadeiros naquele passo.
Exemplo: Bolo Init(Have(Cake)) Goal(Have(Cake) Eaten(Cake)) Action(Eat(Cake), PRECOND: Have(Cake) EFFECT: ¬Have(Cake) Eaten(Cake)) Action(Bake(Cake), PRECOND: ¬ Have(Cake) EFFECT: Have(Cake))
Inicia no nível S0 e determina o próximo nível de ações A0 e o próximo nível S1. • A0 >> todas as ações cujas precondições são satisfeitas nos níveis anteriores. • Conectar precondições e efeitos das ações S0 --> S1 • Inação é representada por “ações de persistência”. • Nível A0 contém as ações que podem ocorrer • Conflitos entre ações são representados por vínculos mutex (vínculos de exclusão mútua).
Continuar até que dois níveis consecutivos sejam idênticos: nivelamenteo
Um vínvulo mutex ocorre quando duas ações: • efeitos inconsistentes: uma ação nega os efeitos de uma outra. • Interferência: um dos efeitos de uma ação é a negação de uma precondição de uma outra ação. • Necessidades concorrentes: uma das precondições de uma ação é mutuamente excludente com uma das precondições de outra ação. • Um vínculo mutex ocorre entre dois literais se (inconsistent support): • um é a negação do outro OU • Se cada par possível de ações que alcançariam os dois literais são mutuamente exclusivas
Grafos de planejamento e heurísticas • GP’s fornecem informações sobre o problema • Um literal que não aparece no último nível do grafo não pode ser alcançado por qualquer plano. • Um literal inatingível tem custo h(n) = infinito. • O nível em que todos os literais do objetivo aparecem • O grafo pode ser utilizado como um problema relaxado.
The GRAPHPLAN Algorithm • Como extrair soluções diretamente do grafo function GRAPHPLAN(problem) returnsolution or failure graph INITIAL-PLANNING-GRAPH(problem) goals GOALS[problem] loop do if goals all non-mutex in last level of graph then do solution EXTRACT-SOLUTION(graph, goals, LENGTH(graph)) ifsolution failure then returnsolution else if NO-SOLUTION-POSSIBLE(graph) then return failure graph EXPAND-GRAPH(graph, problem)
GRAPHPLAN example • Inicialmente o plano consiste dos 5 literais do estado inicial e da hipótese de mundo fechado (S0). • Adicionar ações cujas precondições são satisfeitas por EXPAND-GRAPH (A0) • adicionar ações de persistência e vínculos mutex. • Adicionar os efeitos no nível S1 • Repetir até que o objetivo esteja no nível Si
GRAPHPLAN example • Em S2, os literais do objetivo existem e não são mutex com nenhum outro • Uma solução pode existir e EXTRACT-SOLUTION tentará encontra-la • Processo de busca de caminho em um grafo.