Beispiel #1
0
        public void MergeToBests(IEntityList entities)
        {
            IEntityList travelers = new EntityList(entities.Count);
            bool        anyMerged = false;

            for (int e = 0; e < entities.Count; e++)
            {
                if (entities[e].Fitness.IsLethal())
                {
                    continue;
                }

                bool merged = FitnessComparer.MergeToBests(Algorithm.Population.Bests, entities[e]);
                if (merged)
                {
                    travelers.Add(entities[e]);
                    var timeString = DateTime.Now.ToString("HH:mm:ss.ffff");
                    Debug.WriteLine(timeString + " " + entities[e].ToString());
                    var stat = Algorithm.Population.FitnessStatistics.StatisticVariables[0];
                    Debug.WriteLine($"{timeString} Mean: {stat.Mean}, Deviation: {stat.Deviation}");
                    anyMerged = true;
                }
            }

            if (anyMerged && NewEntityMergedToBest != null)
            {
                NewEntityMergedToBest(Algorithm.Population.Bests);
            }

            if (LaunchTravelers != null && travelers.Count > 0)
            {
                LaunchTravelers(travelers, TravelerTypes.Best);
            }
        }