Bonjour,
Est-ce que c’est possible de lancer deux plates-formes distinctes ( Jade et Aglet) sur une seule machine ?
et comment faire la communication entre deux agents de deux plates-formes différentes ( Aglet et Jade) ?
j'ai essayé avec ce tuto ( pour Jade avec deux agents ) de Youghourta BENALI
Agent A
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74 AgentA.java import jade.core.AID; import jade.core.Agent; import jade.core.behaviours.FSMBehaviour; import jade.core.behaviours.OneShotBehaviour; import jade.lang.acl.ACLMessage; public class AgentA extends Agent { protected void setup(){ System.out.println("---------------------------------------"); System.out.println("----------------agent A----------------"); System.out.println("---------------------------------------"); FSMBehaviour agentA_beh= new FSMBehaviour(); agentA_beh.registerFirstState(new attendreAgentB(), "attendreAgentB"); agentA_beh.registerState(new envoiChiffre(), "envoiChiffre"); agentA_beh.registerLastState(new fin(), "fin"); agentA_beh.registerDefaultTransition("attendreAgentB", "envoiChiffre"); agentA_beh.registerTransition("envoiChiffre", "attendreAgentB",0); agentA_beh.registerTransition("envoiChiffre", "fin", 1); addBehaviour(agentA_beh); } private class attendreAgentB extends OneShotBehaviour{ @Override public void action() { System.out.println("en attente de l agent B"); block(); } } /*****************************************************************/ private class envoiChiffre extends OneShotBehaviour{ int valeurRetour = 0; @Override public void action() { ACLMessage messageRecu = receive(); if (messageRecu.getContent().equalsIgnoreCase("pret") ) valeurRetour=0; else valeurRetour=1; int chiffre = (int)(Math.random()*10); System.out.println("envoi de la valeur "+ chiffre); ACLMessage message = new ACLMessage(ACLMessage.INFORM); message.addReceiver(messageRecu.getSender()); message.setContent(chiffre+""); send(message); } public int onEnd(){ return valeurRetour; } } /*****************************************************************/ private class fin extends OneShotBehaviour{ @Override public void action() { System.out.println("arret de l'agent"); myAgent.doDelete(); } } }
Agent B:
cordialement
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70 import java.security.acl.Acl; import jade.core.AID; import jade.core.Agent; import jade.core.behaviours.FSMBehaviour; import jade.core.behaviours.OneShotBehaviour; import jade.lang.acl.ACLMessage; public class AgentB extends Agent { int somme = 0; boolean stop = false; protected void setup(){ System.out.println("----------------agent B----------------"); FSMBehaviour agentB_beh= new FSMBehaviour(); agentB_beh.registerFirstState(new attendrechiffre(), "attendrechiffre"); agentB_beh.registerState(new afficher(), "afficher"); agentB_beh.registerState(new fin(), "fin"); agentB_beh.registerTransition("attendrechiffre", "afficher",0); agentB_beh.registerTransition("attendrechiffre", "fin",1); agentB_beh.registerDefaultTransition("afficher", "attendrechiffre"); addBehaviour(agentB_beh); } private class attendrechiffre extends OneShotBehaviour{ int valeurRetour = 0; public void action() { ACLMessage message = new ACLMessage(ACLMessage.INFORM); message.addReceiver(new AID("AgentA", AID.ISLOCALNAME)); if(!stop){ message.setContent("pret"); send(message); valeurRetour=0; block(); }else{ message.setContent("arret"); send(message); valeurRetour=1; } } public int onEnd(){ return valeurRetour; } } /**********************************************************************/ private class afficher extends OneShotBehaviour{ @Override public void action() { ACLMessage messageRecu = receive(); somme+= Integer.parseInt(messageRecu.getContent()); System.out.println("message recu= "+ messageRecu.getContent()); System.out.println("la somme actuelle = "+somme); if (somme > 50) stop = true; } } /**********************************************************************/ private class fin extends OneShotBehaviour{ @Override public void action() { System.out.println("fin de l'agent"); myAgent.doDelete(); } } }
Partager