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

Random 相扑-如何在不使用最短路径算法的情况下生成路线?,random,shortest-path,traffic-simulation,sumo,Random,Shortest Path,Traffic Simulation,Sumo,当在SUMO中使用duarouter在网格状网络上生成的路线运行模拟时,经过一定时间后,由于路线是使用最短路径算法生成的,车辆开始集中在网格的中间和交叉点(dijkstra,astar,CH或CHWrapper)。如何生成不使用最短路径算法创建的随机路线,并且不使车辆以这种方式运行?防止这种情况的常用方法是使用SUMO的DuaitRate.py脚本,根据模拟的上一次迭代中的行程时间计算路线分布。因此,如果您有行程file(可能来自randomTrips.py)只需打电话 duaIterate.p

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

防止这种情况的常用方法是使用SUMO的DuaitRate.py脚本,根据模拟的上一次迭代中的行程时间计算路线分布。因此,如果您有行程file(可能来自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()))
import random,sumolib
net=sumolib.net.readNet('myNet.net.xml')
路由=[net.getEdge('startEdge')]
而长度(路线)<最终长度:
route.append(random.choice(路由[-1].getToNode().getOutgoing())
此代码忽略了连接或边缘可能不适用于您使用的车辆类型,但我希望您能理解。
有关使用sumolib的详细信息,请参见

在阅读您的答案之前,我自己使用硬币方法创建了随机路线,但没有使用sumolib。现在我对sumolib也这样做了,谢谢您的回答。