Exemplo n.º 1
0
    def test_be_born(self):
        num_features = 10
        max_individual_size = 5
        values_handler = Values_Handler(Probability_Handler(num_features))

        factory = Individual(num_features=num_features,
                             max_individual_size=max_individual_size,
                             values_handler=values_handler)
        dna_dict = factory.be_born()

        size_individual = dna_dict[constants.DNA_SIZE_STR]
        self.assertTrue(1 <= size_individual <= max_individual_size)

        size_indices = len(dna_dict[constants.DNA_FEATURES_STR])
        self.assertTrue(1 <= size_indices <= max_individual_size)
        self.assertTrue(np.all(0 <= np.array(size_indices) <= num_features))

        size_tree_values = len(dna_dict[constants.DNA_WEIGHTS_STR])
        self.assertTrue(1 <= size_tree_values <= max_individual_size)
        self.assertTrue(0 <= np.min(dna_dict[constants.DNA_WEIGHTS_STR]))
        self.assertTrue(np.max(dna_dict[constants.DNA_WEIGHTS_STR]) <= 1)

        size_parentheses_binary_vec = len(
            dna_dict[constants.DNA_PARENTHESES_STR])
        self.assertTrue(
            1 <= size_parentheses_binary_vec <= max_individual_size)
        self.assertTrue(
            np.all(0 <= np.array(dna_dict[constants.DNA_PARENTHESES_STR])))
        self.assertTrue(
            np.all(np.array(dna_dict[constants.DNA_PARENTHESES_STR]) <= 1))

        size_action_vector = len(dna_dict[constants.DNA_ACTIONS_STR])
        self.assertTrue(1 <= size_action_vector <= max_individual_size)
        self.assertTrue(
            np.all(0 <= np.array(dna_dict[constants.DNA_ACTIONS_STR])))
        self.assertTrue(
            np.all(
                np.array(dna_dict[constants.DNA_ACTIONS_STR]) <
                constants.MAX_SIZE_INDIVIDUAL))
Exemplo n.º 2
0
class Population_Handler():
    def __init__(self, probability_handler, max_individual_size = 10):
        self.probability_handler = probability_handler
        self.max_individual_size = max_individual_size
        self.population = []
        self.values_handler = Values_Handler(probability_handler)
        self.individual = Individual(self.probability_handler.max_feature_number, self.max_individual_size, self.values_handler)
        self.mh = Mutation_Handler(self.probability_handler, self.values_handler)
        
    def create_individual(self):
        return self.individual.be_born()

    def create_population(self, population_size = 10): 
        self.population = np.empty([population_size]).astype(object)
        for i in range(population_size):
            self.population[i] = self.create_individual()

    def mutate_population(self):
        for individual in self.population[1:]: ## dont mutate the top best
            self.mh.mutate(individual)

    def mutate_population_paralal(self):
        p = Pool(constants.NUM_POOL)
        paralal_input = list(self.population)
        paralal_result = p.map(self.mh.mutate_paralal, paralal_input)
        p.close()
        p.join()
        self.population = np.array(paralal_result)

    def cross_over_population(self):
        pass

    def get_population(self):
        return self.population

    def set_population(self, new_generation):
        self.population = new_generation