我试图使用gurobi和networkx将其编码为python,
对于N 中的每个i,S> = = quicksum(对于j中的j为uij)
我的代码是
import gurobipy as grb
import networkx as nx
g = nx.Graph()
g.add_edges_from(edges)
for i in g.nodes_iter():
m.addConstr(S >= grb.quicksum(u[i,j] for j in g.nodes_iter()))
问题是我得到了Key Error(1,1),因为我没有边缘(1,1)
但我确实希望对节点中的每个i求和,即连接到特定节点i的所有j的所有uij的总和。
这不是一个程度问题,它实际上是对连通分量进行求和,因此如果i和j之间存在通路,则uij为1。我把它编码为关键节点检测问题。
请帮忙!谢谢!
答案 0 :(得分:0)
您希望总和刚好位于图中的节点上。 networkx有一个方法neighbors_iter
可以做到这一点
for i in g.nodes_iter():
m.addConstr(S >= grb.quicksum(u[i,j] for j in g.neighbors_iter(i)))
在任何情况下,除非您只使用非常密集的图形,否则应该避免遍历所有节点对。