HAL Id: hal-00955934
https://hal.archives-ouvertes.fr/hal-00955934
Submitted on 6 Mar 2014
HAL is a multi-disciplinary open access archive for the deposit and dissemination of sci- entific research documents, whether they are pub- lished or not. The documents may come from teaching and research institutions in France or abroad, or from public or private research centers.
L’archive ouverte pluridisciplinaire HAL, est destinée au dépôt et à la diffusion de documents scientifiques de niveau recherche, publiés ou non, émanant des établissements d’enseignement et de recherche français ou étrangers, des laboratoires publics ou privés.
Spécifier des agents composés d’agents avec les GDTs
Gaële Simon, Bruno Mermet
To cite this version:
Gaële Simon, Bruno Mermet. Spécifier des agents composés d’agents avec les GDTs. Actes des 17es
Journées Francophones sur les Systèmes Multi-Agents (JFSMA 2009), 2009, France. �hal-00955934�
Spécifier des agents composés d’agents avec les GDT
G. Simon
[email protected]
B. Mermet
[email protected] GREYC, CNRS, Université de Caen Basse-Normandie, ENSICAEN.
Boulevard du Maréchal Juin, F-14032 Caen Cedex, France.
Résumé
Dans cet article, nous spécifions une nou- velle extension du formalisme Goal Decompo- sition Tree pour décrire des agents composés d’agents. Cette notion correspond à une forme de décomposition particulière de but permettant d’introduire des agents spécifiques qui ont en charge la résolution des sous-buts du but dé- composé ainsi. Nous décrivons la sémantique formelle de cette décomposition et nous dé- finissons différents opérateurs pour la mettre en oeuvre. Nous décrivons également des cas d’utilisation typique de ce nouveau type de dé- composition. Enfin, afin de préserver l’objec- tif principal des GDT (prouver des comporte- ments d’agents), nous fournissons les schémas de preuve permettant de prouver la correction de tels agents.
Mots-clés : GDT, Agent, Agent Holonique, Vé- rification formelle
Abstract
In this article, we formalize the notion of an agent made of agents by extending the Goal De- composition Tree formalism. We not only give a formal semantics to this decomposition but we also define operators to introduce various ways of recursively defining agents. We also present design patterns that show various use cases of meta-agents. Finally, to preserve the essential GDT property that consists in allowing to prove agents behaviours, we give proof schemas that allow to prove the correctness of a meta-agent.
Keywords: GDT, Agent, Meta-Agent, Formal Verification
1 Introduction
Le modèle des GDT (Goal Decomposition Tree) a été développé pour spécifier formellement des agents et des systèmes multi-agents. Ce modèle permet de spécifier des comportements d’agents sous la forme de GDTs et de prouver leur cor- rection. Voici les principaux apports de ce mo- dèle :
– Le processus de preuve est entièrement spéci- fié par des schémas de preuve ;
– La vérification de la correction du compor- tement est compositionnelle. Cela permet de valider un agent même partiellement spécifié, et de limiter les preuves à refaire en cas de modification du GDT ;
– Le processus de vérification d’un SMA est également compositionnel. Prouver la correc- tion d’un SMA repose essentiellement sur la preuve de correction des GDT des agents composant ce SMA, GDTs qui peuvent être interconnectés ;
– L’implantation peut être produite automati- quement. Elle repose sur l’utilisation d’auto- mates [8].
L’aspect compositionnel de la preuve est es- sentiel dans notre approche car il la rend plus simple, offrant ainsi la possibilité de la traiter via des prouveurs automatiques.
Il existe cependant un certains nombre de limi- tations dans le modèle actuel :
– les communications entre agents ne sont pas modélisées ;
– il n’est pas simple de spécifier un agent ayant plusieurs buts d’achèvement ;
– il n’est pas possible de spécifier des agents de- vant prendre en charge des tâches s’exécutant de manière concurrente.
Dans cet article, nous montrons comment des agents faits de plusieurs agents peuvent être utilisés pour répondre entre autres à ces pro- blèmes. Après un bref rappel du modèle GDT, nous décrivons formellement comment le mo- dèle peut être étendu pour introduire nos nou- veaux agents. Dans la partie 4, nous présen- tons plusieurs cas typiques d’utilisation. Dans la partie 5, nous présentons la modélisation des communications ainsi que leur intégration dans un GDT via ce mécanisme. Ensuite, dans la partie 6, nous présentons les conséquences de l’utilisation d’agents composés d’agents sur la preuve. Enfin, nous comparons cette proposition avec quelques travaux voisins.
2 Le modèle GDT
Le modèle GDT (Goal Decomposition Tree)
a été présenté notamment dans [8]. Dans ce
modèle, un agent, situé dans un environne- ment, est caractérisé principalement par un en- semble de variables internes, un invariant, un contexte de déclenchement et un comportement.
Ce comportement est décrit par un GDT consti- tué d’un but principal décomposé en sous-buts via des opérateurs spécifiques, correspondant à différents types de décomposition. Citons par exemple l’opérateur seqAND qui décompose la résolution d’un but en deux sous-buts séquen- tiellement, et l’opérateur iter qui spécifie qu’un but sera résolu en résolvant plusieurs fois de suite un sous-but. Dans le modèle GDT, un but est défini par une Condition de Satisfaction (SC). C’est une formule de la logique du pre- mier ordre où les variables primées (respective- ment non primées) sont utilisées pour représen- ter les valeurs des variables après (respective- ment avant) le processus de résolution du but.
Ainsi, résoudre un but de SC x
′> x consisterait à augmenter la valeur de la variable x.
Un schéma de preuve est associé à chaque opérateur de décomposition afin de vérifier que chaque décomposition de but est valide. Ces schémas de preuve, appliqués à un GDT donné, permettent de générer des obligations de preuve, prédicats qui doivent être prouvées afin que la correction du comportement de l’agent spécifié par le GDT soit établie. Le processus de preuve se place dans un modèle d’exécution de type pa- rallélisme par entrelacement.
Une autre caractéristique intéressante du mo- dèle GDT est de permettre la spécification de buts dont la résolution peut échouer (buts NNS
1). Ceci est utile par exemple lorsqu’un agent dispose, pour exécuter une même tâche, d’une méthode peu fiable mais peu coûteuse et d’une seconde méthode très fiable mais très coû- teuse. Une GPF (Guaranted Property in case of Failure) est associée à chacun des buts. C’est une formule logique qui permet de connaître les propriétés qui sont vérifiées en cas d’échec de la résolution du but. Ces GPF sont utilisées durant le processus de preuve.
Dans [8], deux extensions du modèle sont pro- posées : la première concerne les GDT paramé- trés permettant de spécifier des comportements réutilisables. La seconde porte sur les buts ex- ternes qui permettent de formaliser des interac- tions entre agents.
Plus récemment, le modèle GDT a été étendu [7] pour spécifier plus facilement des systèmes multi-agents et non plus seulement des
1but Non Nécessairement Satisfaisable
agents. Cette extension, appelée GDT4MAS, in- troduit les notions de type d’agents et d’instance d’agents. Dans cette extension, on n’associe plus un GDT à un agent mais un GDT para- métré à chaque type d’agents. Plusieurs agents d’un même type peuvent ensuite être définis dans le SMA. A chacun de ces agents sera as- socié un GDT obtenu à partir du GDT para- métré associé au type auquel il appartient. Cette extension introduit également la notion de va- riables de surface. Il s’agit d’un sous-ensemble des variables internes d’un agent a que les autres agents peuvent cependant lire.
3 Extension de GDT4MAS pour spécifier des agents constitués d’agents
Un agent contenu dans un autre agent est un agent à part entière. C’est donc une instance d’un type d’agent auquel correspond un GDT.
Il a un invariant, dispose d’un ensemble de va- riables internes et s’exécute selon un modèle de parallélisme avec entrelacement.
Un agent contenant des agents est aussi un agent à part entière. Par conséquent, le fait qu’il soit composé d’agents n’est pas visible pour les autres agents du système dans lequel il se trouve. Cette propriété est fondamentale pour préserver l’aspect compositionnel du modèle GDT et nous distingue de la notion d’agent ho- lonique définie dans [1].
L’objectif initial de l’introduction de sous- agents est de permettre à un agent d’exécu- ter plusieurs tâches "en parallèle". En effet, les agents contenus dans un agent A (sous-agents de A) doivent contribuer aux tâches de A. Pour assurer cela, nous avons introduit de nouveaux opérateurs de décomposition de buts. Avant de présenter ceux-ci en détails, nous allons d’abord formaliser le fait qu’un agent S soit un sous- agent d’un agent A.
Soit A un agent situé dans un environnement E.
Soit S un sous-agent de A. Les propriétés sui- vantes doivent être vérifiées :
– S ne peut pas être en même temps un sous- agent d’un autre agent. Cette caractéristique diffère d’autres modèles d’agents imbriqués tels que celui présenté dans [5],
– S ne peut pas percevoir les variables de E que A ne perçoit pas,
– les variables internes de A doivent être consi-
dérées par S comme des variables d’environ-
nement car elles peuvent être modifiées par
d’autres sous-agents de A,
– S doit pouvoir échanger de l’information avec d’autres sous-agents de A.
– comme tout agent GDT, S existe tout au long de l’exécution du système, mais son GDT n’est pas forcément exécuté en permanence (voir plus loin).
Nous devons maintenant décrire la structure du modèle d’un agent composite. Rappelons la dé- finition d’un type d’agent (voir [7] pour plus de détails) :
Definition 1 Type d’agent Soit E un environ- nement. Un type d’agent t est un tuple :
( name
t, V t
i, V t
s, V t
E, init
t, I
t, L
t, S
t, Actions
t, Beh
t)
où :
– name
test le nom du type,
– V t
i, V t
set V t
Esont les ensembles des va- riables internes, de surface et d’environne- ment,
– init
test l’initialisation des variables in- ternes,
– I
test une propriété d’invariance,
– L
test l’ensemble des propriétés de type
"leads-to" associées au type,
– S
test l’ensemble des propriétés stables, – Actions
test l’ensemble des capacités, – Beh
test le comportement associé (GDT).
Comme le montre la définition précédente, un type d’agent est situé dans un environnement défini de la manière suivante :
Definition 2 Environnement Un environne- ment est un triplet E = ( V
E, I
E, s
E), avec : – V
Eles variables de cet environnement, – I
El’invariant de l’environnement,
– s
Eles propriétés stables de l’environnement.
A partir des définitions 1 et 2, on peut déduire qu’un type d’agent peut être vu comme un envi- ronnement E
t= (V
Et, I
Et, s
Et) avec
(V
Et= V t
i∪ V t
E, I
Et= I
t∧ I
E, s
Et= S
t)
3.1 Relation entre un agent et ses sous- agents
Afin de conserver une certaine homogénéité dans la terminologie, nous avons choisi de réuti- liser les termes présentés dans [5] même si leur sémantique est différente, comme nous le décri- vons ci-dessous.
Definition 3 Agent contexte Soit A et a 2 agents avec a sous-agent de A. A est nommé agent contexte de a.
Definition 4 Agent contenu Soit A et a 2 agents avec a sous-agent de A. a est nommé agent contenu de A.
Un des points communs entre les différentes dé- finitions d’agent est que les agents sont des en- tités autonomes [2, 11]. C’est aussi notre point de vue. Cependant, comme les agents contenus doivent contribuer à la résolution des buts de leur agent contexte, il semble naturel de don- ner à cet agent contexte un certain contrôle sur ses agents contenus. Voici de quelle manière ce contrôle peut s’effectuer :
– l’agent contexte décide quand ses agents contenus doivent exécuter leur GDT
2; – bien qu’un agent contenu puisse arrêter l’exé-
cution de son GDT quand il le décide, son agent contexte peut aussi le forcer à stopper cette exécution.
Ce contrôle par l’agent contexte s’effectue dif- féremment selon l’opérateur de décomposition utilisé. Ces opérateurs sont présentés dans la partie suivante.
3.2 Opérateurs de décomposition parallèle (PDO)
3.3.1 Définition informelle.
Dans le modèle actuel, les opérateurs de décom- position permettent de décomposer un but en un ou plusieurs sous-buts. Nous avons mainte- nant besoin d’opérateurs permettant, pour la ré- solution de certains buts, d’introduire des agents contenus et donc en quelque sorte de décom- poser l’agent courant en sous-agents. Plus pré- cisément, comme les agents contenus doivent contribuer à la résolution du but courant de leur agent contexte, ces opérateurs vont permettre de décomposer un but de l’agent contexte en sous- buts qui vont être pris en charge par des agents contenus (et vont pouvoir ainsi être exécutés en parallèle). Plus formellement :
Definition 5 Opérateur de décomposition pa- rallèle Soit A un agent contexte et ca = {a
i, 1 ≤ i ≤ n} l’ensemble des n agents contenus de A.
Un Opérateur de Décomposition Parallèle est un opérateur permettant de décomposer un but G de A en une liste de paires ( SC
j, a
j) où a
jest un agent appartenant à l’ensemble ca et où SC
jest la condition de satisfaction du but principal (but racine du GDT) de a
j.
2Rappelons qu’un agent GDT classique commence son exécution lorsque son contexte déclencheur devient vrai et la stoppe lorsque le parcours du GDT est achevé.
Pour simplifier la formulation, par la suite, nous écrirons qu’un but est décomposé en sous- agents par un PDO. Nous avons actuellement défini deux PDO que nous décrivons informel- lement ci-dessous :
Definition 6 PDO ParAND Le PDO ParAND (Parallel And) permet de décomposer un but G d’un agent contexte A en un ensemble d’agents contenus ca avec la sémantique suivante : dès que A doit résoudre le but G, les agents conte- nus de l’ensemble ca commencent leur exécu- tion. Dès qu’un de ces agents se termine en échec (son but principal n’est pas résolu), A stoppe tous ses autres agents contenus (ie. les agents de ca) et le processus de résolution du but G s’arrête, qu’il soit résolu ou non. Par contre, si tous les agents de ca se terminent en succès (ils ont résolu leur but principal), le pro- cessus de résolution de G se termine et G est résolu.
Definition 7 PDO ParOR Le PDO ParOr (Pa- rallel Or) permet de décomposer un but G d’un agent contexte A en un ensemble d’agents contenus ca avec la sémantique suivante : dès que A doit résoudre le but G, tous les agents contenus (de l’ensemble ca) commencent leur exécution. Dès qu’un de ces agents se termine en succès (son but principal est résolu), A stoppe tous les autres agents de ca. Le processus de résolution de G se termine et G est résolu. Si tous les agents de ca se terminent en échec (au- cun n’a réussi à satisfaire son but principal), le processus de résolution de G se termine. Dans ce cas, G peut être résolu ou non.
3.3.2 Sémantique formelle.
Nous pouvons à présent spécifier formellement la sémantique des opérateurs ParAND et Pa- rOR. Rappelons tout d’abord que chaque but G d’un GDT est caractérisé par les variables sui- vantes [8] :
– init
Gqui est vraie dans l’état où l’agent doit résoudre le but G ;
– in
Gqui est vraie durant tout le processus de résolution de g ;
– end
Gqui est vraie dans l’état où le proces- sus de résolution de G se termine (et devient fausse dans l’état suivant) ;
– sat
Gqui est vraie quand le processus de réso- lution du but G se termine en succès (ce qui signifie que SC
Gest satisfaite).
Ces variables ont été utilisées au sein d’un en- semble de formules LTL [6] permettant de spé- cifier une sémantique formelle pour les opé- rateurs de décomposition standards du modèle
GDT et de vérifier la correction des schémas de preuve associés.
On suppose maintenant que le but à décompo- ser d’un agent contexte est G et que le proces- sus de résolution de ce but implique n agents contenus a
i. Le but principal de chaque agent a
iest noté mg
iassocié à une condition de sa- tisfaction notée SC
i. Pour les nouveaux opéra- teurs de décomposition, nous devons introduire de nouvelles variables notées ended
i. Ces va- riables mémorisent, pour chaque agent contenu a
i, le fait que cet agent s’est terminé ou non.
Ainsi, ended
iest vraie si et seulement si l’exé- cution de l’agent a
is’est déjà terminée depuis le début du processus de résolution du but G.
La valeur des ces variables peut être calculée grâce aux formules suivantes :
init
G→ ¬ended
i(1)
¬ ended
i∧ ◦¬ end
mgi→ ◦¬ ended
i(2) end
mgi→ ended
i(3) ended
i∧ in
G→ ◦ ended
i(4) La règle 1 spécifie que lorsque le processus de résolution de G commence, aucun agent contenu ne peut s’être terminé. La règle 2 spé- cifie qu’un agent contenu ne peut pas avoir ter- miné son exécution s’il n’a pas terminé la réso- lution de son but principal. La règle 3 spécifie qu’un agent contenu se termine lorsque la réso- lution de son but principal est terminée. Enfin, la règle 4 spécifie que, pendant le processus de résolution de G, un agent contenu qui se termine reste dans l’état "terminé" jusqu’ à la fin du pro- cessus de résolution de G.
La sémantique formelle de l’opérateur parAND est donnée dans la table 1.
Les règles 5 à 9 correspondent à la sémantique classique d’un opérateur de décomposition telle que définie dans le modèle GDT [8].
Les autres formules sont plus spécifiques à l’opérateur ParAND.
– la formule 10 spécifie que tout agent contenu (introduit par l’opérateur) commence son exé- cution lorsque le processus de résolution de G commence ;
– la formule 11 spécifie que si l’un des agents
contenus se termine en échec alors le proces-
sus de résolution de G ainsi que l’exécution
des autres agents contenus sont interrompus ;
– la formule 12 spécifie que si tous les agents
contenus se terminent en succès, alors le pro-
cessus de résolution de G se termine éga-
lement en succès. (si un agent se termine
✷( init
G→ in
G) (5)
✷( in
G∧ ¬ end
G→ ◦ in
G) (6)
✷ (¬init
G∨ ¬end
G) (7)
✷((¬in
G∧ ◦(¬init
G)) → ◦(¬in
G)) (8)
✷ (end
G→ ◦¬in
G) (9) init
G→
n
^
i=1
(init
mgi) (10)
∀i.
(end
mgi∧ ¬sat
mgi) →
end
G∧ (∀ j. (¬ ended
j→ end
mgj))
∀i.(ended
i) (11)
∀i.(end
mgi→ sat
mgi)
→ (end
G∧sat
G) (12) T AB . 1 – Sémantique formelle de ParAnd en échec, la règle 11 arrête automatiquement tous les autres).
Pour des raisons de place, la sémantique for- melle de l’opérateur parOr n’est pas donnée.
4 Schémas types d’utilisation des PDO
Dans les schémas suivants, on emploie les sym- boles déjà utilisés pour représenter des buts : une ellipse pour un but classique, et un rec- tangle pour un but externe. Nous représente- rons les noeuds fils des PDO par des hexagones notés Agt : SC où Agt est l’agent contenu et SC est la condition de satisfaction de son but racine. L’utilisation typique de l’opérateur Pa- rAND sera par exemple représentée comme sur la figure 1.
F IG . 1 – Utilisation typique de l’opérateur Pa- rAND
4.1 Plusieurs effecteurs autonomes
La première utilisation directe de ParAND est de permettre à un agent d’exécuter plusieurs tâches simultanément. Ceci est, par exemple, nécessaire pour un robot possédant plusieurs ef- fecteurs agissant indépendamment les uns des
autres, comme un système de déplacement au- tonome et une caméra : le robot peut vouloir se déplacer pendant qu’il observe son environne- ment. Dans ce cas, un agent contenu peut être associé à chaque effecteur. Par rapport à la fi- gure 1, l’agent A
1pourra ainsi être associé à la gestion du déplacement et l’agent A
2sera asso- cié à l’effecteur caméra.
4.2 Plusieurs buts d’achèvement
Une autre utilisation très directe de l’opérateur ParAND est la suivante : un agent a plusieurs but d’achèvement à résoudre. Avec le modèle GDT précédent, cela ne pouvait être réalisé que très difficilement. Avec une décomposition en sous- agents, une solution plus intuitive peut être ap- portée à ce problème (voir figure 1). Dans cette solution, deux agents contenus (dont les GDTs ne sont pas représentés sur la figure) sont char- gés de résoudre chacun des deux buts d’achève- ment que leur agent contexte doit résoudre.
4.3 Permettre l’interruption d’une tâche par la survenue d’un événement
Supposons qu’un agent A doive résoudre une
tâche T décrite par une partie de son GDT (cette
tâche correspond donc à la résolution du but
racine de ce sous-GDT). Supposons également
que des événements externes puissent rendre
la résolution de cette tâche non pertinente (car
plus réalisable ou devenue inutile) ce qui né-
cessite l’interruption du processus de résolution
du but associé. Ces événements peuvent être
l’arrivée d’un message ou encore une évolution
particulière de l’environnement. La gestion de
cette contrainte peut être implantée via des sous-
agents GDT en utilisant une structure générale
de GDT telle que celle présentée dans la figure
2. Dans cette figure, l’agent A est composé de
deux agents contenus. Le premier, A
T, est dédié
à la résolution du but associé à la tâche T . Le
second, A
E, est chargé de détecter la survenue
d’événements E qui pourraient rendre la tâche
T non pertinente. Par exemple, l’agent A pour-
rait avoir en charge d’aller ramasser un déchet
(tâche que A
Tdoit effectuer). Si entre temps,
ce déchet a disparu, parce qu’un autre robot,
par exemple, est passé le ramasser (événement
détecté par A
E), la tâche T devient inutile. Le
comportement attendu de A est le suivant : si
T est réalisée avant la survenue de E , alors
le but associé à T est résolu. Par contre, si E
se produit avant la fin de la réalisation de T ,
le processus de résolution du but associé à T
doit être interrompu. Un tel comportement cor-
respond à la sémantique de l’opérateur ParOR.
Le comportement de l’agent A
Eest très simple : son GDT contient un seul noeud, son but ra- cine, qui est aussi un but externe (et donc un but feuille) consistant à se mettre en attente de l’événement externe.
F IG . 2 – Comportement interruptible 4.4 Faire cohabiter des comportements ré-
actifs et cognitifs
Supposons qu’un agent A ait un comportement cognitif. Supposons qu’au cours de ce compor- tement, cet agent doive aussi réagir à des évé- nements externes. Un tel agent peut-être dé- composé en deux agents contenus. Le premier, A
Csera en charge de l’exécution du compor- tement cognitif de A. Le second, A
Rsera en charge du comportement réactif. On peut suppo- ser que la terminaison du comportement cognitif est susceptible d’entraîner la fin de l’exécution de l’agent A. Par conséquent l’agent A
Rdoit rester actif tant que l’agent A
Cn’a pas complè- tement terminé son exécution. Ce scénario peut être implanté par les structures de GDT présen- tées sur la figure 3 pour l’agent A et sur la fi- gure 4 pour l’agent A
R.
F IG . 3 – Comportement réactif et cognitif On remarque que la SC du but racine de A
Rest f alse ; ceci permet en effet à cet agent de s’exé- cuter tant qu’il n’est pas interrompu (via la sé- mantique de l’opérateur parOR) suite à la termi- naison de A
C. Cette solution implique d’autori- ser que le but parent d’un opérateur de décom- position de type iter soit non nécessairement satisfiable (NNS) ce qui n’était pas le cas jus- qu’à présent (voir partie 6). Ceci peut être fait dans ce cas car la terminaison est tout de même
F IG . 4 – GDT de A
Rgarantie. En effet l’exécution de A
Cse termi- nera effectivement un jour et cela entraînera la fin de l’exécution de A
R.
On notera aussi que la survenue d’un événement est représentée par un but externe matérialisant le fait que l’agent A
Rne va pas générer cet évé- nement mais le détecter. Enfin, SC
Rest la SC du but racine du sous-GDT permettant de traiter l’événement.
5 Prise en compte des communica- tions
Dans cet article, nous présentons une version simplifiée d’un protocole de communication.
Tout d’abord seules les communications "point à point" sont étudiées (et donc pas de commu- nication de type "broadcast"). Nous supposons également que chaque agent dispose d’une file d’attente de messages de taille infinie dans la- quelle tous les messages qui arrivent restent sto- ckés jusqu’à ce qu’ils soient lus par l’agent. En- fin, nous supposons que les messages sont lus dans l’ordre dans lequel ils sont arrivés et que le fait de lire un message le supprime de la file d’attente.
5.1 Envoyer un message
Nous avons choisi de spécifier l’envoi d’un mes-
sage par une action atomique send ( dest, msg )
où dest est l’identifiant de l’agent auquel le mes-
sage est envoyé. Cette action ajoute à la fin de
la file d’attente de messages de l’agent dest le
couple (f rom, msg) où f rom est l’identifiant
de l’agent émetteur et msg est le message lui-
même. Comme tout agent peut écrire un mes-
sage dans la file d’attente d’un agent donné,
cela implique que les files d’attente doivent être
considérées, pour la preuve, comme des va- riables d’environnement. Par conséquent, nous avons choisi de représenter l’ensemble des files d’attente par une unique variable fonctionnelle de l’environnement
3notée mq. Rappelons ([7]), que A est une variable d’environnement conte- nant l’ensemble des agents du SMA considéré.
Le type de mq est donc :
mq ∈ A → seq (A × M SG )
où M SG est le type d’un message et seq est un constructeur de séquence dans la théorie des ensembles. Par conséquent, utiliser l’ac- tion send(dest, msg) pour un agent a est un raccourci pour l’expression suivante (dans la- quelle • dénote l’ajout en fin de liste) :
mq
′(dest) = mq(dest) • (a, msg)
5.2 Lire un message reçu
Pour un agent a, lire les messages reçus consiste à lire la tête de mq(a). Cela est réalisé par une action notée (sender’,msg’)=received() qui ren- voie deux valeurs : l’identifiant de l’émetteur du message et le message lui-même. Cette action est un raccourcis pour l’expression suivante : ( sender
′,msg
′)= head ( mq ( a ))∧ mq
′= tail ( mq ( a )) Par convention, si mq(a) est une liste vide, head(mq(q)) est égal à (null, null) et tail(mq(a)) est une liste vide.
5.3 Gérer les communications
Etant données les primitives précédentes, la ges- tion de l’envoi de messages est triviale : l’action send doit être associée à un noeud feuille du GDT de l’agent à l’endroit correspondant au moment où le message doit être envoyé. L’at- tente d’un message est également simple à spé- cifier : il suffit d’introduire dans le GDT un but externe permettant d’attendre l’arrivée d’un message dans la file d’attente.
Le modèle des sous-agents permet d’apporter une solution beaucoup simple et efficace pour la réception des messages : on peut en effet utiliser le schéma type appelé faire cohabiter des com- portements cognitif et réactif présenté dans la partie 4.4 en remplaçant le but externe du GDT de l’agent contenu A
R(voir figure 4) par un but feuille auquel est associée l’action received().
3cette variable n’est utilisée que pour la preuve. Concrètement, la file d’attente d’un agent doit être une variable de l’agent.
6 Schémas de preuve
Pour des raisons de place, nous ne donnons ici que les règles de preuve de l’opérateur ParAND.
6.1 Statut des variables
Soit A un agent contexte et b, c 2 agents conte- nus de A. Comme vu précédemment, les va- riables internes de A ainsi que les variables d’environnement perçues par A sont considé- rées comme étant les variables d’environnement perçues par b et c. De plus, b peut avoir ses propres variables internes qui ne peuvent être ni perçues ni modifiées par c ou A. Cependant, b peut avoir des variables de surface qui, par défi- nition, peuvent être perçues par c et A.
6.2 Relations entre agents
Un agent contenu représente une partie de l’agent dans lequel il s’exécute. Par conséquent, dans ce modèle, un agent contenu appartient à un et un seul agent contexte. Cela implique que la structure logique des SMA considérés est arborescente.
6.3 Schémas de preuve de ParAND
Quand un but G d’un agent A est décomposé en sous-buts par l’opérateur ParAND, chaque sous- but est pris en charge par un agent contenu a
ide l’agent A. Cet opérateur implique que si tous les agents contenus résolvent leur but principal, alors le but G est lui aussi résolu. On pourrait donc s’attendre à un schéma de preuve du type : V (SC
i) → SC
G(où SC
iest la condition de sa- tisfaction du but principal de l’agent a
i).
Mais nous devons prendre en compte les deux contraintes suivantes :
– les agents contenus ne se terminant pas for- cément en même temps, les variables d’envi- ronnement de ces agents peuvent être modi- fiées entre la fin d’un agent contenu et la fin de l’agent contenu qui se termine en dernier.
– les variables internes des agents contenus ne peuvent pas être perçues par l’agent contexte auquel ils appartiennent.
Par conséquent, dans le schéma de preuve de
l’opérateur ParAND, la condition de satisfac-
tion du but principal de chaque agent contenu
doit être restreinte à ses variables de surface (qui
sont les seules sur lesquelles on puisse faire des
hypothèses). Donc, si l’on note P
sla projec-
tion d’une propriété P d’un agent a sur ses va-
riables de surface, la première partie du schéma
de preuve associé à ParAND permettant de sa-
tisfaire la règle 12 est la suivante :
n
^
i=1
(SC
is) → SC
G(13)
De plus, il faut vérifier que la règle 10 est satisfaite. Elle spécifie que lorsqu’un agent contexte doit résoudre le but G, chaque agent contenu doit commencer l’exécution de son GDT. D’après la définition du contexte déclen- cheur d’un GDT spécifiée dans [8], cela peut être vérifié en prouvant que le contexte de preuve C
G[8] du but parent G de l’opérateur pa- rAND implique le contexte déclencheur (T C
i) du GDT de chaque agent contenu a
i4. Par consé- quent, la second partie du schéma de preuve as- socié à l’opérateur parAND est :
C
G→
n
^
i=1
(T C
i) (14)
6.4 Inférence de la satisfiabilité
Comme décrit dans [8], les buts d’un GDT peuvent être Nécessairement Satisfaisable (NS) ou non (NNS) et cette satisfaisabilité est infé- rée à partir des buts feuilles. Nous devons donc fournir des règles pour inférer cette satisfaisabi- lité pour les PDO, et notamment pour l’opéra- teur ParAND.
Inférence de la satisfiabilité pour ParAND. Le but parent d’un opérateur ParAND est NS si tous les buts principaux des agents contenus introduits par l’opérateur sont NS.
6.5 Règles de propagation des GPF
Une GPF (Guaranted Properties in Case of Fai- lure) est une propriété qui est toujours vérifiée lorsque le processus de résolution du but auquel elle est associée échoue. Comme présenté dans de précédents articles sur le modèle GDT [8], elles peuvent être inférées du bas vers le haut de l’arbre. Ce processus doit être étendu pour les PDO.
Inférence de la GPF pour ParAND. Le but pa- rent de l’opérateur parAND échoue dès qu’un des agents contenus introduits par l’opérateur échoue dans la résolution de son but principal.
On a donc la propriété suivante : GP F
G=
n
_
i=1
( GP F
is,e) (15)
4Autrement dit, on se trouve dans un contexte d’exécution impli- quant le déclenchement de l’exécution des GDT desai.