在运行时通过TraCI在SUMO中添加删除车辆。

问题描述 投票:0回答:1

我知道traci.vehicle API有一个添加和删除的功能,它就是 移除或添加Traci车辆. 我在Windows上使用SUMO。我有网络,路线和固定数量的37000辆汽车在网络中。我在python中启动了我的模拟,并试图在模拟运行时删除一辆车,如下所示。

import traci 
traci.start(sumoCmd)
stepz = 0
while traci.simulation.getMinExpectedNumber() > 0 and stepz < 7000:
   traci.simulationStep()
   traci.vehicle.remove("2773")
traci.close()

当我运行时,我得到这样的错误信息:

回溯(最近一次调用): 文件"",第9行,在traci.vehicle.remove("2773")

文件 "C:\\Program Files (x86)\Eclipse\Sumo\tools\traci_vehicle.py",第1579行,在remove tc.CMD_SET_VEHICLE_VARIABLE, tc.REMOVE, vehID, reason中。)

File "C:\\Program Files (x86)\Eclipse\Sumo\tools\traci\connection.py", line 149, in _sendByteCmd self. _sendExact() File "C:\Program Files (x86)\Eclipse\Sumo\tools\traci\connection.py", line 112, in _sendExact raise TraCIException(err, prefix[1], _RESULTS[prefix[2]]) TraCIException: 车辆'2773'不知道。

"2773 "是我从车辆的ID中得到的。我的行程.行程.xml 文件。我不知道这段代码有什么问题,如何解决。我还想知道我应该如何找到这段代码的 RouteID 添加一个车辆.任何帮助将是非常感激的.我知道traci.vehicle API有一个添加和删除的功能,只是traci车辆删除或traci车辆添加。

python sumo
1个回答
0
投票

问题可能是(正如迈克尔指出的),你正在试图删除一个车辆,还没有在模拟。车辆与ID "2773" 只在您的 .rou.xml 文件。SUMO解析了 .rou.xml 文件,并在模拟运行时加载车辆。车辆还没有进入模拟,因为它要么被定义为在不同的时间出发,要么它目前正试图进入网络,但在它之前有更多的车辆(它在排队)。

解决方法是检查该车辆是否已经出发。

if "2773" in traci.vehicle.getIDList():
    traci.vehicle.remove("2773")

或者,尝试移除并捕捉。

try:
    traci.vehicle.remove("2773")
except TraCIException:
    pass  # just do nothing

至于你在评论中提出的关于添加 route. 该 "1" 符合 traci.route.add("1", ["5367021#0", "-133806981#1"]) 是一个新的ID,您试图将其赋值给由边组成的路由。"5367021#0""-133806981#1". 边缘必须是连续的,不仅是开始和结束,而且中间的所有边缘也必须按照正确的顺序。

你可以在这里的文档中找到你所需要的一切。https:/sumo.dlr.depydoc。


0
投票

你只能删除已经在网络中的车辆。所以,也许你的车辆还没有离开。路由id是路由的id,可以是XML定义的,也可以是早期traci.route.add调用的。

© www.soinside.com 2019 - 2024. All rights reserved.