示例#1
0
 def test_dont_lose_nodes(self):
     n1 = Node(1)
     n2 = Node(2)
     n1.add_arc(Arc(n2))
     nw = Network([n1])
     self.assertEqual(nw.find_node(2), n2)
     n3 = Node(3)
     n2.add_arc(Arc(n3))
     self.assertEqual(nw.find_node(3), n3)
示例#2
0
 def test_basic(self):
     node = Node('one')
     nw = Network([node])
     self.assertEqual(nw.find_node('one'), node)
     node = Node(('two', 2))
     nw.add_node(node)
     self.assertEqual(nw.find_node(('two', 2)), node)
     three = Node('three')
     arc = Arc(three, 1)
     nw.find_node('one').add_arc(arc)
     self.assertEqual(nw.find_node('three'), three)
示例#3
0
文件: vbmap.py 项目: sh4rkfin/misc
 def create_non_zero_flow_network(self, color):
     if not self.is_colored_vbmap_problem():
         raise ValueError("VbMapProblem instance is not a colored map problem")
     network = Network()
     za = self.get_active_vbucket_moves()[color]
     for i, a in enumerate(self.prev_avb()[color]):
         if a > 0:
             node = Node(("prev_avb", i), a)
             network.add_node(node)
             for j, x in enumerate(za[i]):
                 if x > 0:
                     to_node = network.find_or_create_node(('avb', j))
                     node.add_arc(Arc(to_node, x))
     avb = self.get_colored_avb()[color]
     # print "avb: ", avb
     x = self.get_colored_replication_map()[color]
     # for i in range(len(x)):
     #     print "x[{0}]: ".format(i), x[i]
     for i, a in enumerate(avb):
         if a > 0:
             node = network.find_or_create_node(("avb", i))
             for j, y in enumerate(x[i]):
                 if y > 0:
                     to_node = network.find_or_create_node(('rvb', j))
                     node.add_arc(Arc(to_node, y))
     zr = self.get_replica_vbucket_moves()[color]
     for i, a in enumerate(self.prev_rvb()[color]):
         if a > 0:
             node = network.find_or_create_node(("prev_rvb", i))
             node.set_source(-a)
             for j in range(len(zr)):
                 y = zr[j][i]
                 if y > 0:
                     from_node = network.find_node(('rvb', j))
                     from_node.add_arc(Arc(node, y))
     return network