使用有向图的网络计算最大流量值



我有一个有指向的网络,每个网络都有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')

最新更新