def reproduce(self, winning_generation, **methods): crossover_generation = [] next_generation = [] mutator = EIS() if "keep_winners" not in methods: methods["keep_winners"] = False if "num_elites" in methods: elites = copy.deepcopy(winning_generation[:methods["num_elites"]]) if methods["keep_winners"] == False: num_shuffles = 4 elif "num_elites" in methods: num_shuffles = 4 if methods["num_elites"] > len(winning_generation): raise ValueError( "{0} is greater than generation size {1}".format( methods["num_elites"], len(winning_generation))) else: num_shuffles = 2 for i in range(0, num_shuffles): random.shuffle(winning_generation) for j in range(0, len(winning_generation), 2): original = copy.deepcopy(winning_generation[j]) target = copy.deepcopy(winning_generation[j + 1]) child = mutator.crossover( original, target, self.options["minimum_replacement_depth"]) crossover_generation.append(child) for j in range(0, len(crossover_generation)): new_mutator = EIS() original = copy.deepcopy(crossover_generation[j]) next_generation.append( new_mutator.mutation( original, max_mutant_size=self.options["maximum_mutation_size"], min_depth=self.options["minimum_replacement_depth"])) if methods["keep_winners"] == True: if "num_elites" not in methods: next_generation += winning_generation else: next_generation[:methods["num_elites"]] = elites return next_generation
"left_series":{"left_element":"R", "right_element":"C"}, "right_paralell":{"left_series":{"right_element":"R", "left_element":"R"}, "right_element":"R"}},"right_element":"C"}, } triple_randles={"root_series":{"left_paralell":{"left_element":"R", "right_element":"R"}, "right_series": {"left_paralell":{"left_element":"R", "right_element":"R"}, "right_series": {"left_paralell":{"left_element":"R", "right_element":"R"}, "right_paralell":{"left_element":"R", "right_element":"R"}}}}} z=test.construct_dict_from_tree(triple_randles["root_series"], "root_series") #print(test.random_circuit_tree(3)) random_tree=test.random_circuit_tree(4) #top_key=list(random_tree.keys())[0] #random_dict=test.construct_dict_from_tree(random_tree[top_key], top_key) circuit_artist(test.translate_tree(random_tree)) top_key=test.get_top_key(random_tree) #print(random_tree) #print(random_dict) #print(test.construct_circuit_from_tree_dict(random_dict)) import random get_node=test.find_random_node(random_tree[top_key], random.randint(1, 4), random_tree) new_tree=test.random_circuit_tree(3) crossed_tree=test.crossover(random_tree, new_tree) circuit_artist(test.translate_tree(crossed_tree)) #print("\n") #print(new_tree) #print(replace_tree) #print(get_node)