diff --git a/src/crossover/crossover_methods.py b/src/crossover/crossover_methods.py index dcde3a6..a8e2d57 100644 --- a/src/crossover/crossover_methods.py +++ b/src/crossover/crossover_methods.py @@ -72,7 +72,7 @@ class Crossover_Methods: def single_point(ga, parent_1, parent_2): """Cross two parents by swapping genes at one random point.""" - swap_index = random.randint(0, len(parent_1)-1) + swap_index = random.randrange(len(parent_1)) return parent_1[:swap_index] + parent_2[swap_index:] diff --git a/src/mutation/mutation_methods.py b/src/mutation/mutation_methods.py index 72819a4..d39b9e2 100644 --- a/src/mutation/mutation_methods.py +++ b/src/mutation/mutation_methods.py @@ -37,7 +37,7 @@ class Mutation_Methods: def random_selection(ga): """Selects random chromosomes.""" - index = random.randint(0, len(ga.population)-1) + index = random.randrange(len(ga.population)) ga.population[index] = ga.mutation_individual_impl(ga, ga.population[index]) @@ -45,7 +45,7 @@ class Mutation_Methods: def random_selection_then_cross(ga): """Selects random chromosomes and self-crosses with parent.""" - index = random.randint(0, len(ga.population)-1) + index = random.randrange(len(ga.population)) chromosome = ga.population[index] ga.population[index] = ga.crossover_individual_impl(ga, chromosome, ga.mutation_individual_impl(ga, chromosome)) @@ -56,7 +56,7 @@ class Mutation_Methods: @loop_mutations def individual_genes(ga, chromosome): """Mutates a random gene in the chromosome.""" - index = random.randint(0, len(chromosome)-1) + index = random.randrange(len(chromosome)) # Using the chromosome_impl if ga.chromosome_impl is not None: @@ -79,7 +79,7 @@ class Mutation_Methods: def swap_genes(ga, chromosome): """Swaps two random genes in the chromosome.""" - index_one = random.randint(0, len(chromosome)-1) - index_two = random.randint(0, len(chromosome)-1) + index_one = random.randrange(len(chromosome)) + index_two = random.randrange(len(chromosome)) chromosome[index_one], chromosome[index_two] = chromosome[index_two], chromosome[index_one] diff --git a/src/parent_selection/parent_selection_methods.py b/src/parent_selection/parent_selection_methods.py index 21891b4..2434da9 100644 --- a/src/parent_selection/parent_selection_methods.py +++ b/src/parent_selection/parent_selection_methods.py @@ -68,7 +68,7 @@ class Parent_Selection: while (len(ga.population.get_mating_pool()) < len(ga.population)*ga.parent_ratio): # Generate a random tournament group and sort by fitness. - tournament_group = sorted([random.randint(0, len(ga.population)-1) for n in range(tournament_size)]) + tournament_group = sorted([random.randrange(len(ga.population)) for _ in range(tournament_size)]) # For each chromosome, add it to the mating pool based on its rank in the tournament. for index in range(tournament_size): @@ -78,7 +78,7 @@ class Parent_Selection: # second ranked fitness has probability: selection_probability * (1-selection_probability) # third ranked fitness has probability: selection_probability * (1-selection_probability)^2 # etc. - if random.uniform(0, 1) < ga.selection_probability * pow(1-ga.selection_probability, index): + if random.random() < ga.selection_probability * pow(1-ga.selection_probability, index): ga.population.set_parent(tournament_group[index]) # Stop if parent ratio reached @@ -141,7 +141,7 @@ class Parent_Selection: while (len(ga.population.get_mating_pool()) < len(ga.population)*ga.parent_ratio): # Selected chromosome - index = random.randint(0, len(ga.population)-1) + index = random.randrange(len(ga.population)) # Probability of becoming a parent is fitness/max_fitness if random.uniform(ga.selection_probability, 1) < ga.get_chromosome_fitness(index)/max_fitness: