def time_to_procreate(): selected_index = [] for i in range(0, len(population)): random_number = uniform(0, 1.0) if random_number < crossover_rate: selected_index.append(i) for in_list_index, first_parent_index in enumerate(selected_index): second_parent_index = 0 if in_list_index == len(selected_index) - 1: second_parent_index = selected_index[0] else: second_parent_index = selected_index[in_list_index + 1] first_parent = population[first_parent_index] second_parent = population[second_parent_index] random_point_genes = 2 first_parent_genes = first_parent.give_group_of_gens( random_point_genes) second_parent_genes = second_parent.data second_parent_genes.pop(random_point_genes) second_parent_genes.insert(random_point_genes, first_parent_genes) son = Chromosome(second_parent_genes, fitness_function_procedure) # Checamos si el hijo supera al padre en fitness son.calculate_value() if son.result > first_parent.result: population.pop(first_parent_index) population.insert(first_parent_index, son)
import main from chromosome import Chromosome main.parse_data() fitness = main.fitness_function_procedure chromosome = Chromosome(['1', '101', '10', '10'], fitness) chromosome.calculate_value()