/// <summary> /// Führt die Evolution durch /// </summary> private void Evolve() { Timeout.Stop(); OnRuntimeChanged(100); Debug.WriteLine("Evolving ..."); Generator<Proband> evolutionGenerator = new Generator<Proband>(); // Evolution durchführen IList<Proband> probanden = new List<Proband>(Probanden); Maze4 maze = Maze; int generation = CurrentGeneration++; int index = 0; GenerationReport<Proband> report = evolutionGenerator.EvolveGeneration(GenerationSize, probanden, code => new Proband(maze, generation, Interlocked.Increment(ref index), code)); LastReport = report; Probanden = report.NewGeneration.ToList(); // Feddsch. IsRunning = false; // Erfolg vermelden EventHandler<GenerationReportEventArgs<Proband>> func = RunCompleted; if (func == null) return; func(this, new GenerationReportEventArgs<Proband>(report)); // AutoEvolve verwenden if (AutoEvolveMode) { if (CurrentGeneration % 3 == 0) RegenerateMaze(); PerformRun(true); } }