1 / 19

IFT615 – Intelligence artificielle PDDL : “ Planning Domain Definition Language ”

IFT615 – Intelligence artificielle PDDL : “ Planning Domain Definition Language ”. Jean-François Landry Département d’informatique Université de Sherbrooke. 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.

heaton
Télécharger la présentation

IFT615 – Intelligence artificielle PDDL : “ Planning Domain Definition Language ”

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. IFT615 – Intelligence artificiellePDDL : “Planning Domain Definition Language” Jean-François Landry Département d’informatique Université de Sherbrooke

  2. 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.

  3. EXEMPLE D’APPLICATIONS

  4. p1 p2 p3 p4 O3 O1 O2 robot c1 c2 Exemple 1 : robot livreur de colis

  5. p1 p2 p3 p4 O3 O1 O2 robot c1 c2 Exemple 1 : robot livreur de colis (problème) État initial But p1 p2 p3 p4 O3 O1 O2 robot c1 c2

  6. Exemple 1 : robot livreur de colis (solution) Solution : exécuter le plan suivant • Aller à : p1 • Prendre l’objet : o1 • Aller à : c1 • Aller à : c2 • Aller à : p4 • Déposer l’objet : o1 • Aller à : c2 • Aller à : p3 • Prendre l’objet o2 • Aller à : c2 • Aller à : c1 • Aller à : p1 • Déposer l’objet : o2

  7. robot Exemple 1 : un robot pour déplacer des objets (simulation) p1 p2 p3 p4 O3 O1 O2 c1 c2

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

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

  10. 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.

  11. Exemple 4 : livraison de colis

  12. Comment résoudre ses problèmes? • On pourrait écrire 4 programmes différents, chacun étant spécifique à un type de problème en particulier. Résolveur_RobotLivreur.cpp Problème Solution Résolveur_BlocksWorld.cpp Problème Solution Résolveur_MarsRover.cpp Problème Solution Résolveur_LivraisonColis.cpp Problème Solution

  13. 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) Planificateur générique But (problème) Plan (séquence d’actions) État Initial (connaissances sur l’environnement)

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

  15. Pos=p1 E=100% T=0 p4 p5 p3 p6 p2 p7 p1 p8 p11 p10 p9 Génération des plans Déplacer(p1,p2) Déplacer(p1,p2) … Mission Livrer message m1 de p3 à p5 État initial Position = p1 Énergie = 100% Temps = 0s Déplacer(p1,p2) Pos=p7 E=98% T=120 Pos=p3 E=98% T=120 Pos=p2 E=99% T=60 Prendre(m1,p3) … … Pos=p3 E=97% T=180,{m1} Déplacer(p3,p5) Pos=p5 E=95% T=400,{m1} • Plan • SeDéplacer(p1, p3) • PrendreMsg(m1, p3) • SeDéplacer(p3, p5) • Livrer(m1, p5) Livrer(m1,p5) Pos=p5 E=94% T=460,m1@p5

  16. 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.

  17. 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.

  18. Exemple PDDL pour le monde des blocks c (: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)) a b c a b (: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)) c a b (:action pickup :parameters (?x – block) :precondition (and (ontable ?x) (clear ?x) (handempty) :effects (and (ontable ?x) (clear ?x) (handempty) (holding ?x)) c b a (:action putdown :parameters (?x – block) :precondition (holding ?x) :effects (and (not (holding ?x)) (ontable ?x) (clear ?x) (handempty)) c a b

  19. Exemple livraison de colis ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; 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))) ) ) ) (define (domain SimTransport) (: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 ?l1 - location ?l2 - 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)) ) )

More Related