Esempio n. 1
0
 private void Tick(FitnessEvaluation fitnessEvaluation)
 {
     lock (fitnessEvaluation)
     {
         if (fitnessEvaluation.Queued)
         {
             bool ticked;
             lock (TickTournamentLock) //Has to wait for a tournament to complete before updating any fitness
             {
                 ticked = fitnessEvaluation.Tick();
             }
             if (ticked)
             {
                 fitnessEvaluation.Queued = false;
                 Console.WriteLine("Caclulated fitness {0}", fitnessEvaluation.SquaredErrorSum);
                 _onFitnessCalculated(fitnessEvaluation);
             }
             else if (fitnessEvaluation.Queued)
             {
                 lock (_fitnessEvaluations)
                 {
                     _fitnessEvaluations.Enqueue(fitnessEvaluation);
                     Console.WriteLine("After Enqueueing again: _fitessEvaluations.Count = {0}", _fitnessEvaluations.Count);
                 }
             }
         }
     }
 }
Esempio n. 2
0
 public void Enqueue(FitnessEvaluation fitnessEvaluation)
 {
     lock (fitnessEvaluation)
     {
         if (fitnessEvaluation.Tick())
         {
             fitnessEvaluation.Queued = false;
             //Console.WriteLine("Caclulated fitness without enqueuing {0}", fitnessEvaluation.SquaredErrorSum);
             _onFitnessCalculated(fitnessEvaluation);
         }
         else if (!fitnessEvaluation.Queued)
         {
             fitnessEvaluation.Queued = true;
             lock (_fitnessEvaluations)
             {
                 _fitnessEvaluations.Enqueue(fitnessEvaluation);
                 Monitor.PulseAll(_fitnessEvaluations);
                 Console.WriteLine("After Enqueueing: _fintessEvaluations.Count = {0}", _fitnessEvaluations.Count);
             }
         }
     }
 }