我使用networkx(和gurobi)来计算一组节点中节点之间的最短路径。但是,我需要以特定的方式计算所有最短路径的总和,
所有i的总和> j of dij
其中dij是节点i和j之间的最短路径
grb.quicksum(nx.shortest_path_length for i > j in g.edges)
我认为这是非常错误的。
答案 0 :(得分:1)
目前尚不清楚为什么同时使用gurobi和nx.short_path_length。 networkx的shortest_path_length()和python的sum()就是你所需要的:
import itertools as it
import networkx as nx
...
G = nx.Graph()
...
# Define edges of G ...
...
sum(nx.shortest_path_length(G,i,j) for (i,j) in it.combinations(G.nodes(),2))
这假设图G的任意两个节点之间存在路径。如果没有,我们得到类似的结果:
NetworkXNoPath: No path between 1 and 7.
gurobi的quicksum()用于总结gurobi变量,然后将其作为约束或目标函数传递到gurobi模型中。