Используйте Gurobi для создания networkx.Graph с максимальной связностью границ.Python

Программы на Python
Ответить
Anonymous
 Используйте Gurobi для создания networkx.Graph с максимальной связностью границ.

Сообщение Anonymous »

У меня есть следующий график: G
Изображение
создается с использованием следующего кода

Код: Выделить всё

import networkx as nx
import matplotlib.pyplot as plt

G = nx.hoffman_singleton_graph()
pos = nx.spring_layout(G)
nx.draw(G, pos=pos)
nx.draw_networkx_labels(G=G, pos=pos)
plt.show()
состоит из 50 узлов. Я хочу включить только 25 узлов. Кроме того, я хочу включить только те узлы (и ребра), которые максимизируют связность между узлом A (=5) и узлом B (=20).
Я написал следующий код:

Код: Выделить всё

import numpy as np
import gurobipy as grb
from networkx.algorithms.connectivity import local_edge_connectivity

A = 5
B = 20
nodes = list(G.nodes)
n_nodes = len(nodes)
edges = nx.to_numpy_array(G, nodelist=nodes)
thresh_nodes = 25

model = grb.Model()
F = model.addMVar(n_nodes, vtype=grb.GRB.BINARY)

model.addConstr(F.sum() == thresh_nodes)
model.addConstr(F[nodes.index(A)] == 1)
model.addConstr(F[nodes.index(B)] == 1)

E = F * edges

model.setObjective(local_edge_connectivity(nx.from_numpy_array(A=E), A, B), grb.GRB.MAXIMIZE)
model.optimize()
Это приводит к ошибке, поскольку nx.from_numpy_array() не может обрабатывать тип данных E. Как мне создать временный np.ndarray значений .X ({0, 1}) E и использовать его для определения решения(й)?

Подробнее здесь: https://stackoverflow.com/questions/793 ... nnectivity
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Python»