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