Introduction à la Platform JADE

Embed Size (px)

Citation preview

Introduction la Platform JADECliquez 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 PlatformContainer Agen t Agen t Container Agen t Agen tMessag e

JADE PlatformContainer Agen t Agen t

Agen t

JADE PlatformContainer Agen t Agen t Agen t

5/8/12

Les AgentsChaque 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 : (Home Agent Platform)

5/8/12

Quelques commandesLancement de la Platformjava -cp lib\jade.jar jade.Boot guijava -cp lib\jade.jar jade.Boot -gui -platform-id MyPlatform

Lancement dun containerjava -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

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

PratiqueExcuter lexemple de BOOK TRADING:

dans le rpertoir src\examples\bookTrading

5/8/12

La programmation des Agents

5/8/12

Structure de base dun agentUn 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 agentLa 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 dargumentLes 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 servicePour 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 serviceExemple 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 serviceTester 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 serviceLes 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 serviceExemple 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 serviceCrer 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 Behaviouracti on( do ) ne ()

Abstr act cl as s

Abstract composes children; interrupt able CompositeBeha viour preAction() postAction()

OneShotBehav iour

CyclicBehav iour

bodyAction() addBehavi our() removeBehavi our()

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

SequentialBeha viour bodyAction()

ParallelBehav iour bodyAction()

FSMBehavi our bodyAction()

5/8/12

Finite State Mach ine

5/8/12

Autres Types de behaviourWakerBehaviour: 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(newclassDeBehavior()):

mthode addBehaviour de la class Agent. cette mthode ajout le behavior de5/8/12

Implmentation dun exempleOn va implment deux types dagent:

AgentClcul & agentClient.Agent client Demande de calculs Rsultats de calculs Agent de calculs

5/8/12

Travail faireCrer 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 JavaLa 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 Plateforme5/8/12 La cration et lancement dun container :

Agents a partir dune application Javatape 3: lancement des agentsUn 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