Skip to content

Commit 69a5051

Browse files
Fix duplicate/incorrect else branch in DefaultGenomeConfig.get_new_node_key, added regression test.
1 parent 9f4b48a commit 69a5051

File tree

2 files changed

+16
-1
lines changed

2 files changed

+16
-1
lines changed

neat/genome.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -114,7 +114,8 @@ def get_new_node_key(self, node_dict):
114114
if node_dict:
115115
self.node_indexer = count(max(list(node_dict)) + 1)
116116
else:
117-
self.node_indexer = count(max(list(node_dict)) + 1)
117+
# No existing nodes; start from num_outputs.
118+
self.node_indexer = count(self.num_outputs)
118119

119120
new_id = next(self.node_indexer)
120121

tests/test_genome.py

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -389,6 +389,20 @@ def test_unused_node(self):
389389
self.assertEqual(set(g_pruned.nodes.keys()), {0})
390390
self.assertEqual(set(g_pruned.connections.keys()), {(-1, 0), (-2, 0)})
391391

392+
def test_get_new_node_key_empty_nodes_starts_at_num_outputs(self):
393+
"""get_new_node_key with empty node dict should start at num_outputs."""
394+
config = self.config.genome_config
395+
# Ensure indexer is reset so we exercise the initialization path.
396+
config.node_indexer = None
397+
398+
empty_nodes = {}
399+
new_node_id = config.get_new_node_key(empty_nodes)
400+
self.assertEqual(new_node_id, config.num_outputs)
401+
402+
# Subsequent calls should increment from num_outputs.
403+
second_node_id = config.get_new_node_key({new_node_id: object()})
404+
self.assertEqual(second_node_id, config.num_outputs + 1)
405+
392406

393407
if __name__ == '__main__':
394408
unittest.main()

0 commit comments

Comments
 (0)