我正在尝试使用 networkX 库解决交通问题。由于我的需求和供应值是浮动的,我的问题似乎无法通过 networkX 包解决?请参阅第 377 页上的文档。 https://networkx.org/documentation/stable/_downloads/networkx_reference.pdf
有什么解决方法吗?我的问题是由于舍入错误造成的,因为我的浮点数非常小。
有没有其他支持浮点数的库来解决python中的最小成本流问题?
import networkx as nx
#inputdata
producerDict = {'p1': 3.88, 'p2': 4.3225, 'p3': 24.41575}
consumerDict = {'c1':46.63775, 'c2': 85.44925, 'c3': 71.92425, 'c4':
84.1755}
totalDemand = sum(consumerDict.values())
totalSupply = sum(producerDict.values())
#graph
G = nx.DiGraph()
G.add_edge("C1", "P1", weight=3)
G.add_edge("C1", "P2", weight=1)
G.add_edge("C1", "P3", weight=4)
G.add_edge("C2", "P1", weight=2)
G.add_edge("C2", "P2", weight=4)
G.add_edge("C2", "P3", weight=5)
G.add_edge("C3", "P1", weight=6)
G.add_edge("C3", "P2", weight=2)
G.add_edge("C3", "P3", weight=2)
G.add_edge("C4", "P1", weight=1)
G.add_edge("C4", "P2", weight=6)
G.add_edge("C5", "P3", weight=3)
#balancing the problem as demand > supply
newConsumerDict = {}
for consumer, demand in consumerDict.items():
newDemand = (demand / totalDemand) * totalSupply
newConsumerDict[consumer] = newDemand
# this sum has to be equal to total supply which
# is not the case due to rounding errors
print(sum(newConsumerDict.values()))
flowCost, flowDict = nx.network_simplex(G)
干杯