Beispiel #1
0
        /// <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();
        }
Beispiel #2
0
 /// <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();
 }
Beispiel #3
0
 /// <summary>
 /// Methode qui permet de demarrer les threads de l'agent et de l'environnement.
 /// </summary>
 public void Start()
 {
     Thd.Start();
     MonCapteur.Start();
 }