如何在进入地图前更改车辆路线
How to change a vehicle route before it enters the map
我目前正在 运行 关于 Bologna Acosta map 的一些实验,计算 Python 中的备选路线,并根据一些启发式方法更改进入车辆的路线,并监控 Bologna Acosta map 中的变化SUMO 指标。
为了了解哪些车辆刚刚进入地图,我这样做了:
vehiclesInside = set()
while step < constants.HORIZON:
traci.simulationStep(step)
vehicles = set(traci.vehicle.getIDList())
newVehicles = vehicles.difference(vehiclesInside)
for vehicleId in newVehicles:
route = traci.vehicle.getRoute(vehicleId)
origin = route[0]
destination = route[-1]
newRoute = computeNewRoute(origin, destination)
traci.vehicle.setRoute(vehicleId, newRoute)
vehiclesInside = vehicles
step += constants.TRACI_STEP
问题是,这样一来,车辆会突然出现在最适合他们到达原定路线的车道上的入口点,而当我随后改变路线时,车辆都在“错误的”车道导致 DepartDelay 指标增加(车辆离开的平均时间因缺少道路而延迟 space)。
Traci 中有没有办法在车辆在地图中生成之前更新车辆路线?
您可以通过traci.simulation.getLoadedIDs
https://sumo.dlr.de/pydoc/traci._simulation.html#SimulationDomain-getLoadedIDList获取已装载但可能尚未出发的车辆列表。您可以为这些车辆设置新路线,就像为离开的车辆一样。
我目前正在 运行 关于 Bologna Acosta map 的一些实验,计算 Python 中的备选路线,并根据一些启发式方法更改进入车辆的路线,并监控 Bologna Acosta map 中的变化SUMO 指标。
为了了解哪些车辆刚刚进入地图,我这样做了:
vehiclesInside = set()
while step < constants.HORIZON:
traci.simulationStep(step)
vehicles = set(traci.vehicle.getIDList())
newVehicles = vehicles.difference(vehiclesInside)
for vehicleId in newVehicles:
route = traci.vehicle.getRoute(vehicleId)
origin = route[0]
destination = route[-1]
newRoute = computeNewRoute(origin, destination)
traci.vehicle.setRoute(vehicleId, newRoute)
vehiclesInside = vehicles
step += constants.TRACI_STEP
问题是,这样一来,车辆会突然出现在最适合他们到达原定路线的车道上的入口点,而当我随后改变路线时,车辆都在“错误的”车道导致 DepartDelay 指标增加(车辆离开的平均时间因缺少道路而延迟 space)。
Traci 中有没有办法在车辆在地图中生成之前更新车辆路线?
您可以通过traci.simulation.getLoadedIDs
https://sumo.dlr.de/pydoc/traci._simulation.html#SimulationDomain-getLoadedIDList获取已装载但可能尚未出发的车辆列表。您可以为这些车辆设置新路线,就像为离开的车辆一样。