
Préparé par : Abbas SLIMANI
Master recherche en Informatique – Université Paris XI
- Orsay
3.1 La librairie des composants
« Agent component library»:
3.2 Le logiciel/programme de
construction d’agents « Agent Building Software » :
3.2.1 La méthodologie de développement
d’agents Zeus :
3.2.2 Le logiciel/programme de
génération d’agents «The Zeus agent generator software »:
3.3 Les outils de visualisation :
Les développeurs devraient
passer moins de temps à se soucier des détails et des spécificités d’une
technologie particulière, et plus de temps à concevoir et implémenter des
solutions à leurs problèmes. C’est pour cela que les chercheurs dans le domaine
des systèmes multi-agents essayent de répondre au besoin en développant des
méthodologies et des outils pour la construction des systèmes multi-agents et
comme les librairies de langages de programmation ont tendance à ne pas inclure
des concepts relatifs aux applications à base d’agents, beaucoup d’outils et de
frameworks d’un degré de sophistication varié ont
récemment vu le jour pour assister le développement d’agents.
La philosophie de passage des
solutions spécifiques et particulières aux frameworks,
architectures et méthodologies générales était la principale motivation du
développement de la plate-forme ZEUS. L’intention était de faciliter
l’ingénierie des futures applications à base d’agents en fournissant une
librairie de composants, ensemble avec une méthodologie de développement qui
décrit comment les agents peuvent être construits en utilisant les composants
de la librairie.
Cependant il existe plusieurs types d’agents. L’outil Zeus a été développé pour assister la création des systèmes multi-agents collaboratifs – Des systèmes comprenant une communauté d’agents qui travaillent ensemble pour atteindre des objectifs partagés.
Les
agents collaboratifs, que Zeus construit, sont des agents à gros grain,
typiquement larges qui marient autonomie et coopération avec d’autres agents.
Ils sont mis en œuvre généralement dans des environnements ouverts avec des
contraintes sur le temps. Ils coopèrent parce que chaque agent possède des compétences, des
informations ou des ressources limitées et en regroupant leurs capacités, ils
sont capables de résoudre des problèmes qu’un seul agent ne pourrait pas
résoudre. Voici, en général, les caractéristiques essentielles des agents
collaboratifs :
-
Ils doivent être capables de
communiquer - Cela étant un défi ou un problème à résoudre, exigeant non
seulement un protocole commun de transport (comme TCP/IP), mais aussi un
langage commun de communication inter-agent et une
ontologie partagée qui représente les concepts du domaine communiqués.
-
Ils doivent être capables de
raisonner – Quand le contrôle d’une ressource (par exemple : un service ou
une addition) est délégué à un agent, alors il aura besoin d’une intelligence
suffisante pour décider quand libérer la ressource aux utilisateurs potentiels,
ou utiliser la ressource pour atteindre un but : par conséquent les agents
collaboratifs requirent un moyen pour déterminer comment atteindre leur but en
utilisant leurs ressources limitées.
- Ils doivent être capables de coopérer – Comme un simple agent possède des compétences, des ressources ou des informations limitées, il ne sera capable de résoudre qu’une petite portion d’un grand problème, et un agent collaboratif confronté à un problème, qu’il ne peut pas résoudre seul , doit trouver d’autres agents qui possèdent la capacité requise, négocie avec eux, et finalement leur délèguent la tâche, cela requiert un moyen pour coordonner le comportement des différents agents pour qu’il puissent agir d’une manière cohérente.
L’outil Zeus a été motivé par le
besoin de fournir un plateforme de construction d’agents collaboratifs
générique, personnalisable et scalable. L’outil est
package de classes implémentées en Java, lui permettant de s’exécuter sur une
variété de plateformes. Java est un langage idéal pour le développement des
applications multi-agents parce qu’il est orienté-objet
et multi-threadé, et un agent consiste en un ensemble
d’objets et de threads. Java a aussi l’avantage
d’être portable sur une variété de systèmes d’exploitation et fournit des
librairies de classes permettant de faciliter les communications réseau.
Les
classes de Zeus peuvent être catégorisées en trois groupes fonctionnels – Une
librairie de composants, un outil de construction d’agents et un outil de
visualisation d’agents (les principaux groupes sont illustrés dans la figure
1).

Figure 1. Les composants de Zeus
1)
La librairie de composants est un package
de classes java qui forment les blocks ou des briques de construction
« Building blocks» des agents individuels. Ensemble ces classes
implémentent les fonctionnalités requises pour un agent collaboratif. Pour la
communication l’outil fournit :
-
Un langage de communication inter-agent.
-
Le stockage et la représentation des
connaissances en utilisant les ontologies.
-
Un système d’acheminement des messages
asynchrone à base de sockets.
Pour
maximiser la compatibilité future, Les composants de Zeus utilisent une
technologie standard là où c’est possible, par exemple : les
communications utilisent les sockets TCP/IP en
utilisant un langage basé sur le langage KQML (the Knowledge Query Management Language).
Pour doter
les agents de fonctionnalités de raisonnement, l’outil fournit :
-
Un système de planification et
d’ordonnancement générique.
-
Un modèle d’évènements avec une API
(Application Programming Interface) permettant aux
développeurs de gérer les changements de l’état interne d’un agent et de
contrôler extérieurement son comportement.
Pour
permettre la coopération inter-agent, l’outil
offre :
-
Un moteur de coordination qui contrôle le
comportement d’un agent – le fonctionnement du moteur est influencé par le
contexte des connaissances de l’agent, par exemple : les relations
organisationnelles avec les autres agents, les ressources, les compétences et
les stratégies de coopération disponibles.
Pour qu’un
agent puisse participer dans des interactions avec d’autres agents pour
atteindre un but, son moteur de coordination requiert une ou plusieurs
stratégies de comportement et une idée sur les relations de l’agent avec les
autres pairs; C’est pour cela que l’agent fournit aussi :
-
une librairie de protocoles de
coordination prédéfinis.
-
Une librairie de relations
organisationnelles prédéfinies.
Ensemble les
composants de la librairie de composants « Agent Component Library » permettent le développement d’agents
génériques qui peuvent être personnalisés pour des applications spécifiques en
le dotant de ressources, de compétences,
d’informations, de relations organisationnelles et de protocoles de coordination
relatifs au problème à résoudre.
La structure
d’un agent générique et les moyens par lesquels il peut être spécifié pour des
applications particulières sont décrits dans le paragraphe qui suit.
Chaque agent
Zeus est logiquement composé de trois couches - Une couche de définition,
une couche organisationnelle et une couche de coordination. La couche de
définition comprend les capacités de raisonnement, ses buts, ses ressources,
ses compétences, ses croyances, ses préférences, etc. La couche organisationnelle
décrit les relations de l’agent avec d’autres agents, par exemple : les
agences ou les groupes d’agents auxquels il appartient, ses croyances par
rapport aux capacités des autres agents et les relations autoritaires avec ces
agents. A la couche de coordination, chaque agent est considéré comme une
entité sociale, c’est-à-dire en terme de techniques de négociation et de
coordination qu’il possède. Les protocoles construits sur la couche de
coordination assurent la communication inter-agent,
pendant que l’API, résidant sous la couche de
définition, permet à l’agent d’être lié à des programmes externes.
La figure 2 montre comment ce modèle logique de l’agent est réalisé en
utilisant les classes de la librairie de composants Zeus. L’agent générique de
la figure 2 contient les composants suivants :
-
Une boite Mail « Mailbox» :
pour gérer les communications entre l’agent et les autres agents externes.
C’est une entité complexe consistant en plusieurs threads
comme le serveur, qui reçoit et stocke les messages entrants.
-
Le gestionnaire ou l’aiguilleur des
messages « Message Handler » : qui traite
les message entrants de la Mailbox et les redirigent vers les autres composants
de l’agent.
-
Le moteur de coordination : cette
partie de l’agent prend les décisions concernant les objectifs de l’agent, par
exemple : Comment devraient-ils être poursuivis (les objectifs), ou quand
est-ce qu’ils seront abandonnés ? Ce moteur est chargé de coordonner
toutes les activités de l’agent avec les autres agents en utilisant ses
stratégies de coordination connues. Cela permet non seulement de contracter et
déléguer les tâches, mais garantit que les agents travaillent conjointement
pour atteindre un but partagé d’une manière cohérente.
-
Modèle d’acquaintance (Contacts):
permet de décrire les relations de l’agent avec d’autres agents dans la
société, et ses croyances sur les capacités de ces agents-là.
-
Le Planificateur/Ordonnanceur : il
permet de planifier les tâches de l’agent basées sur les décisions prises par
le moteur de coordination et les définitions des tâches et des ressources
disponibles.
-
Une base de donnés de ressources :
Elle maintient une liste des ressources
disponibles à un agent particulier.

Figure – 2 le flot d’informations entre les
composants d’un agent Zeus
-
Une base de données des ontologies :
Cette base stocke les définitions logiques et chaque type de fait – ses
attributs légaux, l’intervalle de ses valeurs légales pour chaque attribut,
toute contrainte entre les valeurs des attributs, et toute relation entre les
attributs d’un fait et les autres faits. Les agents doivent utiliser les mêmes
informations ontologiques s’ils veulent se comprendre les uns les autres.
-
Une base de données « Tâche/planning
» : cette base fournit des descriptions logiques des opérateurs de
planification (ou les tâches) connues à l’agent. Elle stocke aussi un ensemble
de scripts que l’agent utilise pour réagir aux événements.
-
Un superviseur d’exécution : il
permet de démarrer, arrêter et superviser les programmes externes qui ont été
planifiés pour l’exécution ou la terminaison par le planificateur/ordonnanceur.
Il informe aussi le moteur de coordination du succès ou de l’échec des tâches
qu’il supervise.
Ces
composants génériques agissent ensemble pour construire un agent collaboratif
générique avec toutes les fonctionnalités requises, par exemple, les
communications sont assurées par la Mailbox et la base
de données des ontologies. La première (Mailbox) fournit à
l’agent la capacité de transmettre les messages dans un format universellement
reconnu pendant que la deuxième (base
de données des ontologies) permet à chaque agent de comprendre ce que
son correspondant lui communique. Une fois les agents peuvent communiquer, l’interaction
devient possible, ce qui permet à l’agent d’avoir un comportement sophistiqué
comme la négociation. Un tel comportement requiert un certain degré
d’intelligence qui est assuré dans les agents par le composant « planificateur/Ordonnanceur
» et les composants du moteur de coordination.
Les composants de la librairie peuvent être aussi utilisés pour implémenter des agents utilitaires standard « Utility agent », qui constituent une partie importante de la plateforme Zeus. Les agents utilitaires accomplissent un rôle de support ou d’assistance dans leur société et peuvent être utilisés par n’importe quelle application sans modification. Premièrement l’agent « serveur de nommage » fournit un service « Pages blanches », en associant à chaque nom d’agent son adresse réseau, son fonctionnement est similaire à celui des serveurs DNS d’Internet. Un autre agent utilitaire, le facilitateur, qui assure un service « Pages jaunes », il est utilisé par les agents pour rechercher d’autres agents qui sont capables de fournir un service particulier. Un troisième agent utilitaire, qui est le visualiseur, sera décrit ultérieurement.
La plateforme Zeus fournit des
classes implémentant les communications, le raisonnement et la coopération, et
laissant les développeurs se concentrer sur la définition de leurs agents
nécessaires pour leurs applications.
Comme beaucoup d’aspects de développement conventionnel des systèmes à base d’agents sont implémentés par Zeus, les développeurs ont besoin d’un moyen pour comprendre ce qu’est attendu d’eux. C’est pour cela que l’outil Zeus a été développé en parallèle avec une méthodologie de développement, le but était de fournir une méthodologie guidant les utilisateurs dans le processus de création des agents. Cette section décrit la méthodologie puis les éditeurs visuels fournis avec Zeus.
Une
méthodologie est un système de méthodes et de principes permettant d’orienter
ou de conduire un processus de production particulier. Une méthodologie permet
non seulement de faciliter la conception pour mener à bien un processus mais
elle recommande aussi des méthodes et des techniques qui devraient être
utilisées pour atteindre un objectif particulier. La méthodologie de conception
de Zeus cache la plupart des détails des systèmes multi-agents aux
développeurs, ce qui leur permet de se concentrer sur la résolution du problème
en question. Zeus se veut une plateforme permettant aux utilisateurs, qui ne
sont pas nécessairement experts en intelligence artificielle distribuée, de
construire facilement des applications à base d’agents.
La
figure suivante montre les six phases de la méthodologie de développement de la
plateforme Zeus. Ces phases sont dans l’ordre dans lequel elles sont abordées
du haut vers le bas de l’étude du domaine jusqu’à la génération du code.
-
La phase initiale est l’étude du domaine
et l’identification des agents, durant laquelle les développeurs analysent le
domaine du problème pour identifier les agents potentiels. Mais qu’est-ce qu’un
agent ? Cela dépend largement de la granularité à laquelle le domaine est
modélisé, mais les meilleurs candidats sont les entités qui sont autonomes, c’est-à-dire
qui sont principalement capables de fonctionner indépendamment de l’interaction
humaine, et celles qui sont sociales : c’est-à-dire capables d’interagir
intelligemment et constructivement avec d’autres agents ou humains.
-
Une fois les agents candidats identifiés,
la phase de définition des agents peut commencer. Durant cette phase, le
développeur identifie les attributs de chaque agent, et un ensemble initial de
ressources dont l’agent dispose et les tâches qu’il peut accomplir.
-
La phase de définition des agents
continue jusqu’à ce que les attributs, les ressources et les tâches de tous les
agents aient été identifiés. La phase suivante est l’organisation des agents où
le développeur identifie les acquaintances
(Contacts) de chaque agent. Quand un agent A fait connaissance avec un autre
agent B, les ressources, que l’agent
croit que l’agent B peut produire, sont spécifiées. Les agents qui sont définis
comme supérieurs à d’autres agents subordonnés peuvent déléguer des tâches à
leurs subordonnés.

Figure – 3. Les phases de la méthodologie
« Zeus »
-
Comme la phase d’organisation requiert
des informations sur les capacités des agents, cela peut être fait en
conjonction avec la phase de définition des tâches. Durant cette phase, les tâches
ayant été identifiées durant la phase de définition des agents sont définies en
terme de coût, de durée, de pré-conditions, de
produits et de contraintes. Les tâches peuvent être primitives (accomplie en
exécutant une fonction du domaine), ou résumés (c’est-à-dire une tâche complexe spécifiée
comme un graphe d’autres tâches).
-
Quand toutes les tâches et les acquaintances sont spécifiées, la phase de coordination des
agents peut commencer, ceci consiste à identifier les protocoles de
coordination appropriés que chaque agent requiert pour l’interaction sociale
avec d’autres agents durant l’exécution de ses tâches (devoirs – duties ). Par exemple : le protocole de
coordination Maître/esclave « Master/Slave » pour la
délégation des taches aux subordonnés. Comme les mécaniques de ces protocoles
sont intégrées dans Zeus, le développeur n’a qu’à décider quel est protocole
le plus approprié.
- La phase finale de la méthodologie est la génération du code et l’implémentation des tâches. Durant cette phase, l’outil de génération aura toutes les informations nécessaires pour générer automatiquement le code source des implémentations pour chaque agent. L’outil génère aussi le code des proxies pour les actions externes (par exemple : l’implémentation des corps des tâches et les accès aux bases de données).
Le générateur
d’agents Zeus est un ensemble d’éditeurs intégrés supportant la méthodologie de
développement Zeus. Pour faciliter leur utilisation, les éditeurs ont été
conçus pour permettre aux utilisateurs de créer d’une manière interactive des
agents en spécifiant visuellement leurs attributs. La version actuelle contient
les éditeurs suivants :
-
L’éditeur des ontologies : pour
définir les éléments ontologiques d’un domaine, c’est-à-dire les modèles
« templates » des faits légaux,
les attributs légaux de ces faits et
toute contrainte entre les attributs des faits.
-
L’éditeur des faits/variables : pour
décrire les instances spécifiques des faits et des variables, en utilisant les
modèles « templates » déjà créés
en utilisant l’éditeur des ontologies.
-
L’éditeur des descriptions des
tâches : pour définir les attributs des tâches, et pour permettre aussi la
composition des résumés de tâches, qui consiste en un ensemble de sous-tâches ordonnées (graphe de tâches).
-
L’éditeur de contraintes : appelé
par l’éditeur des tâches non seulement pour définir les restrictions
(contraintes) entre les pré-conditions et les faits
des tâches, mais il peut aussi contraindre les effets d’une tâche précédente et
les pré-conditions d’une tâche suivante dans une
description d’un graphe de tâches.
-
L’éditeur des organisations : pour
éditer les relations organisationnelles entre les agents.
-
L’éditeur de définition des agents :
pour décrire logiquement les agents, ce qui requiert le nommage
des tâches de chaque agent et la spécification de leurs ressources initiales.
- L’éditeur de coordination : pour la sélection d’un sous-ensemble de protocoles de coordination desquels chaque agent sera équipé.
Un problème
inhérent d’un système distribué comme une société d’agents est la visualisation
de son comportement, parce que les données, les contrôles et les processus
actifs sont tous distribués à travers la société. Par
conséquent, l’analyse et le déboguage des systèmes multi-agents sont
difficiles, du moment que chaque agent a seulement une vue locale de tout le
système. Par conséquent, c’est à l’utilisateur d’intégrer les grandes quantités
de informations limitées générées par chaque agent dans une structure
cohérente. L’outil Zeus fournit un agent utilitaire appelé le visualiseur qui peut être utilisé pour visualiser,
analyser ou déboguer les sociétés d’agents Zeus. L’agent visualiseur
est construit à partir des mêmes composants fondamentaux comme tout autre agent
Zeus. Il agit en interrogeant continuellement chaque agent sur ses états et
processus, il collecte et interprète les réponses pour créer un modèle à jour
du comportement collectif des agents. Ce modèle peut être visualisé avec des perspectives
différentes à travers les cinq outils de
visualisation, chaque outil illustre un aspect différent de la société des
agents.
-
Un visualiseur
de sociétés : visualise tous les agents et interrelations
organisationnelles – il peut aussi visualiser les messages échangés entre les
agents durant la résolution du problème.
-
Un visualiseur
de rapports ou états : visualise la décomposition ou la distribution des
tâches actives à travers la société et les états d’exécutions des différentes sous-tâches.
-
Un visualiseur
d’agents permet de visualiser les états internes des agents à être observés et
supervisés.
-
Un outil de contrôle est utilisé pour
examiner et/ou modifier à distance les états internes des agents individuels,
ce qui permet de redéfinir le comportement de l’agent à l’exécution en
utilisant cet outil pour modifier sa base de données des ressources ou des
tâches, ou organisationnelle, ou en redéfinissant ses stratégies de
coordination. Cet outil permet aussi de faciliter la gestion administrative par
exemple : les agents peuvent être arrêtés ou suspendus, et les buts ou
objectifs peuvent être ajoutés ou modifiés, etc.
-
Un outil de statistiques affiche les
statistiques individuelles de l’agent ou celles de la société dans une variété
de formats.
Cette
approche visualisation multi-perspective fournie par
les outils de visualisation donne aux utilisateurs la flexibilité de choisir ce
qui sera visualisé, comment le visualiser et quand il est visualisé. Les outils
de visualisation sont généralement utilisés en ligne pour visualiser les
interactions dans une société multi-agents. Cependant, les visualiseurs
de société, des rapports et des statistiques peuvent aussi opérer en mode hors
connexion (off-line) en enregistrant les
sessions des interactions des agents dans une base de données. Une fois
stockées, les sessions enregistrées peuvent être re-visualisées (comme les
enregistrements vidéo), en utilisant les boutons avance, rembobinage, avance
rapide et rembobinage rapide.
La
figure suivante présente une capture d’écran montrant trois fenêtres de
visualisation.

Figure 4. Trois fenêtres de visualisation, le visualiseur
de sociétés (en haut à gauche), l’outil de statistiques (au centre à droite),
l’outil de rapport ou d’états (en bas).
Ce
rapport a décrit la méthodologie et la
conception d’un outil destiné à la construction des systèmes multi-agents
collaboratifs. L’apparition de cet outil
était motivée par le besoin d’avoir des frameworks
génériques pour les applications à bases d’agents.
Il
existe d’autres plateformes de systèmes multi-agents pour construire des
agents de fonctionnalités et de
complexité différentes (Jade, AgentBuilder, etc.). Mais en ce qui concerne les
outils et les environnements de développement d’agents collaboratifs, on peut
citer un certain nombre de systèmes avec des objectifs généraux similaires à
Zeus, comme : dMARS, JAFMAS, KAoS
et JAFIMA.
En
utilisant Zeus, les développeurs des applications à base d’agents peuvent
adopter des solutions avec quelques défis techniques – Comme les langages de
communications inter-agent, la coordination,
coopération et négociation, programmation visuelle, planification et
ordonnancement, visualisation et représentation des connaissances en utilisant
les ontologies. On souhaite qu’une fois libérés de ces détails et spécificités
de ces technologies, les développeurs puissent consacrer leur temps précieux
aux spécificités de leurs problèmes, ce qui leur permet de produire de
meilleures applications multi-agents.