在类似网格的网络上,当在SUMO中使用duarouter生成的路由运行仿真时,经过一定的时间后,由于使用最短路径算法(dijkstra、astar、CH或CHWrapper),车辆开始集中在网格的中间和交叉点上。如何生成不使用最短路径算法而不使车辆以这种方式运行的随机路径?
发布于 2016-06-23 07:29:35
防止这种情况的通常方法是使用动态分配,即使用SUMO的duaIterate.py脚本来根据仿真的前一次迭代中的行程时间来计算路由分布。因此,如果您有一个trip文件(可能来自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。
https://stackoverflow.com/questions/37953983
复制相似问题