Planejamento Rodrigo Barros de Vasconcelos Lima Tópicos Avançados em Inteligência Artificial...
Transcript of Planejamento Rodrigo Barros de Vasconcelos Lima Tópicos Avançados em Inteligência Artificial...
PlanejamentoPlanejamento
Rodrigo Barros de Vasconcelos Lima
Tópicos Avançados em Inteligência Artificial Simbólica
CIn - UFPE
RoteiroRoteiro
Introdução 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çãoIntroduçã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 PlanejamentoProblemas 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 STRIPS: STanford Research Institute Problem SolverSolver
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 STRIPS: STanford Research Institute Problem SolverSolver
Ações definidas por nome, precondição e efeito: Nome:
Literal positivo, sem função, da lógica da 1a ordem Precondição:
Literal positivo, sem função, da lógica da 1a ordem 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 STRIPSSemâ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) Airport(JFK) Airport(SFO)
Exemplo: STRIPSExemplo: 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 LanguageADL: Action Description Language
STRIPSSTRIPS ADLADL
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) ).
RoteiroRoteiro
Introdução Problemas de Planejamento Linguagens de Representação de Planejamento
STRIPS ADL
Algoritmos de PlanejamentoAlgoritmos de Planejamento Planejamento com Busca no Espaço de EstadoPlanejamento com Busca no Espaço de Estado
Busca Para FrenteBusca Para Frente Busca Para TrásBusca 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 Comparação das Abordagens de Resolução de ProblemasResolução de Problemas
ProblemaResoluçãode Problemapor Meio de
Busca
Espaço de Estados: Representação emExtensão funcional
Busca
ProblemaPlanejamento
no Espaçode Estado
Espaço de Estados: Representação em
Intenção da 1a ordemBusca
Planejamento com Busca no Espaço Planejamento com Busca no Espaço de Estadosde 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 EstadosBusca 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 EstadosBusca 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 EstadosBusca 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 Exemplo: Busca no Espaço de EstadosEstados
At(P1, A)At(P2, A)
At(P1, A)At(P2, B)
Fly(P2, A, B)
Fly(P1, A, B)At(P1, B)At(P2, A)
At(P1, B)At(P2, B)
At(P1, B)At(P2, A)
Fly(P2, A, B)
Fly(P1, A, B)At(P1, A)At(P2, B)
Heurística para Planejamento com Heurística para Planejamento com Busca no Espaço de EstadosBusca 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
RoteiroRoteiro
Introdução Problemas de Planejamento Linguagens de Representação de Planejamento
STRIPS ADL
Algoritmos de PlanejamentoAlgoritmos de Planejamento Planejamento com Busca no Espaço de Estado
Busca Para Frente Busca Para Trás
Planejamento com Busca no Estado de PlanosPlanejamento com Busca no Estado de Planos Planejamento de Ordem Parcial (POP)Planejamento de Ordem Parcial (POP)
Planejamento Dirigido por Grafo Planejamento no Mundo Real
Tempo, Escalonamento e Recursos
Comparação das Abordagens de Comparação das Abordagens de Resolução de ProblemasResolução de Problemas
ProblemaResoluçãode Problemapor Meio de
Busca
Espaço de Estados: Representação emExtensão funcional
Busca
ProblemaPlanejamento
no Espaçode Estado
Espaço de Estados: Representação em
Intenção da 1a ordemBusca
Problema
POPEspaço de Planos: Representação em
Intenção da 1a ordem
Busca
Planejamento de Ordem ParcialPlanejamento 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 comprometimento mínimo Prorrogar uma escolha
Exemplo: Calçar SapatosExemplo: 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 ParcialPlanejador 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 parciaisno espaço de planos parciais
Exemplo: Planos de Ordem ParcialExemplo: Planos de Ordem Parcial
Finish
Start
LeftSockOn RightSockOn
LeftShoeOn RightShoeOn
Right Sock
Left Sock
Right Shoe
Left Shoe
Exemplo: Planos de Ordem TotalExemplo: Planos de Ordem Total
Linearização: Representação da solução em ordem total
Start
RightSock
LeftSock
RightShoe
Finish
LeftShoe
Start
RightSock
LeftSock
LeftShoe
Finish
RightShoe
Start
LeftSock
RightSock
RightShoe
Finish
LeftShoe
Start
LeftSock
RightSock
LeftShoe
Finish
RightShoe
Start
RightSock
RightShoe
LeftSock
Finish
LeftShoe
Start
LeftSock
LeftShoe
RightSock
Finish
RightShoe
Algoritmo POPAlgoritmo 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çõesConjunto 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 OrdemRestriçõ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 CausaisLinks Causais
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
p
RightSockOn
Conjunto de Pré-Condições em AbertoConjunto 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 POTPOP 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 ProblemasFormulaçã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 PneuExemplo: 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çãoContinuação
Start
At(Spare, Trunk)
At(Flat, Axle)
Finish
At(Spare, Axle)
PutOn(Spare, Axle)
At(Spare, Ground)
At(Flat, Axle)
ContinuaçãoContinuação
Start
At(Spare, Trunk)
At(Flat, Axle)
Finish
At(Spare, Axle)
PutOn(Spare, Axle)
At(Spare, Ground)
At(Flat, Axle)
Remove(Spare,Trunk)
At(Spare, Trunk)
ContinuaçãoContinuação
Start
At(Spare, Trunk)
At(Flat, Axle)
Finish
At(Spare, Axle)
PutOn(Spare, Axle)
At(Spare, Ground)
At(Flat, Axle)
Remove(Spare,Trunk)
At(Spare, Trunk)
LeaveOvernight
At(Flat, Axle) At(Flat, Ground) At(Spare, Axle) At(Spare, Ground) At(Spare, Trunk)
ContinuaçãoContinuação
Start
At(Spare, Trunk)
At(Flat, Axle)
Finish
At(Spare, Axle)
PutOn(Spare, Axle)
At(Spare, Ground)
At(Flat, Axle)
Remove(Spare,Trunk)
At(Spare, Trunk)
LeaveOvernight
At(Flat, Axle) At(Flat, Ground) At(Spare, Axle) At(Spare, Ground) At(Spare, Trunk)
Conflito com Link Causal:
Remove(Spare,Trunk) At(Spare,Ground) PutOn(Spare,Axle)
ContinuaçãoContinuação
Start
At(Spare, Trunk)
At(Flat, Axle)
Finish
At(Spare, Axle)
PutOn(Spare, Axle)
At(Spare, Ground)
At(Flat, Axle)
Remove(Spare,Trunk)
At(Spare, Trunk)
LeaveOvernight
At(Flat, Axle) At(Flat, Ground) At(Spare, Axle) At(Spare, Ground) At(Spare, Trunk)
LeaveOvernight < Remove(Spare, Trunk)
ContinuaçãoContinuação
Start
At(Spare, Trunk)
At(Flat, Axle)
Finish
At(Spare, Axle)
PutOn(Spare, Axle)
At(Spare, Ground)
At(Flat, Axle)
Remove(Spare,Trunk)
At(Spare, Trunk)
LeaveOvernight
At(Flat, Axle) At(Flat, Ground) At(Spare, Axle) At(Spare, Ground) At(Spare, Trunk)
ContinuaçãoContinuação
Start
At(Spare, Trunk)
At(Flat, Axle)
Finish
At(Spare, Axle)
PutOn(Spare, Axle)
At(Spare, Ground)
At(Flat, Axle)
Remove(Spare,Trunk)
At(Spare, Trunk)
LeaveOvernight
At(Flat, Axle) At(Flat, Ground) At(Spare, Axle) At(Spare, Ground) At(Spare, Trunk)
Conflito com Link Causal:
Start At(Spare,Trunk) Remove(Spare,Trunk)
ContinuaçãoContinuação
Start
At(Spare, Trunk)
At(Flat, Axle)
Finish
At(Spare, Axle)
PutOn(Spare, Axle)
At(Spare, Ground)
At(Flat, Axle)
Remove(Spare,Trunk)
At(Spare, Trunk)
Remove(Flat, Axle)
At(Flat, Axle)
ContinuaçãoContinuação
Start
At(Spare, Trunk)
At(Flat, Axle)
Finish
At(Spare, Axle)
PutOn(Spare, Axle)
At(Spare, Ground)
At(Flat, Axle)
Remove(Spare,Trunk)
At(Spare, Trunk)
Remove(Flat, Axle)
At(Flat, Axle)
Planejamento de Ordem Parcial com Planejamento de Ordem Parcial com Variáveis LivresVariá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 Planejamento de Ordem Parcial com Variáveis LivresVariá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 Heurística Para Planejamento de Ordem ParcialOrdem 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
RoteiroRoteiro
Introdução Problemas de Planejamento Linguagens de Representação de Planejamento
STRIPS ADL
Algoritmos de PlanejamentoAlgoritmos 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 GrafoPlanejamento Dirigido por Grafo Planejamento no Mundo Real
Tempo, Escalonamento e Recursos
Comparação das Abordagens de Comparação das Abordagens de Resolução de ProblemasResolução de Problemas
ProblemaResoluçãode Problemapor Meio de
Busca
Espaço de Estados: Representação emExtensão funcional
Busca
ProblemaPlanejamento
no Espaçode Estado
Espaço de Estados: Representação em
Intenção da 1a ordemBusca
Comparação das Abordagens de Comparação das Abordagens de Resolução de ProblemasResolução de Problemas
Problema
GraphPlan
Espaço de Gráfico de Dependência:
Representação emIntenção proposicional
Busca
Problema
POPEspaço de Planos: Representação em
Intenção da 1a ordem
Busca
Planejamento Dirigido por GrafoPlanejamento 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 proposicionalna forma proposicional
Consiste em uma seqüência de níveis correspondendo aos passos do plano em ordem progressivaprogressiva
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 PlanejamentoElementos 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 PlanejamentoElementos 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 Exemplo: Planejamento Dirigido por GrafoGrafo
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 Exemplo: Planejamento Dirigido por GrafoGrafo
Eaten(Cake)
Have(Cake)
Eaten(Cake)
Eaten(Cake)
Have(Cake)
Eat(Cake)
A0 S1
Have(Cake)
S0
Eaten(Cake)
Have(Cake)
Eaten(Cake)
Have(Cake)
Bake(Cake)
Eat(Cake)
A1 S2
Heurísticas Através do Gráfico de Heurísticas Através do Gráfico de PlanejamentoPlanejamento
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 GraphPlanAlgoritmo 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 PlanejamentoExemplo: Gráfico de Planejamento
At(Spare,Trunk)
S0
At(Spare,Axle)
At(Flat,Axle)
At(Flat,Ground)
At(Spare,Ground)
At(Spare,Trunk)
At(Flat,Axle)
LeaveOvernight
At(Flat,Ground)
At(Spare,Ground)
At(Spare,Axle)
Remove(Flat,Axle)
At(Flat,Ground)
At(Flat,Axle)
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
Exemplo: Gráfico de PlanejamentoExemplo: Gráfico de Planejamento
At(Spare,Trunk)
S0 A0
At(Spare,Axle)
At(Flat,Axle)
At(Flat,Ground)
At(Spare,Ground)
LeaveOvernight
At(Spare,Trunk)
At(Flat,Ground)
At(Spare,Trunk)
At(Flat,Ground)
At(Spare,Ground)
At(Flat,Axle)
At(Spare,Axle)
At(Flat,Axle)
At(Spare,Ground)
Remove(Flat,Axle)
LeaveOvernight
PutOn(Spare,Axle)
At(Spare,Trunk)
At(Spare,Trunk)
At(Flat,Axle)
At(Spare,Axle)
At(Flat,Axle)
Remove(Flat,Axle)
At(Flat,Ground)
At(Flat,Ground)
At(Spare,Ground)
At(Spare,Ground)
At(Spare,Axle)
Remove(Spare,Trunk)
S1 A1 S2
Remove(Spare,Trunk)
Exemplo: Gráfico de PlanejamentoExemplo: Gráfico de Planejamento
At(Spare,Trunk)
S0 A0
At(Spare,Axle)
At(Flat,Axle)
At(Flat,Ground)
At(Spare,Ground)
LeaveOvernight
At(Spare,Trunk)
At(Flat,Ground)
At(Spare,Trunk)
At(Flat,Ground)
At(Spare,Ground)
At(Flat,Axle)
At(Spare,Axle)
At(Flat,Axle)
At(Spare,Ground)
Remove(Flat,Axle)
LeaveOvernight
At(Spare,Trunk)
At(Spare,Trunk)
At(Flat,Axle)
At(Spare,Axle)
At(Flat,Axle)
Remove(Spare,Trunk)
Remove(Flat,Axle)
At(Flat,Ground)
At(Flat,Ground)
At(Spare,Ground)
At(Spare,Ground)
At(Spare,Axle)
Remove(Spare,Trunk)
S1 A1 S2
PutOn(Spare,Axle)
Exemplo: Gráfico de PlanejamentoExemplo: Gráfico de Planejamento
At(Spare,Trunk)
S0 A0
At(Spare,Axle)
At(Flat,Axle)
At(Flat,Ground)
At(Spare,Ground)
LeaveOvernight
At(Spare,Trunk)
At(Flat,Ground)
At(Spare,Trunk)
At(Flat,Ground)
At(Spare,Ground)
At(Flat,Axle)
At(Spare,Axle)
At(Flat,Axle)
At(Spare,Ground)
Remove(Flat,Axle)
LeaveOvernight
At(Spare,Trunk)
At(Spare,Trunk)
At(Flat,Axle)
At(Spare,Axle)
At(Flat,Axle)
Remove(Flat,Axle)
At(Flat,Ground)
At(Flat,Ground)
At(Spare,Ground)
At(Spare,Ground)
At(Spare,Axle)
Remove(Spare,Trunk)
S1 A1 S2
PutOn(Spare,Axle)
Remove(Spare,Trunk)
Exemplo: Gráfico de PlanejamentoExemplo: Gráfico de Planejamento
At(Spare,Trunk)
S0 A0
At(Spare,Axle)
At(Flat,Axle)
At(Flat,Ground)
At(Spare,Ground)
At(Spare,Trunk)
At(Flat,Ground)
At(Spare,Trunk)
At(Flat,Ground)
At(Spare,Ground)
At(Flat,Axle)
At(Spare,Axle)
At(Flat,Axle)
At(Spare,Ground)
Remove(Flat,Axle)
LeaveOvernight
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)
S1 A1 S2
PutOn(Spare,Axle)
Remove(Spare,Trunk)
LeaveOvernight
Remove(Flat,Axle)
Exemplo: Gráfico de PlanejamentoExemplo: Gráfico de Planejamento
At(Spare,Trunk)
S0 A0
At(Spare,Axle)
At(Flat,Axle)
At(Flat,Ground)
At(Spare,Ground)
LeaveOvernight
At(Spare,Trunk)
At(Flat,Ground)
At(Spare,Trunk)
At(Flat,Ground)
At(Spare,Ground)
At(Flat,Axle)
At(Spare,Axle)
At(Flat,Axle)
At(Spare,Ground)
Remove(Flat,Axle)
LeaveOvernight
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)
S1 A1 S2
Remove(Spare,Trunk)
Remove(Flat,Axle)
PutOn(Spare,Axle)
RoteiroRoteiro
Introdução 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 RealPlanejamento no Mundo Real
Tempo, Escalonamento e RecursosTempo, Escalonamento e Recursos
Tempo, Escalonamentoe RecursosTempo, 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 CarrosExemplo: 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 POPSolução Encontrada Pelo POP
AddEngine 1
30
AddEngine 2
60
AddWheels 2
15
AddWheels 1
30
Inspect 1
10
Inspect 2
10
FinishStart
Problemas de Problemas de EscalonamentoEscalonamento
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íticoExemplo: Caminho Crítico
[0, 15]
AddEngine 1
30
[0, 0]
AddEngine 2
60
[60, 60]
AddWheels 2
15
[30, 45]
AddWheels 1
30
[60, 75]
Inspect 1
10
[75, 75]
Inspect 2
10
[85, 85]
Finish
[0, 0]
Start
Ações no caminho crítico possuem tolerância igual a zero !
Escalonamento com Restrição de Escalonamento com Restrição de RecursosRecursos
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 CarrosExemplo: 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 RecursosExemplo: Restrições de Recursos
EngineHoist(1)
WheelStations(1)
Inspectors(2)
30 60 105 1150
AddEngine 1 AddEngine 2
AddWheels 1 AddWheels 2
Inspect 2
Inspect 1
9070
Referência BibliográficaReferê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