diff --git a/src/AI/GaTravelingForHerbs/GeneticAlgorithm.py b/src/AI/GaTravelingForHerbs/GeneticAlgorithm.py index bdd2c2f..67af630 100644 --- a/src/AI/GaTravelingForHerbs/GeneticAlgorithm.py +++ b/src/AI/GaTravelingForHerbs/GeneticAlgorithm.py @@ -11,7 +11,7 @@ class GeneticAlgorithm: return sorted_by_assess[:max_selected] def stopCondition(self, i): - return i == 100 + return i == 64 def run(self): population = self.firstPopulation @@ -29,7 +29,7 @@ class GeneticAlgorithm: population = newPopulation theBestMatch = min(population, key=lambda x: x.fitness) - print("Generation: {} S: {} fitness: {}".format(i, theBestMatch, theBestMatch.fitness)) + print("Generation: {} S: {} fitness: {}".format(i+1, theBestMatch, theBestMatch.fitness)) i += 1 if self.stopCondition(i): diff --git a/src/AI/GaTravelingForHerbs/Traveling.py b/src/AI/GaTravelingForHerbs/Traveling.py index 5d66d6f..f82e858 100644 --- a/src/AI/GaTravelingForHerbs/Traveling.py +++ b/src/AI/GaTravelingForHerbs/Traveling.py @@ -1,11 +1,10 @@ from random import randint, sample from math import sqrt -from src.AI.GaTravelingForHerbs.GeneticAlgorithm import GeneticAlgorithm - START_COORD = [(6, 2)] END_COORD = [(10, 7)] + class Traveling: def __init__(self, coords): self.coords = coords @@ -21,13 +20,13 @@ class Traveling: sum += sqrt((nextCoord[0] - c[0]) ** 2 + (nextCoord[1] - c[1]) ** 2) return sum - def crossover(self, element2: 'Element') -> 'Element': + def crossover(self, parentCoords): childCoords = self.coords[1:int(len(self.coords) / 2)] - for coord in element2.coords: + for coord in parentCoords.coords: if coord not in childCoords and coord not in END_COORD + START_COORD: childCoords.append(coord) - if len(childCoords) == len(element2.coords): + if len(childCoords) == len(parentCoords.coords): break return Traveling(START_COORD + childCoords + END_COORD) @@ -39,11 +38,3 @@ class Traveling: def __repr__(self): return str(self.coords) - - -# firstGeneration = [Traveling(START_COORD + sample(COORDS, len(COORDS)) + END_COORD) for _ in range(100)] -# mutationProbability = float(0.1) -# -# ga = GeneticAlgorithm(firstGeneration, mutationProbability) -# movementList = ga.run() -