【问题标题】:Trying to code summation of combination of nodes in a graph for gurobi optimization with quicksum尝试对图中节点组合的总和进行编码,以使用 quicksum 进行 gurobi 优化
【发布时间】:2015-08-31 08:06:19
【问题描述】:

我正在尝试使用 gurobi 和 networkx 将其编码到 python 中,

S >= quicksum(uij for j in N) 对于 N 中的每个 i

我的代码是

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()))

问题是我得到关键错误 (1,1),这是有道理的,因为我没有优势 (1,1)

但我确实想对节点中的每个 i 求和,即连接到特定节点 i 的所有 j 的所有 uij 的总和。

这不是度数问题,它实际上是对连通分量求和,因此如果 i 和 j 之间存在路径,则 uij 为 1。我已将此编码为关键节点检测问题。

请帮忙!谢谢!

【问题讨论】:

  • 我不知道您要计算什么。你能给出一个示例输入和一个期望的输出吗?

标签: python networkx gurobi integer-programming


【解决方案1】:

您希望总和刚好超过图中的节点。 networkx 有一个方法 neighbors_iter 可以做到这一点

for i in g.nodes_iter():
 m.addConstr(S >= grb.quicksum(u[i,j] for j in g.neighbors_iter(i)))

在任何情况下,您都应该避免遍历所有节点对,除非您只使用非常密集的图。

【讨论】:

    猜你喜欢
    • 2017-12-25
    • 2020-01-30
    • 1970-01-01
    • 2016-07-11
    • 2020-05-08
    • 2016-09-02
    • 2011-08-07
    • 2016-10-23
    • 1970-01-01
    相关资源
    最近更新 更多