Final files
This commit is contained in:
@ -1,10 +1,10 @@
|
||||
import itertools
|
||||
|
||||
import matplotlib.pyplot as plt
|
||||
import networkx as nx
|
||||
import numpy as np
|
||||
import tabulate
|
||||
|
||||
from genome import Genome, NodeType, mutate
|
||||
from node import NodeType
|
||||
|
||||
|
||||
def _find_layer(g: nx.DiGraph, hidden_node: int, inputs: list[int]) -> int:
|
||||
@ -13,10 +13,10 @@ def _find_layer(g: nx.DiGraph, hidden_node: int, inputs: list[int]) -> int:
|
||||
paths += list(nx.all_simple_paths(g, input_node, hidden_node))
|
||||
|
||||
path_lengths = [len(path) for path in paths]
|
||||
return max(path_lengths)
|
||||
return 2 if len(path_lengths) == 0 else max(path_lengths)
|
||||
|
||||
|
||||
def genome(genome: Genome):
|
||||
def genome_graph(genome: Genome):
|
||||
graph = nx.DiGraph()
|
||||
|
||||
# Add nodes
|
||||
@ -49,19 +49,35 @@ def genome(genome: Genome):
|
||||
|
||||
plt.subplot()
|
||||
pos = nx.multipartite_layout(graph, subset_key="layer")
|
||||
nx.draw_networkx_nodes(graph, pos, nodelist=inputs, label=inputs, node_color="#ff0000")
|
||||
nx.draw_networkx_nodes(graph, pos, nodelist=hidden, label=hidden, node_color="#00ff00")
|
||||
nx.draw_networkx_nodes(graph, pos, nodelist=outputs, label=outputs, node_color="#0000ff")
|
||||
nx.draw_networkx_nodes(graph, pos, nodelist=inputs, node_color="#ff0000")
|
||||
nx.draw_networkx_nodes(graph, pos, nodelist=hidden, node_color="#00ff00")
|
||||
nx.draw_networkx_nodes(graph, pos, nodelist=outputs, node_color="#0000ff")
|
||||
nx.draw_networkx_labels(graph, pos)
|
||||
nx.draw_networkx_edges(graph, pos)
|
||||
|
||||
|
||||
def genome_table(genome: Genome):
|
||||
table = [
|
||||
(conn.innovation_no, "->".join([str(n) for n in conn.nodes]), "DIS" if conn.disabled else "")
|
||||
for conn in genome.connections.values()
|
||||
]
|
||||
table.sort(key=lambda c: c[0])
|
||||
table = zip(*table)
|
||||
|
||||
print(tabulate.tabulate(table, tablefmt="psql"))
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
g1 = Genome.new(3, 2)
|
||||
g1.add_connection(0, 4, 0.5)
|
||||
mutate(g1)
|
||||
mutate(g1)
|
||||
mutate(g1)
|
||||
mutate(g1)
|
||||
mutate(g1)
|
||||
mutate(g1)
|
||||
|
||||
# mutate(g1)
|
||||
genome(g1)
|
||||
plt.show()
|
||||
# genome_graph(g1)
|
||||
# plt.show()
|
||||
genome_table(g1)
|
||||
|
||||
Reference in New Issue
Block a user