2015-08-31 8 views
0

Им пытаются кодировать это в Python с использованием gurobi и NetworkX,Попытка кода суммирования комбинации узлов в графе для gurobi оптимизации с меню быстрого

S> = быстрого суммирования (Uij для J в N) для каждого г в N

Мой код

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)

Но я хочу на su m для каждого i в узле, суммирование всех uij для всех j, которое связано с конкретным узлом i.

Это не вопрос степени, который он фактически суммирует подключенный компонент, поэтому uij равно 1, если есть путь между i и j. Я закодировал это как проблему обнаружения критического узла.

Пожалуйста, помогите! Благодаря!

+0

Я не могу сказать, что вы пытаетесь вычислить. Можете ли вы дать образец ввода и желаемый результат? – Joel

ответ

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

В любом случае, вы должны избегать итерации по всем парам узлов, если вы не только работать с очень плотными графиками.

 Смежные вопросы

  • Нет связанных вопросов^_^