Skip to content
Snippets Groups Projects
Commit f67a350b authored by markn92's avatar markn92
Browse files

minor change

parent 258a96eb
Branches
No related tags found
No related merge requests found
...@@ -46,7 +46,9 @@ def shortest_path(G: nx.Graph, charging_stations: set, s: Node, t: Node, ...@@ -46,7 +46,9 @@ def shortest_path(G: nx.Graph, charging_stations: set, s: Node, t: Node,
# Init maps to manage labels # Init maps to manage labels
l_set: Dict[int, Set[Label]] = {v: set() for v in G} l_set: Dict[int, Set[Label]] = {v: set() for v in G}
l_uns: Dict[int, LabelPriorityQueue] = {v: LabelPriorityQueue(f_soc_factory, l_set[v]) for v in G} l_uns: Dict[int, LabelPriorityQueue] = {
v: LabelPriorityQueue(f_soc_factory, l_set[v]) for v in G
}
# Add dummy charging station with charging function # Add dummy charging station with charging function
# cf(t) = initial_soc (ie charging coefficient is zero). # cf(t) = initial_soc (ie charging coefficient is zero).
...@@ -69,28 +71,28 @@ def shortest_path(G: nx.Graph, charging_stations: set, s: Node, t: Node, ...@@ -69,28 +71,28 @@ def shortest_path(G: nx.Graph, charging_stations: set, s: Node, t: Node,
prio_queue.insert(s, priority=0, count=0) prio_queue.insert(s, priority=0, count=0)
while prio_queue: while prio_queue:
minimum_node: Node = prio_queue.peak_min() node_min: Node = prio_queue.peak_min()
label_minimum_node: Label = l_uns[minimum_node].delete_min() label_node_min: Label = l_uns[node_min].delete_min()
l_set[minimum_node].add(label_minimum_node) l_set[node_min].add(label_node_min)
if minimum_node == t: if node_min == t:
return f_soc_factory(label_minimum_node).minimum return f_soc_factory(label_node_min).minimum
# Handle charging stations # Handle charging stations
if minimum_node in charging_stations and \ if node_min in charging_stations and \
not minimum_node == label_minimum_node.last_cs: not node_min == label_node_min.last_cs:
f_soc: SoCFunction = f_soc_factory(label_minimum_node) f_soc: SoCFunction = f_soc_factory(label_node_min)
t_charge = f_soc.calc_optimal_t_charge(cf_map[minimum_node]) t_charge = f_soc.calc_optimal_t_charge(cf_map[node_min])
if t_charge is not None: if t_charge is not None:
# Spawn new label at t_charge # Spawn new label at t_charge
l_uns[minimum_node].insert( l_uns[node_min].insert(
Label( Label(
t_trip=label_minimum_node.t_trip + t_charge, t_trip=label_node_min.t_trip + t_charge,
soc_last_cs=f_soc(label_minimum_node.t_trip + t_charge), soc_last_cs=f_soc(label_node_min.t_trip + t_charge),
last_cs=minimum_node, last_cs=node_min,
soc_profile_cs_v=soc_profile_factory(minimum_node) soc_profile_cs_v=soc_profile_factory(node_min)
) )
) )
...@@ -98,24 +100,24 @@ def shortest_path(G: nx.Graph, charging_stations: set, s: Node, t: Node, ...@@ -98,24 +100,24 @@ def shortest_path(G: nx.Graph, charging_stations: set, s: Node, t: Node,
# minimum label spawned is th previous step. # minimum label spawned is th previous step.
try: try:
prio_queue.insert( prio_queue.insert(
item=minimum_node, item=node_min,
**keys(f_soc_factory(l_uns[minimum_node].peak_min())) **keys(f_soc_factory(l_uns[node_min].peak_min()))
) )
except KeyError: except KeyError:
# l_uns[v] empty # l_uns[v] empty
prio_queue.delete_min() prio_queue.delete_min()
# scan outgoing arcs # scan outgoing arcs
for n in G.neighbors(minimum_node): for n in G.neighbors(node_min):
# Create SoC Profile for getting from minimum_node to n # Create SoC Profile for getting from minimum_node to n
soc_profile = label_minimum_node.soc_profile_cs_v + \ soc_profile = label_node_min.soc_profile_cs_v + \
soc_profile_factory(minimum_node, n) soc_profile_factory(node_min, n)
if soc_profile(capacity) != -inf: if soc_profile(capacity) != -inf:
l_new = Label( l_new = Label(
t_trip=label_minimum_node.t_trip + distance(G, minimum_node, n), t_trip=label_node_min.t_trip + distance(G, node_min, n),
soc_last_cs=label_minimum_node.soc_last_cs, soc_last_cs=label_node_min.soc_last_cs,
last_cs=label_minimum_node.last_cs, last_cs=label_node_min.last_cs,
soc_profile_cs_v=soc_profile soc_profile_cs_v=soc_profile
) )
try: try:
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment