Bonsoir,
j'ai réussi à faire la mobilité inter container ;
et j'ai créer une class qui permet de faire la connexion à la BDD MySql et de récupéré les donnes;
Mais lorsque j'ai essayé de faire que mon agent mobile récupérer ces donnes j'ai trouve une erreur même la mobilité ne marche pas(pas de trace) !!!!
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
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135 import java.sql.DriverManager; import java.sql.ResultSet; import java.sql.Statement; import jade.core.AID; import jade.core.Agent; import jade.core.behaviours.*; import jade.core.ContainerID; import java.sql.*; import javax.swing.table.DefaultTableModel; import com.mysql.jdbc.Driver; import com.mysql.jdbc.RowData; public class AgentProj extends Agent{ Connection connection; Record[][] dc = new Record [3][4]; // donnes recupere String prod; public void setup(){ addBehaviour(new B()); } private class B extends SimpleBehaviour{ private boolean _done; private int step=0; public void action(){ System.out.println("My name is "+ getLocalName()); System.out.println(" I'm in Main container "); Object[] args = getArguments(); if (args != null){ for (int i = 0; i < args.length; i++) { System.out.println(" I'm try to buy "+(String)args[i]); prod=(String)args[i]; } }else{ System.out.println("No arguments"); } //************************************Migration 1************************************* switch(step){ case 0: System.out.println("\n Moving1 ..."); // on déclare la variable qui va contenir le nom du Container String containerName = "Container-1"; ContainerID destination = new ContainerID(); // on déclare la variable qui represente la destination destination.setName(containerName); // et on fait la migration myAgent.doMove(destination); System.out.println("Hello, I'm in container-1 "); try { Class.forName("com.mysql.jdbc.Driver"); System.out.println("com.mysql.jdbc.Driver found"); connection=DriverManager.getConnection("jdbc:mysql://localhost:3306/agent","root","root"); System.out.println("Connexion Ok"); Statement instruction = connection.createStatement(); ResultSet resultat = instruction.executeQuery("SELECT * FROM tab1 where nom_prod LIKE'"+prod+"'"); while(resultat.next()){ if (resultat!= null){ System.out.println(resultat.getString("prix_prod")); } } } catch(Exception cnfe) { System.out.println("Error:"+cnfe.getMessage()); } step++; break; //***************************** Migration 2*********************************************** case 1: System.out.println("\n Moving2 ..."); // on déclare la variable qui va contenir le nom du Container String containerName2 = "Container-2"; ContainerID destination2 = new ContainerID(); // on déclare la variable qui represente la destination destination2.setName(containerName2); // et on fait la migration myAgent.doMove(destination2); System.out.println("Hello I'm in container-2 "); try { Class.forName("com.mysql.jdbc.Driver"); System.out.println("com.mysql.jdbc.Driver found"); connection=DriverManager.getConnection("jdbc:mysql://localhost:3306/agent2","root","root"); System.out.println("Connexion Ok"); Statement instruction = connection.createStatement(); ResultSet resultat2 = instruction.executeQuery("SELECT * FROM tab2 where nom_prod LIKE'"+prod+"'"); while(resultat2.next()){ if (resultat2!= null){ System.out.println(resultat2.getString("prix_prod")); } } } catch(Exception cnfe) { System.out.println("Error:"+cnfe.getMessage()); } step++; break; //******************************** Retour à Main container ******************************* case 2: System.out.println("\n\nMoving3 ..."); String containerName3 = "Main-Container"; ContainerID destination3 = new ContainerID(); // on déclare la variable qui represente la destination destination3.setName(containerName3); System.out.println("je vais retourner ..."); // et on fait la migration myAgent.doMove(destination3); System.out.println(" Les donnes recuperer :"); step++; break; //********************************** Finich************************************************ case 3: _done=true; System.out.println(" I'm finiche My work :The agent has terminated its itinirary"); }//end switch }//end action public boolean done() { return _done; } } // end setup } // end AgentProjvos réponses , Merci d'avance ;
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 l'erreur est 17 avr. 2011 23:01:28 jade.core.mobility.AgentMobilityService$CommandSourceSink handleInformMoved GRAVE: Error in agent serialization. Abort transfer. java.io.NotSerializableException: java.lang.Object
Bonjour, tout d'abord je vous remercie pour ce tuto, ca ma beaucoup aidé
cependant j'ai un petit souci, j'arrive pas a creer un agent avec plus d'un seul argument
la commande suivante marche bien :
mais cette commande:
Code : Sélectionner tout - Visualiser dans une fenêtre à part -gui test:HelloAgent(1)
donne l'erreur suivante
Code : Sélectionner tout - Visualiser dans une fenêtre à part -gui test:HelloAgent(1 2)
j'ai essaier avec des ; entre les arguments mais le probleme persiste
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 ATTENTION: Note that agent arguments specifications must not contain spaces jade.core.ProfileException: Error parsing specifier list test:HelloAgent(1. [nested java.lang.Exception: Incorrect specifier "test:HelloAgent(1". Missing final parenthesis] at jade.core.ProfileImpl.getSpecifiers(ProfileImpl.java:399) at jade.core.ProfileImpl.init(ProfileImpl.java:270) at jade.core.ProfileImpl.<init>(ProfileImpl.java:86) at jade.Boot.main(Boot.java:67)
merci![]()
^
j'ai trouvé la solution, il faut mettre , entre les arguments(source)
je comprend pas pourquoi certain tuto disent qu'il faut mettre des espaces ou des ; entre les args, peut etre ca depend du systeme ou de la version du JADE
Monsieur, Vraiment vous avez fait de bon travail,bon courage![]()
Bonjour Djug ,
j'ai 2 pc , dans l'1 tout est marache bien , mais dans l'2 et lorsque je veux essayer de executé ce commande java jade.Boot - container j'ai trouvé :
Ou le pb svp ,sachant que j'ai lancé la plate forme a partir de eclipse (mobility inter container ), merci d'avance
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11 :\Documents and Settings\Administrateur>java jade.Boot -container xception in thread "main" java.lang.NoClassDefFoundError: jade/Boot aused by: java.lang.ClassNotFoundException: jade.Boot at java.net.URLClassLoader$1.run(Unknown Source) at java.security.AccessController.doPrivileged(Native Method) at java.net.URLClassLoader.findClass(Unknown Source) at java.lang.ClassLoader.loadClass(Unknown Source) at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source) at java.lang.ClassLoader.loadClass(Unknown Source) at java.lang.ClassLoader.loadClassInternal(Unknown Source) ould not find the main class: jade.Boot. Program will exit.
il me semble que le jade n'est pas bien configuré sur le 2e PC
vérifies que la variable ClassPath contient bien le(s) chemin(s) du/des fichier(s) Jar du JADE comme je l'ai expliqué ici
cela ne veut rien dire,mlagrer c'est le mm que j'ai met dans le 1 pc
il se peut que tu as mis les fichers de JADE sur la partition C (sur le premier PC) et sur le 2e PC tu les a mis dans un autre endroit
je suppose que tu n'arrive même pas à lancer JADE sur le 2e PC ?
réinstalles JADE sur le 2e PC (en suivant le tutoriel et non pas en copiant les fichiers du 1e PC)
oui bien sure, via l'interface graphique de la plateforme JADE, mais dans ce cas la tu va tu trouver avec deux plateformes et la migration doit se faire avec l'addon IPMSalors il y un autre methode pour créer 1 conteneur sans utilise cet commande ; çàd avec le code java ? ?
si on t'impose pas d'utiliser ce genre de migration, je te conseille d'utiliser la migration au sein de la même plateforme (moins compliquée et plus facile à mettre en œuvre)
une autre solution pour éviter les cassement de tête:
utiliser un réseau (virtuel) de machines virtuelles (configurer une seule machine virtuelle puis la cloner autant de fois que voulu)
quel est le message d'erreur ?Pour quoi mon agent ne pas lancé directement sous eclipse (dans l'onglet Arguments : -gui jade.Boot Agent launceur:MyPackage.LauncherAgent) ?
juste une remarque, la commande que tu as mentionné contient une erreur:
-gui jade.BootAgentlaunceur:MyPackage.LauncherAgent
salut l'équipe:
bon,j'ai bien réussie dans la création de mon projet,c'est un vrai un système multi agents(11 Agents),tout est bien, mais je voudrais savoir comment créer un fichier exe ou jar pour ce type de plate forme!(JADE).
svp, je vais faire quoi exactement comme procédure pour exporter le projet dans un seul fichier jar ou exe?
vraiment c'est un domaine très vaste à comprendre.j’attende mes amis
la création des fichiers .jar pour les agents Jade se fait de la même manière que les programmes java classiques,
mais les noms des fichiers jar doit respecter une certaine règle ,si je me souviens bien le nom doit contenir le nom du package suivi d'un point (ou d'un souligné) et du nom de la classe (jets un coup d’œil sur la documentation officielle de JADE)
personnellement je te déconseille de le faire , tu peux lancer tes agents via des fichiers .bat sans aucun problème, et tu risque de rencontrer d'autre problème si tu les transforme en Jar (surtout si les agents sont mobiles et migrent d'une machine à une autre)
Comment svp?
Code : Sélectionner tout - Visualiser dans une fenêtre à part personnellement je te déconseille de le faire , tu peux lancer tes agents via des fichiers .bat sans aucun problème, et tu risque de rencontrer d'autre problème si tu les transforme en Jar (surtout si les agents sont mobiles et migrent d'une machine à une autre)
bonjour
Merci pour ce tutorial
j'ai crée le modèle suivant:
agent_coordinateur et deux agents: agentA, agentB
j'ai crée des communications bidirectionnelle entre agent_coordinateur et agentA, agent_coordinateur et agentB
aucune communication entre agent A et agent B
ma question est ce que je peux désactiver agentB, puis le réactiver à un nouveau, après un certain temps? si oui, comment?
s.v.p
merci
bonjour
Merci pour ce tutoriel.
voila j'ai une simulation d'un environnement SMA que je dois faire pour mon projet, et je voudrai créer mes agents dans différents container mais le problème c'est que j'arrive pas a créer le container.
J'ai essayé la commande "java jade.Boot –container" mais ça ne marche pas.
Merci d'avance pour votre aide
Salut
J'ai 6 agents.
le premier envoie un message au 2eme
le 2eme reçois le message et l'envoie au 3 si le message lui correspond sinon il l'envoie aux autre agents
j'ai fait l'envoi de message entre les 2 premiers et ça marche mais je ne sais pas comment faire le renvoie au 3eme agent.
merci d'avance
Bonjour tout le monde,
je suis débutante dans Jade et lorsque je veux envoyer un message d'un agent A à un agent B comme dans les tutos, le message n'arrive pas au destinataire voici le code
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 package FirstAgent; import jade.core.AID; import jade.core.Agent; import jade.core.Runtime; import jade.core.Profile; import jade.core.ProfileImpl; import jade.lang.acl.ACLMessage; import jade.lang.acl.MessageTemplate; import jade.wrapper.*; public class Lanceur extends Agent { protected void setup(){ String localname="Interface"; AID id = new AID(localname, AID.ISLOCALNAME); System.out.println("je m appel "+ getLocalName()); Runtime rt = Runtime.instance(); Profile p = new ProfileImpl(); ContainerController cc = rt.createAgentContainer(p); AgentController AgentFils; AgentController AgentFils2; System.out.println("l'agent "+ getLocalName()+ " va lancer les deux agents AgentA et AgentB "); try { AgentFils = cc.createNewAgent("agentA","FirstAgent.agentA",null); AgentFils.start(); AgentFils2 = cc.createNewAgent("agentB","FirstAgent.agentB",null); AgentFils2.start(); } catch (StaleProxyException e) { // TODO Auto-generated catch block e.printStackTrace(); } } }
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 package FirstAgent; import jade.core.*; import java.util.*; import jade.core.behaviours.*; import jade.lang.acl.ACLMessage; public class agentA extends Agent { public void setup(){ addBehaviour(new OneShotBehaviour(this){public void action(){ ACLMessage msg = new ACLMessage(ACLMessage.INFORM); msg.addReceiver(new AID("agentB", AID.ISLOCALNAME)); msg.setLanguage("English"); msg.setOntology("Weather-forecast-ontology"); msg.setContent("Today its raining"); send(msg); } }); } }SVP aidez moi
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 package FirstAgent; import jade.core.*; import java.util.*; import jade.core.behaviours.*; import jade.lang.acl.ACLMessage; public class agentB extends Agent { //création d'un agent protected void setup() { //String localname = "Peter"; //AID id = new AID(localname, AID.ISLOCALNAME); addBehaviour(new OneShotBehaviour(this){public void action(){ ACLMessage ms = receive(); if(ms==null) block(); else System.out.println(ms.getContent()); } }); //takeDown(); //doDelete(); } }
Merci d'avance.
Partager