编码求和i> j在networkx中

时间:2015-08-26 07:56:57

标签: python gurobi

我使用networkx(和gurobi)来计算一组节点中节点之间的最短路径。但是,我需要以特定的方式计算所有最短路径的总和,

所有i的总和> j of dij

其中dij是节点i和j之间的最短路径

grb.quicksum(nx.shortest_path_length for i > j in g.edges)

我认为这是非常错误的。

1 个答案:

答案 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模型中。