private void ExecAlgo() { // Remove precedent generation Dispatcher.Invoke(() => { foreach (Line l in roadLines) { canvasMap.Children.Remove(l); } roadLines.RemoveRange(0, roadLines.Count); }); this.SaveParams(); var generations = Algo.Launch(new List <City>(this.cities), this.NbRoadsPerGeneration, this.NbMutations, this.NbXovers, this.NbElites); int indexGen = 0; StringBuilder sb = new StringBuilder(); foreach (Generation g in generations) { sb.Append("Generation " + indexGen++ + " : ---------------------------------------------"); sb.Append("\n"); sb.Append(g); sb.Append("\n"); } Dispatcher.Invoke(() => { UpdateConsole(sb); //display best road PrintRoad(generations[generations.Count - 1].Roads[0]); }); }
private static Generation GetNextGeneration(Generation genN, int mutationsPercentage, int xoverPercentage, int elitesPercentage) { var xovers = Algo.GenerateXOver(genN, xoverPercentage); var mutations = Algo.GenerateMutations(genN, mutationsPercentage); var elites = genN.GetBestRoad(elitesPercentage); var genPrimeRoad = new List <Road>(mutations); genPrimeRoad.AddRange(elites); genPrimeRoad.AddRange(xovers); var genPrime = new Generation(genPrimeRoad).GetBestRoad(genN.Roads.Count); return(new Generation(genPrime)); }