我正在运行一个模拟,要求每辆车都停在其中。因此,当汽车到达其最终目的地时,我尝试使用traci库中的changeTarget()
函数对其进行更改。
具体来说,我正在使用getRoute
和getRouteIndex
函数来了解车辆是否在路线的尽头,并使用changeTarget
设置新路线,理论上应该由命令创建。但是,错误代码不断出现:traci.exceptions.TraCIException : Route replacement failed for 13
我使用的是Ubuntu 18.04.3,SUMO 1.3.1,并使用os,sys,optparse,子进程,随机,数学库。
包含changeTarget
的代码部分是
if step >= 12: #starts the contamination
car_matrix_actualized = traci.vehicle.getIDList() #gets the cars who are in the simulation in the new step
for i in car_matrix_actualized:
if traci.vehicle.getRouteIndex(str(i)) == (len(traci.vehicle.getRoute(str(i))) - 1): #verification to see if the car is at the end of its route
new_destiny = random.choice(traci.edge.getIDList())
traci.vehicle.changeTarget(str(i),str(new_destiny))
整个代码在此链接中:https://github.com/eclipse/sumo/issues/6168
非常感谢您!
答案 0 :(得分:0)
解决方案在https://github.com/eclipse/sumo/issues/6172中。本质是,您需要确保新目的地是“真实”边缘(无路口内部边缘),并且您的车辆可以在该边缘上行驶并且已连接到当前位置。