IFT 615 – Planification classique Planification par recherche heuristique dans un espace d’états Froduald Kabanza Département d’informatique Université de Sherbrooke planiart.usherbrooke.ca/cours/ift615
dimanche 16 septembre 2018 Contenu Rappels Architecture d’un planificateur utilisant comme solveur une recherche dans un espace d’états Langage de modélisation PDDL transformation correspondante pour un solveur par recherche dans un espace d’états IFT608/IFT702
Exemple d’application observations buts observations buts action Planificateur Plan Le comportement du robot résulte de l’ Il est autonome en ce sens qu’il peut ajuster son mécanisme de choix d’actions à des situations non progrannées explicitement en générant un nouveau plan– toute fois, cela est limité par son modèle. Modèle d’actions, capteurs et buts Exécution de l’action World IFT608/IFT702
Planification classique dimanche 16 septembre 2018 Planification classique Les hypothèses du domaine à considérer sont: Un seul agent au lieu plusieurs agents Déterministe au lieu de stochastique Complétement observable au lieu de partiellement observable Séquencement d’actions ayant des liens de causalité Un algorithme défini avec ces hypothèse peut dans une certaine mesure être appliqué dans un environnement ne satisfaisant pas les deux premières hypothèses: Un planificateur déterministe centralisé peut planifier pour plusieurs agents L’incertitude est géré par l’architecture décisionnelle en re-planifiant Nous supposons dans un premier un temps que l’environnement est déterministe, complètement observable, avec un seul agent pour qui on planifie. IFT608/IFT702
dimanche 16 septembre 2018dimanche 16 septembre 2018 Architecture générale d’un planificateur classique opérant par recherche dans un espace d’états Modèle (actions, buts) Fonction de transition Recherche heuristique dans un graphe d’états Plan (Séquence d’actions) But État initial Le modèle ne décrit pas les capteurs puisque l’environnement est déterministe. L’agent est le seul acteur du changement. Pour les mêmes raisons, le plan est une séquence d’actions. Le modèle ne décrit pas les capteurs puisque l’environnement est déterministe. Le modèle est transformé en fonction de transition pour un graphe d’états. IFT608/IFT702
Exemple 1: Monde des blocs Un robot doit empiler des blocs dans une configuration indiquée. On dit au robot quoi faire (le but) Exemple: Livrer des colis Le comportement pour accomplir le but n’est pas codé d’avance Le robot utilise un planificateur pour déterminer le comportement C’est quoi un comportement au juste? Une séquence d’actions Que veulent dire les hypothèses détermiste et complétement observable ici? IFT608/IFT702
Exemple 2: Livraison de colis dimanche 16 septembre 2018 Exemple 2: Livraison de colis Un robot doit recevoir des commandes de livraisons de colis et les exécuter. r1 (chambre) r2 (chambre) c1 (corridor) r4 (cuisine) r3 (s. bain) c2 (corridor) Colis 1 Colis 2 d11 d12 d23 d24 Que veulent dire les hypothèses détermiste et complétement observable ici?
Exemple 1 : Empiler des blocs dimanche 16 septembre 2018dimanche 16 septembre 2018 Exemple 1 : Empiler des blocs Étant donné un modèle d’actions primitives (prendre un block, relâcher un bloc, etc.), trouver un plan pour attendre le but. Le problème est transformé en un problème de trouver un chemin dans un graphe dirigé. IFT608/IFT702
Exemple 2 : Livrer des colis dimanche 16 septembre 2018dimanche 16 septembre 2018 Exemple 2 : Livrer des colis État initial But r1 r2 r3 r4 r1 r2 r3 r4 r5 r6 r5 r6 robot Étant donné un modèle d’actions primitives (prendre un colis, relâcher un bloc, se déplacer d’une pièce à l’autre), trouver un plan pour attendre le but. Le problème est transformé en un problème de trouver un chemin dans un graphe dirigé. IFT608/IFT702
Goto(r5,r1) Goto(r5,r2) … Take(…) … … … … Goto(…) … … … IFT608/IFT702
Rappel - Comment trouver un chemin dans un graphe? dimanche 16 septembre 2018dimanche 16 septembre 2018 Rappel - Comment trouver un chemin dans un graphe? Non informé: Largeur, profondeur, iterative deepening, Dijkstra, etc. Ces algorithmes ne sont pas efficaces pour des problèmes qui nous intéressent. Ils n’ont aucun sens d’orientation; aucune intuition. Le sens de direction est donné par une fonction heuristique. Recherche heuristique dans un graphe Best-first: (f(x) = α*g(x) + β*h(x)) α = 0: algorithme glouton (greedy) β = 0: uniform-cost α = β: A* Défi: trouver une fonction heuristique h(x) In AI, heuristics are criteria, methods or principles for deciding which among several alternative courses of action promises to be the most effective in order to achieve some Son but (Pearl, 1983, p. 3). In general, a heuristic is a function that computes an estimate from the current state to an optimal state. This way, it provides the search process used by a planner with a sense of direction with actions resulting in states that are closer to the Son but being preferred. In a recent book chapter, Geffner provides the following parallel between heuristics and similar functions in human cognition (Geffner, Heuristics book chapter): Heuristic evaluation functions are also used in other settings such as Chess playing programs (Pearl, 1983) and reinforcement learning (Sutton & Barto, 1998). The difference between evaluation functions in Chess, reinforcement learning and domain-independent planning mimic actually quite closely the relation among the three approaches to action selection mentioned in the introduction: programming-based, learning-based and model-based. Indeed, the evaluation functions are programmed by hand in Chess, are learned by trial-and-error in reinforcement learning, and are derived from a (relaxed) model in domain-independent planning. He relates to heuristics to ‘feelings’, ‘emotions’ or ‘appraisals’ in high-level human problem solving: It is now widely accepted in cognitive science that emotions play a key role in action decision, yet not consciously. Analogously, heuristics are most of the time ‘opaque’ to the search process of a planning algorithm and yet provide key guidance for the search to converge rapidly to a Son but solution. Heuristics provide a sense of direction or ‘gut feeling’ to the agent. Similarly, emotions have been shown to provide the appraisals that are necessary for navigating in a complex world. IFT608/IFT702
Langages de modélisation des actions Langage STRIPS : Décrit une action élémentaire en fonction de trois éléments: Précondition Effets positifs Effets négatif Limitations Pas moyen de spécifier des contraintes sur la durée des actions Pas moyen de spécifier des effets conditionnels Pas moyen de spécifier des contraintes numériques Langage PDDL (Planning Domain Definition Language) : Une extension de STRIPS levant les restrictions précédentes Un “quasi-standard académique” pour les algorithmes de planification (conférence ICAPS) PDDL 2.1 IFT608/IFT702
Langage STRIPS Transformation du modèle pour avoir une fonction de transition IFT608/IFT702
Exemple 1: Monde des blocs Un robot doit empiler des blocs dans une configuration indiquée. C’est une version simplifiée d’un robot de manipulation de conteneurs dans un port. On dit au robot quoi faire (le but) Exemple: Livrer des colis Le comportement pour accomplir le but n’est pas codé d’avance Le robot utilise un planificateur pour déterminer le comportement C’est quoi un comportement au juste? Une séquence d’actions Que veulent dire les hypothèses détermiste et complétement observable ici? IFT608/IFT702
Exemple STRIPS pour le monde des blocks a b (: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 (not (ontable ?x)) (not (clear ?x)) (not (handempty)) (holding ?x)) Pour l’instant, nous ne traitons pas l’évitement de collision avec les obstacles. Nous supposons que cela est fait au niveau des actions primitives. (:action putdown :parameters (?x – block) :precondition (holding ?x) :effects (and (not (holding ?x)) (ontable ?x) (clear ?x) (handempty)) IFT608/IFT702
Exemple STRIPS pour la livraison de colis r1 (room) r2 (room) c1 (corridor) r4 (room) r3 (room) c2 (corridor) d11 d12 d23 d24 b1 b2 b4 b3 b5 (:objects b1 b2 b3 b4 b5 - ball left right – gripper r1 r2 r3 r4 – room c1 c2 - corridor) (:init (atRobot c2) (free left) (free right) (at b1 r2) (at b2 r2) (at b3 r2) (at b4 r3) (at b5 r3)) (:goal (at b1 r4) (at b2 r4) (at b3 r4) (at b4 r4) (at b5 r4)) (:goal (forall (?x - ball)(at ?x r4)))
Exemple STRIPS pour la livraison de colis, suite (define (domain robotWorld1) (:types gripper ball room corridor door) (:predicates atRobot at free holding connects) (:action pick :parameters (?b – ball ?g – gripper ?r – room) :precondition (and (at ?b ?r) (atRobot ?r) (free ?g)) :effect (and (holding ?g ?b) (not (at ?b ?r)) (not (free ?g)))) (:action release :precondition (and (holding ?g ?b) (atRobot ?r)) :effect (and (at ?b ?r) (not (holding ?g ?b)) (free ?g))) (:action move :parameters (?rf ?rt – room ?d - door) :precondition (atRobot ?rf) (connects ?d ?rf ?rt) :effect (and (atRobot ?rt) (not (atRobot ?rf)))) Ici non plus, nous ne traitons pas l’évitement de collision avec les obstacles. Nous supposons que cela est fait au niveau des actions primitives. IFT608/IFT702
Exemple PDDL pour la livraison de colis r1 (room) r2 (room) c1 (corridor) r4 (room) r3 (room) c2 (corridor) d11 d12 d23 d24 b1 b2 b4 b3 b5 (:objects r1 r2 r3 r4 – room c1 c2 - corridor) (:init (atRobot r2) (= (free) 2) (= (holding) 0) (= (atBalls r3) 2)(= (atBalls r2) 3) (:goal (= (atBalls r4) 5))
Une autre version PDDL pour la livraison de colis (define (domain robotWorld3) (:types gripper ball room corridor door) (:predicates atRobot at free holding connects) (:action pick :parameters (?b – ball ?g – gripper ?r – room) :precondition (and (at ?b ?r) (atRobot ?r) (free ?g)) :effect (and (holding ?g ?b)(not (free ?g)))) (:action release :precondition (and (holding ?g ?b) (atRobot ?r)) :effect (and(not (holding ?g ?b)) (free ?g))) (:action move :parameters (?rf ?rt – room ?d - door) :precondition (atRobot ?rf) (connects ?d ?rf ?rt) :effect (and (atRobot ?rt) (not (atRobot ?rf))) (forall (?b – ball ?g - gripper) (when (holding ?b ?g) (and (not (at ?b ?rf)) (at ?b ?rt))))) IFT608/IFT702
Plus d’exemples International Planning Competition http://www.planiart.usherbrooke.ca/download-en.html IFT608/IFT702
Ce qu’il faut retenir PDDL Syntaxe dimanche 16 septembre 2018 Ce qu’il faut retenir PDDL Syntaxe Sémantique: Étant donné un état et un domaine PDDL, générer les successeurs. Cela permet de définir implicitement la fonction successeur pour un algorithme comme A*. Pour l’instant, le seul avantage perceptible d’avoir un modèle PDDL (au lieu d’une fonction de transitions normale) est de représenter la fonction de transition de façon compacte. Un autre avantage que nous voyons dans la leçon suivante est l’extraction d’heuristiques. IFT608/IFT702