SUMO
当在类似网格的网络上使用生成的路线运行模拟时duarouter
,经过一定时间后,由于路线是使用最短路径生成的,因此车辆开始集中在网格的中间和交叉路口算法(、dijkstra
或astar
)。如何生成不是用最短路径算法创建的随机路线,并且不让车辆以这种方式运行?CH
CHWrapper
问问题
1404 次
1 回答
2
防止这种情况的常用方法是使用动态分配,即使用 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
于 2016-06-23T07:29:35.457 回答