IFT 615 Intelligence artificielle PDDL Planning Domain Definition

  • Slides: 19
Download presentation
IFT 615 – Intelligence artificielle PDDL : “Planning Domain Definition Language” Jean-François Landry Département

IFT 615 – Intelligence artificielle PDDL : “Planning Domain Definition Language” Jean-François Landry Département d’informatique Université de Sherbrooke IFT 615 – Été 2011 1

Objectifs • Motivation d’une solution générique pour résoudre des problèmes de génération de plans.

Objectifs • Motivation d’une solution générique pour résoudre des problèmes de génération de plans. • Comprendre la structure de PDDL. IFT 615 – Été 2011 2

EXEMPLE D’APPLICATIONS 3

EXEMPLE D’APPLICATIONS 3

Exemple 1 : robot livreur de colis p 1 p 2 p 3 p

Exemple 1 : robot livreur de colis p 1 p 2 p 3 p 4 O 3 O 1 c 1 O 2 robot c 2 4

Exemple 1 : robot livreur de colis (problème) État initial p 1 p 2

Exemple 1 : robot livreur de colis (problème) État initial p 1 p 2 p 4 O 3 O 1 c 1 But p 3 O 2 robot p 1 c 2 p 3 p 4 O 3 O 2 c 1 robot O 1 c 2 5

Exemple 1 : robot livreur de colis (solution) Solution : exécuter le plan suivant

Exemple 1 : robot livreur de colis (solution) Solution : exécuter le plan suivant 1. Aller à : p 1 2. Prendre l’objet : o 1 3. Aller à : c 1 4. Aller à : c 2 5. Aller à : p 4 6. Déposer l’objet : o 1 7. Aller à : c 2 8. Aller à : p 3 9. Prendre l’objet o 2 10. Aller à : c 2 11. Aller à : c 1 12. Aller à : p 1 13. Déposer l’objet : o 2 6

Exemple 1 : un robot pour déplacer des objets (simulation) p 1 p 2

Exemple 1 : un robot pour déplacer des objets (simulation) p 1 p 2 p 3 p 4 O 3 O 1 c 1 O 2 robot c 2 7

Exemple 2 : monde des blocs (Blocks. Worlds) Configuration initiale Actions possibles: • Prendre

Exemple 2 : monde des blocs (Blocks. Worlds) Configuration initiale Actions possibles: • Prendre un bloc. • Déposer un bloc. But Problème : • Trouver la séquence d’actions pour y arriver. D C B C A B A D 8

Exemple 2 : monde des blocs (Solution) État 0 État 1 État 2 État

Exemple 2 : monde des blocs (Solution) État 0 État 1 État 2 État 3 D D C A B A A B B État 5 État 4 C C C A D B D État 6 D C C A B D A B C D A B 9

Exemple 3 : Mars Rovers • Planifier des actions telles que: – Collecter des

Exemple 3 : Mars Rovers • Planifier des actions telles que: – Collecter des données à divers sites d’intérêt. – Se déplacer vers un site d’intérêt. – Transmettre vers la Terre les données collectées. • Contraintes: – Énergie limitée (batteries). – Incertitude sur les déplacements (durée + ressources). – Fenêtre de faisabilités. • Solution générique: – On veut seulement donné un but. – Le robot doit trouver le plan de lui-même. 10

Exemple 4 : livraison de colis 11

Exemple 4 : livraison de colis 11

Comment résoudre ses problèmes? • On pourrait écrire 4 programmes différents, chacun étant spécifique

Comment résoudre ses problèmes? • On pourrait écrire 4 programmes différents, chacun étant spécifique à un type de problème en particulier. Problème Résolveur_Robot. Livreur. cpp Solution Problème Résolveur_Blocks. World. cpp Solution Problème Résolveur_Mars. Rover. cpp Solution Problème Résolveur_Livraison. Colis. cpp Solution 12

Comment résoudre ses problèmes de façon générique? • Écrire un seul planificateur générique indépendant

Comment résoudre ses problèmes de façon générique? • Écrire un seul planificateur générique indépendant des problèmes. • Écrire quatre (4) spécifications de problème. Domaine (actions) But (problème) Planificateur générique Plan (séquence d’actions) État Initial (connaissances IFT 615 – Été 2010 sur l’environnement) 13

Planification : modèle générique d’actions Take. Object(O, P) • Position(Robot) = A • Énergie

Planification : modèle générique d’actions Take. Object(O, P) • Position(Robot) = A • Énergie >= k*distance(A, B) Préconditions Goto(A, B) Effets • Temps += distance(A, B) / v • Position(Robot) = P • Position(O) = <non défini> • Position(Robot) = B • Énergie -= k * distance(A, B) • Position. Object(O) = P • Robot. Have(O) = true 14

Pos=p 7 E=98% T=120 État initial Position = p 1 Énergie = 100% Temps

Pos=p 7 E=98% T=120 État initial Position = p 1 Énergie = 100% Temps = 0 s p 4 p 5 pl é D r( e ac , 1 p ) p 2 Livrer message m 1 de p 3 à p 5 ) 2 p 1, Mission p Dé 1 (p … r(p e lac er ac Génération des plans , p 2) pl Dé Pos=p 1 E=100% T=0 Pos=p 2 E=99% T=60 Pos=p 3 ) E=98% 3 p T=120 1, m n re ( re d P … … Pos=p 3 D ép lac E=97% er( T=180, {m 1} p 3 , p 5 ) p 3 p 6 p 2 p 7 p 1 p 8 p 9 ) 5 p 1, Plan p 10 p 11 1. 2. 3. 4. Se. Déplacer(p 1, p 3) Prendre. Msg(m 1, p 3) Se. Déplacer(p 3, p 5) Livrer(m 1, p 5) r(m e r Pos=p 5 E=95% T=400, {m 1} Liv Pos=p 5 E=94% T=460, m 1@p 5 15

Langage pour un planificateur • Il est possible de créer un langage pour un

Langage pour un planificateur • Il est possible de créer un langage pour un planificateur. • Il suffit de décrire formellement : – la description des actions possibles (préconditions / effets); – la situation initiale; – le but. • La syntaxe doit être conviviale à l’utilisateur ET au planificateur, donc : – 1) lisible et compréhensible par un humain; – 2) analysable par un parseur LL ou LR : donc il faut pouvoir décrire le langage par une grammaire bien structurée. 16

Exemple : PDDL • Basé sur la logique du premier ordre. • PDDL =

Exemple : PDDL • Basé sur la logique du premier ordre. • PDDL = Planning Domain Definition Language. • Langage utilisé lors des compétitions ICAPS (International Conference on Automated Planning and Scheduling) • Basé sur la syntaxe de Lisp, donc facile à lire. • Pour un domaine, on décrit : – Les objets pouvant exister – Les relations pouvant exister – Pour chaque actions possible, on décrit: • Le nom de l’action, les paramètres, les préconditions, les effets. 17

Exemple PDDL pour le monde des blocks (: action unstack : parameters (? x

Exemple PDDL pour le monde des blocks (: action unstack : parameters (? x – block ? y - block) : precondition (and (on ? x ? y) (clear ? x) (handempty) : effects (and (not (on ? x ? y)) (not (clear ? x)) (not (handempty)) (holding ? x) (clear ? y)) (: action stack : parameters (? x – block ? y - block) : precondition (and (holding ? x) (clear ? y)) : effects (and (not (holding ? x)) (not (clear ? y)) (on ? x ? y) (clear ? x) (handempty)) (: action pickup : parameters (? x – block) : precondition (and (ontable ? x) (clear ? x) (handempty) : effects (and (ontable ? x) (clear ? x) (handempty) (holding ? x)) (: action putdown : parameters (? x – block) : precondition (holding ? x) : effects (and (not (holding ? x)) (ontable ? x) (clear ? x) (handempty)) c a a b c b a c a b 18

Exemple livraison de colis (define (domain Sim. Transport) (: requirements : strips : equality

Exemple livraison de colis (define (domain Sim. Transport) (: requirements : strips : equality : typing : fluents : durative-actions ) (: types location - object robot - object box - object ) (: predicates (robot-at ? r - robot ? l - location) (box-at ? b - box ? l - location) (box-on ? b - box ? r - robot) (link ? x - location ? y - location) ) (: functions (distance ? l 1 - location ? l 2 - location) (speed ? r - robot) ) ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; Goto : Navigation between 2 locations ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; (: durative-action Goto : parameters(? r - robot ? from - location ? to - location) : duration (= ? duration (/ (distance ? from ? to) (speed ? r))) : condition(and (at start (robot-at ? r ? from)) ; ; (over all (link ? from ? to)) ) : effect(and (at start (not (robot-at ? r ? from))) (at end (robot-at ? r ? to)) ) ) ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; Load ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; (: durative-action Load : parameters(? r - robot ? loc - location ? b - box) : duration (= ? duration 60) : condition(and (over all (robot-at ? r ? loc)) (at start (box-at ? b ? loc)) ) : effect(and (at start (not (box-at ? b ? loc))) (at end (box-on ? b ? r)) ) ) ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; Unload ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; (: durative-action Unload : parameters(? r - robot ? loc - location ? b - box) : duration (= ? duration 60) : condition(and (over all (robot-at ? r ? loc)) (at start (box-on ? b ? r)) ) : effect(and (at end (box-at ? b ? loc)) (at start (not (box-on ? b ? r))) ) 19