Planificaci ´on Autom ´atica
Grupo PLG
Universidad Carlos III de Madrid
Indice
1
Introducci ´on
2
Planificaci ´on cl ´asica
3
Planificaci ´on neocl ´asica
4
Heur´ıstica
Planificaci ´on heur´ıstica
Redes de tareas jer ´arquicas
Conocimiento de control
Aprendizaje autom ´atico
Indice
1
Introducci ´on
2
Planificaci ´on cl ´asica
3
Planificaci ´on neocl ´asica
4
Heur´ıstica
Planificaci ´on heur´ıstica
Redes de tareas jer ´arquicas
Conocimiento de control
Aprendizaje autom ´atico
Indice
1
Introducci ´on
2
Planificaci ´on cl ´asica
3
Planificaci ´on neocl ´asica
4
Heur´ıstica
Planificaci ´on heur´ıstica
Redes de tareas jer ´arquicas
Conocimiento de control
Aprendizaje autom ´atico
Indice
1
Introducci ´on
2
Planificaci ´on cl ´asica
3
Planificaci ´on neocl ´asica
4
Heur´ıstica
Planificaci ´on heur´ıstica
Redes de tareas jer ´arquicas
Conocimiento de control
Aprendizaje autom ´atico
Indice
1
Introducci ´on
2
Planificaci ´on cl ´asica
3
Planificaci ´on neocl ´asica
4
Heur´ıstica
Planificaci ´on heur´ıstica
Redes de tareas jer ´arquicas
Conocimiento de control
Aprendizaje autom ´atico
Indice
1
Introducci ´on
2
Planificaci ´on cl ´asica
3
Planificaci ´on neocl ´asica
4
Heur´ıstica
Planificaci ´on heur´ıstica
Redes de tareas jer ´arquicas
Conocimiento de control
Aprendizaje autom ´atico
Indice
1
Introducci ´on
2
Planificaci ´on cl ´asica
3
Planificaci ´on neocl ´asica
4
Heur´ıstica
Planificaci ´on heur´ıstica
Redes de tareas jer ´arquicas
Conocimiento de control
Aprendizaje autom ´atico
Indice
1
Introducci ´on
2
Planificaci ´on cl ´asica
3
Planificaci ´on neocl ´asica
4
Heur´ıstica
Planificaci ´on heur´ıstica
Redes de tareas jer ´arquicas
Conocimiento de control
Aprendizaje autom ´atico
Indice
1
Introducci ´on
2
Planificaci ´on cl ´asica
3
Planificaci ´on neocl ´asica
4
Heur´ıstica
Planificaci ´on heur´ıstica
Redes de tareas jer ´arquicas
Conocimiento de control
Aprendizaje autom ´atico
Planificaci ´on jer ´arquica
Se distingue de la planificaci ´on cl ´asica en:
Qu ´e planifica: en vez de un conjunto de metas
G, el
conjunto de acciones que llevan a cabo una actividad o
tarea
C ´omo planifica: descomponiendo
tareas
en
subtareas
de
acuerdo con la definici ´on de varios
m ´etodos
Se diferencian:
Simple Task Networks (STNs): la descomposici ´on se aplica
en cumplimiento de unas precondiciones seg ´un una
jerarqu´ıa
Hierarchical Task Networks (HTNs): la descomposici ´on se
realiza en un conjunto de tareas que cumplen ciertas
restricciones
Tipos de planificaci ´on jer ´arquica
Los planes se van generando gradualmente de
operadores m ´as generales a m ´as concretos:
Estableciendo niveles de abstracci ´on en las precondiciones
de los operadores:
ABSTRIPS
[Sacerdoti, 1974],
ALPINE
[Knoblock, 1994]
Refinando los operadores sucesivamente:
NOAH
[Sacerdoti, 1977],
MOLGEN
[Stefik, 1981b,
Stefik, 1981a]
Preprogramando en qu ´e se divide cada operador:
No lineal y jer ´arquica.
NOAH
Debido a Sacerdoti [Sacerdoti, 1977]
Mezcla planificaci ´on no lineal y jer ´arquica
T ´ecnica empleada
detalla cada operador del plan construido hasta ese
momento
por cada meta que no se consigue por ning ´un operador,
genera uno, sin tener en cuenta el orden respecto a los
dem ´as
analiza y cambia el plan utilizando un conjunto de cr´ıticos
Repeticiones
Simple Task Networks.
STN
s
Una
STN
es un grafo dirigido ac´ıclico
w
= (U
,
E
)
donde:
Cada nodo
u
∈
U
tiene asociada una
tarea:
Instanciada
o no: si tiene o no t ´erminos variables
Primitiva
o no: si puede descomponerse o no
Cada arco
e
∈
E
establece una relaci ´on de orden entre dos
tareas:
u
≺
v
si y s ´olo si hay un camino desde
u
hasta
v
C
B B
C
invertir−pila (B)
dejar (B)
quitar (B,C) invertir−sobre−pila (C,B)
Simple Task Networks.
STN
s
C
B B
C
invertir−pila (B)
dejar (B)
quitar (B,C) invertir−sobre−pila (C,B)
M ´etodos
STN
Un
m ´etodo
STN
es una tupla
m
= (
name
(m)
,
task
(m)
,
precond
(m)
,
network
(m))
donde:
name
(
m
)
es el nombre del m ´etodo
task(
m
)
es una tarea no primitiva
precond(
m
)
son las
precondiciones
del m ´etodo
network(
m
)
son las
subtareas
del m ´etodo
Un problema de planificaci ´on
STN
es una tupla
P
= (s
0
,
w
,
O
,
M)
donde:
s
0
es el estado inicial
w
es una jerarqu´ıa de tareas
Ejemplo
STN
m ´etodo:
iniciar-inversi´
on (b1, b2)
tarea:
invertir-pila (b1)
preconds:
libre (b1), encima (b1, b2)
subtareas:
quitar (b1, b2), dejar (b1),
invertir-sobre-pila (b2, b1)
m ´etodo:
invertir (b1, b2, b3)
tarea:
invertir-sobre-pila (b1, b2)
preconds:
libre (b1), libre (b2), encima (b1, b3)
subtareas:
quitar (b1, b3), poner (b1, b2),
invertir-sobre-pila (b3, b1)
m ´etodo:
finalizar-inversi´
on (b1, b2)
tarea:
invertir-sobre-pila (b1, b2)
preconds:
libre (b1), libre (b2), en-mesa (b1)
Ejemplo
STN
(cont.)
quitar (A,B) dejar (A) invertir−sobre−pila (B,A)
poner (B,A)
quitar (B,C) invertir−sobre−pila (C,B)
Resoluci ´on
Un plan
π
=
h
a
1
, . . . ,
a
n
i
es una soluci ´on del problema
P
= (s
0
,
w
,
O
,
M)
si y s ´olo si:
w
=
∅
y
π
=
∅
Dada una tarea no primitiva
u
∈
w,
π
es una soluci ´on de
P
si
a
1
es aplicable en
s
0
y
π
=
h
a
2
, . . . ,
a
n
i
es una soluci ´on
de
P
0
= (
γ
(
s
0
,
a
1
)
,
w
−
u
,
O
,
M
)
Dada una tarea no primitiva
u
∈
w,
π
es una soluci ´on de
P
si existe una jerarqu´ıa
w
0
a la que se llega con un m ´etodo
m
de modo que
π
es una soluci ´on de
(
s
0
,
w
0
,
O
,
M
)
Los modelos jer ´arquicos recorren los estados
expl´ıcitamente
Generan planes secuenciales
Hierarchical Task Networks (
HTN
)
Tipos de tareas: compuestas o primitivas
Entradas: estado inicial, tareas compuestas, orden en el
que se deben conseguir y teor´ıa del dominio (m ´etodos y
acciones)
M ´etodos: est ´an formados por
tarea compuestas
precondiciones para poder realizar la descomposici ´on
conjunto de subtareas en las que se puede descomponer
restricciones que se deben cumplir en esas subtareas
Acciones:
consiguen las tareas primitivas
son semejantes a los operadores de planificaci ´on
STRIPS
M ´as sobre
HTN
s
Una
HTN
se define como
w
= (U
,
C)
donde
C
es un
conjunto de restricciones:
de precedencia:
u
≺
v
antes-de:
before (
U
0
,
l
)
establece que en cualquier plan
π
soluci ´on de
P
,
l
debe ser cierto antes de
U
0
despu ´es-de:
after (
U
0
,
l
)
establece que en cualquier
plan
π
soluci ´on de
P
,
l
debe ser cierto despu ´es de
U
0
en-medio-de:
between (
U
0
,
U
00
,
l
)
establece que
l
debe
ser cierto despu ´es de
U
0
y mantenerse as´ı al menos hasta
el estado anterior a
U
00
Los m ´etodos
HTN
se describen entonces como:
Ejemplo
HTN
m ´etodo: iniciar-inversi´on (b1, b2)
tarea: invertir-pila (b1)
subtareas: u1=quitar (b1, b2), u2= dejar (b1),
u3= invertir-sobre-pila (b2, b1) restriccs: u1≺u2,u2≺u3,before ({u1}, libre (b1)),
before ({u1}, encima (b1,b2)),before ({u1}, brazo-libre),
before ({u3}, libre (b1))
m ´etodo: invertir (b1, b2, b3)
tarea: invertir-sobre-pila (b1, b2)
subtareas: u1= quitar (b1, b3),u2= poner (b1, b2),
u3= invertir-sobre-pila (b3, b1) restriccs: u1≺u2,u2≺u3,before ({u3}, libre (b1))
before ({u1}, encima (b1,b3)),before ({u1}, brazo-libre),
before ({u3}, libre (b1))
m ´etodo: finalizar-inversi´on (b1, b2)
tarea: invertir-sobre-pila (b1, b2)
Ejemplo de teor´ıa del dominio (acciones)
(defdomain logistics
((:operator (!load-truck ?obj ?truck ?loc)
((obj-at ?obj ?loc)
(:protection (truck-at ?truck ?loc)))
((in-truck ?obj ?truck)))
(:operator (!unload-truck ?obj ?truck ?loc)
((in-truck ?obj ?truck)
(:protection (truck-at ?truck ?loc)))
((obj-at ?obj ?loc)))
M ´etodos (
same-city-deliver
)
(:method (obj-at ?obj ?loc-goal) same-city-deliver
((in-city ?loc-goal ?city-goal) (obj-at ?obj ?loc-now) (in-city ?loc-now ?city-goal) (truck ?truck ?city-goal)) ((:task in-city-delivery ?truck ?obj ?loc-now ?loc-goal))
different-city-deliver
((in-city ?loc-goal ?city-goal) (obj-at ?obj ?loc-now) (in-city ?loc-now ?city-now) (different ?city-goal ?city-now) (truck ?truck-now ?city-now) (truck ?truck-goal ?city-goal) (airport ?airport-now) (in-city ?airport-now ?city-now) (airport ?airport-goal) (in-city ?airport-goal ?city-goal))
(:ordered (:task in-city-delivery ?truck-now ?obj ?loc-now ?airport-now) (:task air-deliver-obj ?obj ?airport-now ?airport-goal)
Resoluci ´on de problemas con
HTN
Variantes
SIPE
,
O
-
PLAN
,
UMCP
permiten ´ordenes parciales entre subtareas
difieren en el tipo de restricciones que pueden definir
SHOP
orden total en las subtareas
SHOP
2
SHOP
2 es un planificador
HTN
independiente del dominio
cuyos m ´etodos deben ser especializados en cada dominio
Como otros planificadores
HTN
,
SHOP
2 planifica las tareas
en el orden en que ser ´an ejecutadas
Adem ´as de
tareas
,
m ´etodos
y
operadores
,
SHOP
2 acepta
Algoritmo
SHOP
2 (
s
,
T
,
D
)
1
Escoger una tarea
t
∈
T
que no tenga predecesoras de
acuerdo con las restricciones
2
Si
t
es una tarea primitiva:
Elegir una acci ´on
a
que unifique con
t
mediante
θ
y cuyas
precondiciones se cumplan en
s
Actualizar
s
borrando
del
(
a
)
y a ˜nadiendo
add
(
a
)
Eliminar
t
de
T
y aplicar
θ
3
Si
t
es una tarea no primitiva (o
compuesta
):
Elegir un m ´etodo
m
que descomponga
t
en subtareas
seg ´un
θ
Eliminar
t
de
T
y a ˜nadir las subtareas de
m
propagando las
restricciones
Aplicaciones
SIPE
: f ´abrica de cerveza
O
-
PLAN
: operaciones militares
Conocimiento de control
Planificaci ´on necesita heur´ısticas
Tipos
Independientes del dominio:
HSP
,
FF
,
LPG
, . . .
Dependientes del dominio
Formas de codificar conocimiento de control
reglas de control o de reescritura
jerarqu´ıa de tareas
precondiciones de operadores (funciones, nuevos
predicados, . . . )
Reglas de control
Representaci ´on declarativa del conocimiento de control
Si
Condiciones
Entonces
Decisi ´
on
Condiciones
: sobre el meta-estado de la b ´usqueda
Decisiones
: sobre las alternativas en la b ´usqueda
Ejemplo de regla de control
(control-rule selecciona-unload-airplane
(if (and (current-goal (en <objeto> <sitio1>))
(true-in-state (en <objeto> <sitio2>))
(true-in-state (localizada-en <sitio1> <ciudad1>))
(true-in-state (localizada-en <sitio2> <ciudad2>))
(different-vars-p)
Condiciones (meta-predicados)
qu ´e cosas son ciertas sobre el estado
(true-in-state (dentro
<
objeto
> <
avi´
on
>
))
qu ´e (sub)meta se intenta conseguir
(current-goal (en
<
objeto
> <
aeropuerto
>
))
qu ´e operador se ha seleccionado
(current-operator descargar-avi´
on)
qu ´e metas hay pendientes
(some-candidate-goals ((en
<
objeto1
> <
aeropuerto
>
)))
de qu ´e tipo es un objeto
Puntos de decisi ´on (no deterministas)
planificaci ´on en espacio de estados: metas, operador,
instanciaci ´on
planificaci ´on en espacio de planes: operador, amenaza,
forma de solucionar amenazas
planificaci ´on jer ´arquica (HTN): m ´etodo a utilizar
planificaci ´on heur´ıstica: instanciaci ´on de operador
(progresi ´on) o meta (regresi ´on)
Tipos de reglas en
PRODIGY
Decisiones
Meta: qu ´e meta escoger
Operador: qu ´e operador utilizar para obtener una meta
Instanciaci ´on de operador: qu ´e valores asignar a las
variables del operador
Ejecutar un operador o trabajar en alguna submeta
Ejemplos en mundo de los bloques
(CONTROL-RULE SELECT-OP-UNSTACK-FOR-HOLDING
(if (and (current-goal (holding
<
x
>
))
(true-in-state (on
<
x
> <
y
>
))))
(then select operator UNSTACK))
(CONTROL-RULE SELECT-BINDINGS-UNSTACK-HOLDING
(if (and (current-goal (holding
<
x
>
))
(current-operator UNSTACK)
(true-in-state (on
<
x
> <
y
>
))))
(then select bindings ((
<
ob
>
.
<
x
>
) (
<
underob
>
.
<
y
>
))))
(CONTROL-RULE SELECT-OP-PUTDOWN-FOR-ARMEMPTY
(if (and (current-goal (arm-empty))
L ´ogicas temporales simples
Extienden la l ´ogica de predicados con operadores
modales:
φ
1
∪
φ
2
:
φ
1
debe ser cierto hasta que lo es
φ
2
φ
:
φ
debe ser cierto siempre desde este momento
φ
:
φ
debe ser cierto en alg ´un estado desde este momento
◦
φ
:
φ
debe ser cierto en el siguiente estado
Luego, propagan este conocimiento de control de un
estado al siguiente mediante progresi ´on
F ´ormulas temporales
Lenguaje natural:
“siempre es cierto que si un objeto est ´a
dentro de un avi ´on en un estado y el avi ´on no est ´a en la
ciudad destino del objeto, entonces en el siguiente estado
el objeto debe quedarse en el avi ´on”
Formalmente:
(
∀
[p
:
airplane
(p)]
∃
[l
:
at
(p
,
l)]
∀
[o
:
in-wrong-city
(o
,
l)]
Programa
(always (forall (?p) (airplane ?p)
(exists (?l) (at ?p ?l)
(forall (?o) (in-wrong-city ?o ?l)
(implies (in ?o ?p)
Ejemplo en el mundo de los bloques
(def-defined-predicate (above ?x ?y)
(or (on ?x ?y)
(exists (?z) (on ?z ?y) (above ?x ?z))))
(def-defined-predicate (in-final-position ?x)
(or (and (on-table ?x)
(not (exists (?y) (goal (on ?x ?y)))))
(exists (?y) (on ?x ?y)
(and (not (goal (on-table ?x)))
(forall (?z) (goal (on ?x ?z))
(= ?z ?y))
(forall (?z) (goal (on ?z ?y))
(= ?z ?x))
Conocimiento de control
(always (forall (?x) (clear ?x)
(and (implies
(in-final-position ?x)
(next (and (not (holding ?x))
(forall (?y) (on ?y ?x)
(in-final-position ?y)))))
(implies
(bad-tower ?x)
(next (not (exists (?y) (on ?y ?x)))))
(implies
(and (on-table ?x)
Tambi ´en en precondiciones
(def-adl-operator (fly ?p ?from ?to)
(pre (?p) (airplane ?p) (?from) (at ?p ?from)
(?to) (airport ?to)
(and
(not (= ?from ?to))
(not (exists (?obj) (at ?obj ?from)
(move-by-plane ?obj ?from)))
(not (exists (?obj) (in ?obj ?p)
(unload-from-plane ?obj ?from)))
(or (goal ?obj ?to)
(exists (?obj) (at ?obj ?to)
(move-by-plane ?obj ?to))
(exists (?obj) (in ?obj ?p)
(unload-from-plane ?obj ?to)))))
Reglas de reescritura
(define-rule :name avoid-move-twice
:if (:operators ((?n1 (unstack ?b1 ?b2))
(?n2 (stack ?b1 ?b3 Table)))
:links (?n1 (on ?b1 Table) ?n2)
:constrains ((possibly-adjacent ?n1 ?n2)
(:neq ?b2 ?b3)))
:replace (:operators (?n1 ?n2))
:with (:operators (?n3 (stack ?b1 ?b3 ?b2))))
(define-rule :name avoid-undo
:if (:operators ((?n1 (unstack ?b1 ?b2))
(?n2 (stack ?b1 ?b2 Table)))
:constrains ((possibly-adjacent ?n1 ?n2)))
:replace (:operators (?n1 ?n2))
Conocimiento de control en funciones
(OPERATOR LOAD-TRUCK
(params <obj> <truck> <loc>)
(preconds ((<obj> OBJECT)
(<truck> TRUCK)
(<loc> (and LOCATION
(in-truck-city-p
<truck> <loc>))))
(and (at-obj <obj> <loc>)
(at-truck <truck> <loc>)))
(effects ()
Conocimiento de control en precondiciones
(OPERATOR STACK
(params <ob> <underob>)
(preconds ((<ob> OBJECT)
(<underob> (and OBJECT
(diff <ob> <underob>))))
(and (good-tower <underob>)
(clear <underob>)
(holding <ob>)))
(effects ()
((del (holding <ob>))
(del (clear <underob>))
(add (arm-empty))
(add (clear <ob> ))
Macro-operadores
Secuencias de operadores
(:action
load*fly-airplane*unload
:parameters (?p - airplane ?s - airport
?d - airport ?o - package)
:precondition (and (at ?p ?s)
(at ?o ?s)
(not (= ?s ?d)))
:effect (and (at ?p ?d)
(at ?o ?d)
Casos de plan
(inside−truck ob4 tr9)
(load−truck ob4 tr9 p3) (load−truck ob4 tr9 a3)
(at−truck tr9 p3)
(drive−truck tr9 a3 p3)
APPLY (drive−truck tr9 a3 p3)
(load−truck ob4 tr9 p3) APPLY
(at−obj ob4 a3)
(unload−airplane ob4 pl1 a3) (inside−airplane ob4 pl1)
(load−airplane ob4 pl1 a3)
(at−obj ob4 a3)
(unload−truck ob4 tr9 a3)
(inside−truck ob4 tr9)
Failure goal loop Failure goal loop n1 n8 n9 n10 n11 n12 n2 n3 n4 n5 n6 n7
(load−truck ob4 tr9 p3) ((load−truck ob4 tr9 a3)
(inside−truck ob4 tr9) (at−obj ob4 a3)))
(at−truck tr9 p3)
(inside−truck ob4 tr9)
:precond−of user :relevant−to :sibling−opscn1 (goal−loop cn2 :precond−of
(drive−truck tr9 a3 p3) :relevant−to
APPLY (drive−truck tr9 a3 p3)
APPLY (load−truck ob4 tr9 p3) cn1 cn2 cn3 cn4 cn5 cn6 cn3