def run(rep="bubble_down"): variga.MINLEN = 100 variga.MAXLEN = 100 variga.PHENOTYPE_DISTANCE = tree_distance variga.FITNESS = srff if rep == "bubble_down": variga.GENERATE = generate_bubble_down_fn elif rep == "grow": variga.GENERATE = generate_grow_fn else: raise ValueError variga.MAXIMISE = False variga.SUCCESS = success variga.POPSIZE = 4000 variga.GENERATIONS = 50 variga.PMUT = 0.01 variga.CROSSOVER_PROB = 0.7 variga.ELITE = 1 variga.TOURNAMENT_SIZE = 3 variga.WRAPS = 1 variga.main()
def run(fitness_fn_key, rep="bubble_down"): fitness_fn = fitness.benchmarks(fitness_fn_key) gp.set_fns_leaves(fitness_fn.arity) variga.MINLEN = 100 variga.MAXLEN = 100 variga.PHENOTYPE_DISTANCE = gp.tree_distance variga.FITNESS = fitness_fn if rep == "bubble_down": variga.GENERATE = generate_bubble_down_tree_and_fn elif rep == "grow": variga.GENERATE = generate_grow_tree_and_fn else: raise ValueError variga.MAXIMISE = False variga.SUCCESS = success variga.POPSIZE = 1000 variga.GENERATIONS = 100 variga.PMUT = 0.01 variga.CROSSOVER_PROB = 0.7 variga.ELITE = 1 variga.TOURNAMENT_SIZE = 3 variga.WRAPS = 1 variga.main()
def run(fitness_fn, rep="bubble_down"): variga.MINLEN = 100 variga.MAXLEN = 100 variga.PHENOTYPE_DISTANCE = gp.tree_distance # run the fitness function as normal to get individuals' semantics variga.FITNESS = fitness_fn # but overwrite the individuals' fitness values variga.COEVOLUTIONARY_FITNESS = lambda pop: LCCB_coevo(fitness_fn, pop) if rep == "bubble_down": variga.GENERATE = lambda rng: generate_bubble_down_tree_and_fn_minn_maxn(10, 20, rng) elif rep == "grow": variga.GENERATE = generate_grow_tree_and_fn_maxd else: raise ValueError variga.MAXIMISE = False variga.SUCCESS = lambda x: False # FIXME variga.POPSIZE = 50 variga.GENERATIONS = 20 variga.PMUT = 0.01 variga.CROSSOVER_PROB = 0.7 variga.ELITE = 1 variga.TOURNAMENT_SIZE = 3 variga.WRAPS = 1 variga.main()
yield t[0], t, path + (0,) for i, item in enumerate(t[1:], start=1): if isinstance(item, str): yield item, item, path + (i,) else: for s in traverse(item, path + (i,)): yield s # grammar = Grammar("grammars/symbolic_regression_2d.bnf") grammar = Grammar("grammars/sr_2d_ne_test.bnf") srff = fitness.benchmarks()["pagie_2d"] MAX_CODON = 127 def generate(random): return random_str_mod(random, grammar) def success(err): return False # let's just keep running so all runs are same length variga.GENERATE = generate variga.FITNESS = srff variga.SUCCESS = success variga.POPSIZE = 1000 variga.GENERATIONS = 40 variga.PMUT = 0.01 variga.CROSSOVER_PROB = 0.7 variga.MINLEN = 100 # ponyge uses 100 for all initialisation, no min/maxlen variga.MAXLEN = 100 variga.MAXIMISE = False variga.ELITE = 1 variga.TOURNAMENT_SIZE = 3 variga.WRAPS = 1 variga.main()