Desenvolvimento de Sistemas
Baseados em Conhecimento
Planejamento com Tempo, Prazos e Recursos
Planejamento Hierárquico
Relembrando STRIPS
Algoritmo
On(A,Table)
On(B,Table)
On(C,Table)
Clear(A)
Clear(B)
Clear(C)
PutOn(B, Table, C)
Estado Atual
On(A,Table)
On(B,Table)
Clear(A)
Clear(B)
On(C,Table)
Clear(C)
On(B,C)
On(A,B)
Clear(Table)
Conjunto de Operadores
PutOn(A, Table, B)
On(A,B)
On(B,C)
Clear(A)
On(C,Table)
Op(ACTION: PutOn(b, x, y),
PRECOND: On(b, x) ^ Clear(b) ^ Clear(y),
EFFECT: On(b, y) ^ Clear(x) ^ On(b, x) ^
Clear(y))
.
.
.
Relembrando POP
Start
At(Home)
Go(HWS)
At(HWS)
Go(SM)
At(HWS), Sells(HWS,Drill)
Buy(Drill)
At(SM) Sells(SM,Milk)
Buy(Milk)
At(SM) Sells(SM,Ban.)
Buy(Ban.)
Have(Drill) Have(Milk) Have(Ban.) At(Home)
Finish
At(SM)
Go(Home)
Relembrando POP
Limitações POP-STRIPS
• O tempo não é levado em conta
– Diz “o que”, mas não “quando” nem “por quanto tempo”
– “O modelo de planejamento temporal deve ser baseado
numa abordagem de intervalo explicito, o qual permita a
representação de referências temporais quantitativas e
qualitativas, assim como relações entre eles”.
a
I
Ii
If
Duração = If - Ii
Limitações POP-STRIPS
• A limitação dos recursos não é considerada
– Não custa nada agir (ex: orçamento, pessoas)
» Os recursos de uma brigada de incêndio, assim como a
própria brigada, são limitados
– Plano de viagem X orçamento
Limitações POP-STRIPS
• Pré-condições e efeitos são muito limitados
– Os operadores são essencialmente proposicionais
» ex: sem quantificador universal nos efeitos, não se pode dizer que os
componentes de uma esquadrilha atacam juntos
Identified(target), available(esq)
Attack(target)
p Plane(p)  p  esq  Attack(p,target)
Limitações POP-STRIPS
• Planos não são hierárquicos
– Planejamento em um único nível de granularidade
Limitações POP-STRIPS
-Operadores de baixo nível:
- Mover
- Girar
- Zoom câmera
- Identificar cadáveres
Tempo e Prazos
• Job Shop Scheduling
–
–
–
–
Completar conjunto de tarefas (jobs)
Cada tarefa é composto por uma 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
tarefas, respeitando restrições de recursos
• Exemplo de Job Shop Problem
– 2 tarefas (jobs): montar dois carros C1 e C2
– Ações: colocar motor, colocar rodas, inspecionar
– Ordem: motor antes das rodas e inspecionar no final
• Como lidar com isto?
Tempo e Prazos
• Acrescentar Duration(d) para ações em STRIPS
• Exemplo...
– Init (Car(C1)  Car(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),
Precond: Engine (e,c,d)  Car(c)  EngineIn(c),
Effect: EngineIn(c)  Duration(d))
– Action (AddWheels(w,c),
Precond: Wheels(w,c,d)  Car(c)
Effect: WheelsOn(c)  Duration(d))
– Action (Inspect(c),
Precond: EngineIn(c)  WheelsOn(c)  Car(c)
Effect: Done(c)  Duration(10))
Tempo e Prazos
• Procedimento: “planejar antes e escalonar depois”
– Rodar POP normalmente e depois escalonar ações (caminho mais
rápido)
– Abordagem usada na prática, sobretudo porque o plano pode ser
fornecido por um especialista
• Solução encontrada pelo POP “normal”
Tempo e Prazos
• Método do Caminho Crítico (CPM)
– Caminho Crítico: caminho cujo tempo total é maior
– Para cada ação, indicar
» Tempo Mais Cedo de Início (ES – Earliest Start)
» Tempo Mais Tarde de Início (LS – Latest Start)
– Ações no caminho crítico não podem sofrer nenhum atraso
– Ações fora desse caminho podem sofrer atrasos de tolerância LS - ES
Tempo e Prazos
[0,15]
AddEngine1
30
[30,45]
AddWheels1
30
[60,75]
Inspect1
10
[0,0]
Start
[85,85]
Finish
[0,0]
AddEngine2
60
Caminho crítico
[60,60]
AddWheels2
15
[75,75]
Inspect2
10
Restrição de Recursos
• Problemas reais de escalonamento são ainda mais
complexos devido a restrições sobre recursos
– Recursos Consumíveis (Consumable resources) - ex. dinheiro
– Recursos Reutilizáveis (Reusable resources) - ex. um único guindaste
para levantar o motor
QW
Qf
Reusable resource
2
Full
Consumable resource
qx
1
t
extinguish(1, F1, t2)
t
extinguish(1, F1, t2)
consume
extinguish(2, F2, t4)
refill(1,qx, tx)
produce
extinguish(1, F2, t5)
extinguish(1, F2, t5)
consume
Restrição de Recursos
• Solução para recursos consumíveis
– adicionar precondições e efeitos
– Action (AddEngine(e,c),
Precond: Engine (e,c,d)  Car(c)  EngineIn(c)
 (Money(g) > 100)
Effect: EngineIn(c)  Duration(d)  Money(g-100))
Restrição de Recursos
• Solução para recurso reutilizável:
– Mais complicado porque a quantidade de recursos permanece
inalterada depois da ação!
– Incrementar representação do problema para incluir novo campo
» “Resource: R(k)”, k unidades de R são necessárias
– Funciona tanto como
» uma pré-condição (não se pode fazer sem ele)
» um efeito temporário (indisponível pela duração da ação)
• Voltando ao exemplo...
– 1 guindaste, um macaco mecânico e 1 inspetor disponível
Exemplo: Montagem de Dois Carros
Init (Car(C1)  Car(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)  Car(c)   EngineIn(c)
EFFECT: EngineIn(c)  Duration(d)
RESOURCE: EngineHoist(1) )
Action (AddWheels(w, c),
PRECOND: Wheels(w, c, d)  Car(c)
EFFECT: WheelsOn(c)  Duration(d)
RESOURCE: WheelStations(1) )
Action (Inspect(c),
PRECOND: EngineIn(c)  WheelsOn(c)  Car(c)
EFFECT: Done(c)  Duration(10)
RESOURCE: Inspectors(1) )
Exemplo: Montagem de Dois Carros
EngineHoist(1)
AddEngine 1
AddEngine 2
AddWheels 1
WheelStations(1)
AddWhls 2
Inspect 1
Inspectors(2)
Inspect 2
0
30
60
70
90
105
115
Recursos Reusáveis
• Heurística mais usada: Minimum Slack Algorithm (greedy)
1. A cada interação, identifica as ações não escalonadas cujos
predecessores já foram todos escalonados...
2. Escalona a com menor brecha/folga (slack)
Slack
3. Atualiza ES e LS das ações, e recomeça
Slack = LS - ES
ES
LS
textra
ES
LS
Slack’ = Slack - textra
Planejamento Hierárquico
• Benefício de uma estrutura hierárquica
– A cada nível a quantidade de tarefas é pequena comparada com o
todo
» Ex. planejamento militar e administrativo
• De fato...
– Instruções detalhadas provocam explosão combinatória
» Ex. “Avançar(1 m), Girar(40°), ...”
• Embora...
– Instruções abstratas não são diretamente implementáveis no
mundo real.
» Ex. Go(Supermarket), Buy(Milk), Build(House)
Planejamento Hierárquico
• Hierarchical Task Network (HTN) Planning
– Planejar refinando um plano inicial completo apenas com
decomposição hierárquica de operadores abstratos
• Operadores
– Primitivos: diretamente executáveis
– Abstratos: não primitivos
• Plan library
– Contém várias decomposições de ações abstratas em menos
abstratas ou mesmo planos inteiros pré-concebidos
– Cada ação abstrata tem pré-condições e efeitos que são comuns
a todas as instanciações dela
Planejamento Hierárquico
Planejamento Hierárquico
• Planejamento hierárquico híbrido
– Na prática, se mistura operadores de decomposição (HTN) com
outros operadores padrão (POP)
• Como implementa?
• Estendendo/Redefinindo POP
– Decomposição de operadores abstratos
» c/ indicação de quem são ou não os operadores abstratos
– Como decompor operadores não primitivos
Planejamento Hierárquico
• Planejamento hierárquico híbrido
– Na prática, se mistura operadores de decomposição (HTN) com
outros operadores padrão (POP)
• Como implementa?
• Estendendo/Redefinindo POP
– Decomposição de operadores abstratos
» c/ indicação de quem são ou não os operadores abstratos
– Como decompor operadores não primitivos
Planejamento Hierárquico
• Operador Decompose( )
Planejamento Hierárquico
• Algoritmo
– Construir POP inicial ao maior nível de abstração
– Recursivamente decompor ações abstratas até POP final conter
apenas operadores primitivos (que podem ser executados pelo
agente)
– Resolver ameaças e verificar consistência global do POP final
• Obs
– Deve-se garantir que todo passo de um plano final P é primitivo
• Decomposição d’ para a ação a’
– Tarefa realizada em 3 fases...
Planejamento Hierárquico
Planejamento Hierárquico
• Fase 1: Substituir a’ por d’
– Remover a’
» ex. BuildHouse
– Inserir cada passo de d’
– Transcrever restrições internas à d’
» ex. GetPermit antes Contruction
– Introduzir novos passos quando for o caso
» ex. GetLoan
– Ou, eventualmente, reutilizar um passo já existente (chamado de
compartilhamento)
» ex. GetLoan
Planejamento Hierárquico
• Fase 2: Transcrever as restrições de ordenamento
– Dado um passo qualquer B < a’ (ou B > a’), como ele fica em
relação à d’?
» solução 1: B antes (ou depois) de todos os passos de d’
=> muito restritivo, pois BuyLand não precisa vir antes de HireBuilder
» solução 2: menor engajamento
• Fase 3: Ligações causais
– Se B p a’, troque ela por um conjunto de ligações para todos os
passo de d’ contendo a pré-condição p
» Ex.BuyLand
land
BuildHouse, é substituído por BuyLand
– Idem para as ligações causais do tipo a’
p
C
land
Permit
Planejamento Hierárquico
• Vantagens de Sub-POPs independentes:
– espaço de busca reduzido
– conhecimento composicional
– uso e reuso de sub-POPs pré-planejado
Aplicações Industriais (Job Shop)
• Sistema Tosca na Hitachi
– Planejamento mensal para 350 produtos diferentes, 35 máquinas
de montagem, mais de 2000 operações
– Menor engajamento (ex. classe de máquina a ser usada)
• Sistema Isis na Westinghouse
– Milhares de lâminas de turbinas e várias máquinas de montagem
– O tempo atribuído depende da prioridade do pedido
– Menor engajamento, planejamento hierárquico
Aplicações Espaciais
• Sistema Optimun-AIV
– Montagem, integração e verificação de aeronaves
– Gera planos, monitora execução (feita por seres humanos) e
replaneja rapidamente
– Melhor que Pesquisa Operacional para problemas complexos pois
pode replanejar automaticamente
– Implementado com O-Plan (Currie & Tate 91) que estende POPStrips (+ tempo, recursos e hierarquia)
Download

Planejamento Hierárquico