/// <summary> /// Fonction de l'agent, boucle ou l'agent defini ses actions en fonction de son environnement. /// </summary> private void FonctionAgent() { Application.Current.Dispatcher.Invoke(DelegueActualisation); List <Noeud> environnement = MonCapteur.RenvoyerEnvironnement(); Thread.Sleep(200); Spawn(environnement); while (EnergieDepensee < EnergieMax) { environnement = MonCapteur.RenvoyerEnvironnement(); Noeud arrivee; if (Informe) { arrivee = ParcoursGloutonne(environnement); } else { arrivee = ParcoursLargeur(environnement); } if (arrivee == null) { Application.Current.Dispatcher.Invoke(DelegueFinEnv); this.Stop(); } Queue <String> actions = ListeActions(arrivee, environnement); if (MonCapteur.RenvoyerMesurePerformance() <= 50) //Une mesure de performance a 50 sera consideree comme mauvaise. { Queue <String> act2 = new Queue <string>(); for (int i = 0; i < actions.Count / 2; i++) // On reduit donc de moitie le nombre d'actions, { // pour que l'agent puisse actualiser ses actions plus souvent. act2.Enqueue(actions.Dequeue()); } actions = act2; } if (actions.Count > EnergieMax - EnergieDepensee) { Queue <String> act2 = new Queue <string>(); for (int i = 0; i < EnergieMax - EnergieDepensee; i++) { act2.Enqueue(actions.Dequeue()); } actions = act2; } EffectuerActions(actions); } Application.Current.Dispatcher.Invoke(DelegueFinAspi); this.Stop(); }
/// <summary> /// Methode qui permet d'arreter les boucles de l'environnement et de l'agent, et leur threads. /// </summary> public void Stop() { MonCapteur.Stop(); Thd.Abort(); }
/// <summary> /// Methode qui permet de demarrer les threads de l'agent et de l'environnement. /// </summary> public void Start() { Thd.Start(); MonCapteur.Start(); }