@@ -60,24 +60,25 @@ def custom_graph(
6060 image = {"tag" : entry ["version" ]}
6161 node = {"name" : f"tank-{ index :04d} " , "addnode" : [], "image" : image }
6262
63- # Add round-robin connection
64- next_node = (index + 1 ) % total_count
65- node ["addnode" ].append (f"tank-{ next_node :04d} " )
66- connections .add ((index , next_node ))
67-
68- # Add random connections
63+ # Connect to other nodes
6964 available_nodes = list (range (total_count ))
65+ # Do not connect to self
7066 available_nodes .remove (index )
71- if next_node in available_nodes :
72- available_nodes .remove (next_node )
73-
74- for _ in range (min (int (entry ["connections" ]) - 1 , len (available_nodes ))):
75- random_node = random .choice (available_nodes )
76- # Avoid circular loops of A -> B -> A
77- if (random_node , index ) not in connections :
78- node ["addnode" ].append (f"tank-{ random_node :04d} " )
79- connections .add ((index , random_node ))
80- available_nodes .remove (random_node )
67+ for count in range (min (int (entry ["connections" ]), len (available_nodes ))):
68+ # Add neighbor connection first to create minimal round-robin
69+ if count == 0 :
70+ next_node = (index + 1 ) % total_count
71+ node ["addnode" ].append (f"tank-{ next_node :04d} " )
72+ connections .add ((index , next_node ))
73+ if next_node in available_nodes :
74+ available_nodes .remove (next_node )
75+ else :
76+ random_node = random .choice (available_nodes )
77+ # Avoid circular loops of A -> B -> A
78+ if (random_node , index ) not in connections :
79+ node ["addnode" ].append (f"tank-{ random_node :04d} " )
80+ connections .add ((index , random_node ))
81+ available_nodes .remove (random_node )
8182
8283 nodes .append (node )
8384 index += 1
0 commit comments