Esempio n. 1
0
def generate_genome_given_graph(graph, connection_weights):
    genome = Genome(key='foo')

    unique_node_keys = []
    input_nodes = []
    for connection in graph:
        for node_key in connection:
            if node_key not in unique_node_keys:
                unique_node_keys.append(node_key)

            if node_key < 0:
                input_nodes.append(node_key)
    input_nodes = set(input_nodes)

    unique_node_keys = list(
        set(unique_node_keys + genome.get_output_nodes_keys()) - input_nodes)
    nodes = {}
    for node_key in unique_node_keys:
        node = NodeGene(key=node_key).random_initialization()
        node.set_mean(0)
        node.set_std(STD)
        nodes[node_key] = node

    connections = {}
    for connection_key, weight in zip(graph, connection_weights):
        connection = ConnectionGene(key=connection_key)
        connection.set_mean(weight)
        connection.set_std(STD)
        connections[connection_key] = connection

    genome.connection_genes = connections
    genome.node_genes = nodes
    return genome
Esempio n. 2
0
    def create_from_julia_dict(genome_dict: dict):
        config = get_configuration()
        genome = Genome(key=genome_dict["key"], id=None, genome_config=config)

        # reconstruct nodes and connections
        connection_genes_dict = genome_dict['connections']
        for key_str, connection_gene_dict in connection_genes_dict.items():
            connection_key = Genome._get_connection_key_from_key_str(key_str)
            connection_gene = ConnectionGene(key=connection_key)
            connection_gene.set_mean(connection_gene_dict['mean_weight'])
            connection_gene.set_std(connection_gene_dict['std_weight'])
            genome.connection_genes[connection_gene.key] = connection_gene

        node_genes_dict = genome_dict['nodes']
        for key_str, node_gene_dict in node_genes_dict.items():
            node_key = int(key_str)
            node_gene = NodeGene(key=node_key)
            node_gene.set_mean(node_gene_dict['mean_bias'])
            node_gene.set_std(node_gene_dict['std_bias'])
            genome.node_genes[node_gene.key] = node_gene

        genome.calculate_number_of_parameters()
        return genome
Esempio n. 3
0
 def add_node(self, key, mean=None, std=None):
     node = NodeGene(key=key)
     node.set_mean(mean)
     node.set_std(std)
     self.node_genes[key] = node