Как кодировать несколько весов на узле (график) - PullRequest
0 голосов
/ 06 апреля 2020

Нужна помощь для реализации модифицированной BFS / Dijstra с одним узлом с несколькими весами и ребром с одним весом. У меня есть данные временных рядов со всех узлов. Я знаю, какой узел подключен к какому другому узлу. Вес узла указан в токе (единица измерения: ампера). Вес ребра - это расстояние (единица измерения: метры) между узлами. В каждом узле 4 порта. Края - это кабели в реальном мире.

Примечание: 4-й порт - это сумма остатков и индикатор того, потреблял ли этот узел энергию или нет. Энергия в 30 ампер перешла от A к B к E. Когда я вижу -30 на 4-м порту E, поток энергии определенно пошел по этому пути, а не A-B-D-E, даже если расстояние от кабеля здесь меньше.

Постановка задачи: Мне нужно выяснить, как значение 30 (желтый) прошло по короткому маршруту от А до Е в обход В.

Моя мотивация: Понимать поток энергии внутри ребер.

Мое ограничение: Я мог использовать только краевой вес, чтобы что-то вывести, но это мало помогает в решении этого. Пожалуйста, прокомментируйте для большей ясности.

G=nx.Graph()
G.add_edge('A','B', weight = 20)
G.add_edge('A','C', weight = 18)
G.add_edge('B','E', weight = 35)
G.add_edge('B','D', weight = 15)
G.add_edge('D','E', weight = 15)

elarge=[(u,v) for (u,v,d) in G.edges(data=True) if d['weight'] > 30]
esmall=[(u,v) for (u,v,d) in G.edges(data=True) if d['weight'] <= 30]

Update grid look:

...