我有一个有指向的网络,每个网络都有27000弧。
使用代码:
G=nx.Graph(G)
nx.maximum_flow(G,'CHN',"CHL")
我得到错误:
网络Xunbounded:无限的容量路径,在上方无限的流动。
有人知道如何获得最大流量值吗?
顺便说一句,当我运行时: G.edges(data=True)
时,我在其中得到了一个带有类似内容的字典:
('BGR', 'NCL', {'Edge Id': u'3727', 'weight': 334716.84}),
('BGR', 'ARE', {'Edge Id': u'3606', 'weight': 28347011.33}),
('BGR', 'ARG', {'Edge Id': u'3733', 'weight': 26294089.16}),
('BGR', 'SDN', {'Edge Id': u'3591', 'weight': 78929738.06}),
谢谢。
使用的信息不多。
但是我很确定原因很简单:您没有定义任何能力。很明显,流动上没有上限,因为我们可以将无限的流量通过图表推动!(因为没有明确的容量被解释为无限容量(
摘自文档:
容量(字符串(
图G的边缘有望具有属性容量,表明边缘可以支撑多少流动。如果不存在此属性,则边缘被认为具有无限的容量。默认值:"容量"。
另外一句话:您正在解决此处的最大流量问题。没有使用权重!这些是用于最大流程成本和CO。(也支持NetworkX中(。
nx.maximum_flow((使用边缘的 capacity
属性来计算最大流程。
图G的边缘有望具有属性容量指示边缘可以支撑多少流动。如果此属性不是目前,边缘被认为具有无限的容量。
由于您的边缘没有capacity
属性,因此默认为infinity
。您应该为每个边缘设置此属性,或者如果对您的问题有意义,则可以将weight
用作以下容量:
nx.maximum_flow(G,'CHN',"CHL", capacity='weight')