0% encontró este documento útil (0 votos)
232 vistas19 páginas

Introducción a Lenguajes de Planificación

Este documento describe tres lenguajes para la planificación: STRIPS, ADL y PDDL. STRIPS fue el primer lenguaje y representa estados como conjunciones de literales positivos. ADL introdujo literales negativos y disyunciones. PDDL es un estándar actual para la representación de problemas de planificación usado en competiciones internacionales. PDDL separa la descripción del dominio de la del problema específico.

Cargado por

Leonardo Mattera
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
232 vistas19 páginas

Introducción a Lenguajes de Planificación

Este documento describe tres lenguajes para la planificación: STRIPS, ADL y PDDL. STRIPS fue el primer lenguaje y representa estados como conjunciones de literales positivos. ADL introdujo literales negativos y disyunciones. PDDL es un estándar actual para la representación de problemas de planificación usado en competiciones internacionales. PDDL separa la descripción del dominio de la del problema específico.

Cargado por

Leonardo Mattera
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd

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 k

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),
), c2 p q
in(c1,p), in(c2,p), c1
top(c2,p), r
l
on(c2,c1), on(c1,p),
empty(k),
unloaded(r)
}

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 k

move(r,l,m))
move(r,l,m
 pre: adjacent(l,m
adjacent(l,m),
), at(r,l
at(r,l))
c2 p q
 add: at(r,m
at(r,m))
c1
 del: at(r,l
at(r,l)) r
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 k

move(r,l,m))
move(r,l,m
 pre: adjacent(l,m
adjacent(l,m),
), at(r,l
at(r,l))
c2 p q
 eff:
eff: at(r,m
at(r,m),
), ¬at(r,l
at(r,l))
c1
r
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∧¬
∧¬QQ 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∧¬
∧¬QQ 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- ?x)))))
(robot-at ?x)))

13
PDDL
Fichero de especificación de problemas PDDL

(define (problem <problem name>)


name>)
(:domain <domain name>)
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 (at yo
MiCasa) miCasa)

ir-andando ir-en-bus

(at yo (at yo
ETSII) 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 enAvion enCoche


Subtareas irEnCoche
irAeropuerto Volar irADestino
(compuestas/primitivas)
Métodos enAutobus enTaxi enMetro enTaxi

Tareas primitivas Pagar irEnBus irEnTaxi Pagar Pagar irEnMetro 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 enAvion enCoche


Subtareas irEnCoche
irAeropuerto Volar irADestino
(compuestas/primitivas)
Métodos enAutobus enTaxi enMetro enTaxi

Tareas primitivas Pagar irEnBus irEnTaxi Pagar 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 • Extensión desarrollada por • IActivePlanner: Planificador


representar problemas el Grupo de Sistemas desarrollado por el grupo
clásicos de planificación Inteligentes del ISG y transferido a la spin-
Departamento de Ciencias off IActive Intelligent
de la Computación e I.A. Technologies
(DECSAI) de la Universidad
de Granada para
planificación jerárquica.

PDDL HTN-PDDL Planificador

19
HTN--PDDL
HTN
Especificación de dominios HTN- HTN-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)
(:types Persona Sitio - object
Hogar Aeropuerto - Sitio
(:predicates (en ?p - Persona ?s – Sitio)
Sitio))
(:functions (distancia ?x ?y – Sitio)
Sitio))

20

HTN--PDDL
HTN
Especificación de dominios HTN-
HTN-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 HTN-
HTN-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 HTN-
HTN-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 HTN- HTN-PDDL
Objetos,, estado inicial y objetivos
Objetos
(define (problem UnViaje
UnViaje)) (:domain Viajes
Viajes))
(:objects MiCasa CasaMiPrimo – Hogar
GRX MAD – Aeropuerto
Yo – Persona
)
(:init (en Yo MiCasa)
MiCasa)
(= (distancia
(distancia MiCasa GRX) 20)
)
(:tasks
:tasks--goal
:tasks( (Viajar
(Viajar Yo MiCasa CasaMiPrimo))
CasaMiPrimo))
) 24
)

Planificador HTN

Modelo del mundo

HTN-PDDL Planificador HTN Plan

• Dominio • Búsqueda • Secuencia de


• Problema • Razonamiento acciones

25
Planificador HTN
Descomponer (Viajar Yo
la tarea de nivel superior MiCasa
CasaMiPrimo)

Seleccionar un método
(comprobando las precondiciones, enAvion enCoche
en el orden en que se han escrito)

Descomponer la tarea
irAeropuerto Volar irADestino
siguiendo el orden de las subtareas

Seleccionar un método enTaxi enBus andando

Descomponer/aplicar si primitiva cogerTaxi

26

Planificador HTN
(Viajar Yo
Descomponer
MiCasa
la tarea de nivel superior
CasaMiPrimo)

Seleccionar un método
(comprobando las precondiciones, enAvion enCoche
en el orden en que se han escrito)

Descomponer la tarea
irAeropuerto Volar irADestino
siguiendo el orden de las subtareas

Seleccionar un método enTaxi enBus andando

Descomponer/aplicar si primitiva Pagar 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
)
(:method caso
caso--base :precondition () :tasks ())
) 31
)
Acciones primitivas:
HTN--PDDL durative
HTN durative--actions

– Objetos del dominio: (define (domain


(domain viajes)
(:requirements
(:requirements :typing :fluents
• constantes, :derived
derived-
-predicates :negative
negative--
• tipos preconditions :htn
htn--expansion
expansion)
)
(:constants
(:constants <….>)
• predicados,,
predicados
(:types
(:types Persona Sitio – object
• funciones Hogar Aeropuerto - Sitio
(:predicates
(:predicates (en ?p - Persona ?s – Sitio))
(:functions
(:functions (distancia ?x ?y – Sitio)
(dinero ?p – Persona)
(velocidad-
(velocidad -taxi)

– Acciones primitivas: )
(precio_km
precio_km))

• Representación PDDL
• Parámetros con tipo,
tipo,
• precondiciones, (:durative
(:durative-
-action ir_en_taxi
:parameters (?u – Persona ?o ?d – Sitio)
• efectos, :duration (= ?
?dur
dur (* (distancia ?o ?d)
• duración (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 (:durative-action ir_en_taxi


(:durative-
:parameters (?u – Persona ?o ?d – Sitio)
numéricos/funciones
:duration (= ?dur (* (distancia ?o ?d)
 Especificar cómo (velocidad_taxi)
(velocidad_taxi ) )
calcular duraciones de :condition (and (en ?u ?o)
acciones (> (dinero ?u)
 Condiciones con (* (precio_km)(distancia ?o ?d))
:effect (and (not (en ?u ?o))
expresiones
(en ?u ?d)))
aritméticas

33
Otros aspectos útiles de PDDL

 Valores (:derived (tiene_dinero ?p – Persona ?org ?dst – Sitio)


((> (dinero ?u)
numéricos/funciones
(* (precio_km)(distancia ?o ?d)))
 Derived literals: reglas
de inferencia para (:durative-action ir_en_taxi
(:durative-
“derivar” predicados :parameters (?u – Persona ?o ?d – Sitio)
de las precondiciones :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 (:derived (tiene_dinero ?p – Persona ?org ?dst – Sitio)


((> (dinero ?u)
numéricos/funciones
(* (precio_km)(distancia ?o ?d)))
 Derived literals: reglas
de inferencia para (:durative-action ir_en_taxi
(:durative-
“derivar” predicados de :parameters (?u – Persona ?o ?d – Sitio)
las precondiciones :duration (= ?dur (* (distancia ?o ?d)
(velocidad_taxi) )
 Asignación,
:condition (and (en ?u ?o)
incremento/decremento
(tiene_dinero ?u ?o ?d))
de funciones :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

También podría gustarte