首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >相扑-如何不使用最短路径算法生成路由?

相扑-如何不使用最短路径算法生成路由?
EN

Stack Overflow用户
提问于 2016-06-21 20:28:04
回答 1查看 1.5K关注 0票数 1

在类似网格的网络上,当在SUMO中使用duarouter生成的路由运行仿真时,经过一定的时间后,由于使用最短路径算法(dijkstraastarCHCHWrapper),车辆开始集中在网格的中间和交叉点上。如何生成不使用最短路径算法而不使车辆以这种方式运行的随机路径?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-06-23 07:29:35

防止这种情况的通常方法是使用动态分配,即使用SUMO的duaIterate.py脚本来根据仿真的前一次迭代中的行程时间来计算路由分布。因此,如果您有一个trip文件(可能来自randomTrips.py),只需调用

代码语言:javascript
复制
duaIterate.py -n net.xml -t trips.xml

如果您真的想要随机路由,您可以尝试将中间点(选项-i)给randomTrips.py,但它仍然会在这些路径之间提供最短路径。或者,您可以自己编写一个简单的脚本,解析网络和连接,并在每个交界处抛出一枚硬币,然后再开车。在Python中,如下所示:

代码语言:javascript
复制
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

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/37953983

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档