Skip to content
Snippets Groups Projects
graph_tools.py 755 B
Newer Older
markn92's avatar
markn92 committed
from typing import Dict, Tuple
markn92's avatar
markn92 committed
from collections import namedtuple

markn92's avatar
markn92 committed
import networkx as nx
from evrouting.T import Wh, ChargingCoefficient
markn92's avatar
markn92 committed

markn92's avatar
markn92 committed
TemplateEdge = namedtuple('Edge', ['u', 'v', 'distance', 'consumption'])
TemplateNode = namedtuple('Node', ['label', 'charging_coeff'], defaults=(None, None))
markn92's avatar
markn92 committed

markn92's avatar
markn92 committed
NodeData = Dict
EdgeData = Dict

Node = int
Edge = Tuple[int, int]


def node_convert(n: TemplateNode) -> NodeData:
markn92's avatar
markn92 committed
    return {'label': n.label, 'c': n.charging_coeff}


markn92's avatar
markn92 committed
def edge_convert(e: TemplateEdge) -> EdgeData:
    return {'weight': e.distance, 'c': e.consumption}


def consumption(G: nx.Graph, u: Node, v: Node) -> Wh:
    return G.edges[u, v]['c']


def charging_cofficient(G: nx.Graph, n: Node) -> ChargingCoefficient:
    return G.nodes[n]['c']