Jade

Un article de Agora2ia.


logo.jpg


Sommaire

Fiche

Produit Jade
Société Telecom Lab Italia (F. Bellifemine, G. Rimassa, A. Poggi, T. Trucco, G. Caire, F. Bergenti)
Version 3.3 (au 01/03/2005)
Prix License OpenSource
Catégorie Plateforme Java de développement et d'éxecution de SystemeMultiAgents.
Mots clefs Intelligence artificielle, agent, systèmes multi-agents, SMA, composant logiciel, informatique distribuée, protocole de communication, communication orientée messages.
WikiName EnvironnementDeDeveloppement, PlateformeIdeale, Java, InformatiqueDistribuee


Présentation

Jade (pour Java Agent DEvelopment Framework) est une plateforme Java de développement et d'éxecution de SystemeMultiAgents. Elle repose donc sur une communication indirecte par envois de messages asynchrones peer-to-peer.


Jade est en développement continu par la communauté JADE et disponible en OpenSource sous les termes du LGPL (GNU Lesser General Public License).


Les premiers articles concernant JADE datent de février 2000 et la première version (1.25) du 13/09/2000. Nous sommes actuellement en version 3.3 (depuis le 1er mars 2005), à raison d'au moins deux releases par an.


JADE est utilisé sur certains projets...

  • Même si JADE est un projet récent et a été conçu selon des critères davantage académiques qu'industriels, et même s'il n'a été distribué en Open Source que très récemment, il a été utilisé par de nombreux projets internationnaux. En particulier, il a été utilisé dans deux projets sponsorisés par Commision Européenne dans le cadre du programme IST (Information Society Technologies) : [LEAP] (Lightweight and Extensible Agent Platform) et [CoMMA] (Corporate Memory Management through Agents).
  • Cf. sur Who is using JADE (ancienement).


Enfin, critère de qualité non négligeable, il y a beaucoup de documents en ligne sur le site de jade dans la rubrique "papers", que ca soit des tutoriels ou des articles récents. De plus, de nouveaux documents viennent régulièrement étoffer cette liste. Références bibliographiques sur la plate-forme et les modèles qu'elle utilise :

Description

Nature

Environnement de développement de SMA compatible avec les spéc. FIPA2000 composé de :

  • un système d'exécution pour SMA (compatible FIPA)
  • une plate-forme Java de dévelopement de SMA en rendant accessible les fonctionnalités standards FIPA (FIPA standard assets)


Environnement

  • Configuration logicielle et matérielle : La plate-forme agent peut être distribuée sur plusieurs machines (ne partageant pas nécessairement le même OS). La configuration est alors réalisée par une GUI et ce quelque soit le moment (pendant l'exécution ou non)
  • Configuration logicielle nécessaire :la version 1.2 de JAVA (le run-time environement ou la JDK)
  • Langages utilisés : Java a été le langage de programmation choisi pour ses nombreuses spécificités attrayantes, particulierement adapté à la programmation orientée objet dans les environements hétérigènes distribués : Sérialisation d'objet, Reflection API et Remove Method Invocation (RMI).
  • Machines cibles : ???
  • Systèmes d'exploitation : Tous


L'agent

Généralités

  • Un agent par Thread.
  • Tout est objet : un agent est constiué de plusieurs classes, dont certaines clefs :
    • Tout agent hérite de la classe jade.core.Agent
    • Il utilise un ou plusieurs classe fille de jade.core.behaviours.Behaviour
    • L'identifiant d'un agent est une instance de la classe (jade.core.AID),
    • Les messages échangés héritent de (jade.lang.acl.ACLMessage)
  • Lancement d'un agent en ligne de commande et passage de paramètres.
  • ...


Comportement

La classe Behaviour à une structure et un mode de fonctionnement proche de celui d'un Test Case JUnit (junit.framework.TestCase). Il a en effet les méthodes setup et takeDown...


Il existe une série de comportements prédéfinis, ou plus exactement de types de comportements, selon si l’on souhaite des actions cycliques, retardées...

TODO


Best practice : Comportements

  • Quand on doit répéter une même action sur plusieurs items, à intervalles réguliers, il est recommandé de faire myAgent.addBehaviour(actionRepetitiveBehaviour) depuis une méthode onTick<tt> d’un <tt>TickerBehaviour
  • Pour associer une IHM à un agent on peut faire myGui.show() (où myGui est une IHM standard en Java/Swing) depuis le setup, et myGui.dispose() depuis la méthode Agent.takeDown()


La méthode Behaviour.block() permet de mettre l'agent en sommeil afin de ne pas consommer de ressources systèmes en attendant un nouvel événement (ou message), comme il pourrait le faire avec une boucle infinie. L'agent est alors dormant jusqu'à ce qu'il recoive un nouveau message dans sa mailbox.

Messages

Qui dit plate-forme de communication asynchrones par messages dit :

  • Mailbox
  • Notification de réception
  • Traitement (conditionnel)
  • Structure, format des messages : ACL, le standard FIFA
    • sender
    • receiver
    • performatives (intentions de communication) : {request, inform, query_if, cfp, propose, accept_proposition, reject_proposition
    • content
    • language
    • ontology


C'est très souvent le Behaviour qui crée le message, mais il délègue alors à l'agent l'envoi (Agent.send()), et la réception (Agent.receive()).

La méthode ACLMEssage.createReply() permet de créer un nouveau message dont certaines propriétés (comme le destinataire) sont déjà positionnées.

Comme nous l'avons déjà dit, l'une des forces de la POA par rapport à la POO, est l'aptitude d'un agent à refuser de considérer, de traiter des messages. Dans Jade cela se fait au moyen d'une instance de la classe jade.lang.acl.TemplateMessage que l'on passe en paramètre à la méthode Agent.receive().

Best Practice : receive / block

Il est recommandé de faire :

  • des appels à receive([MessageTemplate])...else...block dans la méthode Behaviour.action
  • et de réserver les appels à blockingReceive([MessageTemplate]) (bloquants) dans les méthodes setup et takeDown

Les agents "techniques" de Jade

Les agents que j'appelle "techniques" sont ceux fournis avec Jade, et qui sont autant d'outils au développement ou à l'éxecution :

  • RMA (Remote Monitoring Agent):
    • Examiner le service des pages blanches et ceux des autres plate-formes agents
    • contrôler le life-cylce des agents (création , migration d'agent... à distance)
    • activer/désactiver MTPs sur les containers
  • DF GUI
    • Examine le service des pages jaunes
    • Examine les DF (ou fédération de DF créés)à distance
  • Dummyagent
    • envoyer/recevoir stocker/sauvegarder les ACL messages
  • Sniffer Agent
    • écouter, débugger, sauvegarder en fichier les conversations multi-agent
  • Introspector Agent
    • pour débugger un agent : liste des messages envoyés/reçus, liste des comportements, ...
  • Socketproxyagent
    • Agent Jade qui peut être exécuté pour communiquer avec des clients distants via un socket


Service des pages jaunes

  • Nom du service : Yellow Pages
  • Nom de l'agent dans Jade : DF
  • Toujours un DF par défaut dans le conteneur principal
  • Possibilité de fédérer plusieurs DF sur plusieurs plates-formes
  • dialogue avec DF via des messages ACL spécialisés :
    • content language : SL0
    • ontologie : FIPA Agent Managment Ontology
  • Dans Jade, utiliser le jade.domain.DFService pour chercher et/ou publier des services dans un DF
  • Problématique de la compréhension :
    • Même moyen de recherche : mail, PTT...
    • Même langage de recherche : employé les mêmes mots, le même champs lexical.
  • Système de souscription pour être notifié à l’arrivée d'un nouveau service dans le DF


Best Practice : le DF

Il est recommandé de faire :

  • Faire un register dans le setup, et un deregister dans le takeDown,
  • Vérifier l'existence d’un service/agent à l'utilisation après l'avoir récupéré dans le DF.


Structure

Chaque environnement d'execution de JADE est appelé conteneur (container)

  • Chaque conteneur contient un ou plusieurs agent(s).
    • Chaque agent est constitué de plusieurs classes...


Un conteneur par machine.


Lorsque l'on lance un conteneur :

  • soit il est seul, il devient alors le conteneur principal (main container)
  • soit on lui indique l'adresse du conteneur principal


L'ensemble des conteneurs forme la plateforme d'execution JADE.


Le conteneur principal contient les "agents de services" de la plateforme :

  • Le "système de contrôl des agents" ou Agent Management System (AMS) : "pages blanches" ou naming service de la plateforme. C'est l'autorité du système : il a le droit de vie ou de mort sur les agents des conteneurs de la plate-forme. Grâce à lui un agent peut trouver l'autre agent qui lui fournira le service dont il a besoin pour atteindre son but. Se pose alors le problème du formalisme « standard » de description des services.
  • Le Directory Facilitator (DF) ou "pages jaunes".

Conteneurs

Lancer le conteneur principal :

java jade.Boot

Lancer un conteneur secondaire :

java jade.Boot -host 192.168.11.56 -container


Résumé

  • Plateforme JADE
    • Conteneur principal
      • Agent AMS
      • Agent DF
      • Autre(s) agent(s) technique(s) JADE
      • Agent(s) utilisateur
    • Conteneur(s)
      • Autre(s) agent(s) technique(s) JADE
      • Agent(s) utilisateur
  • Autre(s) plateforme(s) JADE
  • Autre(s) plateforme(s)

Avantages / inconvénients

Inconvénients

  • Neuf dans l'industrie :
    • Difficile à vendre
    • Difficile de trouver des personnes le connaissant


Avantages

  • Mature : première livraison le 13/09/2000 (v 1.25)
  • Au moins 2 release par an depuis 3 ans
  • Léger (900 ko)
  • Ouvert selon la notion de plugins
  • Orienté tests
  • Facile de faire un agent simple
  • Soutenu par des industriels
  • Documentation nombreuse et variée
  • Evolutif : on peut commencer par quelques agents simples puis faire évoluer l'architecture avec l'application.
  • Compatible FIPA (un standard)


Au delà

Au vu de cette présentation, je ne peux m'empécher de faire le rapprochement entre la plateforme Jade et le langage Erlang : voir l'article On modelling agent systems with erlang (le PDF).


Cas d'utilisation à complexité croissante

  • Un agent seul
  • 2 agents :
    • sur la même machine
    • sur 2 machines distinctes
    • se déplaçant sur des machines
  • n agents
  • Utilisation avancée de ACL
  • Utilisant des techniques avancées (Système Expert JESS)
  • Cognitif / réactif


Ressources



En Vrac

Modèles multi-agents disponibles

Agent

Caractéristiques individuelles

  • Niveau cognitif :Un modèle agent très général a été implémenté qui peut être spécialisé très facilement pour réaliser des architectures réactives et BDI.
  • Adaptabilité : fonction du Behaviour abstraction
  • Connaissances d'un agent
  • Compétences d'un agent
  • Modèles de raisonnement disponibles : cf librairie mise à dispo


Caractéristiques sociales

  • Degré d'autonomie sociale : autonome
  • Sociabilité
  • Degré de coopération
  • Connaissances de l'agent
  • Compétences sociales d'un agent


Organisation

  • Structure organisationnelle
  • Relations de dépendance
  • Raisonnement sur l'organisation
  • Capacités de réorganisation
  • Gestion des groupes


Interaction/Communication

  • Modèle : Communication indirecte par envois de messages asynchrones peer-to-peer (construit sur des interactions client/server d'objets distribués (distributed objects client/server interactions)) codés en langage FIPA ACL
Chaque agent a une liste privée de messages ACL qui est remplie par le sous système de communication de Jade
Ce sous système de communication est conçu pour optimiser la transmission de messages :
    • le mécanisme est choisi en fonction de la localisation du destinataire et du status du cache :
      • même containers : aucune traduction du message qui reste en ACL
      • même plate-formes JADE, containers différents, cache hit : un seul RMI call
      • même plate-formes JADE, containers différents, cache miss : deux RMI calls (un pour mettre à jour le cache du GADT (Global Agent Descriptor Table) l'autre pour envoyer le message)
      • plate-formes JADE différentes : direct call avec l'ACC
      • plate-formes différentes (non JADE) :
  • Langage : FIPA ACL messages
  • Protocoles d'interaction : Java RMI, IIOP, etc.
  • Structure de communication :


Environnement

  • Modèle
  • Type de l'environnement
  • Connexion de l'agent à l'environnement


Caractéristiques "extrinsèques" du système multi-agents

  • Nombre d'agents (ordre de grandeur) : aucune info dispo
  • Nature des agents : cognitif ou réactif (systèmes hybrides ou hétérogènes ?)
  • Système ouvert : oui
  • Modèle de coopération
  • Type de contrôle


Caractéristiques physiques des systèmes multi-agents implantables

Agent

  • implémentation
  • mobilité


Organisation

  • distribué vs centralisé
  • passif (ex : base de données) vs dynamique


Interaction

  • moteur d'interaction distribué (interne à l'agent) / centralisé (serveur ou médiateur)
  • passif (ex : message) / dynamique (ex: message actif)


Environnement

  • distribué vs centralisé
  • passif (ex : base de données) vs dynamique


SMA

  • Type de distribution physique
  • Tolérance aux pannes :
  • Implantation dédiées au temps réel


Environnement de développement

  • Méthodologie d'analyse :
    • A ma connaissance aucune n'est imposée si ce n'est que le développeur est contraint de respecter certaines spécifications FIPA sur le fonctionnement interne du SMA
  • Disponibilité d'un langage de description d'agents: nécessité de connaître le langage de programmation dans lequel la plate-forme est écrite (JAVA)
  • Existence de 4 bibliothèques distribuées avec la plateforme :
    • Base64.jar
    • iiop.jar
    • jade.jar
    • jade tools.jar
  • Tutorial :
    • En plus de ceux disponibles sur le site de JADE (admin & dev guides), visitez [1]


Support logistique

  • fréquence des nouvelles versions :
    • La dernière version jade v2.5 date du 05/02/02
    • Une prochaine version est attendue pour mai/juin 2002
  • support technique disponible :
    • Via les mailing list (jade-develop notamment) il est possible de communiquer avec tout une communauté de développeur JADE. Chacun peut alors apporter un élément de réponse.