Final files

This commit is contained in:
2023-07-17 00:02:10 +02:00
parent 0fd332a6e5
commit 8fd7baaf93
5 changed files with 559 additions and 110 deletions

View File

@ -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)