def setUp(self): self.ges = GrammaticalEvolution() self.ges.set_genotype_length(10) self.ges.set_population_size(5) self.ges.set_max_program_length(200) self.ges.set_bnf(''.join([ '<S> ::=', 'a = <VALUE1>\n', 'b = <VALUE2>\n', 'fitness = a + b\n', 'self.set_bnf_variable("<fitness>", fitness)\n', '<VALUE1> ::= -1 | 2 | 0 \n', '<VALUE2> ::= 1 | 2 | 3 \n' ])) self.ges.create_genotypes() self.ges.set_fitness_type(MAX) # build a fake history value = .5 for generation in range(3): # Pretend that the genotypes have run count = 0 for gene in self.ges.population: gene._fitness = float(count) + value self.ges.fitness_list[count][0] = float(count) + value self.ges.fitness_list[count][0] = float(count) + value count += 1 self.ges._history.append(deepcopy(self.ges.fitness_list))
def test_class_init__(self): """ This function tests the initialization of the class. """ ges = GrammaticalEvolution() self.assertEqual(None, ges.stopping_criteria[STOPPING_MAX_GEN]) self.assertEqual(None, ges.stopping_criteria[STOPPING_FITNESS_LANDSCAPE]) self.assertEqual(DEFAULT_CROSSOVER_RATE, ges._crossover_rate) self.assertEqual(DEFAULT_CHILDEREN_PER_CROSSOVER, ges._children_per_crossover) self.assertEqual(DEFAULT_MUTATION_TYPE, ges._mutation_type) self.assertEqual(DEFAULT_MUTATION_RATE, ges._mutation_rate) self.assertEqual(DEFAULT_MAX_FITNESS_RATE, ges._max_fitness_rate) # Parameters for phenotype creation self.assertEqual(DEFAULT_WRAP, ges._wrap) self.assertEqual(DEFAULT_EXTEND_GENOTYPE, ges._extend_genotype) self.assertEqual(DEFAULT_START_GENE_LENGTH, ges._start_gene_length) self.assertEqual(DEFAULT_MAX_PROGRAM_LENGTH, ges._max_gene_length) self.assertEqual(DEFAULT_MAX_PROGRAM_LENGTH, ges._max_program_length) # Parameters for overall process self.assertEqual(0, ges._generation) self.assertEqual(FitnessList(CENTER), ges.fitness_list) self.assertEqual(DEFAULT_FITNESS_FAIL, ges._fitness_fail) self.assertEqual(DEFAULT_MAINTAIN_HISTORY, ges._maintain_history) self.assertEqual(DEFAULT_TIMEOUTS, ges._timeouts) # Parameters used during runtime self.assertEqual(None, ges.current_g) self.assertEqual([], ges._fitness_selections) self.assertEqual([], ges._replacement_selections) self.assertEqual({}, ges.bnf) self.assertEqual(0, ges._population_size) self.assertEqual([], ges.population) self.assertEqual([], ges._history)
<plus> ::= + <minus> ::= - <real> ::= <int-const>.<int-const> <int-const> ::= <int-const> | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 <S> ::= import math total = 0.0 for i in xrange(100): value = float(i) / float(100) total += abs(<expr> - pow(value, 3)) fitness = total self.set_bnf_variable('<fitness>', fitness) """ ges = GrammaticalEvolution() ges.set_bnf(bnf) ges.set_genotype_length(start_gene_length=20, max_gene_length=50) ges.set_population_size(50) ges.set_wrap(True) ges.set_max_generations(1000) ges.set_fitness_type(MIN, .01) ges.set_max_program_length(500) ges.set_timeouts(10, 120) ges.set_fitness_fail(100.0) ges.set_mutation_rate(.025) ges.set_fitness_selections(