Préparé par : Abbas SLIMANI

Master recherche en Informatique – Université Paris XI - Orsay

                       

                       


 

 

1      Introduction : 1

2      Les agents collaboratifs : 1

3      L’outil Zeus : 2

3.1       La librairie des composants « Agent component library»: 3

3.2       Le logiciel/programme de construction d’agents « Agent Building Software » : 6

3.2.1        La méthodologie de développement d’agents Zeus : 7

3.2.2        Le logiciel/programme de génération d’agents «The Zeus agent generator software »: 9

3.3       Les outils de visualisation : 9

4      Conclusion : 11

 


1         Introduction :

         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.

Haut.


2         Les agents collaboratifs :

            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.   

 

Haut.


3         L’outil Zeus :

         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

 

         Haut.

3.1       La librairie des composants « Agent component library»:

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.       

Haut.

3.1       Le logiciel/programme de construction d’agents « Agent Building Software » :

         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.

Haut.

3.1.1       La méthodologie de développement d’agents 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).       

Haut.  

3.1.2       Le logiciel/programme de génération d’agents «The Zeus agent generator software »:

            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é.

Haut.

3.2       Les outils de visualisation :

            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). 

 

Haut.


4         Conclusion :

            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.