def test_forward_new(): reg = Registry(2, 2) # 3 hidden nodes for _ in range(3): reg.create_node() nodes = reg.nodes connections = [ reg.get_connection(n1, n2) for n1, n2 in [(nodes[0], nodes[5]), ( nodes[5], nodes[6]), (nodes[6], nodes[3]), ( nodes[1], nodes[7]), (nodes[7], nodes[5]), (nodes[6], nodes[7]), (nodes[7], nodes[4])] ] # connections = [Connection(nodes[0], nodes[5]), Connection(nodes[5], nodes[6]), Connection(nodes[6], nodes[3]), # Connection(nodes[1], nodes[7]), Connection(nodes[7], nodes[5]), Connection(nodes[6], nodes[7]), # Connection(nodes[7], nodes[4])] g1 = Genom(reg, connections) for c in g1.connections: c.weight = 1 print('recurrent network, output should be different') out = g1.forward_rec(np.array([1, 0])) print(out) out = g1.forward_rec(np.array([1, 0])) print(out)
def test_add_category(self): r = Registry() r.clear() cat_name = 'category_1' r.add(cat_name) self.assertEqual(cat_name, r.categories[cat_name].name) print(r)
def __init__(self, input_size: int, output_size: int, population_size: int, fitness_fn, max_hidden: int = None): self.registry = Registry(input_size, output_size, max_hidden) self.fitness_fn = fitness_fn self.population_size = population_size self.population = [] self.scores = [] self.best_all = 0 self.species = [] self.new_size = [] self.generation = 0 for _ in range(self.population_size): self.population.append(Genom(self.registry))
def test_forward(): x = np.random.random(25) reg = Registry(25, 5) g1 = Genom(reg) for _ in range(1): g1.mutate_link() g1.mutate_add_node() g1.mutate_weight_shift() g1.mutate_enable_disable_connection() out = None for _ in range(10): out = g1.forward(x, ) out = g1.forward_rec(x, ) print(out)
def test_genom(): reg = Registry(25, 5) g1 = Genom(reg) g2 = Genom(reg) g1.mutate_link() g2.mutate_add_node() g1.mutate_weight_shift() g2.mutate_enable_disable_connection() g1.fitness = 0 g2.fitness = 1 delta = distance(g1, g2) g3 = crossover_genes(g1, g2)
def test_add_class(self): class myclass(): def __call__(self): pass class myclass2(): def __call__(self): pass r = Registry() r.clear() cat_name = 'category_1' r.add(cat_name, myclass) self.assertEqual(cat_name, r.categories[cat_name].name) r.add(cat_name, myclass2) self.assertEqual(len(r.categories), 1) self.assertEqual(len(r.categories[cat_name].class_dict), 2) self.assertIn(myclass.__name__, r.categories[cat_name].class_dict.keys()) self.assertIn(myclass2.__name__, r.categories[cat_name].class_dict.keys())
def test_build_from_config(self): class myclass(): def __init__(self, a, b): self.a = a self.b = b def __call__(self): pass r = Registry() r.clear() cat_name = 'category_1' r.add(cat_name, myclass) config = { 'name': 'myclass', 'params': {'a': 1, 'b':'string'} } myobj = r.build_from_config(cat_name, config) self.assertEqual(myobj.a, 1) self.assertEqual(myobj.b, config['params']['b']) print(r)
def test_singleton(self): r1 = Registry() r2 = Registry() self.assertEqual(r1, r2)