cost_of_flow#

cost_of_flow(G, flowDict, weight='weight')[source]#

计算图 G 上由 flowDict 给定的流的成本。

请注意,此函数不检查流 flowDict 的有效性。如果图 G 和流没有相同的边集,则此函数将失败。

参数:
GNetworkX 图

应在其上找到满足所有需求的最小成本流的有向图 (DiGraph)。

weight字符串

图 G 的边应具有一个 weight 属性,该属性指示在该边上发送一个单位流所产生的成本。如果不存在,则权重视为 0。默认值:‘weight’。

flowDict字典

一个以节点为键的字典,其中 flowDict[u][v] 表示边 (u, v) 上的流。

返回:
cost整数, 浮点数

流的总成本。计算方法是将所有边的流与边的权重的乘积求和。

注意

如果边的权重或需求是浮点数,则不保证此算法能正常工作(溢出和舍入误差可能导致问题)。作为一种变通方法,您可以通过将相关的边属性乘以一个合适的常数因子(例如 100)来使用整数。

示例

>>> G = nx.DiGraph()
>>> G.add_node("a", demand=-5)
>>> G.add_node("d", demand=5)
>>> G.add_edge("a", "b", weight=3, capacity=4)
>>> G.add_edge("a", "c", weight=6, capacity=10)
>>> G.add_edge("b", "d", weight=1, capacity=9)
>>> G.add_edge("c", "d", weight=2, capacity=5)
>>> flowDict = nx.min_cost_flow(G)
>>> flowDict
{'a': {'b': 4, 'c': 1}, 'd': {}, 'b': {'d': 4}, 'c': {'d': 1}}
>>> nx.cost_of_flow(G, flowDict)
24