SUMO - 如何在不使用最短路径算法的情况下生成路线?

SUMO - How to generate routes without using shortest path algorithms?

当运行在SUMO中用duarouter生成的路线在网格状网络上进行模拟时,经过一定时间后,车辆开始集中在中间由于路线是使用最短路径算法生成的(dijkstraastarCHCHWrapper)。如何生成不是使用最短路径算法创建的随机路线,并且不使车辆以这种方式运行?

防止这种情况的通常方法是使用dynamic assignment,即使用SUMO 的duaIterate.py 脚本根据前一次模拟迭代中的行程时间计算路线分布。所以如果你有一个旅行文件(可能来自 randomTrips.py)只需调用

duaIterate.py -n net.xml -t trips.xml

如果你真的想要随机路线,你可以尝试将中间点(选项-i)提供给randomTrips.py,但它仍然会提供这些之间的最短路径。或者,您可以自己编写一个简单的脚本来解析网络和连接,并在接下来开车的每个路口掷硬币。在 Python 中,可以执行以下操作:

import random, sumolib
net = sumolib.net.readNet('myNet.net.xml')
route = [net.getEdge('startEdge')]
while len(route) < finalLength:
    route.append(random.choice(route[-1].getToNode().getOutgoing()))

此代码忽略了您使用的车辆类型可能无法使用的连接或边缘,但我希望您明白这一点。 有关使用 sumolib 的详细信息,请参阅 http://sumo.dlr.de/wiki/Tools/Sumolib