JADE : Java Agent DEvelopment framework. Laboratoire IBISC & Départ. GEII Université & IUT d Evry nadia.abchiche@ibisc.univ-evry.



Documents pareils
Systèmes Multi-Agents

Master IAC Philippe Caillou DÉVELOPPEMENT DE SMA. Cours 1b

TP1 : Initiation à Java et Eclipse

Auto-évaluation Programmation en Java

Programmer en JAVA. par Tama

as Architecture des Systèmes d Information

Cours 1: Java et les objets

Cours intensif Java. 1er cours: de C à Java. Enrica DUCHI LIAFA, Paris 7. Septembre Enrica.Duchi@liafa.jussieu.fr

Initiation à JAVA et à la programmation objet.

Remote Method Invocation Les classes implémentant Serializable

Un ordonnanceur stupide

Projet de programmation (IK3) : TP n 1 Correction

Introduction à Java. Matthieu Herrb CNRS-LAAS. Mars

Bases Java - Eclipse / Netbeans

Environnements de développement (intégrés)

INITIATION AU LANGAGE JAVA

Langage et Concepts de ProgrammationOrientée-Objet 1 / 40

Dis papa, c est quoi un bus logiciel réparti?

NFP 121. Java et les Threads. Présentation : Thierry Escalarasse Mai 2007

Plan du cours. Historique du langage Nouveautés de Java 7

Programmation en Java IUT GEII (MC-II1) 1

Pour signifier qu'une classe fille hérite d'une classe mère, on utilise le mot clé extends class fille extends mère

Calcul Parallèle. Cours 5 - JAVA RMI

Architecture Orientée Service, JSON et API REST

Structure d un programme et Compilation Notions de classe et d objet Syntaxe

INTRODUCTION A JAVA. Fichier en langage machine Exécutable

La plate-forme DIMA. Master 1 IMA COLI23 - Université de La Rochelle

Une introduction à Java

Langage et Concepts de Programmation Objet. 1 Attributs et Méthodes d instance ou de classe. Travaux Dirigés no2

Derrière toi Une machine virtuelle!

RAPPELS SUR LES METHODES HERITEES DE LA CLASSE RACINE Object ET LEUR SPECIALISATION (i.e. REDEFINITION)

Objets et Programmation. origine des langages orientés-objet

Programmation avec des objets : Cours 7. Menu du jour

Remote Method Invocation (RMI)

Aide mémoire UML & Java 1ère partie : Introduction. marc.lemaire@u-cergy.fr

F. Barthélemy. 17 mai 2005

Java Licence Professionnelle Cours 7 : Classes et méthodes abstraites

TD Objets distribués n 3 : Windows XP et Visual Studio.NET. Introduction à.net Remoting

Développement d un logiciel de messagerie instantanée avec Dotnet (version simplifiée)

Corrigé des exercices sur les références

Lambda! Rémi Forax Univ Paris-Est Marne-la-Vallée

Encapsulation. L'encapsulation consiste à rendre les membres d'un objet plus ou moins visibles pour les autres objets.

Java Licence Professionnelle CISII,

Programmation Par Objets

Info0604 Programmation multi-threadée. Cours 5. Programmation multi-threadée en Java

Info0101 Intro. à l'algorithmique et à la programmation. Cours 3. Le langage Java

Java c est quoi? Java pourquoi?

Création d objet imbriqué sous PowerShell.

Premiers Pas en Programmation Objet : les Classes et les Objets

Utilisation de JAVA coté Application serveur couplé avec Oracle Forms Hafed Benteftifa Novembre 2008

Java Licence Professionnelle CISII,

Applet pour visualiser les variables «automate» notifiées

Synchro et Threads Java TM

RMI le langage Java XII-1 JMF

Alfstore workflow framework Spécification technique

La base de données XML exist. A. Belaïd

Exceptions. 1 Entrées/sorties. Objectif. Manipuler les exceptions ;

Langage Java. Classe de première SI

LMI 2. Programmation Orientée Objet POO - Cours 9. Said Jabbour. jabbour@cril.univ-artois.fr

Remote Method Invocation en Java (RMI)

Supervision et infrastructure - Accès aux applications JAVA. Document FAQ. Page: 1 / 9 Dernière mise à jour: 15/04/12 16:14

RMI. Remote Method Invocation: permet d'invoquer des méthodes d'objets distants.

Licence Bio Informatique Année Premiers pas. Exercice 1 Hello World parce qu il faut bien commencer par quelque chose...

TP3. Mail. Attention aux fausses manoeuvres lors de ce TP vous pouvez endommager votre mail sur ouindose.

Cette application développée en C# va récupérer un certain nombre d informations en ligne fournies par la ville de Paris :

Serveur d'application Client HTML/JS. Apache Thrift Bootcamp

J2SE Threads, 1ère partie Principe Cycle de vie Création Synchronisation

Package Java.util Classe générique

Apprendre la Programmation Orientée Objet avec le langage Java (avec exercices pratiques et corrigés)

PROGRAMMATION PAR OBJETS

Threads. Threads. USTL routier 1

Quelques patterns pour la persistance des objets avec DAO DAO. Principe de base. Utilité des DTOs. Le modèle de conception DTO (Data Transfer Object)

Tp 1 correction. Structures de données (IF2)

Chapitre VI- La validation de la composition.

Introduction au langage C

4. Outils pour la synchronisation F. Boyer, Laboratoire Lig

TD3: tableaux avancées, première classe et chaînes

Patrons de Conception (Design Patterns)

La carte à puce. Jean-Philippe Babau

Généralités. javadoc. Format des commentaires. Format des commentaires. Caractères spéciaux. Insérer du code

Programmation Orientée Objet application au langage Java Version Novembre 2007

Introduction à la programmation concurrente

Oracle WebLogic Server (WLS) 11gR1 ( et ) Installation sur Oracle Linux 5 et 6 Hypothèses Installation Oracle Linux 5 (OL5)

Programmation Réseau. Sécurité Java. UFR Informatique jeudi 4 avril 13

Java - RMI Remote Method Invocation. Java - RMI

Pour plus de détails concernant le protocole TCP conférez vous à la présentation des protocoles Internet enseignée pendant.

Généralités sur le Langage Java et éléments syntaxiques.

Polycopié Cours Programmation Orientée Objet sous Java Programme : Filière SMI S5

TP1. Outils Java Eléments de correction

Java RMI. Arnaud Labourel Courriel: Université de Provence. 8 mars 2011

Java Naming and Directory Interface

TP1 : Initiation à Java et Eclipse

Institut Supérieur de Gestion. Cours pour 3 ème LFIG. Java Enterprise Edition Introduction Bayoudhi Chaouki

Protocole SSH-2.0. Tuan-Tu, TRAN. Janvier 2009

Java Licence Professionnelle CISII, Cours 2 : Classes et Objets

TD/TP PAC - Programmation n 3

Programmation par les Objets en Java

Classe Interne, Anonyme & Enumération

Chapitre 10. Les interfaces Comparable et Comparator 1

Transcription:

: Java Agent DEvelopment framework Laboratoire IBISC & Départ. GEII Université & IUT d Evry nadia.abchiche@ibisc.univ-evry.fr

Introduction à la plateforme JADE 1) Modèle d agent 2) Services 3) Norme FIPA 4) Environnement et Architecture

généralités Plate-forme Multi-agents en Java developpee par Gruppo Telecom Italia Respecte la Norme FIPA But : Réaliser simplement des Systèmes Multi-Agents interopérables Principalement de agents de type cognitifs

conception et implantation Un agent : possède un état a un cycle de vie Classe Comportement derivée de la superclasse Agent File de comportements d agent : ajout ou suppression d un comportement à tout moment

conception et implantation Programmation concurrente : Un thread par agent Plutôt qu un thread par comportement pour éviter une surcharge en nombre de threads Planificateur de tâches Un comportement peut se bloquer lui-même pour éviter de gaspiller du CPU Ex.: pendant qu il attend des messages

conception et implantation Les services Action enregistrée et dispensée par la plateforme Comportements d un ou plusieurs agents répondant à une demande. Annuaire des services = Pages Jaunes : Directory Facilitator (DF)

Les Pages Jaunes (DF) Enregistre les descriptions des agents ainsi que les services qu'ils offrent Les agents peuvent : Enregistrer leurs services auprès d'un DF Demander au DF de découvrir les services offerts par d'autres agents

Norme FIPA (1997)

Spécificites de la plate-forme Système de Gestion d Agents (AMS) Agent central qui supervise les autres agents et les accès à la plate-forme (Pages Blanches) Canal de Communication entre Agents (ACC) Agent qui fournit la route pour les interactions entre agents dans et en dehors de la plateforme Facilitateur d Annuaire (DF) Agent qui fournit un service de Pages Jaunes (recensement des services disponibles)

Environnement JADE AMS, ACC, DF Plate-forme Multi-agents distribuee : 1 Machine Virtuelle JAVA par Hote 1 agent = 1 thread JADE planifie les tâches d un agent plus efficacement que la machine virtuelle JAVA Messages ACL codés en objets JAVA Interface graphique

Architecture de la plateforme Un receptacle d agents : Est un objet serveur RMI qui gère localement un ensemble d agents + Machine Virtuelle JAVA Gère le cycle de vie des agents (création, mort, supsension, reprise, ) Répartit les messages ACL dans les files d attente des agents Interface graphique implémentée comme un agent

Architecture de la plateforme (suite) Communication de plusieurs machines virtuelles (VM) JAVA par la méthode RMI Chaque VM est un receptacle d agents et un environnement multi-threads compose : D un thread d exécution pour chaque agent De threads de RMI pour échanger les messages Plusieurs VM sur le même hôte possible, mais déconseillé

Programmer avec JADE 1) Démarrer JADE 2) Programmer des agents 3) Service de Pages Jaunes 4) Interface 5) Intégration

Installation de JADE Installer Java (jdk 1.2 ou plus) Attention au «path» et au «classpath» Installer le package Jade Copier les classes Mettre à jour le «classpath» : \jade \jade\lib \jade\lib\iiop.jar \jade\lib\jade.jar \jade\lib\jadetools.jar Installer les agents comme des classes java classiques

Démarrage de JADE Lancer Jade avec la ligne de commandes : java jade.boot Lancer Jade et la GUI java jade.boot gui Lancer un agent au demarrage java jade.boot gui <nom de l agent>:<classe de l agent> Lancer un agent avec des paramètres java jade.boot gui <nom de l agent>:<classe agent> (<Param>)

Création d un agent Etendre la classe jade.core.agent import jade.core.agent; public class monagent extends Agent ; Chaque agent est identifie par un AID Methode getaid() //pour récupérer l AID Dans la méthode setup() (Obligatoire) Enregistrer les langages de contenu Enregistrer les Ontologies Enregistrer les Services auprès du DF Démarrer les Comportements (behaviors)

Identification des agents Le nom d un agent : Est de la forme : <nom-agent>@<nom-plate-forme> Doit être globalement unique Plate-forme par défaut : <main-host>:<main-port>/jade Nom de la plate-forme défini avec -name

Méthodes de la classe Agent Méthode getarguments() pour obtenir les arguments d un agent Méthode dodelete() pour tuer un agent Methode takedown() pour lancer l agent garbage collector

Exemple public class HelloWorldAgent extends Agent { protected void setup() { // creation de l agent il se décrit lui même ServiceDescription sd = new ServiceDescription(); sd.settype( "Hello example" ); sd.setname( "HelloServiceDescription" ); DFAgentDescription dfd = new DFAgentDescription(); dfd.setname( getaid() ); dfd.addservices( sd ); // enregister sa description auprès du DF DFService.register( this, dfd); System.out.println("Hello! My name is"+ getlocalname()); //afficher son premier argumentobject[] args = getarguments(); if (args!= null && args.length > 0) { System.out.println("mon premier argument : "+args[0]); } // l agent se termine dodelete(); } }

Création d un comportement Créer (étendre la classe «behaviour») public class mybehaviour extends Behaviour Créer le constructeur avec la super classe public mybehaviour(agent agent){ super(agent);} Créer la méthode «action» (Obligatoire) qui correspond à l exécution du behaviour public void action() {<code du behaviour>}

Comportements (1) Pour faire faire une tâche à un agent : Créer une instance de la sous-classe Behaviour Appeler la méthode MonAgent.addBehaviour() Chaque sous-classe Behaviour doit implémenter les méthodes : Public void action() : Ce que fait le behaviour Public boolean done() : Si le behaviour est fini (rend true ) ou non (rend false )

Comportements (2) Plusieurs types de comportements : One Shot Complexe : combinaision de comportements simples SequentialBehaviour ParallelBehaviour FSMBehaviour Cyclique Nouveau comportement mis en place quand la méthode done() du comportement courant retourne vrai

Comportements (exemples) public class MyOneShotBehaviour extends OneShotBehaviour { public void action() { // exécuter les opérations souhaitées une fois } } public class MyCyclicBehaviour extends CyclicBehaviour { public void action() { // exécuter les opérations sans arrêt} } public class ThreeStepBehaviour extends Behaviour { private int step = 0; // exécuter X, puis Y, puis Z, puis arrêt public void action() { switch (step) { case 0: // perform operation X step++; break; case 1: // perform operation Y step++; break; case 2: // perform operation Z step++; break; } } public boolean done() {return step == 3; } }

Comportements (exemples) public class MyStepAgent extends Agent { protected void setup() { System.out.println("Agent "+getlocalname()+" démarre."); // lancer le comportement généric addbehaviour(new ThreeStepBehaviour()); // lancer un autre comportement (cyclic) addbehaviour(new CyclicBehaviour(this)); }

Résume du fonctionnement d un agent

Communication entre agents Messages codes en langage ACL Transmission asynchrone Messages instancies par la classe jade.lang.acl.aclmessage

Exemples de messages else{ block(); } //bloque le comportement

Exemples de messages (filtrer les messages) MessageTemplate mt; mt= MessageTemplate.MatchPerformative(ACLMessage.CFP); ACLMessage msg = myagent.receive(mt); if (msg!= null) { // un message de type CFP est reçu, récupérer son contenu String titre = msg.getcontent; }

Service de Pages Jaunes DF = Agent comme les autres qui communique avec des messages ACL Classe jade.domain.dfservice Search() Register() Deregister() Modify()

Recherche dans un DF Pour s inscrire dans un DF, il faut une description, classe DFAgentDescription : AID de l agent Nom du service Type de service Langages, Ontologies, Pour rechercher dans un DF, créer une autre instance de la classe DFAgentDescription

Interface Jade GUI DF Agent GUI Dummy Agent Sniffer Agent Introspector Agent

Jade GUI Permet de controler les agents

DF Agent GUI Permet de consulter les Pages Jaunes

Dummy Agent Pour envoyer et recevoir des messages

Sniffer Agent Surveille les échanges de messages dans une plate-forme

Introspector Agent Pour surveiller l activite d un agent (messages, cycle de vie)

Integration avec JESS : Communication avec les messages de JESS Un programme JESS peut contrôler les messages et les comportements des agents de JADE Classe JessBehavior

Conclusion Communauté de plus en plus importante Exécution distribuée sur plusieurs hôtes et types de machines (PC, mobile, ) Exécution concurrente des agents Communication transparente par message (ACL) Open Source Norme FIPA

Approfondir en TP? Encapsuler le CBR et le RBR «stimulation cognitive» avec Jess dans deux agents en vue de les faire coopérer ; Dialogue dans un domaine de connaissance (à choisir) entre 2 plusieurs agents. Faire Communiquer les agents avec : tentative de compréhension en employant la notion ontologie ; Négociation via Contract Net protocol (exemple d application d achat/vente) ; Résolution d un problème par décomposition en tâches et sous tâches ayant des caractéristiques/ performances hétérogènes (coopération). Cycle communicationdélibération-action.

Bibliographie FIPA: Foundation for Intelligent Physical Agents. Specifications. 1997. http://www.fipa.org Plate-forme JADE: Java Agent Development Framework, 2000. http://jade.tilab.com/ Java Expert System Shell (JESS) http://herzberg.ca.sandia.gov/jess/ AUML. The Agent Unified Modelling language, http://www.auml.org/