Planification
Transcription
Planification
Planification Planification ■ ■ [D'après Wikipedia]: la planification (Automated planning) est une discipline de l'intelligence artificielle qui vise le développement d'algorithmes pour produire des plans (en d'autre termes, une planification), typiquement pour l'exécution par un robot ou tout autre agent. Un planificateur typique manipule prend trois entrées : ➤ une description de l'état initial d'un monde, ➤ une description d'un but à atteindre et ➤ un ensemble d'actions possibles (parfois appelés opérateurs) * Dans toute démarche de résolution, il y a une partie statique et une partie dynamique * Démarche traditionnelle - la conception fixe à travers l'algorithme la suite (conditionnelle) d'actions à effectuer. * En planification - la phase statique se résume à décrire le monde et les opérations qui le transforment. - lorsqu'un but est soumis, le "moteur d'inférence" du planificateur génèrera un plan. * Gain escompté : flexibilité accrue, entrelacement possible entre planification et exécution. Introduction à la planification 1 Démarche classique / Planification Introduction à la planification Générer des plans ■ Etant donnés: ➤ ➤ ➤ ➤ ■ 3 Une façon de décrire le monde (un langage) Un état initial du monde La description d'un but Un ensemble d'actions susceptibles de changer le monde Trouver: ➤ Introduction à la planification 2 Une suite d'actions capable de changer l'état initial en un état satisfaisant le but Introduction à la planification 4 Planification / Déduction Planification ■ Cas particulier de la recherche dans un espace d'états ciblé pour représenter les changements du monde ■ Forme restreinte des actions pour éviter le frame problem ■ Résout les problèmes en tentant de résoudre récursivement tous les sous-buts ■ Dans le pire des cas, se comportera comme un algorithme classique de recherche Introduction à la planification * Un système de planification : - se situe dans un monde - le fait évoluer par des actions - agit en fonction d'un ou plusieurs buts exprimés comme des propriétés de l'état du monde. * Contrairement à un système de résolution, la planification n'a pas pour but la production de nouvelles connaissances à partir de règles de déduction. 5 Problématiques de planification Introduction à la planification 6 Applications 1. La représentation du monde et des capacités de l'agent - les actions, les plans, le changement, le temps, les objectifs à atteindre ■ ■ ➤ ■ 2. L'algorithmique - comment réaliser une synthèse automatique de plans à partir d'un but à atteindre et d'un état du monde Robots mobiles Environnements simulés Gestion de situations de crise situations ➤ ■ pour l'apprentissage (vol) ou des jeux E.g. catastrophes naturelles accidents industriels, … Et bien plus encore ➤ Automatisation de procédés, pilote automatique, programmes joueurs bridge, planification militaire, ... 3. Le suivi de l'exécution - le contrôle, la réactivité aux évolutions, la révision des plans déjà produits Introduction à la planification 7 Introduction à la planification 8 Exemple : le monde des blocs (1) Le monde des blocs (2) Trouver une séquence d’actions entre l’état initial et l’état final dépile(b),dépose(b), prend(c), empile(c,a) b c a c b start a • Tous les blocs sont de taille égale • La table est fixe; seule la position relative des blocs importe • un seul bloc sur un autre bloc • un nombre qcq de blocs sur la table • les blocs bougent uniquement quand le bras les manipule • le bras prend et repose les blocs • le bras prend un seul bloc à la fois Introduction à la planification 9 Représentation du changement ■ ➤ ➤ ■ c a goal b a c b c c a Introduction à la planification 10 Problème avec la logique d'ordre un ■ Peu pratique pour des problèmes où l'état du monde change, car il faut dire explicitement tout ce qui ne change pas (frame problem). ■ Pas de moyen simple d'éviter ça: logique d'ordre zéro, règle par défaut, ... Comme les actions changent le monde, il est nécessaire de: ➤ b b a Savoir en quoi une action change le monde Garder un historique des états successifs du monde Raisonner à propos des états potentiels du monde (que se passerait-il si j'effectuais les actions ..?) Comment représenter efficacement tout ce qui ne change pas ? Introduction à la planification 11 Introduction à la planification 12 Formalisation du monde des blocs ■ Objets: blocs a,b,c,... table table ■ Etats: conjonctions de littéraux ➤ ➤ ➤ ➤ ➤ Planification: représentation sur(X,Y), surtable(X), riendessus(X), mainvide, tient(X) Actions: ■ ➤ ■ Etats: conjonction de littéraux ■ But élémentaire (un seul littéral), buts composés ■ Actions sont formées de 3 parties ■ prend(X), dépose(X), empile(X,Y), dépile(X,Y) ➤ indentification de l'action ➤ précondition ➤ effet: add-list et delete-list Les règles ne spécifient que ce qui change Connaissances à propos des actions et du monde: ■ ➤ Il ne peut pas y avoir plus qu'un bloc sur un autre bloc ➤ La main doit être vide et il ne doit rien y avoir sur le bloc pour que la main puisse le prendre Introduction à la planification 13 Formalisation du monde des blocs ■ ■ 14 Formalisation du monde des blocs Etats: ➤ Chaque bloc X est soit sur(X,Y) ou surtable(X), il peut aussi être riendessus(X) ➤ Pas plus d'un bloc X dans la main: tient(X) ➤ mainvide ou (exclusif) tient(X) prend(X): P&D: [surtable(X), mainvide, riendessus(X)] A: [tient(X)] dépose(X): P&D: [tient(X)] A: [surtable(X), mainvide, riendessus(X)] Représenter le changement de l'état s1 à s2 Certains littéraux sont effacés, d'autres sont ajoutés : prend(X): P & D: [surtable(X), mainvide, riendessus(X)] ➤ empile(X,Y): P&D: [tient(X), riendessus(Y)] A: [sur(X,Y), mainvide, riendessus(X)] dépile(X,Y): P & D:[mainvide, riendessus(X), sur(X,Y)] A: [tient(X), riendessus(Y)] A: [tient(X)] Interprétation procédurale: - effacer surtable(X), mainvide, riendessus(X) de S - ajouter tient(X) Introduction à la planification Introduction à la planification 15 Introduction à la planification 16 Exemple riendessus(b) sur(c,a) riendessus(c) surtable(a) surtable(b) mainvide Espace de recherche dépile(X,Y) P&D: mainvide, riendessus(X), sur(X,Y) A: tient(X), riendessus(Y) riendessus(a) riendessus(b) tient(c) surtable(a) surtable(b) dépose(X) P&D: tient(X) A: surtable(X), riendessus(X), mainvide prend(X) P&D: surtable(X), riendessus(X), riendessus(a) mainvide riendessus(a) riendessus(b) A: tient(X) surtable(a) surtable(a) surtable(c) surtable(b) riendessus(c) surtable(c) tient(b) riendessus(c) mainvide Introduction à la planification 17 18 Recherche d'un plan par chaînage avant (CAV) Arbre de recherche pour le monde des blocs sur(b,a), riendessus(b), riendessus(c), surtable(a), surtable(c), mainvide va de l'état initial vers le but prend(c) dépile(b,a) riendessus(a), riendessus(c), surtable(a), surtable(c), tient(b) prend(c) Introduction à la planification sur(b,a), riendessus(b), tient(c), surtable(a) empile(c,b) l'agent applique "mentalement" les opérateurs jusqu'à ce que l'un des états obtenus vérifie le but ( i.e., il raisonne sur les changements d’états mais n’opère pas sur le monde) riendessus(c), sur(c,b), sur(b,a), surtable(a), mainvide Introduction à la planification 19 Introduction à la planification 20 Chaînage avant CAV une solution se compose d'un état et de la suite d'actions qui y mène depuis l'état initial. la solution initiale du planificateur est : s0 = ( e0, ∅ ). la condition de succès consiste à vérifier que le but est satisfiable dans le modèle d'état associé à la solution. pour trouver les successeurs d'une solution on applique les règles possibles et on concatène l'action au plan partiel. le test d'équivalence est l'égalité des modèles d'états : - s=(e,p) subsume s'=(e',p') <=> e = e' (ou mieux e ⊇ e'). Introduction à la planification 21 Introduction à la planification ■ ■ Stratégies déterministe pour CAV: ➤ Largeur d’abord ➤ Profondeur d’abord s ➤ Meilleur d’abord (e.g., A*) 0 ➤ Recherche gloutonne a1 22 Pourquoi ce type de recherche est-il inefficace? Stratégies déterministes ■ une stratégie possible est de choisir la solution dont l'état du monde satisfait le plus de sous-buts. s1 a4 a2 s2 a3 s3 a5 s4 s5 s … g Les recherche en largeur d’abord et meilleur d’abord sont correctes et complètes ➤ Mais elles demandent trop de mémoire (exponentielle en la longueur de la solution) ■ Trop d'actions et d'états à considérer à cause d'un grand facteur de branchement ■ Difficulté pour trouver une seule heuristique ■ Pas de vue globale (poids entre les sous-buts à réaliser) ■ Pas de lien direct entre état et actions ■ N'exploite pas l'indépendance entre sous-buts En pratique, plutôt profondeur d’abord ou recherche gloutonne ➤ Dans le pire des cas, complexité mémoire linéaire en la longueur de la solution ➤ Correct mais incomplet (vérification des boucles dans un plan) Introduction à la planification 23 Introduction à la planification 24 Facteur de branchement et CAV Heuristique pour le monde des blocs a1 a2 a1 a2 a3 … a50 ■ CAV peut avoir un facteur de branchement énorme ➤ ■ ■ a3 But Etat initial E.g., beaucoup d’actions applicables qui ne mènent pas au but Des stratégies déterministes peuvent dépenser beaucoup de temps à essayer des actions inutiles Quelle heuristique pour la planification? Introduction à la planification 25 Implémentation d'un planificateur en chaînage avant Etat initial Heuristique simple : nombre de littéraux différents S1: [sur(b,a) /\ riendessus(b) /\ riendessus(c) /\ surtable(a) /\ surtable(c)] G: [sur(c,a) /\ riendessus(b) /\ riendessus(a) /\ surtable(a) /\ surtable(b)] Différence: 3 ■ Arbre de recherche meilleur d'abord à partir de l'état initial et vers le but ■ ■ Possibles boucles à cause d'états revisités sur le chemin Introduction à la planification 26 Recherche heuristique - définitions Un noeud est un état + la séquence d'opérateurs qui mène à cet état + valeur heuristique Optimale –si on trouve une solution, c'est la meilleure (celle qui minimise une métrique comme la longueur du plan, ou la consommation d'une ressource donnée) Complète – guarantit de trouver une solution si elle appartient à l'espace de recherche Efficacité – temps ou espace nécessaires pour trouver une solution Introduction à la planification 27 Introduction à la planification 28 Recherche heuristique - définitions Heuristiques: définitions Recherche de type meilleur d'abord Répéter: – maintenir un ensemble de noeuds en attente de développement (OPEN) -- Développer le noeud de OUVERT qui a la meilleure valeur heuristique -- Envoyer ce noeud dans FERME, et le développer: calculer ses fils et leurs valeurs heuristiques, et mettre à jour OUVERT en conséquence Introduction à la planification 29 Heuristique - Exemple Introduction à la planification 30 Heuristique admissible Largeur d'abord: f(n) = g(n) + h(n) où g(n) = longueur du plan pour atteindre n à partir de l'état initial h(n) = 0 largeur d'abord OPTIMALE, COMPLETE mais totalement inefficace Artform Research Group Introduction à la planification Soit une fonction heuristique f(n) = g(n) + h(n) où g(n) est le meilleur coût actuel pour aller de l'état initial à l'état n h(n) est une estimation du coût pour atteindre le but à partir du noeud n 31 Une heuristique ADMISSIBLE calcule une estimation du coût pour atteindre le but qui est toujours strictement inférieure au coût optimal pour atteindre le but. Exemple: but – aller de la position courante P à la position but G en empruntant le réseau routier. Une heuristique admissible est la distance à vol d'oiseau entre P et G Introduction à la planification 32 Algorithme A* Heuristique pour la planification Une recherche A* est une recherche dans un espace d'états telle que les noeuds dans OUVERT sont triés en fonction de leur valeur selon une fonction heuristique f(n) = g(n) + h(n) • • g(n) est le coût du meilleur chemin connu pour aller de l'état initial à l'état n h(n) est une fonction heuristique admissible pour évaluer le coût du chemin restant à parcourir pour atteinre le but à partir de n Heuristique 1, gloutonne: f(n) = ‘effort’ estimé pour atteindre la solution à partir de l'état courant : nombre de littéraux du but à atteindre 1. asserta(noeud(Etat, [O|Soln], Cout). 2. Sélectionner un but à développer noeud(Etat,Soln, Cout) avec le plus petit coût. Une recherche A* est OPTIMALE et COMPLETE Introduction à la planification 33 Heuristique gloutonne -Exemple Introduction à la planification 34 Heuristiques pour la planification 1 A,B,C,D résolus A,B résolus 3 Heuristique 2: f(n) = (g(n) = nombre d'opérateurs appliqués pour atteindre n + h(n) = 0 : largeur d'abord A,B résolus 3 Etat initial E résolu 4 But = ensemble de sous-buts: A,B,C,D,E C,D résolus 3 Heuristique 3: f(n) = g(n) = nombre d'opérateurs appliqués pour atteindre n + h(n) = nb de sous-buts restant à réaliser pour atteindre le but. Cette heuristique est-elle admissible ? A,B,C résolus 2 C,D résolus 3 Introduction à la planification 35 Introduction à la planification 36 Exemple – heuristique 3 A,B,C,D résolus Une nouvelle heuristique – l'algorithme GraphPlan 1+3 A,B résolus 3+3 Heuristique 4: Relaxation du problème A,B résolus 3+3 Etat initial E résolu 4+2 Pour calculer le coût d'un noeud n = (état, [ops]): ■ Calculer un plan solution à partir de n en ignorant les effets des delete lists des opérateurs (i.e., on ignore le coût de défaire qq chose qui a été fait, et les problèmes d'interférence entre opérateurs) . h(n) = longueur de ce plan ■ f(n) = length [ops] + h(n) ■ Heuristique admissible: toujours une sous-estimation de la distance au but. But: A,B,C,D,E C,D résolus 3+2 A,B,C résolus 2+1 C,D résolus 3+1 Artform Research Group Introduction à la planification Ce noeud est le prochain à développer 37 ■ ■ CAV est correct ➤ Pour tout plan retourné, ce plan est garanti d’être une solution CAV est aussi complet ➤ S’il existe une solution dans l’espace des traces explorées, CAV la retournera Mais sa complexité est proportionnelle au nombre de modèles d'états, ce qui exclut son utilisation autrement que sur des cas d'école. Introduction à la planification 38 Chaînage arrière (CAR) Propriétés ■ Introduction à la planification 39 CAR a un principe inverse de celui de CAV : Part du but qu'il "régresse" en buts intermédiaires par "régression" de règle. La régression d'une règle est une application qui permet de rendre vrai l'un des sous-buts sans invalider les autres Quand un des buts intermédiaires est satisfiable dans l'état initial,le plan est obtenu en appliquant les actions régressées en ordre inverse du chemin qui a conduit à cette solution. Introduction à la planification 40 CAR ■ Pour CAV, on part du but initial, et on applique une action ➤ ns = γ(s,a) Pour CAR, on part du but et on calcule des transitions d’états inverses Nouveaux sous-buts = γ–1(g,a) Pour appliquer γ-1(g,a), il faut avoir une notion de pertinence : ■ ➤ Une action a est pertinente pour un but g si – a rend vrai au moins un des littéraux de g ■ g ∩ effets(a) ≠ ∅ – a ne rend faux aucun des littéraux de g ■ ■ g4 g+ ∩ effets–(a) = ∅ et g– ∩ effets+(a) = ∅ a4 g1 a1 g2 Si a est pertinente pour g, alors γ–1(g,a) = (g – effets(a)) ∪ precond(a), sinon γ–1(g,a) est indéfinie s0 g5 g3 Introduction à la planification 41 g0 a2 a5 Introduction à la planification a3 42 Un espace de recherche encore trop grand Intérêt de CAR ➤ Supposons Gain important en complexité Une solution est un ensemble de sous-buts régressés généralement de taille bien plus petite que les modèles d'états Complétude assurée par un parcours en largeur (ou équivalent). Mais, se paie par la perte de la terminaison que les actions a, b et c soient indépendantes, que l’action d doive précèder chacune des trois, et qu’il n’y ait pas de chemin entre s0 et les préconditions de d ➤ Tous les ordres entre a, b et c seront explorés avant de réaliser qu’il n’y a pas de solution s0 Introduction à la planification 43 Introduction à la planification d a b d b a d d d d b a b c a c c b c b but a 44 Exemple Strips (Fikes and Nilsson 71) ■ ■ Sépare la déduction au sein d'un même état de la recherche dans un espace d'états Représentation d'ordre un pour la planification ➤ ➤ ➤ ➤ ➤ ➤ Les préconditions et les effets doivent être sans symbole de fonctions Hypothèse du monde clos: tous les littéraux non spécifiés sont faux Effet: P ^ non :Q : ajouter P et effacer Q Seuls des littéraux positifs dans les états Seuls des littéraux instanciés dans les buts Pas de gestion de l'égalité entre variables ( X = Y ) Introduction à la planification 45 Exemple ■ Décharger(C, Av, Ae) – PRECOND: dans(C, Av), est_à(Av, Ae), cargaison(C), avion(Av), aéroport(Ae) – EFFET: est_à(A, Ae), not dans(C,Av) ➤ Vole(Av, S, D); ■ Etat initial : est_à(c1,sfo) , est_à(c2, jfk), est_à(a1,sfo), est_à(a2, jfk), cargaison(c1), cargaison(c2), avion(a1), avion(a2), aéroport(jfk), aéroport(sfo) ■ But : est_à(c1,jfk), est_à(c2,sfo) ■ Actions: ➤ charge(C,Av,Ae) – PRECOND: est_à(C,Ae), est_à(Av,Ae), cargaison(C), avion(Av), aéroport(Ae) – EFFET:not est_à(C,Ae), dans(C, Av) Introduction à la planification 46 Etat Initial: être-à(maison), not avoir(bière), not avoir(chips) But: avoir(bière), avoir(chips), être-à(maison) Actions: Acheter (X): PRECOND: être-à(magasin) EFFET: avoir(X) – PRECOND: est_à(Av, S), avion(Av), aéroport(S), aéroport(D) – EFFET: not est_à(Av,S), est_à(Av,D) Introduction à la planification Charger ou décharger une cargaison et la déplacer d'un lieu à l'autre Exemple Actions: ➤ ■ 47 Introduction à la planification Aller (X, Y): PRECOND: être-à(X) EFFET: not être-à(X), être-à(Y) 48 Planification linéaire Inférence dans STRIPS ■ Idée de base: ➤ ■ Dans Strips, certains faits sont inférés au sein d'un état, ➤ ■ e.g. le nombre de personnes dans le magasin ■ Les algorithmes de planification linéaire maintiennent une pile de buts Implications ➤ ■ Des faits ‘primitifs’, e.g. être-à(maison) persistent entre deux états sauf s'ils sont modifiés (partie Ajout ou Effacement). Les faits inférés ne sont pas 'transférés' d'un état à un autre, mais sont recalculés. ➤ ➤ ■ ➤ ➤ ➤ ➤ 49 STRIPS [Fikes, Nilsson, 1971] ■ ➤ STanford Research Institute Problem Solver Formalisation de la représentation des opérateurs Opérationalisation de la notion de différence, sous-but et opérateur Etat = Etat-Initial;Plan = []; Pile-Buts = []; Empiler Buts dans Pile-Buts; Tant que Pile-Buts n'est pas vide et il reste encore des points de choix à explorer – – – But = sommet(Pile-Buts) Si But ∈Etat-Initial, alors dépiler(Pile_Buts) Si But une conjonction de but alors ➤ – ➤ ➤ – ➤ ➤ Choisir* un opérateur o dont la liste d'addition contienne But Remplacer But avec l'appel à l'opérateur o Empiler les préconditions de o sur Pile-Buts Si But est un opérateur o alors ➤ ➤ Sélectionner un ordre des sous-buts* de But et les empiler sur Pile-Buts Si le But est un but élémentaire alors ➤ ■ 50 STRIPS (Etat-Initial, Buts) ➤ ■ Explore uniquement les aspects pertinents du problème Quels moyens (opérateurs) pour atteindre une fin souhaitée (but) Identifie les différences entre le but et l'état courant Trouve un opérateur pour réduire cette différence Introduction à la planification ■ ■ Pas d'entremêlement dans la réalisation des buts La recherche sera efficace si les buts n'interagissent pas (trop) Analyse 'means-end' Evite de faire des erreurs, mais inefficace. Introduction à la planification Travailler sur un but jusqu'à ce qu'il soit complètement réalisé, avant de passer au but suivant Etat = appliquer(o, Etat); Plan = [o|Plan] Fin Tant que si Pile-Buts est vide alors Retourner(reverse(Plan)) sinon retourner échec * Ce choix peut être remis en cause par retour-arrière. S'il n'existe aucun op. pour réduire cette différence, alors retour au dernier point de choix. Si plus de point de choix, échec. Introduction à la planification 51 Introduction à la planification 52 STRIPS STRIPS: Intuition ■ Approche diviser pour régner: pour créer un plan afin d'effectuer un ensemble de buts, créer un plan pour réaliser un but, puis créer un plan pour réaliser le reste des buts ➤ ➤ Sélectionner un but à réaliser S'il n'est pas déjà réalisé, – – – – ■ choisir une action pour rendre le but vrai (régression) rendre vraies les préconditions de l'action effectuer l'action passer au reste des buts Introduction à la planification ➤ 53 54 STRIPS: exemple Points de choix de l'algorithme: si le but à résoudre est une conjonction de sous-buts: choix de l'ordre dans lequel on va résoudre ces sous-buts ➤ si le but est un but simple: quelle action doit-on déclencher pour résoudre le but Une action doit être pertinente: pour une liste de sous-buts à résoudre, elle doit contenir dans sa add-list un sous-but à résoudre qui n'appartient pas à l'état courant ➤ cohérente: elle ne doit pas défaire un sous-but nécessaire à la réalisation du but final (elle ne doit pas défaire un sous-but qui a déjà été réalisé). Si contrôle de cohérence, possible incomplétude (voir anomalie de Sussman). ➤ Introduction à la planification mener à des plans non optimaux échouer alors qu'il existe une solution Introduction à la planification ■ Le monde des blocs: 3 blocs, la main d'un robot, prédicats bloc/1, constantes, a, b, c, table, mainvide/0,riendessus/1, sur/2,surtable/1,tient/1 ■ 4 actions ➤ ■ Hypothèse : le but initial B que l'on cherche à résoudre est complètement décomposable, i.e., pour chaque liste des sous-buts à réaliser à un instant donné pour réaliser B, on peut chercher à réaliser ces sous-buts indépendamment des autres. Cette hypothèse est forte. Selon les choix d'implantation de l'algorithme de planification, elle peut s'avérer ➤ STRIPS ■ ■ 55 ➤ prendre-sur-table(B) – Pre: bloc(B), mainvide, riendessus(B), surtable(B). – Add-list: tient(B) – Del-list: mainvide, surtable(B) ➤ déposer-sur-table(B) – Pre: bloc(B), tient(B) – Add-list: mainvide, surtable(B) – Del-list: tient(B) Introduction à la planification 56 STRIPS dans le monde des blocs STRIPs dans le monde des blocs a c b • ■ Actions (suite) ■ Pile-buts: ➤ ➤ ■ prendre-sur-bloc(B, C) sur(a, c),sur(c, b) • c a • • b • Etat: riendessus(b), riendessus(c), sur(c, a),surtable(a), surtable(b), mainvide – Pre: bloc(B), mainvide, riendessus(B), sur(B, C), bloc(C) – Add-list: tient(B), riendessus(C) – Del-list: mainvide,sur(B,C), riendessus(B) ➤ • ■ déposer-sur-bloc(B, C) ■ – Pre: bloc(B), tient(B), bloc(C), riendessus(C), B ≠ C – Add-list: mainvide, sur(B, C) – Del-list: tient(B), riendessus(C) Liste de sous-buts, STRIPS empile les sous-buts dans l'ordre inverse dans lequel il veut les résoudre Pile-buts: ➤ ➤ ➤ ■ sur(c, b) sur(a, c) sur(a, c),sur(c, b) Etat inchangé: riendessus(b), riendessus(c), sur(c,a), surtable(a), surtable(b), mainvide Introduction à la planification 57 STRIPs dans le monde des blocs 58 STRIPs dans le monde des blocs ■ STRIPS cherche à réaliser sur(c,b), il recherche une action qui contient dans sa add-list un littéral unifiable avec sur(c,b): déposer-sur-bloc(B, C), de préconditions bloc(B), tient(B), bloc(C), riendessus(C), B ≠ C. ■ Etant donné la substitution B/c, C/b, il empile sur Pile-buts: bloc(c), tient(c), bloc(b), riendessus(b), b ≠ c. Pour simplifier, on omet les littéraux de type (testés) et les ≠, restent donc tient(c), riendessus(b). Comme le sommet de la pile est une conjonction de sous-buts, STRIPS ordonne les sous-buts à résoudre, en empilant d'abord riendessus(b) puis tient(c). ■ Introduction à la planification Etat: inchangé, Pile-buts: tient(c) riendessus(b) tient(c), riendessus(b) déposer-sur-bloc(c, b) sur(a, c) sur(a, c) sur(c, b) ■ riendessus(b) appartient à l'état courant, il est donc dépilé de Pile-buts. Le sous-but à résoudre est donc maintenant tient(c). ■ Deux actions sont pertinentes, prendre-sur-table(B) et prendresur-bloc(B,C). On suppose que STRIPS, (bien inspiré), choisit l'action prendre-sur-bloc(B,C) de préconditions bloc(B), mainvide, riendessus(B), sur(B, C), bloc(C). ■ Avec la substitution B/c, on va empiler mainvide, riendessus(c), sur(c,C). Strictement, ces sous-buts appartenant à l'état courant (étant donnée la substitution C/a), on va pouvoir empiler dans un ordre qcque, puis les dépiler, jusqu'à trouver sur la pile : prendresur-bloc(c,a) et donc de l'appliquer. ■ Etat : riendessus(b),riendessus(c),sur(a, table), ➤ ➤ ➤ ➤ sur(b,table), tient(c), riendessus(a) ➤ • ■ ➤ Introduction à la planification • 59 Plan = [prendre-sur-bloc(c,a)]. Introduction à la planification a c • b 60 STRIPs dans le monde des blocs STRIPs dans le monde des blocs Pile-buts devient: ■ tient(c), riendessus(b) déposer-sur-bloc(c, b) sur(a, c) sur(a, c), sur(c, b) ■ Plan= [déposer-sur-bloc(c,b), prendre-sur-bloc(c,a)] ■ Pile-Buts: ➤ ➤ ■ ■ La conjonction tient(c), riendessus(b) est vraie, les deux sous-buts sont bien réalisés tous les deux. Cela pourrait ne pas être le cas si la réalisation de tient(c) avait détruit riendessus(b). La conjonction est dépilée, puis déposer-surbloc(c,b) est appliqué à l'état courant et ajouté au plan courant. 61 Introduction à la planification L'algorithme de STRIPS tel quel n'est pas correct En effet, réaliser un but peut défaire un but déjà réalisé Deux idées pour rendre STRIPS correct Protéger des sous-buts: tant qu'ils sont nécessaires, ils ne peuvent pas être défaits. ➤ Réaliser une deuxième fois les buts « défaits » ■ 62 L'anomalie de Sussman Un mauvais choix d'ordre des sous-buts à résoudre peut amener à détruire un but que l'on a réalisé a c b Pile-buts: a b c • • ■ • ➤ ➤ ■ a • bloc(a,c),prendre-sur-table(a),déposer-sur-bloc(c,b), prendre-sur-bloc(c,a)] ■ ■ • De la même manière, l'algorithme continue pour arriver à Pile-buts = , avec le plan [déposer-sur- ■ Limitations de STRIPS ■ c b • Etat: riendessus(c), sur(a, table), sur(b, table), riendessus(a), mainvide, sur(c,b) Introduction à la planification ■ sur(a, c) sur(a, c), sur(c, b) ■ La première solution rend STRIPS incomplet La deuxième va trouver des plans qui sont éventuellement plus longs que nécessaire ■ • • • sur(a, b),sur(b, c) STRIPS choisit de résoudre sur(a,b) d'abord, puis sur(b,c). sur(a,b) peut être réalisé par déposer-sur-bloc(B, C), de préconditions bloc(B), tient(B), bloc(C), riendessus(C), B ≠ C. (B/a,C/b) Sachant que riendessus(b) appartient à l'état, Pile-buts: tient(a) tient(a), riendessus(b) déposer-sur-bloc(a, b) sur(b,c) sur(a, b),sur(b, c) ➤ ➤ ➤ ➤ ➤ Introduction à la planification 63 Introduction à la planification 64 Anomalie de Sussman Anomalie de Sussman ■ ■ ■ STRIPS va réaliser tient(a) en appliquant prendre-surtable(B) de préconditions bloc(B), mainvide, riendessus(B), sur(B,table) (B/a). La pile devient, modulo un ordre sur les préconditions de prendre-sur-table(a): ➤ ➤ ➤ ➤ ➤ ➤ ➤ ■ mainvide, riendessus(a), sur(a,table) prendre-sur-table(a) tient(a) tient(a), riendessus(b) déposer-sur-bloc(a, b) sur(b,c) sur(a, b),sur(b, c) ■ ➤ ➤ ➤ ➤ STRIPS choisit de réaliser riendessus(a) en appliquant l'action prendre-sur-bloc(c,a) de préconditions mainvide, riendessus(c), sur(c, a). ■ a est sur la table, la main du robot est vide, il reste à réaliser riendessus(a). 65 L'ensemble de ces préconditions appartenant à l'état courant, STRIPS effectue l'opération prendre-sur-bloc(c,a), ajoute cette action au plan courant. Introduction à la planification ■ • c La pile de buts : tient(c) déposer-sur-table(c) main-vide, riendessus(a),sur(a,table) prendre-sur-table(a) riendessus(b) tient(a), riendessus(b) déposer-sur-bloc(a, b) sur(b,c) sur(a, b),sur(b, c) ➤ ➤ • a • b ➤ ➤ ➤ ➤ ➤ ➤ ➤ ➤ ➤ ➤ ➤ ➤ ➤ ➤ ■ 66 Anomalie de Sussman Plan = [prendre-sur-bloc(c,a)] L'état courant devient: La pile de buts : main-vide, riendessus(a),sur(a,table) prendre-sur-table(a) riendessus(b) tient(a), riendessus(b) déposer-sur-bloc(a, b) sur(b,c) sur(a, b),sur(b, c) ➤ ■ Anomalie de Sussman ■ ➤ ➤ Introduction à la planification ■ Pile-buts: riendessus(a) prendre-sur-table(a) tient(a) tient(a), riendessus(b) déposer-sur-bloc(a, b) sur(b,c) sur(a, b),sur(b, c) ■ Il s'agit maintenant d'avoir la main vide et donc de déposer c (sur la table). Il y a une seule précondition à déposer-sur-table(c), tient(c). ■ ■ Comme tient(c) est réalisé, STRIPS applique l'action. Plan= [déposer-table(c),prendre-sur-bloc(c,a)] Le nouvel état : • Introduction à la planification 67 Introduction à la planification a • b • c 68 Anomalie de Sussman ■ ■ On va donc pouvoir prendre a sur la table et le déposer sur b. Plan: [déposer-sur-bloc(a,b),prendre-sur-table(a), déposer-table(c),prendre-sur-bloc(c,a)] ■ a b ➤ On reprend a qu'on redépose sur la table, on prend b qu'on dépose sur c ■ Plan= [déposer-sur-bloc(b,c),prendre-sur-table(b), déposer-table(a),prendre-sur-bloc(a,b), déposer-sur-bloc(a,b),prendre-sur-table(a), déposer-table(c),prendre-sur-bloc(c,a)] • • • sur(b,c) sur(a, b),sur(b, c) c ■ Ensuite, pour réaliser sur(b,c), il faut prendre b sur la table et donc qu'il soit possible de saisir b, il faut donc dépiler a... et défaire le but qui vient d'être réalisé.... Introduction à la planification 69 Problème insoluble par STRIPS ■ ■ Pile-buts: ➤ ■ Anomalie de Sussman ■ ■ ■ Plan= [déposer-sur-bloc(b,c),prendre-sur-table(b), déposer-table(a),prendre-sur-bloc(a,b), déposer-sur-bloc(a,b),prendre-sur-table(a), déposer-table(c),prendre-sur-bloc(c,a)] 70 Actions(suite) Vole(Av, S, D); – PRECOND: est_à(Av, S), avion(Av), aéroport(S), aéroport(D), plein_kérosène(Av) – ADD-LIST: est_à(Av,D) – DEL-LIST: est_à(Av,S), plein_kérosène(Av) charger(C,Av,Ae) ■ – PRECOND: est_à(C,Ae), est_à(Av,Ae), objet(C), avion(Av), aéroport(Av) – ADD-LIST:dans(C,Av) – DEL-LIST: est_à(C,Ae), ■ ■ décharger(C, Av, Ae) – PRECOND: dans(C, Av), est_à(Av, Ae), objet(C), avion(Av), aéroport(Ae) – ADD-LIST: est_à(A, Ae), – DEL-LIST: dans(C,Av) Introduction à la planification • Il ne reste ensuite plus qu'à prendre a sur la table pour le déposer sur b... ➤ Buts: est_à(obj1, lieub), est_à(obj2, lieub) Actions: ➤ b c Problème insoluble par STRIPS Etat Initial : est_à(obj1,lieua), est_à(obj2, lieua), est_à(747, ➤ a Introduction à la planification lieua),plein_kérosène(747) ■ • • ■ 71 Si STRIPS essaye de réaliser le but est_à(obj1, lieub) Plan:[charger(obj1,lieua, 747), voler(747, lieua,lieub), décharger(obj1, 747, lieub)] mais ne peut plus réaliser le transfert de obj2 car plus de kérosène (et vice-versa) ! Il existe pourtant un plan qui consiste à charger d'abord les 2 objets, à effectuer le vol, puis à décharger les 2 objets. Impossible à trouver par STRIPS. Introduction à la planification 72 Propriétés d'un algorithme de planification ■ Correct: Un algorithme de planification est correct si tous les plans qu'il propose sont “légaux” ➤ ■ ■ ■ Complétude: un algorithme de planification est complet si une solution est trouvée si elle existe Optimalité: un algorithme de planification est optimal si l'ordre dans lequel les solutions sont trouvées satisfait une mesure de qualité sur ces solutions (longueur du plan) 73 Planification: conclusion ■ ■ ■ espace de recherche réduit (but résolus indépendamment les uns des autres) ➤ Efficace si les buts sont plus ou moins indépendants ➤ La planification linéaire est correcte ■ Limitation ➤ ■ La planification linéaire peut produire des solutions sousoptimales (nombres d'opérateurs du plan) La planification linéaire est incomplète Introduction à la planification 74 Planification linéaire Des problèmes de représentation des connaissances non triviaux Trouver un plan: beaucoup plus compliqué que de l'inférence dans une base de règles (monotone). Planification linéaire: fonctionne dans un ensemble de cas réduits (problèmes décomposables...) De nombreuses extensions ont été développées: planification avec ordre partiel (on construit des sousplans qui vont ensuite être « intercalés »), etc... Introduction à la planification Avantages: ➤ Toutes les préconditions et les buts sont réalisés Introduction à la planification ■ Planification linéaire 75 ■ Avantages: ➤ ➤ ➤ ■ Limitation ➤ ■ espace de recherche réduit (but résolus indépendamment les uns des autres) Efficace si les buts sont plus ou moins indépendants independent La planification linéaire est correcte La planification linéairepeut produire des solutions sousoptimales (nombres d'opérateurs du plan) La planification linéaire est incomplète Introduction à la planification 76