
slt , moi je suis débutante dans la programmation orientée agent et je veux integrer une ontologie dans mon agent ; pour cela je vais utiliser BeanGenerator pour générer les schémas java a partir d'une ontologie préexistante à l'aide de protege ; ma question est : comment peut on definir les classes agentAction et Predicats et concepts a partir des classes déje crées de l'ontologie?![]()
Bonjour tous le monde,
mon exemple est simple, je veux lancer un agent qui dois recevoir un message , s'il n'as pas reçu un message en 3 seconde il sera détruit.
j'essaye de lancer 2 behaviours en paralléle , le premier c'est un FSMBehaviours et le deuxième un simple WakerBehaviour ,qui calcule le temps (les 3 secondes).
voici l'exemple:
et l'erreur c'est :
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 import jade.core.*; import jade.core.behaviours.*; import jade.lang.acl.ACLMessage; import jade.lang.acl.ACLMessage; public class AgentAttente extends Agent { protected void setup() { ParallelBehaviour comportementparallele = new ParallelBehaviour(ParallelBehaviour.WHEN_ANY); comportementparallele.addSubBehaviour(new WakerBehaviour(this, 3000) { protected void handleElapsedTimeout() { System.out.println("Terminé"); myAgent.doDelete(); } }); FSMBehaviour bhv = new FSMBehaviour(); comportementparallele.addSubBehaviour(bhv); bhv.registerFirstState(new fonction1(), "fonction1"); bhv.registerTransition("fonction1", "fonction1", 0); addBehaviour(comportementparallele); } //==================================================================== private class fonction1 extends OneShotBehaviour { public void action() { ACLMessage msgRecu = null; msgRecu = receive(); if(msgRecu==null) block(); //le traintement aprés avoir reçu le message System.out.println(msgRecu.getContent()); } public int onEnd() { return 0; } } //====================================================================== }
en faite l'erreur est du a l'affichage du message parceque mon message est toujours Null. mais pourquoi cette erreur puisque aprés le block() on traite le resultat !!! je peu pas utiliser le blockingReceive parcequ'il me block l'agent et donc meme le WakerBehaviour seras bloqué.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2ERROR: Agent Agent1 died without being properly terminated !!! State was 2
que dois je faire ?
pour ceux qui vont trouvé ce problème plus tard , je leur conseil de lire cette documntation :
http://jade.tilab.com/doc/api/jade/c...our.html#block
en faite la méthode block(), bloque le behaviours a la fin de la méthode action et donc si vous faite un block() et un traitement après c'est normal qui vas exécuter ce traitement comme l'affichage dans mon exemple précédent.
voila l'ami mon problème :
j'ai 2 agents sur 2 ordi et je veux qu'ils discute mais ca marche pas voila le code du lancement des 2 agents chacun sur un pc :
code du lancement de l'agent1 sur pc1 dans le port 8888:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10Runtime rt = Runtime.instance(); Profile p = new ProfileImpl(nul,8888,nul); ContainerController cc = rt.createAgentContainer(p); AgentController AgentFils1; try { AgentFils1=cc.createNewAgent("Agent1","firstAgent.Agent1",null); AgentFils1.start(); } catch (StaleProxyException e) { e.printStackTrace(); }
code du lance ment de l'agent2 sur le port 8888:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10Runtime rt = Runtime.instance(); Profile p = new ProfileImpl(nul,8888,nul); ContainerController cc = rt.createAgentContainer(p); AgentController AgentFils1; try { AgentFils1=cc.createNewAgent("Agent2","firstAgent.Agent2",null); AgentFils1.start(); } catch (StaleProxyException e) { e.printStackTrace(); }
je crois (mais je ne suis pas sûr) que les agents JADE ne peuvent communiquer que s'ils sont sur la même plateforme (la même plateforme sur la même machine ou sur deux machine différentes)
sinon si vous voulez que les agents soit sur des plateformes différentes, il faut que l'un d'eux migre vers la plateforme de l'autre
voila ma question: Profile p = new ProfileImpl(x1,x2,x3);
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 Runtime rt = Runtime.instance(); Profile p = new ProfileImpl(null,8888,null); ContainerController cc = rt.createAgentContainer(p); AgentController AgentFils1; try { AgentFils1 = cc.createNewAgent("Agent_ress_1","firstAgent.Agent_ress_1",null); AgentFils1.start(); } catch (StaleProxyException e) { e.printStackTrace(); }
li faut mettre quoi a la place de x1 ,x2
pour x2 il faut mettre le port du lancement la plateforme mais x1 et x2 je ne sait pas
et si tu peut me donner un exemple ça sera formidable
et merci








Bonsoir,
Malgré k j'au utilisé deux versions différentes d'ECLIPSE, j'ai la même réponse comme celle de l'internaute "mimish" qui confirme qu'il a réglé le probleme qui été au niveau d'eclipse.
Sachant k j'ai essayé la version 3.5.2 et 3.5.1, mais son succés. Le message suivant s'affiche:
SVP, réponsez moi. Merci
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 23 juin 2010 01:51:24 jade.core.Runtime beginContainer INFO: ---------------------------------- This is JADE snapshot - revision $WCREV$ of $WCDATE$ downloaded in Open Source, under LGPL restrictions, at http://jade.tilab.com/ ---------------------------------------- 23 juin 2010 01:51:26 jade.core.AgentContainerImpl joinPlatform GRAVE: Some problem occurred while joining agent platform. jade.core.ProfileException: Can't get a proxy to the Platform Manager [nested jade.core.IMTPException: The Service Manager was already bound in the RMI Registry [nested java.rmi.AlreadyBoundException: ServiceManager]] at jade.core.ProfileImpl.createPlatformManager(ProfileImpl.java:574) at jade.core.ProfileImpl.getPlatformManager(ProfileImpl.java:487) at jade.core.ProfileImpl.getServiceManager(ProfileImpl.java:501) at jade.core.AgentContainerImpl.init(AgentContainerImpl.java:336) at jade.core.AgentContainerImpl.joinPlatform(AgentContainerImpl.java:472) at jade.core.Runtime.createMainContainer(Runtime.java:148) at jade.Boot.<init>(Boot.java:130) at jade.Boot.main(Boot.java:70) Nested Exception: jade.core.IMTPException: The Service Manager was already bound in the RMI Registry [nested java.rmi.AlreadyBoundException: ServiceManager] at jade.imtp.rmi.RMIIMTPManager.exportPlatformManager(RMIIMTPManager.java:276) at jade.core.ProfileImpl.createPlatformManager(ProfileImpl.java:563) at jade.core.ProfileImpl.getPlatformManager(ProfileImpl.java:487) at jade.core.ProfileImpl.getServiceManager(ProfileImpl.java:501) at jade.core.AgentContainerImpl.init(AgentContainerImpl.java:336) at jade.core.AgentContainerImpl.joinPlatform(AgentContainerImpl.java:472) at jade.core.Runtime.createMainContainer(Runtime.java:148) at jade.Boot.<init>(Boot.java:130) at jade.Boot.main(Boot.java:70) Nested Exception: java.rmi.AlreadyBoundException: ServiceManager at sun.rmi.registry.RegistryImpl.bind(Unknown Source) at sun.rmi.registry.RegistryImpl_Skel.dispatch(Unknown Source) at sun.rmi.server.UnicastServerRef.oldDispatch(Unknown Source) at sun.rmi.server.UnicastServerRef.dispatch(Unknown Source) at sun.rmi.transport.Transport$1.run(Unknown Source) at java.security.AccessController.doPrivileged(Native Method) at sun.rmi.transport.Transport.serviceCall(Unknown Source) at sun.rmi.transport.tcp.TCPTransport.handleMessages(Unknown Source) at sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run0(Unknown Source) at sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run(Unknown Source) at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(Unknown Source) at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source) at java.lang.Thread.run(Unknown Source) at sun.rmi.transport.StreamRemoteCall.exceptionReceivedFromServer(Unknown Source) at sun.rmi.transport.StreamRemoteCall.executeCall(Unknown Source) at sun.rmi.server.UnicastRef.invoke(Unknown Source) at sun.rmi.registry.RegistryImpl_Stub.bind(Unknown Source) at java.rmi.Naming.bind(Unknown Source) at jade.imtp.rmi.RMIIMTPManager.exportPlatformManager(RMIIMTPManager.java:224) at jade.core.ProfileImpl.createPlatformManager(ProfileImpl.java:563) at jade.core.ProfileImpl.getPlatformManager(ProfileImpl.java:487) at jade.core.ProfileImpl.getServiceManager(ProfileImpl.java:501) at jade.core.AgentContainerImpl.init(AgentContainerImpl.java:336) at jade.core.AgentContainerImpl.joinPlatform(AgentContainerImpl.java:472) at jade.core.Runtime.createMainContainer(Runtime.java:148) at jade.Boot.<init>(Boot.java:130) at jade.Boot.main(Boot.java:70) 23 juin 2010 01:51:26 jade.core.Runtime$1 run INFO: JADE is closing down now.
cette erreur apparait quand tu essayes de lancer une nouvelle instance du jade (ou lancer le même programme/agent JADE une nouvelle fois) sans avoir fermer l'ancienne instance proprement.
fermer l'interface graphique du jade ne ferme pas la plateforme vu que l'interface graphique n'est qu'un agents comme les autre (l'agent RMA).
pour fermer le JADE complètement tu as le choix entre l'une des méthodes suivantes:
1. fermer la plateforme à partir de l'interface graphique:
2. fermer l'agent à partir d'eclipse:
3.mais si tu as déjà tenter de lancer la deuxième instance, il te faut redémarrer Eclipse ou fermer le processus javaw.exe , à partir du gestionnaire de tâches (sous windows), ou utiliser la commande systeme suivante (invite de commande):
Code : Sélectionner tout - Visualiser dans une fenêtre à part taskkill /f /im javaw.exe








Merci infiniment, ça marche!








Bonsoir,
je dois implementer un modèle de négociation que j'ai conçu. Ce modèle est constitué de deux phases:
phase1: un agent client négocie avec un ensemble d'agents fournisseurs selon un protocole simple que nous pouvons modéliser par un automate.
Pour implementer ce protocole j'imagine utiliser des behaviours simples.
Cependant, pour la phase 2 du modèle l'agent client négocie avec un sous ensemble des agents fournisseurs selon un protocole un petit peu compliqué. C'est un protocole d'offres alternatives ou il a les trois choix suivants:
1. accepter un offre
2. générer une contre offre
3. rejeter l'offre
Ce protocole s'excute sur plusieurs tour jusqu'à trouver une entente ou terminer par un echec.
Bref, voilà ma question:
QUEL BEHAVIOUR DOIS JE UTILISER POUR LA PHASE 2?
j'ai lancé un agent agent1 sur mainContenair sur pc1
je veux lancé un autre agent sur pc2 pour que ces deux la peuvent descuter est ce que c'est possible si oui comment et merci d'avance.







Jade n'est pas destiné à un seul type d'agent, il te fournit un ensemble d' "outils" et c'est à toi de les utiliser pour développer des agents cognitifs
PS: je n'ai travaillé que sur des agents réactifs


Bonsoir,
j'ai un projet à faire concernant l'équilibrage de charge dans un réseau à base d'agents mobiles, c'est la première fois que je travaille avec les agents mobiles, alors je trouve quelques difficultés
Si vous pouvez m'aider avec vos idées et vos propositions sur ce sujet!
Merci
Partager