Пример #1
0
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)
Пример #2
0
    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)
Пример #3
0
    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))
Пример #4
0
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)
Пример #5
0
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)
Пример #6
0
    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())
Пример #7
0
    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)
Пример #8
0
 def test_singleton(self):
     r1 = Registry()
     r2 = Registry()
     self.assertEqual(r1, r2)