问题描述
我正在使用 namedtuples 对象来创建节点和图来表示网络。目标是将主网络(称为网络)的资源分配给较小的网络(称为请求)。
当一个请求的所有节点都关联到一个网络节点并且请求的“形状”被保留时,一个请求被认为已经完成,如下图所示。请求以红色表示
节点项目构建如下: Node = namedtuple('Node','name val alloc',defaults=[[]])
图表项目构建如下: Graph = namedtuple('Graph','nodes edge',defaults=[[],[]])
这里是网络和来自图像的请求,用 Python 构建
a = Node('a',10)
b = Node('b',6)
c = Node('c',5)
Vnode = namedtuple('Vnode','name val')
x1 = Vnode('x1',3)
y1 = Vnode('y1',4)
Graph = namedtuple('Graph','nodes edges',[]])
vne = Graph([a,b,c])
我试图隔离不能按预期工作的代码,这里是:
def allocate(node,node_vnf,visited,visited_vnf,to_visit,to_visit_vnf):
# node_vnf = node to place;
# to_visit = network nodes that haven't been visited;
# to_visit_vnf : request nodes that haven't been visited
if node_vnf.val <= node.val and node_vnf not in visited_vnf and node not in visited: # Are there enough resources free on the node ?
node.alloc.append(node_vnf) # We had the request node to the network node attribute alloc
node = node._replace(val=(node.val-node_vnf.val)) # change the value of network node
visited_vnf.append(node_vnf)
visited.append(node)
return node
else:
return node
在上面的函数中,append()应用于node.alloc,Node对象节点的属性alloc,在网络的所有节点上循环,而不是仅仅在node.alloc末尾添加node_vnf。
有人知道为什么 append() 方法可以按预期工作吗?我也试过使用 insert(),但效果一样。
如果有关该主题的任何信息缺失或不清楚,请告诉我。
预先感谢您的帮助:)
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)