//1-point crossover, Twors Mutation public void RunGA1A(int iterations) { GenerateInitialPopulation(); for (int i = 0; i < iterations; i++) { _childGenerationList.Clear(); while (_childGenerationList.Count < 10) { EvaluateParentFitness(); List <List <Vertex> > parentPair = RouletteWheelSelection(); List <List <Vertex> > childPair = Crossover1Pt(parentPair); childPair[0] = MutationTwors(childPair[0]); childPair[1] = MutationTwors(childPair[1]); _childGenerationList.Add(childPair[0]); _childGenerationList.Add(childPair[1]); } ParentGenerationList.Clear(); ParentGenerationList.AddRange(_childGenerationList); } }
//populate parent generation with randomized paths private void GenerateInitialPopulation() { for (int i = 0; i < GenerationSize; i++) { //generate random path & add it to ParentGenerationList ParentGenerationList.Add(GenerateRandomPath()); } }