PDDL - Fernando Berzal - Universidad de Granada

Anuncio
PDDL
Fernando Berzal, [email protected]
Lenguajes para planificación
Lenguajes para la descripción de problemas de planificación:
STRIPS [Stanford Research Institute Problem Solver]
Richard Fikes & Nils Nilsson, SRI International, 1971
ADL [Action Description Language]
Language]
Edwin Pednault,
Pednault, IBM Research,
Research, 1987
PDDL [Planning Domain Definition Language]
Drew McDermott, Yale University, 1998
International Planning Competition
@ ICAPS [International Conference on Automated Planning and Scheduling]
http://ipc.icaps--conference.org/
http://ipc.icaps
1
STRIPS
Representación de estados en STRIPS
Estado inicial = {
at(p,l
at(p,l),
), at(q,l
at(q,l),
), at(r,l
at(r,l),
), at(k,l
at(k,l),
),
in(c1,p), in(c2,p),
top(c2,p),
on(c2,c1), on(c1,p),
empty(k),
unloaded(r)
}
k
c2
c1
r
p
q
l
Representación de objetivos en STRIPS
Objetivo = { on(c1,r) }
2
STRIPS
Representación de acciones en STRIPS
Acción
Nombre de la acción
Precondiciones
Proposiciones que deben cumplirse para poder aplicar la acción.
acción.
Efectos
Consecuencias de la aplicación de la acción.
acción.
“Add list” (proposiciones que pasan a ser ciertas)
ciertas)
“Delete list” (proposiciones que pasan a ser falsas)
falsas)
3
STRIPS
Representación de acciones en STRIPS
move(r,l,m))
move(r,l,m
pre: adjacent(l,m
adjacent(l,m),
), at(r,l
at(r,l))
add: at(r,m
at(r,m))
del: at(r,l
at(r,l))
k
c2
c1
r
p
q
l
load(k,l,c,r))
load(k,l,c,r
pre: at(k,l
at(k,l),
), holding(k,c
holding(k,c),
), at(r,l
at(r,l),
), unloaded(r)
add: empty(k), loaded(r,c
loaded(r,c))
del: holding(k,c
holding(k,c),
), unloaded(r)
put(k,l,c,d,p))
put(k,l,c,d,p
pre: at(k,l
at(k,l),
), at(p,l
at(p,l),
), holding(k,c
holding(k,c),
), top(d,p
top(d,p))
add: empty(k), in(c,p
in(c,p),
), top(c,p
top(c,p),
), on(c,d
on(c,d))
del: holding(k,c
holding(k,c),
), top(d,p
top(d,p))
4
STRIPS
Representación de acciones en STRIPS
move(r,l,m))
move(r,l,m
pre: adjacent(l,m
adjacent(l,m),
), at(r,l
at(r,l))
eff:
eff: at(r,m
at(r,m),
), ¬at(r,l
at(r,l))
k
c2
c1
r
p
q
l
load(k,l,c,r))
load(k,l,c,r
pre: at(k,l
at(k,l),
), holding(k,c
holding(k,c),
), at(r,l
at(r,l),
), unloaded(r)
eff:
eff: empty(k), loaded(r,c
loaded(r,c),
), ¬holding(
holding(k,c
k,c),
), ¬unloaded(r)
put(k,l,c,d,p))
put(k,l,c,d,p
pre: at(k,l
at(k,l),
), at(p,l
at(p,l),
), holding(k,c
holding(k,c),
), top(d,p
top(d,p))
add: empty(k), in(c,p
in(c,p),
), top(c,p
top(c,p),
), on(c,d
on(c,d),
), ¬holding(
holding(k,c
k,c),
), ¬top(
top(d,p
d,p))
5
STRIPS
Sólo se especifica aquello que cambia.
Hipótesis de mundo cerrado
(lo que no se menciona es falso).
Sólo literales positivos en la descripción de estados.
Sólo conjunciones de literales simples en el objetivo.
P∧¬
∧¬Q
Q como efecto añade P y elimina Q
Las variables no pueden tener tipos.
6
ADL
Sólo se especifica aquello que cambia.
Hipótesis de mundo abierto
(lo que no se menciona no se conoce).
Literales positivos y negativos en los estados.
Conjunciones y disjunciones en el objetivo.
P∧¬
∧¬Q
Q como efecto añade {P, ¬Q} y elimina {¬
{¬P, Q}
Las variables sí pueden tener tipos.
7
PDDL
Planning Domain Definition Language
http://cs--www.cs.yale.edu/homes/dvm/
http://cs
Estándar para la representación de tareas de
planificación “clásica
clásica”” utilizado desde 1998
en AIPS [International Conference on AI Planning &
Scheduling], ahora ICAPS [International Conference
on Automated Planning and Scheduling].
Inspirado en UCPOP, un planificador de orden parcial
desarrollado en la Universidad de Washington e
implementado inicialmente en Common Lisp,
utiliza la sintaxis del lenguaje de programación LISP.
8
PDDL
Componentes PDDL
Objetos (entidades de interés).
interés).
Predicados (propiedades de los objetos
objetos,, true/false).
Estado inicial
Especificación de objetivos
Acciones//operadores (formas de cambiar el estado).
Acciones
estado).
9
PDDL
Especificación PDDL
Separada en dos ficheros:
ficheros:
Fichero del dominio
(predicados y acciones)
acciones)
Fichero del problema
(objetos,
objetos, estado inicial y especificación de objetivos).
objetivos).
10
PDDL
Fichero de especificación de dominios PDDL
(define (domain <domain name>)
name>)
<PDDL code for predicates>
<PDDL code for first action>
[...]
<PDDL code for last action>
)
11
PDDL
Fichero de especificación de dominios PDDL
Especificación de predicados (propiedades)
propiedades)
(:predicates
(room ?x)
(robot--at ?x))
(robot
?x))
room(x) cierto si y sólo si x es una habitación.
habitación.
robot--at(x) cierto si y sólo si x es una habitación
robot
y, además,
además, el robot está en x.
12
PDDL
Fichero de especificación de dominios PDDL
Especificación de acciones (precondiciones y efectos)
efectos)
(:action move :parameters (?x ?y)
:precondition (and (room ?x) (room ?y)
(robot--at ?x))
(robot
:effect
(and (robot(robot-at ?y)
(not (robot(robot-at ?x)))
?x)))))
13
PDDL
Fichero de especificación de problemas PDDL
(define (problem <problem name>)
name>)
name>)
(:domain <domain name>)
<PDDL code for objects>
<PDDL code for initial state>
<PDDL code for goal specification>
)
14
PDDL
Fichero de especificación de problemas PDDL
Estado inicial
(:init
(room cocina)
cocina)
(room comedor
comedor))
(room dormitorio)
dormitorio)
(robot--at comedor
(robot
comedor)))
Objetivo
(: goal
(robot--at cocina
(robot
cocina)))
15
HTN [Hierarchical Task Network]
(at yo
MiCasa)
(at yo
miCasa)
ir-andando
ir-en-bus
(at yo
ETSII)
(at yo
ETSII)
La planificación jerárquica facilita la representación de
medios alternativos para la realización de tareas a distintos
niveles de abstracción [abstraction gap].
16
HTN [Hierarchical Task Network]
Tarea compuesta
Viajar
Métodos
Subtareas
(compuestas/primitivas)
Métodos
Tareas primitivas
enAvion
irAeropuerto
enAutobus
Pagar
irEnBus
enCoche
Volar
enTaxi
irEnTaxi
enMetro
Pagar
irEnCoche
irADestino
Pagar
irEnMetro
enTaxi
irEnTaxi
Pagar
En vez de buscar un plan que consista en una secuencia de acciones
individuales, tratamos con un menor número de tareas que pueden
corresponder a múltiples acciones cada una de ellas [refinement
planning]
17
HTN [Hierarchical Task Network]
Tarea compuesta
Viajar
Métodos
Subtareas
(compuestas/primitivas)
Métodos
Tareas primitivas
enAvion
irAeropuerto
enAutobus
Pagar
irEnBus
enCoche
Volar
enTaxi
irEnTaxi
enTaxi
enMetro
Pagar
irEnCoche
irADestino
Pagar
irEnMetro
irEnTaxi
Pagar
Dominio de planificación basado en la representación de tareas
[tasks]
tasks] a distintos niveles de abstracción.
Distinción entre tareas compuestas y tareas primitivas (acciones).
Especificación de métodos alternativos para la realización de tareas.
18
HTN--PDDL
HTN
• Estándar para
representar problemas
clásicos de planificación
• Extensión desarrollada por
el Grupo de Sistemas
Inteligentes del
Departamento de Ciencias
de la Computación e I.A.
(DECSAI) de la Universidad
de Granada para
planificación jerárquica.
• IActivePlanner: Planificador
desarrollado por el grupo
ISG y transferido a la spinoff IActive Intelligent
Technologies
PDDL
HTN-PDDL
Planificador
19
HTN--PDDL
HTN
Especificación de dominios HTNHTN-PDDL
Requisitos,, constantes,
Requisitos
constantes, tipos,
tipos, predicados y funciones
(define (domain viajes
viajes))
(:requirements :typing :fluents
:fluents :derived
:derived--predicates
:negative--preconditions ::htn
:negative
htn--expansion)
expansion)
Persona Sitio - object
(:types
Hogar Aeropuerto - Sitio
(:predicates (en ?p - Persona ?s – Sitio)
Sitio))
Sitio))
(:functions (distancia ?x ?y – Sitio)
…
20
HTN--PDDL
HTN
Especificación de dominios HTNHTN-PDDL
Tareas y métodos
(:task irAeropuerto
:parameters (?p – Persona ?c – Hogar ?a – Aeropuerto
Aeropuerto))
(:method enTaxi …)
(:method enBus …)
(:method andando …) ;; Uff !!
)
21
HTN--PDDL
HTN
Especificación de dominios HTNHTN-PDDL
Tareas y métodos
(:method enTaxi
:precondition ()
:tasks (
(ir_en_taxi ?p ?c ?a)
(:inline (bind ?tarifa
?tarifa
(* (distancia
(distancia ?c ?a) (precio_km
(precio_km)))
))) ())
(pagar ?p ?tarifa
?tarifa))
)
22
)
HTN--PDDL
HTN
Especificación de dominios HTNHTN-PDDL
(:task viajar
:parameters (?p – Persona ?x ?y – Sitio)
Sitio)
(:method enAvion
:precondition (tiene prisa ?p)
:tasks ( ((irAeropuerto
irAeropuerto ?p ?x GRX)
(volar ?p GRX MAD)
(irDestino ?p MAD ?y) )
)
(:method enCoche
:precondition (not (tiene_prisa
(tiene_prisa ?p))
:tasks (irEnCoche ?p ?x ?y)
)
)
23
HTN--PDDL
HTN
Especificación de problemas HTNHTN-PDDL
Objetos,, estado inicial y objetivos
Objetos
(define (problem UnViaje
UnViaje)) (:domain Viajes
Viajes))
(:objects MiCasa CasaMiPrimo – Hogar
GRX MAD – Aeropuerto
Yo – Persona
)
(en Yo MiCasa)
MiCasa)
(:init
(= (distancia
(distancia MiCasa GRX) 20)
)
(:tasks
:tasks--goal
:tasks( (Viajar
(Viajar Yo MiCasa CasaMiPrimo))
CasaMiPrimo))
)
)
24
Planificador HTN
Modelo del mundo
HTN-PDDL
• Dominio
• Problema
Planificador HTN
• Búsqueda
• Razonamiento
Plan
• Secuencia de
acciones
25
Planificador HTN
(Viajar Yo
MiCasa
CasaMiPrimo)
Descomponer
la tarea de nivel superior
Seleccionar un método
(comprobando las precondiciones,
en el orden en que se han escrito)
Descomponer la tarea
siguiendo el orden de las subtareas
Seleccionar un método
enTaxi
Descomponer/aplicar si primitiva
cogerTaxi
enAvion
enCoche
irAeropuerto
Volar
irADestino
enBus
andando
26
Planificador HTN
(Viajar Yo
MiCasa
CasaMiPrimo)
Descomponer
la tarea de nivel superior
Seleccionar un método
(comprobando las precondiciones,
en el orden en que se han escrito)
Descomponer la tarea
siguiendo el orden de las subtareas
Seleccionar un método
Descomponer/aplicar si primitiva
enTaxi
Pagar
enAvion
enCoche
irAeropuerto
Volar
irADestino
enBus
andando
irEnBus
27
Dominio Depots
Almacén o Distribuidor
Almacén
o oDistribuidor
Almacén
Distribuidor
Problemas de logística
28
Dominio Depots
Objetos
(:types
place locatable - object
depot distributor - place
truck hoist surface - locatable
pallet crate - surface)
Cajas [crate
[crate]]
Pallets [pallet]
Almacenes [depot
[depot]]
Distribuidores [distributor]
Grúas [hoist
[hoist]]
Camiones [truck
[truck]]
29
Dominio Depots
Acciones (tareas primitivas)
primitivas)
(:action
(:action Drive
; Conducir un camión
:parameters (?x - truck ?y - place ?z - place)…
(:action
(:action Lift
; Coger una caja con una grúa
:parameters (?x - hoist ?y - crate ?z - surface ?p - place)…
(:action
(:action Drop
; Dejar una caja con una grúa
:parameters (?x - hoist ?y - crate ?z - surface ?p - place)…
(:action
(:action Load
; Cargar un camión
:parameters (?x - hoist ?y - crate ?z - truck ?p - place)..
(:action
(:action Unload
; Descargar un camión
:parameters (?x - hoist ?y - crate ?z - truck ?p - place)…
30
Dominio Depots
Objetivos (lista de tareas “apilar”)
apilar”)
Tarea objetivo “Main”: (:tasks(:tasks-goal :tasks((Main)))
(:task Main :parameters ()
(!
(:method itera
:precondition (AND (apilar
(apilar ?x ?y))
:tasks (
(… ?x ?y )
; Tarea necesaria para apilar x sobre y
(:inline () (not (apilar
(apilar ?x ?y))) ; Objetivo cumplido
(Main))
; Descomposición recursiva
)
caso--base :precondition () :tasks ())
(:method caso
)
)
31
Acciones primitivas:
HTN--PDDL durative
HTN
durative--actions
–
Objetos del dominio:
•
•
•
•
–
constantes,
tipos
predicados,,
predicados
funciones
Acciones primitivas:
•
•
•
•
•
Representación PDDL
Parámetros con tipo,
tipo,
precondiciones,
efectos,
duración
(define (domain
(domain viajes)
(:requirements
(:requirements :typing :fluents
:derived
derived-predicates :negative
negativepreconditions :htn
htn-expansion
expansion)
)
(:constants
(:constants <….>)
(:types
(:types Persona Sitio – object
Hogar Aeropuerto - Sitio
(:predicates
(:predicates (en ?p - Persona ?s – Sitio))
(:functions
(:functions (distancia ?x ?y – Sitio)
(dinero ?p – Persona)
(velocidad(velocidad
-taxi)
(precio_km
precio_km)
)
)
(:durative
(:durative-action ir_en_taxi
:parameters (?u – Persona ?o ?d – Sitio)
:duration (= ?
?dur
dur (* (distancia ?o ?d)
(velocidad_taxi
velocidad_taxi)
) )
:condition (and (en ?u ?o))
:effect (and (
(not
not (en ?u ?o))
(en ?u ?d)))
32
Otros aspectos útiles de PDDL
Valores
numéricos/funciones
Especificar cómo
calcular duraciones de
acciones
Condiciones con
expresiones
aritméticas
(:durative-action ir_en_taxi
(:durative:parameters (?u – Persona ?o ?d – Sitio)
:duration (= ?dur (* (distancia ?o ?d)
(velocidad_taxi)
(velocidad_taxi
) )
:condition (and (en ?u ?o)
(> (dinero ?u)
(* (precio_km)(distancia ?o ?d))
:effect (and (not (en ?u ?o))
(en ?u ?d)))
33
Otros aspectos útiles de PDDL
Valores
numéricos/funciones
Derived literals: reglas
de inferencia para
“derivar” predicados
de las precondiciones
(:derived (tiene_dinero ?p – Persona ?org ?dst – Sitio)
((> (dinero ?u)
(* (precio_km)(distancia ?o ?d)))
(:durative-action ir_en_taxi
(:durative:parameters (?u – Persona ?o ?d – Sitio)
:duration (= ?dur (* (distancia ?o ?d)
(velocidad_taxi) )
:condition (and (en ?u ?o)
(tiene_dinero ?u ?o ?d))
:effect (and (not (en ?u ?o))
(en ?u ?d)))
34
Otros aspectos útiles de PDDL
Valores
numéricos/funciones
Derived literals: reglas
de inferencia para
“derivar” predicados de
las precondiciones
Asignación,
incremento/decremento
de funciones
(:derived (tiene_dinero ?p – Persona ?org ?dst – Sitio)
((> (dinero ?u)
(* (precio_km)(distancia ?o ?d)))
(:durative-action ir_en_taxi
(:durative:parameters (?u – Persona ?o ?d – Sitio)
:duration (= ?dur (* (distancia ?o ?d)
(velocidad_taxi) )
:condition (and (en ?u ?o)
(tiene_dinero ?u ?o ?d))
:effect (and (not (en ?u ?o))
(en ?u ?d)))
(:durative-action pagar
(:durative:parameters (?u – Persona ?c – number)
:duration (= ?dur 1)
:condition (> ((- (dinero ?u) ?c) 0)
:effect (decrease (dinero ?u) ?c)
35
Bibliografía
Stuart Russell & Peter Norvig:
Norvig:
Artificial Intelligence:
A Modern Approach
Prentice--Hall, 3rd edition, 2009
Prentice
ISBN 0136042597
http://aima.cs.berkeley.edu/
Nils J. Nilsson
The Quest for Artificial Intelligence
Cambridge University Press, 2009
ISBN 0521122937
http://ai.stanford.edu/~nilsson/QAI/qai.pdf
36
Bibliografía
Cursos de planificación
MSC Automated Planning
School of Informatics
University of Edinburgh
http://www.inf.ed.ac.uk/teaching/courses/plan/
También en Coursera:
Coursera:
https://www.coursera.org/course/aiplan
CS541: Artificial Intelligence Planning
USC Viterbi School of Engineering
University of Southern California
http://www.isi.edu/~blythe/cs541/
37
Descargar