From 9049228ff8b32a3b30f80b91939132dfb4636cc3 Mon Sep 17 00:00:00 2001 From: "pre-commit-ci[bot]" <66853113+pre-commit-ci[bot]@users.noreply.github.com> Date: Fri, 15 Nov 2024 09:26:56 +0000 Subject: [PATCH] [pre-commit.ci] auto fixes from pre-commit.com hooks for more information, see https://pre-commit.ci --- .../genetic_algorithm_optimization.py | 25 +++++++++++-------- 1 file changed, 15 insertions(+), 10 deletions(-) diff --git a/genetic_algorithm/genetic_algorithm_optimization.py b/genetic_algorithm/genetic_algorithm_optimization.py index 813ac72e8..66227ca21 100644 --- a/genetic_algorithm/genetic_algorithm_optimization.py +++ b/genetic_algorithm/genetic_algorithm_optimization.py @@ -122,7 +122,7 @@ class GeneticAlgorithm: if not population_score: raise ValueError("Population score is empty, cannot select parents.") - + population_score.sort(key=lambda score_tuple: score_tuple[1], reverse=True) selected_count = min(N_SELECTED, len(population_score)) return [ind for ind, _ in population_score[:selected_count]] @@ -245,32 +245,37 @@ class GeneticAlgorithm: for generation in range(self.generations): # Evaluate population fitness (multithreaded) population_score = self.evaluate_population() - + # Ensure population_score isn't empty if not population_score: raise ValueError("Population score is empty. No individuals evaluated.") - + # Check the best individual - best_individual = max(population_score, key=lambda score_tuple: score_tuple[1])[0] + best_individual = max( + population_score, key=lambda score_tuple: score_tuple[1] + )[0] best_fitness = self.fitness(best_individual) - + # Select parents for next generation parents = self.select_parents(population_score) next_generation = [] - + # Generate offspring using crossover and mutation for i in range(0, len(parents), 2): - parent1, parent2 = parents[i], parents[(i + 1) % len(parents)] # Wrap around for odd cases + parent1, parent2 = ( + parents[i], + parents[(i + 1) % len(parents)], + ) # Wrap around for odd cases child1, child2 = self.crossover(parent1, parent2) next_generation.append(self.mutate(child1)) next_generation.append(self.mutate(child2)) - + # Ensure population size remains the same self.population = next_generation[: self.population_size] - + if verbose and generation % 10 == 0: print(f"Generation {generation}: Best Fitness = {best_fitness}") - + return best_individual