首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >基于二维平面图的交通仿真中交通灯/交叉口的最佳实现方法

基于二维平面图的交通仿真中交通灯/交叉口的最佳实现方法
EN

Software Engineering用户
提问于 2023-04-24 16:29:51
回答 1查看 116关注 0票数 0

我按照本文中的智能驱动程序模型: C++构建了一个流量模拟:https://towardsdatascience.com/simulating-traffic-flow-in-python-ee1eab4dd20f

总结一下我的执行情况:

  • 地图划分为Tile(s)的二维网格。
  • 每个Tile都有Road(s)的列表。为了简单起见,没有一条路会与自己合并成另一条路/分岔(每条路只能在它们的端点连接到其他道路)。如果一条道路违反了这一点,我会在合并/发散点将它分成两条路。
  • 每个Road都有Node(s)的列表。更新功能将连接点,我将有我的道路。
  • 交通信号灯只能放置在端点。

这篇文章没有提到什么时候道路只是交叉其他道路(没有交通灯的指导),所以我开发了自己的系统。

在模拟开始之前,每个瓷砖都会在其道路内找到每个可能的交叉口,将穿过该交叉口的道路的位置和信息存储到单独的IntersectNode (与Node无关)中,然后将其抛入IntersectManager中。在更新循环中,管理器循环遍历所有节点,这些节点遍历所有相交的道路,并控制这些道路上车辆的速度。

当我回到执行交通灯时会出现问题:我想指出我想要的信号灯在哪里,因为道路是固定的(Ex:在1,3的开始,瓷砖(1,3)放一个灯)。但是交通灯是IntersectNode(s),现在似乎没有好的方法将两者分开(或者具体说明哪一个)。

  1. 在控制车辆速度时,两者都会产生冲突。
  2. 按位置进行区分可能会导致浮点不准确。
  3. 区分道路(S)通过哪个节点可能导致重复,因为两个或更多的道路可以相互交叉多次(同样,为简单,没有交叉本身)。
  4. 手动硬编码哪些道路交叉,哪些也是交通灯可以使事情变得复杂指数。

那么,实现这个目标的最佳方式是什么呢?我并不是真的在寻找最大的效率,而是更容易实现、使用和重用。

编辑:较短的问题状态:在瓷砖内,交叉口是自动计算的,而交通灯是手动放置的。所以交通灯总是停在交叉口的顶部。问题是,交通灯和交叉口对汽车有不同的影响(就像在现实生活中一样)。所以,当交通灯已经亮起时,我需要消除交叉口的影响。

编辑2:要被视为“连接”,一条道路的端点必须是另一条道路的起点。“交叉”是指道路相互重叠时(例如,两条道路形成"X“形状时)。

EN

回答 1

Software Engineering用户

回答已采纳

发布于 2023-04-25 11:49:04

如果我正确地理解了这个问题,你只是在存储道路,在运行时在这个道路网络上生成一个图形,但是手动输入的信息有问题,比如影响这些运行时生成的交叉口行为的交通灯。

在这个图形表示中,边表示一个没有任何变化的路段。任何行为,如屈服、停止、速度变化等,都应该由节点来表示。

在我看来,解决办法似乎相当清楚。使用某种形式的编辑器在公路网上生成此图,并将其存储起来。这应该允许您对图形进行更改,以添加交通灯或其他任何东西。在添加新道路时,编辑器仍然具有方便的检测交叉口的功能,并相应地对图形进行更新。

由于这似乎是一个高度可视化的问题,我强烈推荐一个可视化编辑器来显示实际道路。试图在xml/json文件中手工输入坐标似乎很容易出错,而且对于更复杂的道路网络来说,其扩展性也不是很好。

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

https://softwareengineering.stackexchange.com/questions/445226

复制
相关文章

相似问题

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