You are on page 1of 18

Université 20 Août 1955, Skikda. Le 19/01/2017.

Département d’informatique. Promotion : M1 Pro, Réseaux et Systèmes Distribués.

Examen de Moyenne Durée


Matière : SMAB; Systèmes Multi-Agent Biomorphiques. Durée : 1h 30.

Nom : Prénom :

Note : ……... / 20
Question 1 (04 points): ………………………………………...………………………
………………………………………...………………………
1. Complétez la figure suivante :
………………………………………...………………………
Elitist Ant : ………………………..………...………………
………………………………………...………………………
………………………………………...………………………
………………………………………...………………………

Question 3 (06 points):


1. Quelle est la signification de : Méthode exacte,
heuristique et méta-heuristique ?
………………………………………...………………………
………………………………………...………………………
2. Commentez-la : ………………………………………...………………………
………………………………………...……………………… ………………………………………...………………………
………………………………………...……………………… ………………………………………...………………………
………………………………………...……………………… ………………………………………...………………………
………………………………………...……………………… ………………………………………...………………………
………………………………………...………………………
2. Si on prend les deux relations : inclusion et
Question 2 (07,50 points): complémentarité, Quelle est la relation entre eux prise
deux à deux ?
Donnez le principe des variantes d’algorithme et
systèmes à fourmis suivantes: ………………………………………...………………………
………………………………………...………………………
Ant-Cycle : ………………..………………...………………
………………………………………...………………………
………………………………………...………………………
………………………………………...………………………
………………………………………...………………………
………………………………………...……………………… Question 4 (02,50 points):
Ant-Density : ……..………………………...……………… Donnez des précisions sur les concepts, la notation et
………………………………………...……………………… les outils dans le cas du méta-modèle
………………………………………...……………………… organisationnel AGR.
………………………………………...……………………… ………………………………………...………………………
Ant-Quantity : …..………………..………...……………… ………………………………………...………………………
………………………………………...……………………… ………………………………………...………………………
………………………………………...……………………… ………………………………………...………………………

Bon courage.
………………………………………...………………………
Utiliser le verso si nécessaire
MAX-MIN Ant : ……………..………..…...………………
Université 20 Août 1955, Skikda. Le 21/01/2016.
Département d’informatique. Promotion : M1 Pro, Ingénierie des Systèmes Distribués.

Examen de Moyenne Durée


Module : Systèmes Bio Inspirés. Durée : 1h 30.

Nom : Prénom :

Note : ……... / 20
Question 1 (05 points):
Question 4 (06 points):
1. Quelle est la relation entre Mécanismes et
Opérateurs génétiques ? AGR :
………………………………………...……………………… 1. Signifie :
………………………………………...……………………… ………………………………………...………………………
………………………………………...……………………… ………………………………………...………………………
………………………………………...……………………… ………………………………………...………………………
………………………………………...………………………
2. Sert à :
2. Citer deux (02) étapes principales lors de ………………………………………...………………………
l’application d’algorithme génétique.
………………………………………...………………………
………………………………………...……………………… ………………………………………...………………………
………………………………………...………………………
………………………………………...……………………… 3. Appliqué au problème du voyageur de commerce
TSP (Travelling Salesman Problem) donne :
Question 2 (06 points): ………………………………………...………………………
………………………………………...………………………
Quelle est la signification de :
………………………………………...………………………
Système complexe : ………………………………………...………………………
………………………………………...……………………… ………………………………………...………………………
………………………………………...……………………… ………………………………………...………………………
………………………………………...……………………… ………………………………………...………………………
………………………………………...………………………
Système ouvert : ………………………………………...………………………
………………………………………...……………………… ………………………………………...………………………
………………………………………...……………………… ………………………………………...………………………
………………………………………...……………………… ………………………………………...………………………
………………………………………...………………………
Système à fonctionnalités émergeantes : ………………………………………...………………………
………………………………………...……………………… ………………………………………...………………………
………………………………………...……………………… ………………………………………...………………………
………………………………………...……………………… ………………………………………...………………………
………………………………………...………………………
Question 3 (03 points): ………………………………………...………………………
………………………………………...………………………
Quelle est la différence entre Objet, Acteur et Agent ?
………………………………………...………………………
………………………………………...………………………
………………………………………...………………………
………………………………………...………………………
………………………………………...………………………
………………………………………...………………………
………………………………………...………………………
………………………………………...………………………
………………………………………...………………………
………………………………………...………………………
………………………………………...……………………… Utiliser le verso si nécessaire Bon courage.
Université 20 Août 1955, Skikda. Le 25/01/2014
Département d’informatique. Promotion : M1 Pro, Ingénierie des Systèmes distribués.

Examen de Moyenne Durée


Module : Systèmes Bio Inspirés. Durée : 1h 30.

Nom : Prénom :

Note : ……... / 20
Question 1 (05 points): Système immunitaire artificiel
Dans les questions QCM suivantes, cochez la (ou les) ………………………………………...………………………
réponse(s) correcte(s). Et / Ou complétez AUTRE. ………………………………………...………………………
1. Une métaphore biologique est : Les algorithmes génétiques
L'origine d'un paradigme bio-inspiré ………………………………………...………………………
Une simulation informatique du monde réel ………………………………………...………………………
Une analogie entre le monde biologique et le Les ACO
monde artificiel.
………………………………………...………………………
AUTRE………………………..…………………………
………………………………………...………………………
…………………..…………………………………….…

2. L'ACO est : Question 3 (05 points):


Basé sur le comportement social d'individus Donnez le principe des variantes de l’algorithme Ant
Une heuristique System suivantes :
Une méta heuristique
Ant-Cycle
AUTRE………………………..…………………………
………………………………………...………………………
…………………..…………………………………….…
………………………………………...………………………
3. L'origine d'un paradigme biologique est : ………………………………………...………………………
La métaphore de ce paradigme Ant-Density
Une reproduction du phénomène biologique
………………………………………...………………………
Une heuristique
AUTRE………………………..………………………… ………………………………………...………………………
………………………………………...………………………
…………………..…………………………………….…

4. La Stigmergie est : Ant-Quantity


………………………………………...………………………
Une communication par envoi de message
Un type de communication indirecte ………………………………………...………………………
Une communication par Tableau noire ………………………………………...………………………
AUTRE………………………..…………………………
…………………..…………………………………….… Question 4 (06 points):

5. La sélection et le croisement sont : Visant l’optimisation de la fonction f(x) = x 2 définie


sur l´intervalle entier I=[0,31] et partant des individus
Les deux mécanismes des algorithmes
initiaux suivants : 7, 15, 20 et 23.
génétiques.
Deux opérateurs génétiques. 1. Quelle est la taille d’un chromosome et la fonction
Deux opérateurs logiques. d’adaptation (fitness function) appropriées ?
AUTRE………………………..………………………… 2. Donnez pour chaque individu son génome, sa
…………………..…………………………………….… fonction d’adaptation et sa probabilité de
reproduction.
Question 2 (04 points): 3. Appliquez une génération de l’algorithme
Définissez l'origine et la métaphore des paradigmes génétique avec un croisement simple à 2 bits.
bio-inspirés suivants: 4. Appliquez une génération de l’algorithme
génétique avec une mutation du bit de poids fort.
Réseaux de neurones
………………………………………...………………………
Utiliser le verso si nécessaire Bon courage.
………………………………………...………………………
Je suis le Support :
Tutorial Jade
Un conseil: Pensez Agent !...
Fait par : Djamel ZEGHIDA
dj_zeghida@yahoo,fr
Donné aux étudiants :

Master 1
Réseaux et Systèmes Distribués

Au : Département d’informatique
Université du 20 août 1955, Skikda.
Durant l’année universitaire : 2017/2018, S1.
1

Plan
I. La plateforme JADE: Présentation générale.
II. Création d’agent et Interaction
(communication).
II.0. Avant de commencer
II.1. Travailler sur ligne de commandes : CMD
II.2. Travailler sous un IDE (Netbeans/Eclipse,...)
II.3. Envoi et réception de message ACL
II.4. Lancer l’agent à partir d’une classe main
II.5. Utilisation du sniffer agent du GUI de
l’agent RMA

Tutorial Jade; Pensez Agent. M1 RSD, ZEGHIDA Djamel, Université 20 Août 1955, Skikda. 2
I. La plateforme JADE: Présentation générale

JADE : Java Agent Developement; est un Framework


de développement de systèmes multi agents, open-
source basé sur le langage Java.

L’outil est conforme aux normes FIPA :


Foundation for Intelligent Physical Agents;
Ayant comme objectif de produire des standards
pour l’interopérabilité d’agents hétérogènes.

Tutorial Jade; Pensez Agent. M1 RSD, ZEGHIDA Djamel, Université 20 Août 1955, Skikda. 3

I. La plateforme JADE: Présentation générale


L’outil possède trois modules principaux fidèles aux normes de
la FIPA :
1.DF (Director 2.ACC (Agent Communication Chanel) gère la
Facilitor) fourni un communication entre les agents et les
service de pages autres plateformes écrites dans n'importe
jaunes à la plate- quel langage (autre que Java) : CPP, c#,
forme. Les agents Smalltalk, … .
travaillent dans une Ce n’est pas vraiment un agent, c’est un
architecture support de communication utilisant CORBA
orientée service, via IIOP (Java IDL): le protocole IIOP
cet annuaire ils (Internet InterObject Protocol) de
publient des services l’architecture d'objet répartie CORBA
et découvrent les (Common Object Request Broker
services offerts par Architecture) développée par OMG (Object
les autres agents. Management Group).
3.AMS (Agent Management System) supervise l’accès et l’utilisation du
système par les agents: attribution d’identifiants (authentification),
enregistrement, ….
Tutorial Jade; Pensez Agent. M1 RSD, ZEGHIDA Djamel, Université 20 Août 1955, Skikda. 4
I. La plateforme JADE: Présentation générale
Remarques sur la communication distante :

1. IDL (Interface Description/Definition Language), est un langage


de définition de l'interface de composants logiciels dans des
applications d’architecture distribuée, pour faire communiquer des
modules implémentés dans des langages différents, ou déployés à
travers un réseau sur des systèmes hétérogènes (Windows, Linux,
Mac OS X, VMS, etc.). Pour Java c’est le Java IDL: CORBA/IIOP .
2. L’architecture RMI (Remote Method Invocation) utilise le
protocole JRMP (Java Remote Method Protocol) pour la
communication avec des objets Java distants (tournant sur
différentes machines virtuelles Java).
3. Pour les solutions de programmation réparties, désormais, en
respectant quelques restrictions, les objets serveur RMI java
peuvent utiliser le protocole IIOP (Internet Inter-ORB Protocol) et
communiquer avec les objets client écrits dans n'importe quel
langage. Cette solution s'appelle RMI-IIOP (combine la facilité
d'utilisation RMI et l'interopérabilité multi-langage CORBA).
Tutorial Jade; Pensez Agent. M1 RSD, ZEGHIDA Djamel, Université 20 Août 1955, Skikda. 5

I. La plateforme JADE: Présentation générale


Conteneurs et Plateformes
Plateforme 1
3 nœuds:
Chaque instance dans 1 Maincontainer
+ 2 conteneurs
JADE est appelée
Conteneur "Container"
(nœud), qui peut contenir
plusieurs agents.
Un ensemble de
conteneurs constituent Plateforme 2
une plateforme. 1 nœud:
1 Maincontainer

Chaque plateforme doit contenir un conteneur spécial


appelé main-container qui dispose d’agents et de conteneurs
qui s'enregistrent auprès de celui-là dès leur lancement.
Tutorial Jade; Pensez Agent. M1 RSD, ZEGHIDA Djamel, Université 20 Août 1955, Skikda. 6
I. La plateforme JADE: Présentation générale

Un conteneur (container)
est une machine (M1, M2,
M3,…), ce n’est pas
obligatoirement un PC, ça
peut être une machine sous
des systèmes hétérogènes
(Windows, Linux, Mac OS
X, VMS, etc.).
Les agents utilisateur
peuvent être crées dans
des conteneurs simples
(Container-1, Container-2,
Container-3, …) ou dans le
Main Container.
Tutorial Jade; Pensez Agent. M1 RSD, ZEGHIDA Djamel, Université 20 Août 1955, Skikda. 7

I. La plateforme JADE: Présentation générale

Le lancement d’une
plateforme Jade se fait par La plateforme jade (GUI de l’agent RMA)
l’exécution en premier du
Main-Container (), en suite
des agents utilisateur.
Le main-container dispose
obligatoirement des agents :
AMS, DF, ACC et un agent
RMA (Remote Management
Agent) pour contrôler le
cycle de vie de tous les
agents de la plate-forme.
Les agents communiquent par des actes de langage FIPA ACL :
Agent Communication Language.
8
Tutorial Jade; Pensez Agent. M1 RSD, ZEGHIDA Djamel, Université 20 Août 1955, Skikda.
II. Création d’agent et Interaction (communication)
II.0 Avant de commencer
Configurer Java:
1. Lancez le CMD, pour tester java tapez : java –version ↵
Résultat: Version Java affichée OK, ça fonctionne, Java est configuré
2. Télécharger Java (version : jre1.8.0_151), le cas échéant, du site :
http://www.oracle.com/technetwork/java/javase/downloads/index.html
ou https://www.java.com/fr/download/
3. Copier le chemin Java : ….. Java/jdk/ bin
4. Aller à : Paramètres système avancés
5. Cliquer sur: Variables d’environnement
6. Dans la masque du haut: Variables utilisateur; Cliquer Nouvelle :
Taper dans le champ Nom variable : java-home
et coller dans le champ Valeur variable le chemin java.
7. Dans la masque du bas: Variables système; Cliquer new (Nouvelle) :
Sélectionner Path et cliquer Modifier
et coller le chemin java après un point-virgule ‘’;’’ (ou créer Path).

Tutorial Jade; Pensez Agent. M1 RSD, ZEGHIDA Djamel, Université 20 Août 1955, Skikda. 9

II. Création d’agent et Interaction (communication)


II.0 Avant de commencer
Configurer Jade:
1. Lancer le CMD, pour tester jade tapez : java jade.Boot –gui ↵
Résultat: l’interface graphique de jade s’affiche OK, ça fonctionne,
Jade est configuré
2. Télécharger Jade (version : jade.jar 4.5), le cas échéant, du site :
http://jade.tilab.com/
3. Copier le chemin du Jade.jar du Path (comme pour le Java)..

Tutorial Jade; Pensez Agent. M1 RSD, ZEGHIDA Djamel, Université 20 Août 1955, Skikda. 10
II. Création d’agent et Interaction (communication)
II.1 Travailler sur ligne de commandes : CMD (1/2)

Pour créer un agent


1. Créer un document texte (dans un éditeur de votre choix) et saisissez
le code de l’agent (donner au document l’extension ‘’.java’’) .
2. Lancer le CMD:
3. Pour compiler taper : javac nom-de-class.java ↵
Résultat: un fichier .class sera créé
4. Pour lancer l’agent taper : java jade.Boot –gui id-agent1:nomclass ↵
-gui : pour faire apparaitre l’interface graphique de jade,
id-agent 1: identifiant unique de l’agent dans le conteneur,
nom-class : la classe de l’agent (ajouter le package le cas échéant).
Résultat: Affichage : Nom de l’agent launched et le GUI RMA
Dans le volet gauche de ce gui on trouve l’agent dans le Main-container.

Tutorial Jade; Pensez Agent. M1 RSD, ZEGHIDA Djamel, Université 20 Août 1955, Skikda. 11

II. Création d’agent et Interaction (communication)


II.1 Travailler sur ligne de commandes : CMD (2/2)

5. Pour lancer un autre agent, lancer un autre CMD et taper:


java jade.Boot –container id-agent2:nom-class ↵
–container: pour un nouveau conteneur autre que le MainContainer.
Le reste idem,
Sans précision de l’@ du MainContainer (considéré dans la machine
local) ou le préciser explicitement : –container -host localhost ou
–container –host 127.0.0.1 (l’@ du local host 127.0.0.1)
Ou l’@ d’une machine distante ou du serveur par exemple :
–container -host 192.168.5.1
Résultat: Affichage : Nom de l’agent launched et le GUI RMA
Dans le volet gauche de ce gui on trouve l’agent dans le container1
comme deuxième instanciation de l’agent (la première existe toujours
dans le Main-container.

Tutorial Jade; Pensez Agent. M1 RSD, ZEGHIDA Djamel, Université 20 Août 1955, Skikda. 12
II. Création d’agent et Interaction (communication)
II.2 Travailler sous un IDE (Netbeans ou Eclipse, ….) (1/4)

Pour créer un agent:


1. Lancer Eclipse
2. Créer un projet : New Java Project
3. Glisser le fichier jade.jar (de Jade/Jade-bin/Jade-lib préalablement
téléchargé) dans votre projet Ou
Créer un répertoire lib dans votre projet et copier dedans le jade.jar
4. Cliquer bouton droit sur le jade.jar dans le projet et select :
Build Path/Add to Build Path dans le menu contextuel affiché
Ou bien Cliquer bouton droit sur le Project et select : Proprieties/
Java build Path/ Librairies cliquer à droite de la fenêtre sur:
Add External JARs.. pour ajouter le jade.jar à la bibliothèque de
votre projet(utiliser le jade.jar de son dossier d’origine ou de la copie
faite au point 3 dans votre projet ou dans son dossier lib).

Tutorial Jade; Pensez Agent. M1 RSD, ZEGHIDA Djamel, Université 20 Août 1955, Skikda. 13

II. Création d’agent et Interaction (communication)


II.2 Travailler sous un IDE (Netbeans ou Eclipse, ….) (2/4)
5. Créez une classe dans un package myagents0
package myagents0;
public class MyAgent1 {
}
6. Etendre la classe de l’agent extends Agent et ajouter le package agent
approprié (Agent -jade.core ) comme suite:
a) Dès l’écriture des lettres Age.. taper (Ctrl+Space) choisir du menu
déroulant proposé l’entrée: Agent -jade.core
b) Après écriture de extends Agent, mettre le curseur sur Agent et cliquer
(Ctrl+Space) choisir du menu déroulant proposé l’entrée: Agent -jade.core
c) Écrire la ligne du code : import jade.core.Agent;
d) Lors de la création de la classe; après la saisie du nom de la classe, dans
l’entrée Superclass cliquer Browse et taper Agent et choisir du menu
déroulant proposé l’entrée: Agent -jade.core
package myagents0;
import jade.core.Agent;
public class MyAgent1 extends Agent{
}
Tutorial Jade; Pensez Agent. M1 RSD, ZEGHIDA Djamel, Université 20 Août 1955, Skikda. 14
II. Création d’agent et Interaction (communication)
II.2 Travailler sous un IDE (Netbeans ou Eclipse, ….) (3/4)
7. Ajoutez la méthode prédéfinie setup () (il suffit d’écrire: set +Ctrl+Space elle
vous sera proposée), libre de changer son contenu affichez des "message(s)" :
syso + ctrl + space System.out.println("message");
package myagents0;
import jade.core.Agent;
public class MyAgent1 extends Agent{
protected void setup() {
System.out.println("Salam");
System.out.println("My Jade agent1");
System.out.println("My ID is :"+this.getAID().getName());
doDelete(); // pour tuer l’agent
}
}
On peut trouver aussi les méthodes:
public void doMove(Location loc) {
System.out.println("Migration vers :"+loc.getName());
}
protected void takeDown() {
// Appelée quand on veut tuer l’agent (doDelete())
System.out.println("Destruction de l’agent");
}
Tutorial Jade; Pensez Agent. M1 RSD, ZEGHIDA Djamel, Université 20 Août 1955, Skikda. 15

II. Création d’agent et Interaction (communication)


II.2 Travailler sous un IDE (Netbeans ou Eclipse, ….) (4/4)
8. Pour exécuter, cliquer bouton droit sur le projet et sélectionne Run As
puis Run Configurations
9. Dans la fenêtre à gauche, choisir Java Application et double cliquer
10. L’entrée Main dans le masque de saisie Projet : on trouve le nom du projet
affiché, saisir dans le masque de saisie Main class: jade.Boot
11. L’entrée Arguments , saisir dans le masque de saisie Program arguments :
-gui un-identifiant-unique-agent:<nom-package.>nom-de-classe,
(on peut ajouter des arguments à la classe).
-gui : Interface utilisateur graphique de jade;
un identifiant unique de l’agent à exécuter; son package et sa classe.
Soit donc: -gui MyFirstAgent:myagents0.MyAgent1
12. Nommer cette configuration et cliquer Apply ensuite Run.
13. GUI RMA affiché (l ’agent MyFirstAgent est créé dans le MainContainer).
14. Pour une autre exécution il faut d’abord arrêter l’exécution (ou les
l’exécutions) et fermer l’interface (ou les interfaces) jade,
( : Terminate, Remove Launch, Remove All Terminated Launches).

Tutorial Jade; Pensez Agent. M1 RSD, ZEGHIDA Djamel, Université 20 Août 1955, Skikda. 16
II. Création d’agent et Interaction (communication)
II.3 Envoi et réception de message ACL (1/4)

1. Créer une classe FirstMessenger (un agent) sous le package message


package message;
import jade.core.Agent;
public class FirstMessenger extends Agent {
}
2. Créer de la même façon une autre classe SecondMessenger sous le package
message
package message;
import jade.core.Agent;
public class SecondMessenger extends Agent {
}
3. Générer une méthode setup() dans les deux classes et modifier la

Tutorial Jade; Pensez Agent. M1 RSD, ZEGHIDA Djamel, Université 20 Août 1955, Skikda. 17

II. Création d’agent et Interaction (communication)


II.3 Envoi et réception de message ACL (2/4)
4. Dans une classe (FirstMessenger, par exemple) ajouter un comportement
OneShotBehaviour() pour l’envoi d’un message
package message;
import jade.core.AID;
import jade.core.Agent;
import jade.core.behaviours.OneShotBehaviour;
import jade.lang.acl.ACLMessage;
public class FirstMessenger extends Agent {
protected void setup() {
addBehaviour(new OneShotBehaviour() {
public void action() {
// Envoi de message à l'autre agent SecondMessenger
ACLMessage msg=new ACLMessage(ACLMessage.INFORM);
// Créer un message ACL
msg.setContent("Salam you"); // Assigner un contenu
msg.addReceiver(new AID("SecondMessenger", AID.ISLOCALNAME));
// Ajouter le récepteur du message
send(msg); // Envoyer le message
}
});
}
}
Tutorial Jade; Pensez Agent. M1 RSD, ZEGHIDA Djamel, Université 20 Août 1955, Skikda. 18
II. Création d’agent et Interaction (communication)
II.3 Envoi et réception de message ACL (3/4)
5. Dans la classe (SecondMessenger) ajouter un comportement
CyclicBehaviour() pour l’attente de réception d’un message
package message;
import javax.swing.JOptionPane;
import jade.core.AID;
import jade.core.Agent;
import jade.core.behaviours.CyclicBehaviour;
import jade.lang.acl.ACLMessage;
public class SecondMessenger extends Agent {
protected void setup() {
addBehaviour(new CyclicBehaviour() {
public void action() {
ACLMessage msg=receive(); // Réception du message
if(msg!=null){
JOptionPane.showMessageDialog(null,"Bien reçu "+ msg.getContent());
//Affichage du message reçu dans une boite de dialogue
System.out.println("Bien reçu : "+msg.getContent()); //sous console
}else block();
}
});
}
}
Tutorial Jade; Pensez Agent. M1 RSD, ZEGHIDA Djamel, Université 20 Août 1955, Skikda. 19

II. Création d’agent et Interaction (communication)


II.3 Envoi et réception de message ACL (4/4)

6. Pour exécuter, cliquer bouton droit sur le projet et sélectionner Run As


puis Run Configurations
7. Dans la fenêtre à gauche, choisir Java Application et double cliquer
8. L’entrée Main dans le masque de saisie Projet : on trouve le nom du projet
affiché, saisir dans le masque de saisie Main class: jade.Boot
9. L’entrée Arguments , saisir dans le masque de saisie Program arguments :
-gui MessengerAgent2:message.SecondMessenger;MessengerAgent1:message.FirstMessenger
10. Nommer cette configuration et cliquer Apply ensuite Run.
11. GUI RMA affiché (l ’agent MyFirstAgent est créé dans le MainContainer).
12. Pour une autre exécution il faut d’abord arrêter l’exécution (ou les
l’exécutions) et fermer l’interface (ou les interfaces) jade,
( : Terminate, Remove Launch, Remove All Terminated Launches).

Tutorial Jade; Pensez Agent. M1 RSD, ZEGHIDA Djamel, Université 20 Août 1955, Skikda. 20
II. Création d’agent et Interaction (communication)
II.4 Lancer l’agent à partir d’une classe main 1/8

Pour éviter de faire la configuration de l’exécution:


A. Dans le MainContainer :

1. Créer un agent
package myagents;
import jade.core.Agent;
public class MyAgent extends Agent{
protected void setup() {
System.out.println(“Salam, my ID is:"+this.getAID().getName());
}
}

Tutorial Jade; Pensez Agent. M1 RSD, ZEGHIDA Djamel, Université 20 Août 1955, Skikda. 21

II. Création d’agent et Interaction (communication)


II.4 Lancer l’agent à partir d’une classe main 2/8
A. Dans le MainContainer :

2. Créer une classe main ("agent main" ou MainContainer)


import jade.core.Profile;
import jade.core.ProfileImpl;
import jade.core.Runtime;
import jade.wrapper.AgentController;
import jade.wrapper.ContainerController;
import jade.wrapper.StaleProxyException;

public class MyMainContainer {


public static void main(String[] args) {
//créer un environnement d’exécution
Runtime rt=Runtime.instance(); //créer une instance du Runtime (jade.core.Runtime)
Profile pf=new ProfileImpl(); //créer une variable Profile (jade.core.Profile/ProfileImpl
pf.setParameter(Profile.MAIN_HOST, "localhost");
pf.setParameter(Profile.GUI, "true");
ContainerController cc=rt.createMainContainer(pf);
//créer le MainContainer (jade.wrapper.ContainerController)
AgentController ac; // pour exécuter l’agent (jade.wrapper.AgentController)
try {
ac=cc.createNewAgent(“IdMyAgent", "myagents.MyAgent1", null);
//créer l’agent: unique id: IdMyAgent, classe: MyAgent, package: myagents
ac.start(); //lancer l’agent créé
} catch (StaleProxyException e) { //import jade.wrapper.StaleProxyException;
e.printStackTrace();
}
}
}

3. Pour l’exécution, il suffit de lancer la classe MyMainContainer as Java application


Tutorial Jade; Pensez Agent. M1 RSD, ZEGHIDA Djamel, Université 20 Août 1955, Skikda. 22
II. Création d’agent et Interaction (communication)
II.4 Lancer l’agent à partir d’une classe main 3/8
A. Dans le MainContainer :

1. Pour créer plusieurs agents (cinq 5) dans le conteneur principal on ajoute une boucle comme suite :
import jade.core.Profile;
import jade.core.ProfileImpl;
import jade.core.Runtime;
import jade.wrapper.AgentController;
import jade.wrapper.ContainerController;
import jade.wrapper.StaleProxyException;
public class MyMainContainer {
public static void main(String[] args) {
//créer un environnement d’exécution
Runtime rt=Runtime.instance(); //créer une instance du Runtime (jade.core.Runtime)
Profile pf=new ProfileImpl(); //créer une variable Profile (jade.core.Profile/ProfileImpl
pf.setParameter(Profile.MAIN_HOST, "localhost");
pf.setParameter(Profile.GUI, "true");
ContainerController cc=rt.createMainContainer(pf);
//créer le MainContainer (jade.wrapper.ContainerController)
for (int i = 1; i < 6; i++) { // pour exécuter les agents (jade.wrapper.AgentController)
AgentController ac; // pour exécuter un agent (jade.wrapper.AgentController)
try {
ac=cc.createNewAgent(“IdMyAgent"+i, “myAgents.MyAgent", null);
// créer l’agent:unique id:IdMyAgenti, classe:MyAgent, package: myagents
ac.start();// lancer l’agenti créé
} catch (StaleProxyException e) { //import jade.wrapper.StaleProxyException;
e.printStackTrace();
}
}
}
}
2. Pour l’exécution, il suffit de lancer la classe MyMainContainer as Java application
3. Pour une autre exécution ( : Terminate, Remove Launch, Remove All Terminated Launches)
Tutorial Jade; Pensez Agent. M1 RSD, ZEGHIDA Djamel, Université 20 Août 1955, Skikda. 23

II. Création d’agent et Interaction (communication)


II.4 Lancer l’agent à partir d’une classe main 4/8
Pour éviter de faire la configuration de l’exécution (suite):
B. Un agent dans le MainContainer et l’autre dans un conteneur avec envoi
et réception de message ACL entre conteneurs :
B.1. Une façon light
1. Créer deux agents dans un nouveau projet et un package
package myintractagents;
import jade.core.Agent;
import jade.core.behaviours.CyclicBehaviour;
import jade.lang.acl.ACLMessage;
public class IntractAgent1 extends Agent {
protected void setup() {
addBehaviour(new CyclicBehaviour() {
public void action() {
ACLMessage msg=receive();
if(msg!=null) {
System.out.println(msg.getContent());
} else block();
}
});
}
}
Tutorial Jade; Pensez Agent. M1 RSD, ZEGHIDA Djamel, Université 20 Août 1955, Skikda. 24
II. Création d’agent et Interaction (communication)
II.4 Lancer l’agent à partir d’une classe main 5/8
B. Un agent dans le MainContainer et l’autre dans un conteneur avec envoi et réception de message ACL entre conteneurs :
B.1. Une façon light

Le deuxième agent:
package myintractagents;
import jade.core.AID;
import jade.core.Agent;
import jade.core.behaviours.OneShotBehaviour;
import jade.lang.acl.ACLMessage;
public class IntractAgent2 extends Agent {
protected void setup() {
addBehaviour (new OneShotBehaviour() {
public void action() {
ACLMessage msg=new ACLMessage(ACLMessage.INFORM);
msg.setContent("Initiation d’intéraction");
msg.addReceiver(new AID("IntractAgent1", AID.ISLOCALNAME));
send(msg);
}
});
}
}
Tutorial Jade; Pensez Agent. M1 RSD, ZEGHIDA Djamel, Université 20 Août 1955, Skikda. 25

II. Création d’agent et Interaction (communication)


II.4 Lancer l’agent à partir d’une classe main 6/8
B. Un agent dans le MainContainer et l’autre dans un conteneur avec envoi et réception de message ACL entre conteneurs :
B.1. Une façon light

2. Créez une classe main ("agent main" ou MainContainer)


package myintractagents;
public class MainContainerAgentIntract {
public static void main(String[] args) {
//L’agent ITA2 dans le MainContainer et l’agent ITA1 dans un conteneur simple
String[] args1={"-gui","ITA2:myintractagents.IntractAgent2"};
String[] args2={"-container","ITA1:myintractagents.IntractAgent1"};
jade.Boot.main(args1);
jade.Boot.main(args2);
}
}
Ou bien :
package myintractagents;
public class MainContainerAgentIntract {
public static void main(String[] args) {
//Les agents ITA2 et ITA1 dans deux conteneurs simples, pas d'agent utilisateur dans le MainContainer
String[] args0={"-gui","null"};
String[] args1={"-container","ITA2:djointractagents.IntractAgent2"};
String[] args2={"-container","ITA1:djointractagents.IntractAgent1"};
jade.Boot.main(args0);
jade.Boot.main(args1);
jade.Boot.main(args2);
}
}
3. Pour l’exécution, il suffit de lancer la classe MainContainerAgentIntract as Java application
4. Pour une autre exécution ( : Terminate, Remove Launch, Remove All Terminated Launches)

Tutorial Jade; Pensez Agent. M1 RSD, ZEGHIDA Djamel, Université 20 Août 1955, Skikda. 26
II. Création d’agent et Interaction (communication)
II.4 Lancer l’agent à partir d’une classe main 7/8
B. Un agent dans le MainContainer et l’autre dans un conteneur avec envoi et réception de message ACL entre conteneurs :

B.2. Une autre façon


1. Créer un main container
package agentsConteneurs;
import jade.core.Profile; // * ajouté
import jade.core.ProfileImpl;
import jade.core.Runtime;
import jade.util.ExtendedProperties;
import jade.util.leap.Properties;
import jade.wrapper.AgentContainer;
import jade.wrapper.ControllerException; Profile pf=new ProfileImpl(); *
pf.setParameter(Profile.MAIN_HOST, "localhost");
public class MainConteneur {
pf.setParameter(Profile.GUI, "true");
public static void main(String[] args) {
// try { ajouté
Runtime rt=Runtime.instance();
Properties p=new ExtendedProperties();
p.setProperty("gui","true"); // p.setProperty(Profile.GUI, “true”); *
ProfileImpl pf=new ProfileImpl(p); // Profile pf=new ProfileImpl(p);
AgentContainer conteneurPrincipal=rt.createMainContainer(pf);
try {
conteneurPrincipal.start();
} catch (ControllerException e) {
e.printStackTrace();
}
}
}

Tutorial Jade; Pensez Agent. M1 RSD, ZEGHIDA Djamel, Université 20 Août 1955, Skikda. 27

II. Création d’agent et Interaction (communication)


II.4 Lancer l’agent à partir d’une classe main 8/8
B. Un agent dans le MainContainer et l’autre dans un conteneur avec envoi et réception de message ACL entre conteneurs :
B.2. Une autre façon

2. Créer un main container


package agentsConteneurs;
import jade.core.Profile; // * ajouté
import jade.core.ProfileImpl;
import jade.core.Runtime;
import jade.wrapper.AgentContainer;
import jade.wrapper.AgentController;
import jade.wrapper.ControllerException;
public class AgentConteneur {
public static void main(String[] args) {
try {
Runtime rt=Runtime.instance();
ProfileImpl pf=new ProfileImpl(false); //Profile pf=new ProfileImpl(false); *
pf.setParameter(ProfileImpl.MAIN_HOST, "localhost"); // pf.setParameter(Profile.MAIN_HOST, "localhost");
//préciser au conteneur d'agents ou se trouve le main conteneur
AgentContainer conteneurAgent=rt.createAgentContainer(pf);
AgentController agtCtrl1=conteneurAgent.createNewAgent("Ag1", "agentsConteneurs.Agent1",null);
AgentController agtCtrl2=conteneurAgent.createNewAgent(“Ag2", "agentsConteneurs.Agent2",null);
AgentController agtCtrl3=conteneurAgent.createNewAgent("Ag3","agentsConteneurs.Agent3",new
Object[]{"A"});
//la table object[] c'est la table des paramètres a envoyer par l'agent
agtCtrl1.start();
agtCtrl2.start();
agtCtrl3.start();
} catch (ControllerException e) {
e.printStackTrace();
}
}
}
Tutorial Jade; Pensez Agent. M1 RSD, ZEGHIDA Djamel, Université 20 Août 1955, Skikda. 28
II. Création d’agent et Interaction (communication)
II.5 Utilisation du sniffer agent du GUI de l’agent RMA 1/2
A. Pour tuer un agent
On peut imaginer l’agent suivant:

package myintractagents;
import jade.core.Agent;
import jade.core.behaviours.CyclicBehaviour;
import jade.lang.acl.ACLMessage;
public class AgentToKill extends Agent {
protected void setup() {
addBehaviour(new CyclicBehaviour() {
public void action() {
ACLMessage msg=receive();
if(msg!=null) {
if(msg.getContent().equals("delete"))
doDelete();
} else block();
}
});
}
}

Faites un Run et à partir de l’interface Jade (GUI de l’agent RMA) envoyez un message avec
le contenu "hello", rien ne se passe et l’agent est toujours présent. Ensuite avec le contenu
"delete", l’agent sera tué et disparait du GUI de l’agent RMA.

Tutorial Jade; Pensez Agent. M1 RSD, ZEGHIDA Djamel, Université 20 Août 1955, Skikda. 29

II. Création d’agent et Interaction (communication)


II.5 Utilisation du sniffer agent du GUI de l’agent RMA 2/2
B. Have fun ! Amusez-vous!
1. Lancer une exécution d’une plateforme agent jade:
2. Dans le menu Tools du GUI de l’agent RMA, après la sélection d’un conteneur ou
d’un agent, sélectionner l’entrée Start Sniffer (ou cliquez sur le bouton de la boite
d’outils Start Sniffer), une interface du Sniffer Agent apparait
3. Pour sniffer un agent cliquez bouton droit sur l’agent (par exemple l’agent ams) et
choisissez la première entrée du menu contextuel déroulant présenté Do sniff
this agent(s) et constate le résultat sur le volet droit du Sniffer Agent lorsqu’il y
a échange de message entre les agents présents dans le volet gauche du GUI de
l’agent RMA
4. On fait de même pour n’importe quel agent présent dans le volet gauche du Sniffer
Agent : df, rma ou un agent utilisateur comme par exemple FirstMessenger, ayant
comme identifiant unique MessengerAgent1,
5. Dans le volet gauche du GUI de l’agent RMA on peut envoyer des messages
ACL entre les agents et les voir affichés sur le volet droit du Sniffer Agent:
Cliquez bouton droit sur l’agent et choisissez la dernière entrée du menu
contextuel déroulant présenté Send Message. Dans la fenêtre ACL Message vous
pouvez préciser le contenu, type (communicative act : propose, inform, refuse,
request,…. ), le destinateur (identifier par son AID de la
forme :MessengerAgent1@192.168.1.101:1099/JADE), l’émetteur et d’autres
paramètres.
Tutorial Jade; Pensez Agent. M1 RSD, ZEGHIDA Djamel, Université 20 Août 1955, Skikda. 30

You might also like