bonjour,
je sais pas si vous avez lu mon message. je me demande si vous pouvez me dire si c'est possible de créer un agent qui inclue directement son interface? je l'ai jamais fait auparavant.
Merci infiniment.
Version imprimable
Bonsoir djug,
tout d'abord, un grand merci à tous ceux qui ont participé à réaliser ce tuto!
S'il vous plait, mon thème de projet est "un sma pour un probleme d'ordonnancement conjoint production/maintenance dans un atelier de production" donc il s'agit d'avoir un planning pour chaque machine, specifiant le debut et la fin de chaque tache de production ou une tache de maintenance,sachant que chaque tache a une durée; donc je vais utiliser jade et eclipse!
et je sais pas par quoi commencer, comment réaliser l'interface, comment integrer les agents? j'ai pas compris le fonctionnement de jade avec eclipse? aidez moi svp!! je sais pas par quoi entamer!
Sachant que j'ai réussi a créer l'agent grace à votre tuto!
avant de se lancer dans la réalisation de ton projet il faut faire une bonne conception de ton système et apprendre en parallèle la programmation avec JADE (les différents aspects des agents)Citation:
et je sais pas par quoi commencer
il faut également lire des livres/articles sur la programmation orienté agent
quand tu feras tous ça , le réalisation du système deviendra très simple
Bonsoir,
Svp, j'ai terminé la conception de mon projet"un sma pour un pbm d'ordonnancement conjoint production maintenance", et j'ai définie le rôle de chaque agent,est ce que je peux commencer à programmer mes agents?
Par exemple, j'ai un agent production qui représente une tâche de production qui possède les propriétés suivantes: durée opératoire, date de début au plus tôt, date de début au plus tard, et il doit communiquer avec l'agent machine, agent maintenance, agent superviseur production?
sachant que dans ma conception j'ai fait un agent utilisateur qui lui va faire entrer les données, c'est à dire, les propriétés de l'agent production par exemple.......................
Comment je vais commencer, comment réaliser mon interface, comment faire le lien eclipse-jade?
Merci de m'aider, je suis bloquée!!
Bonsoir;
tout d'abord pour réalisé la connexion JADE-Eclipse, tu doit ajouter les librairies de JADE dans eclipse, pour cela : tu copie JADE dans C:/ par exemple, après dans tu crée un projet dans eclipse; tu met propriété du projet, ensuite tu ajoute les fichier ".jar" qui se trouve dans le dossier "C:JADE/JADEbin/JADE/lib/". comme ca tu poura utilisé les différents méthodes de jade.
chaque rôle de ton agent signifie un comportement. rensigne toi sur les différents type de comportements OneShotBehaviour ou bien parallèle behaviour ect...
Pour les interface d'après ce que je sais tu les crées séparément et tu les lance dans le code de l'agent. pour Eclipse tu doit installer des plugins d'edition d'interfaces comme JCréator pour facilier leurs création. c'est pour cela je prèfère le duo JADE-JbuilderX. car il possède par défaut un éditeur d'interface.
Voila brièvement quelques informations.
Bon courage
salut djug
j'ai installe JADE mais quand je essaye d'exécuté le premier agent j'ai trouve un problème (INFO: JADE is closing down now.)
comment le faire svp;
merci d'avance :)http://D:\agent.PNG
Slt à tous,
je suis en train de faire un projet d'un SMA en utilisant jade et éclipse, j'ai utilisé plusieurs tutoriels pour cela
Mais lors de l'exécution, j'ai trouvé que certains messages n'arrivent pas au bon destinataire(agent) que j'ai implémenté
j'ai utilisé le syntaxe suivant pour l'envoie des messages;
au niveau d'agent sender: ACLMessage msg= new ACLMessage(ACLMessage.INFORM);
msg.setContentObject((Serializable) part);
msg.addReceiver(new AID( "Agent2", AID.ISLOCALNAME));
send(msg);
au niveau de l'agent receiver:
ACLMessage msg= receive() ;
if (msg!=null)
{méthodes}
else block();
Est ce que vous pouvez m'aider en précisant pourquoi les messages ne sont pas bien distribués entre les agents sachant que j'ai 11agents qui s'échangent plusieurs messages?Aussi je me suis étonné parce que le console d'éclipse me donne des résultats différentes à chaque exécution, j'ai installé plusieurs versions et le même problème reste.
Merci d'avance
Salut,
tu peux commencer par lire le fichier "JADEProgramming-Tutorial-for-beginners.pdf" il est très bon pour débuter, il se trouve dans le package de JADE docs. sinon tu peut nous décrire toutes les étapes que tu a fait, afin de diagnostiquer ton problème.
bonne soirée.
[Citation:
Salut
merci j'ai lus ce pdf + tuto (Djug)et tout ça marche Bien ,Mais mon soucé mnt est les agents mobile car je trouve pas les docs qui concerne cette sujet :(
- je veux qu'un agent A migre de la plateforme 1 à la plateforme 2 qui situe dans la meme PC (just je donnera 2 port)
1- Quelle version de JADE qui support la mobilite entre plateforme(meme PC) ?
2- Code pour le faire si possible ... pour je commence :?
c'est urgent ,Merci d'avance & Bon chance à tous ;
Citation:
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:
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 AgentProj
vos réponses , Merci d'avance ;Code:
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:-gui test:HelloAgent(1)
donne l'erreur suivanteCode:-gui test:HelloAgent(1 2)
j'ai essaier avec des ; entre les arguments mais le probleme persisteCode:
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 :mouarf: (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 :ccool:
Bonjour, j'ai lu votre exemple de JADE_Agent(Les communications des agents JADE) (ce lien:
http://djug.developpez.com/java/jade/communication/
la configuration: -gui jade.boot agent1:AgentsPackage.AgentA
et j'ai rencontré un problème, il ne s’exécute qu'un seule agent (Agent A).
comme illustre
---------------------------------------
----------------agent A----------------
---------------------------------------
en attente de l agent B
sachant que j'ai rien modifié le code, j'ai besoin d’exécuter deux agents en même temps qui ont communiqués entre eux,et afficher les échanges des messages. Merci b1
tu dois lancer le 2e agent dans une autre fenêtre (invite de commande)
je me souviens pas bien de la commande mais je crois que c'est celle la
Citation:
java jade.Boot -container agent2:AgentsPackage.AgentB
bonjour Monsieur,
concernant mon problème, je besoin d’exécuter votre exemple "Communication Avec Agent JADE" ,Ok. Donc pour quoi à votre avis lorsque je exécute le projet, il m'affiche la résultat suivante :
sachant que j'ai fait ma configuration comme illustre:Code:
1
2
3 ----------------agent A---------------- --------------------------------------- en attente de l agent B
Code:
1
2-gui jade.boot agent1:AgentsPackage.AgentA -gui jade.boot agent2:AgentsPackage.AgentB
Merci infiniment Monsieur de votre Conseil et Orientation.
pour l’exécuter tu dois faire le suivant:
tu lances la commande suivante ,via l'invite de commande(première fenêtre):
puis lance la 2e commande dans une autre fenêtre/invite de commande:Code:-gui jade.Boot agent1:AgentsPackage.AgentA
faites attention, le B de Boot doit être en majusculeCode:java jade.Boot -container agent2:AgentsPackage.AgentB
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'avanceCode:
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,Citation:
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 IPMSCitation:
alors 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)
Bonjour: après l’exécution de votre exemple "Communication avec agent JADE", j'ai reçois:
Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19 ----------------agent B---------------- --------------------------------------- ----------------agent A---------------- --------------------------------------- en attente de l agent B *** Uncaught Exception for agent agent2 *** java.lang.NumberFormatException: For input string: "( (action ( agent-identifier :name agent2@y-e49d31b0e44a4:1099/JADE :addresses (sequence http://Y-E49D31B0E44A4:7778/acc )) (ACLMessage) ) (MTS-error ( agent-identifier :name AgentA@y-e49d31b0e44a4:1099/JADE ) (internal-error "Agent not found: getContainerID() failed to find agent AgentA@y-e49d31b0e44a4:1099/JADE")) )" at java.lang.NumberFormatException.forInputString(Unknown Source) at java.lang.Integer.parseInt(Unknown Source) at java.lang.Integer.parseInt(Unknown Source)ERROR: Agent agent2 died without being properly terminated !!! State was 2 at AgentsPackage.AgentB$afficher.action(AgentB.java:53) at jade.core.behaviours.Behaviour.actionWrapper(Behaviour.java:344) at jade.core.behaviours.CompositeBehaviour.action(CompositeBehaviour.java:109) at jade.core.behaviours.Behaviour.actionWrapper(Behaviour.java:344) at jade.core.Agent$ActiveLifeCycle.execute(Agent.java:1500) at jade.core.Agent.run(Agent.java:1439) at java.lang.Thread.run(Unknown Source)
La Configuration:
-gui jade.Boot agent1:AgentsPackage.AgentA
-gui jade.Boot -container agent2:AgentsPackage.AgentB
et même avec l'invité de commande??!!!:roll:
c'est tout à fait normal
tu as nommé tes agents :agent1 et agent2
mais au niveau du code tu utilise AgentA et AgentB pour les désigner
il suffit de renommer tes agents en agent1 et AgentB
Citation:
-gui jade.Boot AgentA:AgentsPackage.AgentA
-gui jade.Boot -container AgentB:AgentsPackage.AgentB
Bonsoir.
Une Question Svp: "Comment travailler avec les agents sans passer par l'interface graphique de JADE!?" est ce que pour deux agents qui peuvent communiquer entre eux par l'envoi des messages il faut passer à chaque fois à l'interface graphique de JADE pour cet envoi?! "Send Message"
j'aimerais bien cacher cette option, et l'envoi se fait automatiquement.
Merci.
oui bien sure
il suffit d'omettre le "- GUI" de la commande qui lance JADE
Bonjour,
j'ai lancé jade et mes agents dans la class Administrateur extends Agent comme ça
mes lorsque je lance un autre agent avec la meme façon dans la class assistant extends AgentCode:
1
2
3
4
5 public static void main(String[] args) { String argsv[] = { "Administrateur:ead.Administrateur","Negociateur:ead.Negociateur","Operateur:ead.Operateur", "ChefGR1:ead.ChefGR1","ChefGR2:ead.ChefGR2","ChefGR3:ead.ChefGR3"}; jade.Boot.main(argsv); }
ex
jade lance un message d'erreur (il faut pas lanser jade deux fois )Code:
1
2
3
4 public static void main(String[] args) { String argsv[] = { "assistant:ead.assistant"}; jade.Boot.main(argsv); }
alors comment lancer les agent apres la lencement de jade
merci
on ne peut lancer qu'une seul instance de jade
pour lancer les agents après le lancement du jade, nous avons 2 solutions:
1/ utiliser l'interface graphique du jade pour lancer les agents,
2/ lancer les agents via la ligne de commande dans un nouveau Container via la commande suivante:
java jade.Boot -container nomAgent:package.classAgent
dans les 2 cas il faut que les .class (tous les fichiers .class) qui résultent de la compilation de l'agent seront mises dans un dossier dont le chemin figure dans la variable d’environnement Path
en d'autre termes, ou bien tu ajoutes le chemin du dossier /bin de ton projet à la variable classPath, ou tu crées un nouveau dossier (par exemple c:/AgentLand) dans lequel tu va copier les fichiers .class de l'agent et bien évidement tu dois ajouter son chemin à la classpath
quel est le message d'erreur ?Citation:
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:
Citation:
-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: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)
par exemple pour lancer un agent tu peux créer un fichier batch (un fichier .bat) qui contient la commande suivante:
bien évidement, il faut que l'agent soit dans un dossier dont le chemin figure dans la variable d’environnement pathCitation:
java jade.Boot -container nomdelAgent:nomClass
Bonjour
J'ai de nouveau un problème sous Jade que je ne parvient pas à résoudre, je passe à tout hasard dans l'espoir de trouver une réponse à ce problème.
J'aimerai vérifier si des messages sont échangés entre mes différents agents, afin de savoir quand terminer une partie de mon algorithme dans l'agent superviseur (autrement dit, tant qu'il y a des messages échangés entre les agents, on attend). Je cherche comment faire celà, mais pas moyen de trouver quoi que ça.
Pour essayer de faire ça, j'ai créé un agent sniffer sur mes agents créés. Le problème, c'est que je ne trouve pas de commande du type "AgentSniffer.ismessageexchanged()" qui me permettrait de récupérer des échanges de messages/savoir si des messages sont en cours d'envoie/reception etc...
Donc si quelqu'un connait une fonction permettant cela (avec un Agent Sniffer ou autre chose, peut être avec un Agent AMS? ), ou une autre méthode pour faire ça. Merci d'avance!
jettes un coup d’œil sur cette vidéo:
http://www.4shared.com/file/13293584...3/Sniffer.html