Vous êtes sur la page 1sur 30

Introduction la Platform JADE

Cliquez pour modifier le style des Java Agent DEvelopment sous-titres du masque Framework

5/8/12

Une plateforme SMA ????


Une

infrastructure de logiciels utilise comme environnement pour la cration, le dploiement et l'excution d'un ensemble d'agents.
un environnement pour crer et tester

Elle fournit :

des agents;

collection de services offerts aux

dveloppeurs (bibliothque); 5/8/12

La plateforme JADE
plate-forme multi-agents cr par le laboratoire

TILAB: Collaboration de Telecom Italia, Motorola, Whitestein Technologies AG, Profactor GmbH, and France Telecom R&D.
Free et Open Source. 100 % Java; Une Interface graphique et outils de dbogage; conformes aux normes FIPA (Foundation

Intelligent Physical Agents ): un standard IEEE.

for

5/8/12

Architecture JADE (1/3)


Software

Agent

Agent Management System (AMS)

Agent Plate-Form (AP)

Directory Facilitator (DF)

Message Transport system (MTS)

Message Transport system (MTS)

Agent Plate-Form (AP)

5/8/12

Architecture JADE (2/3)


L'Agent Platform (AP) constitue

l'infrastructure physique sur laquelle se dploient les agents (Container). contient 1 ou plusieurs Containers : 1 seul maincontainer.
AMS Agent Management System supervise

Chaque main-container comporte:

l'enregistrement des agents, leur authentification, leur accs et l'utilisation du systme (pages blanches).

DF Director Facilitor fournit un service de

pages jaunes la plate-forme (enregistrement, 5/8/12 d enregistrement des services, recherche, ).

Architecture JADE (3/3)


Agent Managem ent White System page service Director y Facilitat Yellow or page service local cache of agent Inter-Platforms addresses Message Transport (IIOP)
5/8/12

Agent Communication Channel Intra-Container InterMessage Containers Transport Message (Java events) Transport (Java RMI)

JADE Platform
Container Agen t Agen t Container Agen t Agen t
Messag e

JADE Platform
Container Agen t Agen t

Agen t

JADE Platform
Container Agen t Agen t Agen t

5/8/12

Les Agents
Chaque agent doit s'enregistrer un AMS pour

avoir un AID. Il n'y a qu'un AMS par plate-forme.


L'Agent Identifier (AID) est un identifiant prcis

d'un agent. On lui donne plusieurs paramtres tels que l'adresse de transport, l'adresse de service de rsolution de nom, Un exemple est : <name@HAP >(Home Agent Platform)

5/8/12

Quelques commandes
Lancement de la Platform
java -cp lib\jade.jar jade.Boot gui
java -cp lib\jade.jar jade.Boot -gui -platform-id MyPlatform

Lancement dun container


java -cp lib\jade.jar;classes jade.Boot -container -host localhost -port 1099

Lancement dun Agent:


Compilation: javac cp F:\jade\lib\jade.jar PingAgent.java

Lancement
java -cp lib\jade.jar;chemin des classes jade.Boot 5/8/12 -gui agents AgentName:AgentClass

Pratique
Excuter lexemple de BOOK TRADING:

dans le rpertoir src\examples\bookTrading

5/8/12

La programmation des Agents

5/8/12

Structure de base dun agent


Un Agent JADE hrite de la classe

jade.core.Agent.

Il doit implmenter la mthode setup().


public class firstAgent extends Agent { protected void setup() { // message daccueil System.out.println(je suis votre premier agent, mon nom est: +getAID().getName()); } }

crire votre premier Agent et lancer le 5/8/12

en utilisant la plateforme : crer un projet

Structure de base dun agent


La mthode setup() est utilis gnralement

pour initialiser lagent (ex: enregistrement des services offerts). mthode: doDelete().

Pour arrter lagent il faut faire appel la Tester cette mthode sur votre agent. Si la mthode void takeDown() est

implment elle est xcut juste avant que lagent termine. oprations de fin comme la suppression des 5/8/12 services offerts.

La mthode takeDown() est utilis pour des

Le passage dargument
Les arguments peuvent tre passs un

agent par la mthode getArguments():


Exemple de code :
Object[] args = getArguments(); if (args != null) { for (int i = 0; i < args.length; i++) { System.out.println("l'argument n: " + i + " est: " + (String) args[i]); } }

Tester le code prcdant dans votre

agent.

5/8/12

Enregistrement dun service

5/8/12

Enregistrement dun service


Pour enregistrer un service ,un agent doit

fournir la description de ce service .


Une instance de la classe DFAgentDescription

peut contenir la description dun ou plusieurs services fournis par un agent. class ServiceDescription.

Un service est dcrit par une instance de la Un service est enregistr en utilisant la

mthode register() de la class DFService, cette dernire permet de communiquer avec lagent DF de la Platform.
5/8/12

Enregistrement dun service


Exemple de code:

try { // initialisation de la description DFAgentDescription dfd = new DFAgentDescription(); dfd.setName(getAID()); /* service 1*/ ServiceDescription sd1 = new ServiceDescription(); sd1.setType("calcul"); sd1.setName("calculus service"); 5/8/12

Enregistrement dun service


Tester le code prcdent dans votre

agent et voir en utilisant lagent sniffer les communication entre votre agent et lagent DF.

5/8/12

La recherche dun service


Les mmes tapes que lenregistrement : un

agent doit fournir la description du service quil cherche .


Une instance de la classe

DFAgentDescription: le modle de la recherche .


Un service est dcrit par une instance de la

class ServiceDescription.
Un service est cherch en utilisant la

mthode search () de la class DFService, cette dernire permet de communiquer avec lagent DF de la Platform. 5/8/12

La recherche dun service


Exemple de code:
try { // la cration du modle de recherche DFAgentDescription template = new DFAgentDescription(); // la description du service cherch ServiceDescription sd = new ServiceDescription(); sd.setType("calcul"); template.addServices(sd); // la recherche du service DFAgentDescription[] list = DFService.search(this, template); // affichage des agents dcouverts AID [] agents= new AID[list.length];
5/8/12

La recherche dun service


Crer un autre agent qui fait la

recherche des services fournis par le premier Agent. utilisant lagent sniffer les diffrentes communications.

Lancer les deux agents et voir en

5/8/12

Les comptences dun agent (comportement ou Behaviour)

5/8/12

Behaviou Abstract simple not composable no interruptio n Simple Behaviour


acti on( do ) ne ()

Abstr act cl as s

Abstract composes children; interrupt able CompositeBeha viour


<<protected>> preAction() <<protected>> postAction() <<protected>>

OneShotBehav iour

CyclicBehav iour

bodyAction() addBehavi our() removeBehavi our()

don e= t r u e don e= fa ls e

SequentialBeha viour
<<protected>> bodyAction()

ParallelBehav iour
<<protected>> bodyAction()

FSMBehavi our
<<protected>> bodyAction()

5/8/12

Finite State Mach ine

5/8/12

Autres Types de behaviour


WakerBehaviour: Le WakerBehaviour est

implment de faon excuter la mthode handleElapsedTimeout() aprs une priode passe comme argument au constructeur. excute sa tche priodiquement par la mthode onTick().

Le TickerBehaviour : est implment pour qu'il

L ajout dun behaviour ce fait travers la Exemple: this.addBrhavior(new


classDeBehavior()):

mthode addBehaviour de la class Agent. cette mthode ajout le behavior de


5/8/12

Implmentation dun exemple


On va implment deux types dagent:

AgentClcul & agentClient.


Agent client Demande de calculs Rsultats de calculs Agent de calculs

5/8/12

Travail faire
Crer un agent qui fournis le service de

calcul.(enregistrement).
Crer un agent client qui veut faire des

calculs ( Procdure de recherche.

On va utiliser un:
Behaviour de type CyclicBehaviour pour

lagent de calcul. lagent client.

Behaviour de type Behaviour pour

5/8/12

Le lancement des Agents a partir dune application Java.

5/8/12

Agents a partir dune application Java


La package Jade fournit des classes pour

permettre de lancer des agents partir dune application Java:


Une instance de lenvironnement dexcution

tape 1: prparation

(jade.core.Runtime)

Runtime rt = Runtime.instance();

un profile contient des informations tels que

(host name, port number, ...)


Profile p = new ProfileImpl();

tape 1: lancement de la Plateforme


5/8/12 La cration et lancement dun container :

Agents a partir dune application Java


tape 3: lancement des agents
Un contrleur dagent:
AgentController agent1 = ac.createNewAgent("AgentName", "AgentClass", new Object[0]); //new Object[0]: reprsente les paramtres quon veut passer lagent.

Lancement de lagent :
agent1.start();

Exemple : lancement du RMA.


AgentController RMAagent = ac.createNewAgent("rma", "jade.tools.rma.rma", new Object[0]); RMAagent.start(); 5/8/12