public MainWindow() { InitializeComponent(); DirectoryInfo di = new DirectoryInfo(Directory.GetCurrentDirectory()); di = (di.Parent).Parent; string picross = "545"; ReadFile grid = new ReadFile { filepath = di.FullName + "\\Data\\" + picross + ".txt" }; grid.MakeConstraints(); WriteFile outfile = new WriteFile { outFilePath = di.FullName + "\\Data\\" + picross + ".csv" }; outfile.WriteHeaders(); double xSpace = myRowCanvas.Width / grid.numColumns; double ySpace = myRowCanvas.Height / grid.numRows; LabelColumns(xSpace, grid.colConstraints, grid.numColumns); LabelRows(ySpace, grid.rowConstraints, grid.numRows); Population population = new Population(grid.colConstraints, grid.rowConstraints, false); Population population2 = new Population(grid.colConstraints, grid.rowConstraints, true); RunGA(grid, population, population2, outfile); }
public async void RunGA(ReadFile grid, Population population1, Population population2, WriteFile outfile) { int correctWoC = 0; int prevFitnessWoc = -1, genCount = 1; do //for(int i = 0; i < 5000; i++) { await Task.Delay(50); population1.ConsultExperts(population2); double xSpace = myRowCanvas.Width / grid.numColumns; double ySpace = myRowCanvas.Height / grid.numRows; double avg1 = 0; foreach (Member member in population1.members) { avg1 += member.Fitness; } avg1 /= population1.members.Count; avg1 = Math.Round(avg1, 2); int correctCol = DrawColBoard(grid, population1.members[0], xSpace, ySpace, avg1, genCount, population1.members[population1.members.Count - 1]); double avg2 = 0; foreach (Member member in population2.members) { avg2 += member.Fitness; } avg2 /= population2.members.Count; avg2 = Math.Round(avg2, 2); int correctRow = DrawRowBoard(grid, population2.members[0], xSpace, ySpace, avg2, population2.members[population2.members.Count - 1]); //if (population1.solution.Fitness < prevFitnessWoc || prevFitnessWoc == -1) //{ xSpace = wocCanvas.Width / grid.numColumns; ySpace = wocCanvas.Height / grid.numRows; prevFitnessWoc = population1.solution.Fitness; correctWoC = DrawWoC(grid, population1.solution, xSpace, ySpace); //} outfile.WriteToFile(genCount, population1, population2, avg1, avg2, correctCol, correctRow, correctWoC); population1.BreedPopulaton(true); population2.BreedPopulaton(true); genCount++; } while (population1.solution.Fitness != 0 || (population1.solution.Fitness != 0 && genCount != 7500)); }