考虑寻路AI

时间:2015-02-25 04:48:37

标签: artificial-intelligence

我希望有1个广泛的东西能够路径查找,以便考虑到在同一条2宽路径上的其他流。

让我们说我有这样的地图:(" 0"它不能去," - "你是它可以," 1"和" A"是起点,而" 2"和" b"是目的地)

000000000000
0000000001A0
000000000--0
0B200------0
0--00------0
0------00000
0------00000
000000000000

如果我有" A"路径 - 找到" B"使用A *算法,它将阻止来自" 1" to" 2"。(" ="是路径)

000000000000
0000000001A0
000000000-=0
0B200======0
0=-00=-----0
0=====-00000
0------00000
000000000000

是的,我可以找到" 1"到" 2"然后制作AB路径但不会总是有效。一个很好的例子是:

00000000000000000000
000000000000000001A0
00000000000000000--0
0B200------00------0
0--00------00------0
0------00------00000
0------00------00000
00000000000000000000

来自" 1"的A *路径发现到" 2"阻止" A"到" B"

000000000000000001A0
00000000000000000=-0
0B200------00=====-0
0-=00=====-00=-----0
0-====-00=====-00000
0------00------00000
00000000000000000000

" A"到" B"块" 1"到" 2"

000000000000000001A0
00000000000000000-=0
0B200------00======0
0=-00=====-00=-----0
0=====-00=====-00000
0------00------00000
00000000000000000000

额外澄清:" A"," B"," 1"和" 2可以在用户创建的地图中的任何位置。虽然AI只需要考虑其他当前路径,但会有1到10个路径同时进行并且分别启动和停止。它还需要实时发生,因此计算时间不会太长。

那么我怎样才能让AI足够聪明,不会阻挡另一条道路呢?现在我使用A *所以它是否有改进或者我应该使用全新的AI系统? (两者都适合我)

2 个答案:

答案 0 :(得分:2)

如果我理解正确,您正在搜索合作寻路。在过去十年中,已经提出了许多针对该问题的解决方案。您可以在this paper找到一个很好的摘要。

我会给你一个小小的回顾:

  • 本地修复A 每个代理商 使用A *算法搜索到目的地的路由,忽略除当前邻居之外的所有其他代理。然后代理开始 按照他们的路线,直到即将发生碰撞。每当代理人即将进入占用位置时,它会重新计算其路线的剩余部分。它有点“蛮力”,它不是真正的先进技术,但实施起来很容易,也是目前电子游戏的行业标准。不幸的是,我无法找到算法的伪代码。 :(
  • 合作社A 一种解决Co-的新算法 手术寻路问题。任务分离成 一系列单一代理搜索。个人搜索 在三维时空中执行,并考虑其他代理的计划路线。 等待移动 包含在代理的操作集中,以使其保留 静止。
  • 分层合作A * 与以前一样但是采用分层方式。
  • Windowed Hierarchical Cooperative A * 当时的最新技术(2005年我认为)。有一个有趣的演示on the internet,包含Java源代码和所有内容。要理解为什么WHCA *更好,请参阅论文的第3页。

我希望如果你需要的话,这可以自己开始探索这个领域。 :)

答案 1 :(得分:0)

与大多数问题一样 - 找到实际约束可以帮助识别您正在查看的搜索空间。

从示例问题中不清楚两条路径是否可以采用截然不同的路径,或者路径是否必须彼此并排?您是否知道是否总会有一个解决方案可以同时路由地图上的所有路径?

如果你只是需要一条支持n宽间隙的道路(对于n条平行路径),这似乎是对搜索空间/问题表示的简单调整,可能是用A *来完成的。

另外 - 你提到了流 - 随着时间的推移,行为是问题的一个方面吗? - 是否可以选择分时(交替使用)多个流之间的狭窄间隙?或者更简短的流元素车队可以自行寻路?