如何在进入地图前更改车辆路线

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.getLoadedIDshttps://sumo.dlr.de/pydoc/traci._simulation.html#SimulationDomain-getLoadedIDList获取已装载但可能尚未出发的车辆列表。您可以为这些车辆设置新路线,就像为离开的车辆一样。