@@ -189,10 +189,16 @@ def generate(s):
189189
190190 #consider the link preferences
191191 outlinks = list (s .outlinks .values ())
192- if set (outlinks ) & set (veh .links_prefer ):
193- outlinks = sorted (set (outlinks ) & set (veh .links_prefer ), key = lambda l :l .name )
194- if set (outlinks ) & set (veh .links_avoid ):
195- outlinks = sorted (set (outlinks ) - set (veh .links_avoid ), key = lambda l :l .name )
192+ if veh .specified_route == None :
193+ if set (outlinks ) & set (veh .links_prefer ):
194+ outlinks = sorted (set (outlinks ) & set (veh .links_prefer ), key = lambda l :l .name )
195+ if set (outlinks ) & set (veh .links_avoid ):
196+ outlinks = sorted (set (outlinks ) - set (veh .links_avoid ), key = lambda l :l .name )
197+ else :
198+ if veh .specified_route [0 ] in outlinks :
199+ outlinks = [veh .specified_route [0 ]]
200+ else :
201+ raise ValueError (f"Vehicle { veh .name } : specified route { s .specified_route } is inconsistent at the origin node { s .name } . Debug info: { outlinks = } " )
196202
197203 preference = np .array ([veh .route_pref [l .id ] for l in outlinks ], dtype = float )
198204 if s .W .hard_deterministic_mode == False :
@@ -1191,7 +1197,6 @@ def route_next_link_choice(s):
11911197 """
11921198 Select a next link from the current link.
11931199 """
1194- #print("aaa", end="")
11951200 if s .specified_route == None :
11961201 if s .dest != s .link .end_node :
11971202 outlinks = list (s .link .end_node .outlinks .values ())
0 commit comments