Aller au contenu
Kudos AI

Planification automatique

Trouver une suite d’actions qui atteint un but, où les états sont des ensembles de fluents instanciés et les actions des schémas ne décrivant que ce qu’elles changent.

Aussi appelé : Planification classique, PDDL, Schéma d’action, STRIPS

Comprendre Planification automatique

La planification classique s’adresse aux environnements complètement observables, déterministes, statiques et mono-agents, et son apport est représentationnel plutôt qu’algorithmique. Un état est une conjonction de fluents instanciés, positifs et sans symboles de fonction. Sous l’hypothèse du monde clos, tout fluent non mentionné est faux, si bien que la négation n’a jamais à être écrite, et sous l’hypothèse des noms uniques, des constantes distinctes désignent des objets distincts. L’effet est qu’un état peut se lire indifféremment comme une formule logique avec laquelle raisonner ou comme un ensemble que l’on manipule, et la plupart des algorithmes de planification retiennent la seconde lecture.

Les actions sont données sous forme de schémas en PDDL, le Planning Domain Definition Language, descendant de STRIPS. Un schéma nomme l’action, énumère ses variables, puis donne une précondition et un effet. Les littéraux positifs de l’effet forment la liste d’ajout et les littéraux niés la liste de suppression, de sorte qu’appliquer une action instanciée à un état tient en une seule expression ensembliste : retirer la liste de suppression, puis ajouter la liste d’ajout. Tout le reste persiste par défaut. Voilà comment la planification classique traite le problème du cadre - non en prouvant ce qui reste inchangé, mais en restreignant l’attention aux domaines où la plupart des actions laissent la plupart des choses tranquilles, pour ne décrire alors que le changement.

Un schéma est une représentation relevée, qui hisse le raisonnement de la logique propositionnelle vers un fragment restreint de la logique du premier ordre. Là où un agent propositionnel réclamait une formule par orientation, par pas de temps et par lieu, un unique schéma les couvre toutes. L’économie est réelle, mais l’instanciation coûte cher : un schéma se développe sur le domaine de chacun de ses arguments, si bien qu’une action de vol avec dix avions et cinq aéroports fournit à elle seule deux cents actions instanciées. Un peu de soin s’impose aussi vis-à-vis des instances parasites, comme voler d’un aéroport vers lui-même, qu’une précondition d’inégalité vient exclure.

Un but s’écrit comme une précondition, c’est-à-dire comme une conjonction de littéraux dont les variables se lisent existentiellement, et un état l’atteint lorsqu’il l’implique. Cela achève un problème de recherche : état initial, actions applicables, fonction de résultat, test de but. La recherche en avant dans cet espace est complète mais fort mal informée, car l’instanciation produit quantité d’actions sans rapport avec le but visé. La recherche en arrière depuis le but ne considère que les actions pertinentes et branche donc moins, mais ses nœuds sont des ensembles d’états plutôt que des états. L’avantage décisif de la représentation est qu’une heuristique peut être extraite en modifiant les schémas eux-mêmes.

Comment calculer

Result(s, a) = (s \ Del(a)) ∪ Add(a), applicable when Precond(a) ⊆ s

où

s
un état : l’ensemble des fluents instanciés positifs qui y sont vrais, tout le reste étant faux
Add(a)
les littéraux positifs de l’effet de l’action
Del(a)
les littéraux que l’effet de l’action nie
Precond(a)
les littéraux qui doivent être vrais pour que l’action soit applicable

Exemple : Planification automatique

Le problème de la roue de secours part de At(Flat, Axle) ∧ At(Spare, Trunk) avec le but At(Spare, Axle). Une recherche en avant en largeur d’abord renvoie un plan en trois étapes : retirer le pneu crevé de l’essieu, sortir la roue de secours du coffre, monter la roue de secours sur l’essieu.

Le pneu crevé doit être retiré d’abord parce que PutOn porte la précondition négative ¬At(Flat, Axle). Sans elle, le raccourci en deux étapes serait légal, ce qui montre les préconditions négatives faire un travail que les listes d’ajouts et de retraits ne peuvent accomplir seules.

Le domaine du fret aérien, avec deux cargaisons, deux avions et deux aéroports, développe trois schémas en vingt actions instanciées, et son plan optimal compte six étapes : charger les deux cargaisons, faire voler chaque avion vers l’autre aéroport, décharger les deux cargaisons.

Avantages et inconvénients

Avantages

  • Un même solveur indépendant du domaine traite tout problème exprimable dans le langage, sans aucune recherche écrite à la main.
  • La structure des schémas autorise des heuristiques dérivées automatiquement par relaxation, plutôt qu’inventées domaine par domaine.
  • La mise à jour d’un état est de l’arithmétique d’ensembles, ce qui garde les implémentations brèves et rend leur analyse immédiate.

Inconvénients

  • Instancier un schéma le développe sur le domaine de chacun de ses arguments et peut exploser avant même que la recherche ne commence.
  • Les hypothèses classiques - déterministe, complètement observable, statique, mono-agent - excluent la plupart des environnements réels.
  • Restreindre les états à des fluents instanciés, positifs et sans fonctions écarte des descriptions expressives dont certains domaines ont réellement besoin.

Questions fréquentes

En quoi cela diffère-t-il d’une recherche ordinaire ?

La recherche ordinaire traite un état comme un atome dont on ne peut que tester s’il est un but, si bien que toute heuristique doit être fournie à la main. La planification emploie un état factorisé et des descriptions d’actions inspectables, ce qui permet au solveur de construire lui-même son heuristique en relaxant les schémas. Les algorithmes de recherche, eux, restent inchangés.

Pourquoi les littéraux négatifs sont-ils bannis des états mais admis dans les préconditions ?

Un état doit être fini, et énumérer tout ce qui est faux ne l’est pas. L’hypothèse du monde clos fait de l’absence une fausseté, si bien qu’un état n’a besoin que de fluents positifs. Une précondition, elle, est une interrogation plutôt qu’une description : y demander si quelque chose est absent est à la fois sensé et peu coûteux.

La recherche en arrière est-elle meilleure parce qu’elle branche moins ?

Elle branche moins, puisque seules sont pertinentes les actions dont la liste d’ajout fournit un littéral requis. Mais chaque nœud est une description de but qui représente de nombreux états et peut contenir des variables, si bien que l’appariement exige l’unification et que de bonnes heuristiques y sont plus difficiles à définir. La recherche en avant munie d’une forte heuristique dérivée l’a généralement emporté.

En résumé

La planification automatique est un pari : la bonne représentation vaut mieux qu’une meilleure recherche. Décrivez les actions par ce qu’elles changent, gardez les états factorisés, et un solveur indépendant du domaine pourra lire la description du problème d’assez près pour bâtir ses propres heuristiques. Tout ce qui rend ce langage restrictif est précisément ce qui rend cela possible.