• Aucun résultat trouvé

La base de faits est une structure qui d´ecrie l’´etat courant du monde. Elle est compos´ee de faits. Il existe plusieurs repr´esentations de ces faits selon les diff´erents planificateurs. Un fait peut ˆetre repr´esent´e par un pr´edicat du premier ordre, utilis´e g´en´eralement dans les langages de planification (STRIPS[Fikes 71], ADL[Pednault 94], PDDL[McDermott 98]), ou par une variable d’´etat si on est en planification num´erique ou temporelle.

Dans HATP, la base de faits est repr´esent´ee par un l’ensemble fini de variables d’´etat appel´e “entit´es” W b = {En1, En2, ..., Enn} avec n ∈ N. Chaque entit´e est unique, a un type et poss`ede un ensemble d’attributs d´efinis par la description du domaine. Ainsi, dans HATP, un fait est d´efini comme l’´etat d’un attribut appartenant `a une entit´e `a un instant donn´e. La figure 3.2 donne un exemple de construction de la base de faits. Cette description se d´eroule en quatre ´etapes :

1. D´efinition des types d’entit´es : cette ´etape permet de d´efinir les types d’entit´es qui vont ˆetre utilis´es pour d´ecrire l’´etat du monde. Dans HATP, le Type agent est pr´ed´efini, il repr´esente les agents qui peuvent op´erer des changements sur l’´etat du monde.

2. D´efinition des attributs : cette ´etape permet d’associer `a un type d’entit´e un ensemble d’attributs. Les attributs vont d´ecrire l’´etat courant associ´e `a une entit´e. Le type d’un attribut est d´ecrit par un tuple

AttriT ype =< Ct1∧ Ct2∧ Ct3 > O`u :

– Ct1 = {Static ∨ Dynamic} d´etermine si la valeur de l’attribut peut varier ou non

durant le processus de planification. Si la valeur de l’attribut peut ´evoluer, il est de type Dynamic, sinon il est de type Static.

– Ct2 = {Atom, Set} d´etermine si l’attribut est une donn´ee atomique ou un ensemble de valeurs.

– Ct3 = {N umeric, Boolean, String, Entity} d´etermine si l’attribut est un nombre, une chaˆıne de caract`ere, un bool´een ou bien un type entit´e.

3. D´eclaration des entit´es : cette ´etape permet de cr´eer les entit´es qui vont repr´esenter le monde.

4. Initialisation de la base de faits : cette ´etape permet d’initialiser les valeurs des attributs associ´es aux entit´es d´eclar´ees pr´ec´edemment.

Dans l’exemple sur la figure 3.2. On d´efinit un environnement constitu´e d’un appartement qui est lui-mˆeme compos´e de trois lieus (Cuisine, Chambre, salon), on d´efinit aussi deux agents (Jido

Symbole d´efinition Exemple = Op´erateur d’affectation Entite.attribut=2

== Test d’´egalit´e Entite.attribut==2

! = Test d’in´egalit´e Entite.attribut !=2 <<= Insertion d’un ´el´ement dans un

ensemble Entite.AtrributEnsemble <<= Entite2 =>> Suppression d’un ´el´ement d’un

ensemble Entite.AtrributEnsemble =>> Entite2 >> Test d’appartenance `a un ensemble Entite2 >> Entite.AtrributEnsemble ! >> Test de non appartenance `a un

ensemble Entite2 ! >> Entite.AtrributEnsemble +; −; /; ∗; >; < Op´erateurs math´ematiques de base

Fonction D´efinition Exemple

Call fonction de calcul math´ematique Entite.attribut = Call(Entite.attribut + 2)

ForAll(type ; condition)

Fonction qui retourne un ensemble d’entit´es d’un certain type, qui respectent certaines conditions et leur applique certains changements

A=ForAll(Agent ; A.type==”Robot”){effets}

Select(type ; condition)

Fonction qui retourne un ensemble d’entit´es d’un certain type et qui respectent certaines conditions

A=Select(Agent ; A.type==”Robot”)

Table 3.1 – Liste des op´erateurs et fonctions utilis´es dans le planificateur HATP

et Tom) qui peuvent ´evoluer dans ces lieux. Les agents sont d´ecrits par un ensemble d’attributs. Par exemple, chaque agent a un type (Jido est de type robot), une position topologique (Jido est au salon), une capacit´e de portage (Jido ne peut porter que deux objets `a la fois), une liste d’objets qu’il porte (Jido porte Verre1 et Verre2), leur degr´e d’handicap (Tom a un degr´e d’handicape de 10% et Jido est de 0%).

HATP et SHOP2 utilisent des syntaxes diff´erentes pour la description de la base de fait. SHOP2 utilise la syntaxe et les fonctionnalit´es du langage Lisp. Comme HATP, il peut exprimer des symboles variables ou constants, des nombres et des listes (ensemble dans le cas de HATP). Ils ont tous deux un pouvoir expressif ´equivalent. Mais HATP se diff´erencie par sa repr´esentation particuli`ere des ´etats du monde, qui permet de regrouper toutes les informations concernant une entit´e dans une mˆeme variable. Cela facilite l’accessibilit´e aux donn´ees, mais permet ´egalement de construire un mod`ele de l’entit´e en question.

Prenant l’exemple d’une entit´e de type agent, on peut constater sur la description d’un agent ce fait sur plusieurs niveaux. On d´ecrit son ´etat physique, comme sa capacit´e et ses handicaps avec les attributs “maxObjets” et “handicap” qui repr´esentent respectivement le nombre maximum d’objets qu’il peut porter et le degr´e de son handicap. On d´ecrit son ´etat par rapport `a l’environnement avec les attributs “PosTopo” qui repr´esentent sa position et l’attribut “objets” qui ´enum`ere la liste des objets qu’il a en main. On peut exprimer son d´esir, comme le d´esir de participer `a la tˆache avec l’attribut “disposition”. Naturellement ce mod`ele n’est pas complet, mais il va l’ˆetre avec la d´efinition des actions et leur mod`ele de coˆut.

3.2.1 Syntaxe de HATP

La syntaxe de HATP est fortement inspir´ee des langages de programmation orient´ees objet comme C++ ou java. Nous avons d´efini plusieurs op´erateurs et fonctions qui vont servir pour l’initialisation de la base de faits, mais ´egalement dans la d´efinition des pr´econditions et des effets des actions. Sur le tableau 3.1 nous pouvons voir la liste de tous les op´erateurs et fonctions utilis´ees dans HATP.