2017-06-28 92 views
1

我有一個有27000個弧的定向網絡,每個都有一個重量。用有向圖的網絡計算最大流量值

隨着代碼:

G=nx.Graph(G) 
nx.maximum_flow(G,'CHN',"CHL") 

我得到的錯誤:

NetworkXUnbounded: Infinite capacity path, flow unbounded above.

有誰知道如何獲得最大流量值?

順便說一句,當我運行: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}), 

感謝。

回答

1

這不是很多信息的工作。

但我很確定原因很簡單:您沒有定義任何容量。很明顯,沒有流量上限,因爲我們可以通過圖表推動無限量的流量! (因爲沒有明確的容量被解釋爲無限容量)

Excerpt from the docs

capacity (string)

Edges of the graph G are expected to have an attribute capacity that indicates how much flow the edge can support. If this attribute is not present, the edge is considered to have infinite capacity. Default value: ‘capacity’.

還有一個備註:你在這裏解決最大流問題。沒有重量的使用!這些是最大流量最小成本和合作。 (也在networkx中支持)。

+0

哦,這是否意味着我必須爲所有節點設置一個屬性容量? – Chi

+0

抓住最大流量問題的一些基礎知識。是的,你應該發佈*一些能力*或者沒有上限。但這通常是你的問題自然而然的事情。 – sascha