JADE : création / destruction Agents - Java - Programmation
Marsh Posté le 22-01-2016 à 15:58:28
Ah tiens je retrouve mon topic, ça fait longtemps
Bon finalement pour tuer un agent il faut bien passer par l'agent AMS:
Code :
|
Ensuite, la méthode TakeDown() de l'agent qu'on souhaite tuer est appelée. Dans cette méthode il faut dés-enregistrer l'agent du DF:
Code :
|
Marsh Posté le 07-05-2015 à 11:29:22
Bonjour à vous,
Comme j'ai pu le constater Jade n'est pas vraiment la tasse de thé sur ce forum (4 réponses en utilisant l'outil de recherche et le dernier datant de 2010).
Je me lance donc dans ma question, sans grand espoir de réponse.. (Malgré tout si la communauté JADE existe sur HFR je serai content de faire un Topic Unique à ce sujet)
Alors mon problème est assez "simple":
J'ai un SMA (Système Multi Agent) sous JADE comportant un dizaine d'agents, dont un qui surveille l'état des autres. Pour cela les agents lui envoient régulièrement des petits messages ACL pour lui dire qu'ils vont toujours bien.
Sauf que lorsqu'un agent ne répond plus (mal programmé, boucle infini ou planté, peu importe la raison) il n'envoie plus ce message. Au bout d'un certain temps de messages non-envoyés, l'agent qui surveille doit tuer l'agent qui ne répond plus et le relancer.
Pour relancer l'agent 'normalement' j'ai trouvé l'astuce de comment faire:
Inspiré de l'agent ThanksAgent qu'on peut trouver ici
Je n'ai pas pu le tester encore puisque j'ai pas réussi à tuer l'agent en question
Pour la destruction j'ai appris qu'il faut envoyer un message à l'agent AMS (le conteneur):
Source: ici
Cependant ça me met une belle erreur au niveau de la ligneComme quoi il ne connait pas l'ontologie en question
Solution; j'avais essayé plusieurs méthodes et celle ci fonctionne
Vous avez des idées?
EDIT:
Mise à jour:
Finalement j'arrive à bien tuer un agent distant. Cependant je pensais qu'il serait automatiquement enlevé du registre de l'agent DF (Directory Facilitator: Pages Jaunes) mais non. D'après mes lectures lorsqu'un agent meurt la méthode TakeDown() était appelé mais ce n'est pas le cas à priori.
Cependant pour redémarrer l'agent, j'ai une belle erreur m'indiquant que l'agent ne peut pas être instancié:
Je teste avec une deuxième solution venant d' ici mais Eclipse me retourne une erreur comme quoi il ne connait pas getContainerIDs
Message édité par DarkHorse le 22-01-2016 à 15:59:35
---------------
Corvette C5 Coupé owner