Planejamento Rodrigo Barros de Vasconcelos Lima

Slides:



Advertisements
Apresentações semelhantes
Construção de listas de decisão Os tópicos anteriores tratam de indução de conceitos que podem ser descritos usando uma única região de decisão Neste tópico.
Advertisements

Introdução a Algoritmos
Planejamento Viviane Torres da Silva
Planejamento Viviane Torres da Silva
Fluxo em Redes Prof. Ricardo R. Santos.
Engenharia de Software
Tópicos de Lógica Proposicional
1 Domínios Finitos A eficiência das programas em domínios finitos (incluindo booleanos) podem ainda ser melhoradas pelo uso de Algoritmos de Propagação.
Sistemas Digitais Projeto RTL – Unidade de Execução
Faculdade de Ciências Sociais e Aplicadas de Petrolina – FACAPE
Resolução.
Inteligência Artificial I
Meta - heurísticas Prof. Aurora
Capítulo 4: Estado Global
Dárlinton B. Feres Carvalho
Planejamento Clássico
Busca Online Alexandra Barros Geber Ramalho. Busca Offine x Busca Online Busca Offline (ou planejamento clássico) –Computa a solução (do estado inicial.
Planejamento e Execução
Busca Cega (Exaustiva)
PLANEJADORES PRÁTICOS Jacques Robin DI-UFPE Planejamento de Ordem Parcial (POP) com linguagem STRIPS * mais expressivo que resolução de problema * porque.
- Conceitos e termos - Aplicações
Carolina Fonseca Neumar Ribeiro
Fabio Notare Martins Pontifícia Universidade Católica do Rio Grande do Sul Programa de Pós-Graduação em Ciências da Computação.
Gerenciamento de projetos
Planejamento (Cap. 11 do Russell)
Capítulo 2 Representação de Problemas em Planejamento Clássico
Inteligência Artificial
INF 1771 – Inteligência Artificial
INF 1771 – Inteligência Artificial
INF 1771 – Inteligência Artificial
INF 1771 – Inteligência Artificial
INF 1771 – Inteligência Artificial
Meta - heurísticas Prof. Aurora
CIn-UFPE 1 Planejamento Clássico. CIn-UFPE 2 Roteiro nConceitos básicos nSTRIPS nPOP.
T ÓPICOS DE I.A. Métodos de Busca Busca em Espaços de Estado Prof. Mário Dantas.
INF 1771 – Inteligência Artificial
Grafos Árvores Geradoras.
FACENS – Engenharia da Computação Inteligência Artificial Busca.
1 Introdução aos Agentes Inteligentes Flávia Barros.
CIn-UFPE 1 Estendendo o Planejamento Clássico para Aplicações do Mundo Real Tempo, prazos e recursos.
Desempenho de Algoritmos Genéticos
INF 1771 – Inteligência Artificial Aula 12 – Planejamento Edirlei Soares de Lima.
Planejamento e Solucionamento de Problemas Distribuídos
Cássio Cristo Dawyson Guerra Matheu Santos
Introdução e Busca Cega
Introdução aos Agentes Inteligentes Busca Cega (Exaustiva)
Implementação de Resolução
Sistemas Especialistas
Blackbox Ferramenta de Planejamento em IA Jairson Vitorino, 06 de maio de 2005
Algoritmos de Busca Local
CIn-UFPE 1 Estendendo o Planejamento Clássico para Aplicações do Mundo Real Tempo, prazos e recursos Planejamento hierárquico.
Tópicos em Sistemas Inteligentes
Construção e Análise de Algoritmos
Testes de Software AULA 02 Eduardo Silvestri
Busca Combinatorial e Métodos de Heurística
Inteligência Artificial
PUCC 1 Tópicos em Sistemas Inteligentes. PUCC 2 Agenda - Aula 03 Buscas Agentes que Planejam.
INF 1771 – Inteligência Artificial
1 Introdução aos Agentes Inteligentes Inventando Funções Heurísticas Flávia Barros.
Resolução de Problemas de Busca
1 Introdução aos Agentes Inteligentes Resolução de Problemas de Busca Flávia Barros.
Ferramentas de Planejamento em IA Blackbox Planner.
Fundamentos de linguagens de programação

Desenvolvimento de Sistemas Baseados em Conhecimento Planejamento com Tempo, Prazos e Recursos Planejamento Hierárquico.
Busca Competitiva Disciplina: Inteligência Artificial
Projeto de Banco de Dados
Sistemas Inteligentes Busca Cega (Exaustiva)
Busca Heurística Prof. Valmir Macário Filho. 2 Busca com informação e exploração Capítulo 4 – Russell & Norvig Seção 4.1 Estratégias de Busca Exaustiva.
1 Planejamento Clássico (Planning) Russel, S. Norvig, P.: Inteligência Artificial (segunda edição) 28 SET 09 Igor R M Menezes.
Transcrição da apresentação:

Planejamento Rodrigo Barros de Vasconcelos Lima Tópicos Avançados em Inteligência Artificial Simbólica CIn - UFPE

Roteiro Introdução Algoritmos de Planejamento Problemas de Planejamento Linguagens de Representação de Planejamento STRIPS ADL Algoritmos de Planejamento Planejamento com Busca no Espaço de Estado Busca Para Frente Busca Para Trás Planejamento com Busca no Estado de Planos Planejamento de Ordem Parcial (POP) Planejamento Dirigido por Grafo Planejamento no Mundo Real Tempo, Escalonamento e Recursos

Introdução Tarefa de escolher uma seqüência de ações que atinjam um determinado objetivo São representados por estados, ações e objetivos A princípio serão estudados ambientes de planejamento clássicos: Totalmente observáveis Deterministas Finitos Estáticos Discretos (tempo, ações, objetos e efeitos)

Problemas de Planejamento Agente baseado em busca é um agente planejador simples !!! O que acontece quando esse tipo de agente se depara com problemas mais complexos? Não sabe lidar com a existência de ação irrelevantes Dificuldade para encontrar uma boa função de heurística Não é capaz de tirar vantagem da decomposição de problemas Existem outras técnicas para planejamento que permitem melhor desempenho em problemas do mundo real

STRIPS: STanford Research Institute Problem Solver Linguagem suficientemente expressiva (e restrita) para representação de problemas de planejamento clássicos Estados: Conjunções de literais, sem funções, instanciados da lógica da 1a ordem Ex, Rich  Famous, At(Plane1, Melbourne) Objetivos: Estado parcialmente especificado Conjunção de literais positivos, sem funções, da lógica da 1a ordem Ex.: Rich  Famous, At(Plane1, Melbourne) Restrição sobre a presença de funções garante que qualquer esquema de ação possa ser proposicionalizado !

STRIPS: STanford Research Institute Problem Solver Ações definidas por nome, precondição e efeito: Nome: Literal positivo, sem função, da lógica da 1a ordem Precondição: Efeito: Literal (positivo ou negativo), sem função, da lógica da 1a ordem Ex.: Action (Fly(p, from, to), PRECOND: At(p,from)  Plane(p)  Airport(from  Airport(to) EFFECT: At(p,from)  At(p,to) ) Semântica de todas as fórmulas lógica com hipótese do mundo fechado !

Semântica de STRIPS Uma ação é aplicável em qualquer estado que satisfaça suas pré-condições Ex.: Fly(P1, JFK, SFO) aplicável ao estado: At(P1,JFK)  At(P2,SFO)  Plane(P1)  Plane(P2)  Airport(JFK)  Airport(SFO) Resultado da execução de uma ação aplicável a: Literais positivos do efeito da ação a são adicionados ao novo estado s’ Literais negativos são removidos de s’ Ex.: estado após execução de Fly(P1, JFK, SFO): At(P1,SFO)  At(P2,SFO)  Plane(P1)  Plane(P2) 

Exemplo: 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) )

ADL: Action Description Language STRIPS ADL Apenas literais positivos nos estados Literais Positivos e Negativos nos estados Hipótese do mundo fechado Hipótese do mundo aberto Efeito P  Q: adicionar P e apagar Q Efeito P  Q: adicionar P e apagar  Q e apagar P e Q Apenas proposições nos objetivos Variáveis quantificadas Objetivos são conjunções Objetivos podem ser conjunções e/ou disjunções Efeitos são conjunções Efecitos condicionais permitidos: When P:E Não suporta igualdade Suporta igualdade Não suporta tipos Suporta tipos Ex.: Action( Fly(p : Plane, from : Airport, to : airport), PRECOND: At(p, from)  (from  to) EFFECT:  At(p, from)  At(p, to) ).

Roteiro Introdução Algoritmos de Planejamento Problemas de Planejamento Linguagens de Representação de Planejamento STRIPS ADL Algoritmos de Planejamento Planejamento com Busca no Espaço de Estado Busca Para Frente Busca Para Trás Planejamento com Busca no Estado de Planos Planejamento de Ordem Parcial (POP) Planejamento Dirigido por Grafo Planejamento no Mundo Real Tempo, Escalonamento e Recursos

Comparação das Abordagens de Resolução de Problemas por Meio de Busca Espaço de Estados: Representação em Extensão funcional Problema Planejamento no Espaço de Estado Espaço de Estados: Representação em Intenção da 1a ordem Busca

Planejamento com Busca no Espaço de Estados Abordagem mais simples para resolução de problemas de planejamento Ações em um problema de planejamento especificam tanto os seus efeitos quanto suas pré-condições Permite realizar busca para frente e para trás: Algoritmos não muito eficientes !

Busca Para Frente no Espaço de Estados Também chamado de Planejamento Progressivo Estado Inicial: estado inicial do problema de planejamento Ações Aplicáveis a um estado são aquelas cujas pré-condições são satisfeitas Algoritmos bastante ineficiente Leva em consideração ações irrelevantes Todas as ações aplicáveis a um estado são consideradas Ex.: ir para igreja para comprar livro Necessita de uma heurística muito boa

Busca Para Trás no Espaço de Estados Também chamado de Planejamento Regressivo Estado Inicial: objetivo do problema de planejamento Leva em consideração apenas ações relevantes: Ações que geram pelo menos um dos literais do objetivo Ações devem ser consistentes: Não “desfazem” nenhum literal desejado !

Busca Para Trás no Espaço de Estados Algoritmo: Seja O a descrição do objetivo e A uma ação relevante e consistente, o estado predecessor é gerado da seguinte maneira: Qualquer efeito positivo de A que apareça em O é apagado Cada literal da pré-condição de A é adicionado (caso não exista) Exemplo: O: At(C1, B)  At(C2, B) A: Unload(C1, p, B) Predecessor: In(C1, p)  At(p, B)  At(C2, B)  Cargo(C1)  Plane(p)  Airport(B)

Exemplo: Busca no Espaço de Estados At(P1, A) At(P2, A) At(P2, B) Fly(P2, A, B) Fly(P1, A, B) At(P1, B) At(P1, B) At(P2, B) At(P2, A) Fly(P2, A, B) Fly(P1, A, B) At(P1, A)

Heurística para Planejamento com Busca no Espaço de Estados Distância para o objetivo é igual ao número de ações Custo da ação em STRIPS é tipicamente 1 Encontrar número exato é NP-Hard, mas é possível encontrar boas aproximações Heurística “Lista Negativa Vazia” (empty-delete-list) Relaxamento do problema original através da remoção de efeitos negativos EX.: A  B => A Usar independência de sub-objetivos Elimina preocupação com interações negativas em sub-planos Necessário executar um algoritmos de planejamento Na prática, a busca no problema relaxado é rápida o suficiente para justificar sua execução

Roteiro Introdução Algoritmos de Planejamento Problemas de Planejamento Linguagens de Representação de Planejamento STRIPS ADL Algoritmos de Planejamento Planejamento com Busca no Espaço de Estado Busca Para Frente Busca Para Trás Planejamento com Busca no Estado de Planos Planejamento de Ordem Parcial (POP) Planejamento Dirigido por Grafo Planejamento no Mundo Real Tempo, Escalonamento e Recursos

Comparação das Abordagens de Resolução de Problemas por Meio de Busca Espaço de Estados: Representação em Extensão funcional Problema Planejamento no Espaço de Estado Espaço de Estados: Representação em Intenção da 1a ordem Busca Problema POP Espaço de Planos: Representação em Intenção da 1a ordem Busca

Planejamento de Ordem Parcial Busca para frente e para trás são casos particulares de Busca Totalmente Ordenada Ações explorados de maneira estritamente seqüencial Ações críticas para o sucesso ou falha de um plano não são necessariamente as primeiras a serem executadas Não tiram vantagem da decomposição de problemas Ideal: construir plano independentemente da ordem da sua execução permite Trabalhar decisões “óbvias” ou cruciais antes É um exemplo da heurística geral de raciocínio com comprometimento mínimo Prorrogar uma escolha

Exemplo: Calçar Sapatos Goal(RightShoeOn  LeftShoeOn) Init ( ) Action (RightShoe, PRECOND: RighSockOn, EFFECT: RightShoeOn) Action (RightSock, EFFECT: RightSockOn ) Action (LeftShoe, PRECOND: LeftSockOn, EFFECT: LeftShoeOn ) Action (LeftSock, EFFECT: LeftSockOn )

Planejador de Ordem Parcial Algoritmo de planejamento capaz de colocar duas ações em um plano sem especificar qual ocorre primeiro Solução representada como um grafo de ações (não uma seqüência!) As ações Start e Finish marcam o início e o fim do plano Planejamento de ordem parcial pode ser implementado como uma busca no espaço de planos parciais

Exemplo: Planos de Ordem Parcial Finish Start LeftSockOn RightSockOn LeftShoeOn RightShoeOn Right Sock Left Sock Right Shoe Left Shoe

Exemplo: Planos de Ordem Total Start RightSock LeftSock RightShoe Finish LeftShoe Linearização: Representação da solução em ordem total

Algoritmo POP Estados do problema de busca são planos Planos compostos por 4 componentes: Conjunto de Ações Restrições de Ordem Links Causais Conjunto de Pré-Condições em Aberto

Conjunto de Ações Ações que compõe os passos do plano Plano vazio consiste apenas das ações Start e Finish Start: Nenhuma pré-condição Efeito em todos os literais no estado inicial do problema Finish: Nenhum efeito Pré-condições são os literais que formam objetivo do problema

Restrições de Ordem Indica ordem entre as ações: A < B Ação A precisa ser executada algum momento antes da ação B Descrevem uma ordem parcial adequada Ciclos representam contradições e não podem ser adicionados: Ex.: A < B e B < A (proibido!)

Links Causais A B Ex.: RightSock RightShoe p A B Efeito da Ação A é tornar verdadeira a pré-condição p da ação B Não deve ser cancelado por efeitos de outras ações executadas entre a execução de A e B no POT gerado a partir do POP Ex.: RightSock RightShoe Ação C é conflitante com link causal p se: C tem efeito  p C pode acontecer entre A e B de acordo com as restrições de ordem RightSockOn

Conjunto de Pré-Condições em Aberto Pré-condições não satisfeitas por nenhuma ação do plano Planejadores devem reduzir o conjunto a vazio (sem introduzir contradições!!!) Plano consistente: sem ciclos nas restrições de ordem, nem conflitos nos links causais Solução: plano consistente sem nenhum pré-condição em aberto

POP x POT Toda linearização de uma solução de ordem parcial corresponde a uma solução de ordem total Noção de executar um plano é estendida em POP: POP é executado escolhendo-se quaisquer uma das possíveis próximas ações Flexibilidade torna mais fácil combinar subplanos em planos maiores: Cada subplano pode reordenar suas ações para evitar conflitos com outros planos

Formulação de Problemas Plano inicial: Ações {Start, Finish} Ordenamento {Start < Finish} Links { } Pré-Condições em aberto {todas de Finish} Função sucessora: Arbitrariamente escolhe uma pré-condição em aberto p e gera planos sucessores consistentes Teste de meta: Testa se um plano é uma solução (não há nenhuma pré-condição em aberto)

Exemplo: Troca de Pneu 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(Flate, Axle)  At (Flat, Ground) ) Action(PutOn(Spare, Axle), PRECOND: At(Spare, Ground)  At(Flat, Axle) EFFECT: At(Spare, Ground)  At (Spare, Axle) ) Action(LeaveOvernight, PRECOND: EFFECT: At(Spare, Ground)  At(Spare, Axle)  At(Spare, Trunk)  At(Flat, Ground)  At(Flat, Axle) )

Continuação Start PutOn(Spare, Axle) Finish At(Spare, Trunk) At(Flat, Axle) PutOn(Spare, Axle) At(Spare, Ground)  At(Flat, Axle) Finish At(Spare, Axle)

Continuação Remove(Spare,Trunk) Start PutOn(Spare, Axle) Finish At(Spare, Trunk) Start At(Spare, Trunk) At(Flat, Axle) PutOn(Spare, Axle) At(Spare, Ground)  At(Flat, Axle) Finish At(Spare, Axle)

Continuação Remove(Spare,Trunk) Start PutOn(Spare, Axle) Finish At(Spare, Trunk) Start At(Spare, Trunk) At(Flat, Axle) PutOn(Spare, Axle) At(Spare, Ground)  At(Flat, Axle) Finish At(Spare, Axle) LeaveOvernight At(Flat, Axle) At(Flat, Ground) At(Spare, Axle) At(Spare, Ground) At(Spare, Trunk)

Continuação Remove(Spare,Trunk) Start PutOn(Spare, Axle) Finish At(Spare, Trunk) Conflito com Link Causal: Remove(Spare,Trunk) At(Spare,Ground) PutOn(Spare,Axle) Start At(Spare, Trunk) At(Flat, Axle) PutOn(Spare, Axle) At(Spare, Ground)  At(Flat, Axle) Finish At(Spare, Axle) LeaveOvernight At(Flat, Axle) At(Flat, Ground) At(Spare, Axle) At(Spare, Ground) At(Spare, Trunk)

Continuação Remove(Spare,Trunk) Start PutOn(Spare, Axle) Finish At(Spare, Trunk) LeaveOvernight < Remove(Spare, Trunk) Start At(Spare, Trunk) At(Flat, Axle) PutOn(Spare, Axle) At(Spare, Ground)  At(Flat, Axle) Finish At(Spare, Axle) LeaveOvernight At(Flat, Axle) At(Flat, Ground) At(Spare, Axle) At(Spare, Ground) At(Spare, Trunk)

Continuação Remove(Spare,Trunk) Start PutOn(Spare, Axle) Finish At(Spare, Trunk) Start At(Spare, Trunk) At(Flat, Axle) PutOn(Spare, Axle) At(Spare, Ground)  At(Flat, Axle) Finish At(Spare, Axle) LeaveOvernight At(Flat, Axle) At(Flat, Ground) At(Spare, Axle) At(Spare, Ground) At(Spare, Trunk)

Continuação Remove(Spare,Trunk) Start PutOn(Spare, Axle) Finish At(Spare, Trunk) Conflito com Link Causal: Start At(Spare,Trunk) Remove(Spare,Trunk) Start At(Spare, Trunk) At(Flat, Axle) PutOn(Spare, Axle) At(Spare, Ground)  At(Flat, Axle) Finish At(Spare, Axle) LeaveOvernight At(Flat, Axle) At(Flat, Ground) At(Spare, Axle) At(Spare, Ground) At(Spare, Trunk)

Continuação Remove(Spare,Trunk) Start PutOn(Spare, Axle) Finish At(Spare, Trunk) Start At(Spare, Trunk) At(Flat, Axle) PutOn(Spare, Axle) At(Spare, Ground)  At(Flat, Axle) Finish At(Spare, Axle) Remove(Flat, Axle) At(Flat, Axle)

Continuação Remove(Spare,Trunk) Start PutOn(Spare, Axle) Finish At(Spare, Trunk) Start At(Spare, Trunk) At(Flat, Axle) PutOn(Spare, Axle) At(Spare, Ground)  At(Flat, Axle) Finish At(Spare, Axle) Remove(Flat, Axle) At(Flat, Axle)

Planejamento de Ordem Parcial com Variáveis Livres Exemplo: Action(Move(b,x,y), PRECOND: On(b,x)  Clear(b)  Clear(y), EFFECT: On(b,y)  Clear(x)  On(b,x)  Clear(y) ) Pré-condição em aberto: On(A,B)  Clear(B)  Clear(A) Ação satisfaz pré-condição: Substituição {b/A, y/B}

Planejamento de Ordem Parcial com Variáveis Livres Exemplo: Action(Move(A,x,B), PRECOND: On(A,x)  Clear(A)  Clear(B), EFFECT: On(A,B)  Clear(x)  On(A,x)  Clear(B) ) Variável x livre Outro exemplo de comprometimento mínimo ! Supondo On(A,D) no estado inicial, temos que {x/D} São necessárias restrições de diferença: Move(A,x,B) Finish Ação M com efeito On(A,z) só gerará conflito se z = B Então adiciona-se restrição do tipo z  B

Heurística Para Planejamento de Ordem Parcial Função de heurística usada para escolher qual plano deve ser refinado Heurística da Variável Mais Restrita pode ser adaptada para POP: Selecionar pré-condição em aberto que pode ser alcançada pelo menor número de caminhos Função escolhe primeiro: Pré-condição em aberto que não pode ser alcançada por nenhuma ação Pré-condição em aberto que só pode ser alcançada por um único caminho

Roteiro Introdução Algoritmos de Planejamento Problemas de Planejamento Linguagens de Representação de Planejamento STRIPS ADL Algoritmos de Planejamento Planejamento com Busca no Espaço de Estado Busca Para Frente Busca Para Trás Planejamento com Busca no Estado de Planos Planejamento de Ordem Parcial (POP) Planejamento Dirigido por Grafo Planejamento no Mundo Real Tempo, Escalonamento e Recursos

Comparação das Abordagens de Resolução de Problemas por Meio de Busca Espaço de Estados: Representação em Extensão funcional Problema Planejamento no Espaço de Estado Espaço de Estados: Representação em Intenção da 1a ordem Busca

Comparação das Abordagens de Resolução de Problemas POP Espaço de Planos: Representação em Intenção da 1a ordem Busca Problema GraphPlan Espaço de Gráfico de Dependência: Representação em Intenção proposicional Busca

Planejamento Dirigido por Grafo Todas heurísticas sugeridas anteriormente podem não ser muito precisas Grafo de dependências entre ações e estados é construído para estimar heurísticas melhores Plano pode ser derivado a partir do grafo Funcionam apenas para problemas na forma proposicional Consiste em uma seqüência de níveis correspondendo aos passos do plano em ordem progressiva Novos níveis são gerados até que seja alcançado um nível onde dois níveis consecutivos sejam idênticos (nivelamento)

Elementos do Gráfico de Planejamento Cada nível é composto por um conjunto de literais e um conjunto de ações Conjunto de Estados: Valores verdade para todos os literais do estado inicial ou efeitos de ações previamente introduzidas Conjunto de Ações: Ações cujas precondições são satisfeitas em um dado estado St

Elementos do Gráfico de Planejamento Ações Persistentes: Verdade de um literal permanece inalterado entre estados Links de Exclusão Mútua (Mutex) entre ações: Indicam conflitos entre ações de um mesmo nível Ocorrem quando existe: Efeitos inconsistentes ou Interferência ou Competição por recursos Links de Exclusão Mútua (Mutex) entre literais: Um literal é a negação do outro Cada possível par de ações que geram os dois literais são mutuamente exclusivas (Suporte Inconsistente)

Exemplo: Planejamento Dirigido por Grafo 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) )

Exemplo: Planejamento Dirigido por Grafo Have(Cake) S0  Eaten(Cake) Eaten(Cake)  Have(Cake) Eat(Cake) A0 S1 Have(Cake) Eaten(Cake)  Have(Cake) Bake(Cake) Eat(Cake) A1 S2  Eaten(Cake) Have(Cake)  Eaten(Cake)

Heurísticas Através do Gráfico de Planejamento Gráfico de planejamento é um rica fonte de informação sobre o problema Literal que não aparece no último nível não pode ser alcançado por nenhum plano !!! Custo de Nível: custo para atingir um literal Estimado como o número do nível onde aparece pela primeira vez Ex.: Have(Cake) – custo 0; Eaten(Cake) – custo 1 Para objetivo formado por conjunções temos três abordagens: Nível máximo Soma dos níveis Nível do conjunto

Algoritmo GraphPlan Usado para extrair uma solução do gráfico de planejamento e não apenas uma heurística Alterna entre dois passos: Extração da solução Expansão do gráfico repita se todos literais do obj. não mutex no último nível do gráfico então solução = ExtrairSolução(graph, goals) se solução <> falha então retorne solução senão se NenhumaSoluçãoPossivel(graph) entao retorne falha graph = ExpandirGrafico(graph, problem)

Exemplo: Gráfico de Planejamento At(Spare,Trunk) S0 At(Spare,Axle) At(Flat,Axle) At(Flat,Ground) At(Spare,Ground) A0 Remove(Spare,Trunk)  At(Spare,Trunk) At(Spare,Ground) S1 Remove(Flat,Axle) LeaveOvernight PutOn(Spare,Axle) At(Spare,Trunk)  At(Spare,Trunk) At(Flat,Axle)  At(Spare,Axle)  At(Flat,Axle) At(Flat,Ground)  At(Flat,Ground)  At(Spare,Ground) At(Spare,Ground) At(Spare,Axle) Remove(Spare,Trunk) A1 S2 At(Spare,Trunk) At(Flat,Axle) Remove(Flat,Axle) At(Flat,Ground)  At(Flat,Axle) LeaveOvernight  At(Flat,Ground)  At(Spare,Ground)  At(Spare,Axle)

Exemplo: Gráfico de Planejamento S0 A0 S1 A1 S2 At(Spare,Trunk) At(Spare,Trunk) At(Spare,Trunk) Remove(Spare,Trunk) Remove(Spare,Trunk)  At(Spare,Trunk)  At(Spare,Trunk) Remove(Flat,Axle) Remove(Flat,Axle) At(Flat,Axle) At(Flat,Axle) At(Flat,Axle)  At(Flat,Axle) LeaveOvernight  At(Flat,Axle) LeaveOvernight At(Spare,Axle)  At(Spare,Axle)  At(Spare,Axle) PutOn(Spare,Axle) At(Spare,Axle) At(Flat,Ground)  At(Flat,Ground)  At(Flat,Ground) At(Flat,Ground) At(Flat,Ground) At(Spare,Ground)  At(Spare,Ground)  At(Spare,Ground) At(Spare,Ground) At(Spare,Ground)

Exemplo: Gráfico de Planejamento S0 A0 S1 A1 S2 At(Spare,Trunk) At(Spare,Trunk) At(Spare,Trunk) Remove(Spare,Trunk) Remove(Spare,Trunk)  At(Spare,Trunk)  At(Spare,Trunk) Remove(Flat,Axle) Remove(Flat,Axle) At(Flat,Axle) At(Flat,Axle) At(Flat,Axle)  At(Flat,Axle) LeaveOvernight  At(Flat,Axle) LeaveOvernight At(Spare,Axle)  At(Spare,Axle)  At(Spare,Axle) PutOn(Spare,Axle) At(Spare,Axle) At(Flat,Ground)  At(Flat,Ground)  At(Flat,Ground) At(Flat,Ground) At(Flat,Ground) At(Spare,Ground)  At(Spare,Ground)  At(Spare,Ground) At(Spare,Ground) At(Spare,Ground)

Exemplo: Gráfico de Planejamento S0 A0 S1 A1 S2 At(Spare,Trunk) At(Spare,Trunk) At(Spare,Trunk) Remove(Spare,Trunk) Remove(Spare,Trunk)  At(Spare,Trunk)  At(Spare,Trunk) Remove(Flat,Axle) Remove(Flat,Axle) At(Flat,Axle) At(Flat,Axle) At(Flat,Axle)  At(Flat,Axle) LeaveOvernight  At(Flat,Axle) LeaveOvernight At(Spare,Axle)  At(Spare,Axle)  At(Spare,Axle) PutOn(Spare,Axle) At(Spare,Axle)  At(Flat,Ground)  At(Flat,Ground) At(Flat,Ground) At(Flat,Ground) At(Flat,Ground) At(Spare,Ground)  At(Spare,Ground)  At(Spare,Ground) At(Spare,Ground) At(Spare,Ground)

Exemplo: Gráfico de Planejamento S0 A0 S1 A1 S2 At(Spare,Trunk) At(Spare,Trunk) At(Spare,Trunk) Remove(Spare,Trunk) Remove(Spare,Trunk)  At(Spare,Trunk)  At(Spare,Trunk) Remove(Flat,Axle) Remove(Flat,Axle) At(Flat,Axle) At(Flat,Axle) At(Flat,Axle)  At(Flat,Axle) LeaveOvernight  At(Flat,Axle) LeaveOvernight At(Spare,Axle)  At(Spare,Axle)  At(Spare,Axle) PutOn(Spare,Axle) At(Spare,Axle)  At(Flat,Ground)  At(Flat,Ground) At(Flat,Ground) At(Flat,Ground) At(Flat,Ground) At(Spare,Ground)  At(Spare,Ground)  At(Spare,Ground) At(Spare,Ground) At(Spare,Ground)

Exemplo: Gráfico de Planejamento S0 A0 S1 A1 S2 At(Spare,Trunk) At(Spare,Trunk) At(Spare,Trunk) Remove(Spare,Trunk) Remove(Spare,Trunk)  At(Spare,Trunk)  At(Spare,Trunk) Remove(Flat,Axle) Remove(Flat,Axle) At(Flat,Axle) At(Flat,Axle) At(Flat,Axle)  At(Flat,Axle) LeaveOvernight  At(Flat,Axle) LeaveOvernight At(Spare,Axle)  At(Spare,Axle)  At(Spare,Axle) PutOn(Spare,Axle) At(Spare,Axle)  At(Flat,Ground) At(Flat,Ground)  At(Flat,Ground) At(Flat,Ground) At(Flat,Ground) At(Spare,Ground)  At(Spare,Ground)  At(Spare,Ground) At(Spare,Ground) At(Spare,Ground)

Roteiro Introdução Algoritmos de Planejamento Problemas de Planejamento Linguagens de Representação de Planejamento STRIPS ADL Algoritmos de Planejamento Planejamento com Busca no Espaço de Estado Busca Para Frente Busca Para Trás Planejamento com Busca no Estado de Planos Planejamento de Ordem Parcial (POP) Planejamento Dirigido por Grafo Planejamento no Mundo Real Tempo, Escalonamento e Recursos

Tempo, Escalonamentoe Recursos Planejadores usados no mundo real são muito mais complexos do que os vistos até agora Estendem os conceitos básicos tanto no que diz respeito a linguagem de representação quanto na maneira com que interagem com o ambiente Representação STRIPS diz apenas “como fazer” e não: Quanto tempo uma ação leva Quando uma ação ocorre Aplicações de Job Shop Scheduling: Completar conjunto de tarefas (seqüência de ações) Cada ação tem uma duração e pode precisar de recursos Encontrar o escalonamento mais rápido para a execução das tarefa, respeitando restrições de recursos

Exemplo: Montagem de Dois Carros Init (Chassis(C1)  Chassis(C2)  Engine(E1, C1, 30)  Engine(E2, C2, 60)  Wheels(W1, C1, 30)  Wheels(W2, C2, 15) Goal (Done(C1)  Done(C2) Action (AddEngine(e, c, m), PRECOND: Engine(e, c, d)  Chassis(c)   EngineIn(c) EFFECT: EngineIn(c)  Duration(d) ) Action (AddWheels(w, c), PRECOND: Wheels(w, c, d)  Chassis(c) EFFECT: WheelsOn(c)  Duration(d) ) Action (Inspect(c), PRECOND: EngineIn(c)  WheelsOn(c)  Chassis(c) EFFECT: Done(c)  Duration(10) )

Solução Encontrada Pelo POP AddEngine 1 30 AddEngine 2 60 AddWheels 2 15 AddWheels 1 Inspect 1 10 Inspect 2 Finish Start

Problemas de Escalonamento Tipo de problema de planejamento que especifica quando uma ação deve começar e terminar Deve-se tentar encontrar o Escalonamento mais rápido Método do Caminho Crítico (CPM) determina os possíveis tempos de início e fim das ações Caminho Crítico: caminho cujo tempo total é maior Ações no caminho crítico não podem sofrer nenhum atraso Ações fora desse caminho podem sofrer atrasos: Atraso especificado pelo Tempo Mais Cedo de Início (ES) e pelo Tempo Mais Tarde de Início (LS) Tolerância Para Início de uma Ação: LS - ES

Exemplo: Caminho Crítico [0, 15] AddEngine 1 30 [0, 0] AddEngine 2 60 [60, 60] AddWheels 2 15 [30, 45] AddWheels 1 [60, 75] Inspect 1 10 [75, 75] Inspect 2 [85, 85] Finish Start Ações no caminho crítico possuem tolerância igual a zero !

Escalonamento com Restrição de Recursos Problemas reais de escalonamento são ainda mais complexos devido a presença de restrições sobre recursos Ex.: é necessário um guindaste para adicionar um motor Representação do problema deve ser incrementada: Resource: R(k) Funciona como uma pré-condição e um efeito temporário Recurso re-usável:recurso usado por uma ação mas que se torna disponível após seu término

Exemplo: Montagem de Dois Carros Init (Chassis(C1)  Chassis(C2)  Engine(E1, C1, 30)  Engine(E2, C2, 60)  Wheels(W1, C1, 30)  Wheels(W2, C2, 15)  EngineHoists(1)  WheelStations(1)  Inspectors(2) ) Goal (Done(C1)  Done(C2) Action (AddEngine(e, c, m), PRECOND: Engine(e, c, d)  Chassis(c)   EngineIn(c) EFFECT: EngineIn(c)  Duration(d) RESOURCE: EngineHoist(1) ) Action (AddWheels(w, c), PRECOND: Wheels(w, c, d)  Chassis(c) EFFECT: WheelsOn(c)  Duration(d) RESOURCE: WheelStations(1) ) Action (Inspect(c), PRECOND: EngineIn(c)  WheelsOn(c)  Chassis(c) EFFECT: Done(c)  Duration(10) RESOURCE: Inspectors(1) )

Exemplo: Restrições de Recursos EngineHoist(1) AddEngine 1 AddEngine 2 WheelStations(1) AddWheels 1 AddWheels 2 Inspect 1 Inspectors(2) Inspect 2 30 60 70 90 105 115

Referência Bibliográfica Artificial Intelligence a Modern Approach Stuart Russel – Peter Norving Second Edition Seções 11.1, 11.2, 11.3, 11.4 e 12.1