problème dans mon programme jade
Bonjour;
SVP, j'ai un problème dans mon programme, je me suis bloqué à ce niveau et je dois récupérer donc j'ai besoin de votre aide.
voilà j'ai crée un agent interface et à travers cet agent j'ai crée deux types d'agents jobs et ressources j'ai terminé toutes les communications et j'ai terminé mon code mais je dois faire plusieurs itérations (en fait l'agent interface communique avec les agent job et les envoie des données puis les agents jobs communiquent avec les agents ressources et lui envoie des données aussi et enfin les agents ressources envoie des modifications vers l'agent interface donc on a des nouvelles données à être envoyer vers les agents jobs de la part de l'agent interface dons ici on doit refaire tout le circuit avec les nouvelles données donc les boucles d'itérations je les ai fait au niveau des transitions voilà mes transitions au niveau de chaque agent surtout au niveau de l'agent interface où on doit faire les itérations:
agentA_beh.registerTransition("creation_agents", "envoie_op_jobs",1);
agentA_beh.registerTransition("envoie_op_jobs", "envoie_phero_Job",1);
agentA_beh.registerTransition("envoie_phero_Job", "reception_ress",1);
agentA_beh.registerTransition("reception_ress", "Attente_ress",0);
agentA_beh.registerTransition("Attente_ress", "reception_ress",0);
agentA_beh.registerTransition("reception_ress", "envoi_ress",1);
agentA_beh.registerTransition("envoi_ress", "recep_agent_ress",1);
agentA_beh.registerTransition("recep_agent_ress", "Attente",0);
agentA_beh.registerTransition("Attente", "recep_agent_ress",0);
agentA_beh.registerTransition("recep_agent_ress","incrémentation",1);
agentA_beh.registerTransition("incrémentation","envoie_op_jobs",1);
agentA_beh.registerTransition("incrémentation", "fin",2);
voilà les transitions et je refais tous le processus dans la transition avant la dernière: dans l'état incrémentation j'incrémente si le nombre d'incrémentations est inférieur au nombre d'itérations fixé on refait le processus dés le début si non on part vers la fin.
voilà les transitions des agents jobs :
agentjob_beh.registerTransition("attendreAgent_interface", "envoie_Agent_interface",1);
agentjob_beh.registerTransition("envoie_Agent_interface", "attendreAgent_interface",0);
agentjob_beh.registerTransition("envoie_Agent_interface", "Reception_qt_phero",1);
agentjob_beh.registerTransition("Reception_qt_phero", "en_attente",0);
agentjob_beh.registerTransition("en_attente", "Reception_qt_phero",0);
agentjob_beh.registerTransition("Reception_qt_phero", "placer_op1_agent_ress",1);
agentjob_beh.registerTransition("placer_op1_agent_ress", "attente",0);
agentjob_beh.registerTransition("attente", "placer_op1_agent_ress",0);
agentjob_beh.registerTransition("placer_op1_agent_ress", "placer_op2_agent_ress",1);
agentjob_beh.registerTransition("placer_op2_agent_ress", "en_attente_ress",0);
agentjob_beh.registerTransition("en_attente_ress", "placer_op2_agent_ress",0);
agentjob_beh.registerTransition("placer_op2_agent_ress", "placer_op3_agent_ress",1);
agentjob_beh.registerTransition("placer_op3_agent_ress", "attendre",0);
agentjob_beh.registerTransition("attendre", "placer_op3_agent_ress",0);
agentjob_beh.registerTransition("placer_op3_agent_ress", "terminer_agent_ress",1);
agentjob_beh.registerTransition("terminer_agent_ress", "attente_ress",0);
agentjob_beh.registerTransition("attente_ress", "terminer_agent_ress",0);
agentjob_beh.registerTransition("terminer_agent_ress", "fin_job",1);
et voilà les transitions des agents ressources:
agentress_beh.registerTransition("attente_ress", "attendre_op1_job",1);
agentress_beh.registerTransition("attendre_op1_job", "attente_ress",0);
agentress_beh.registerTransition("attendre_op1_job", "fin_ress",1);
ici le problème c'est que lorsque je fais les itération les agents jobs et ressources ne fonctionne pas c'est à dire que l'agent interface envoie les données et passe vers l'autre transitions mais les agents jobs et ressources ne reçoivent rien donc dans les autres itérations l'agent interface seulement fonctionne il fait ses états et sort vers la fin malgré que au niveau des autres agents les agents restent vivants j'ai éliminé myAgent.do delete () mais ils ne fonctionnent pas . SVP aidez-moi comment je peux itérer le processus sans avoir ce problème et tous les agents refaient tous les itérations comme la première itération.
Demande d'aide ! Merci d'avance
Bonjour, je suis nouvelle avec la plateforme JADE
J'ai exécuté les exemples des 3 tutorial que Djug a posté
D'ailleurs je le remercie pour son effort. Ils sont très bien expliqués :ccool: .
Je suis entrain de préparer ma mémoire de mastère et je dois proposer une approche multi-agents pour la résolution du problème d'ordonnancement de projets avec des contraintes de ressources.
Je voulais utiliser un FSMBehaviour contenant un état initial (OneShotBehaviour) et ça a marché sans aucune erreur ! mais pour le 2ème état je voulais que ça soit un ParallelBehaviour ! là ça n'a pas marché ! :cry:
Veuillez m'aider svp :( et merci d'avance
Voici le code de mon agent :
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
|
package lesAgents;
import jade.core.Agent;
import jade.core.behaviours.FSMBehaviour;
import jade.core.behaviours.OneShotBehaviour;
import jade.core.behaviours.ParallelBehaviour;
public class Coordinateur extends Agent {
/**
* @param args
*/
//***********************************************************
protected void setup()
{
System.out.println("Bienvenue, je suis l'agent " + getLocalName());
// Création d'un comportement FSM qui implémente un automate à état finis
FSMBehaviour fsm = new FSMBehaviour(this)
{
/*public int onEnd()
{
System.out.println("Traitement términé");
//myAgent.doDelete();
return super.onEnd();
}*/
};
// Définition des états
fsm.registerFirstState (new Initialisation(),"Initialisation");
fsm.registerState(new CreationAgents(),"CreationAgents");
// Définition des transitions
fsm.registerDefaultTransition("Initialisation","CreationAgents");
//fsm.registerTransition("B","B",1);
addBehaviour(fsm);
}
//**********Etat initial***************************************
private class Initialisation extends OneShotBehaviour
{
@Override
public void action()
{
System.out.println("Je vais maintenant lancer l'application");
}
}
//**********Création des agents*******************************
public class CreationAgents extends OneShotBehaviour
{
public void action()
{
//********* Behaviour parallele *********************
ParallelBehaviour creationparallele = new ParallelBehaviour(ParallelBehaviour.WHEN_ALL);
//*********** création des agents ressources**********
creationparallele.addSubBehaviour(new OneShotBehaviour()
{
@Override
public void action()
{
System.out.println("agents ressources");
}
});
//***********création des agents activités*************
creationparallele.addSubBehaviour(new OneShotBehaviour()
{
public void action()
{
System.out.println("agents activités");
}
}
);
addBehaviour(creationparallele);
}
}
} |
Voici le message d'erreur affiché :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14
|
Bienvenue, je suis l'agent Coordinateur
Je vais maintenant lancer l'application
*** Uncaught Exception for agent Coordinateur ***
ERROR: Agent Coordinateur died without being properly terminated !!!
java.lang.RuntimeException: Inconsistent FSM. State: CreationAgents event: 0
at jade.core.behaviours.FSMBehaviour.handleInconsistentFSM(FSMBehaviour.java:377)
at jade.core.behaviours.FSMBehaviour.scheduleNext(FSMBehaviour.java:369)
at jade.core.behaviours.CompositeBehaviour.action(CompositeBehaviour.java:96)
at jade.core.behaviours.Behaviour.actionWrapper(Behaviour.java:340)
at jade.core.Agent$ActiveLifeCycle.execute(Agent.java:1530)
at jade.core.Agent.run(Agent.java:1468)
at java.lang.Thread.run(Unknown Source)
State was 2 |
Aidez moi svp :cry: