【问题标题】:Multiple agent pathfinding - no crossing paths多代理寻路 - 没有交叉路径
【发布时间】:2013-10-17 15:59:36
【问题描述】:

我正在尝试让多个代理同时移动到 2d 地图上的指定点,并且对一个代理可以移动的最大距离有一个上限。 如果可能,所有代理都应移动最大距离,否则应减少。 如果可能,不同代理的路径不应该交叉,但如果没有,它们仍然可以交叉。

我的想法是某种调整后的 A* 算法。 这是一个好方法还是有更好的算法来解决这类问题? (说实话,我目前有 A* 和 dijkstra 作为解决这个问题的可能性,所以如果有更好的方法,朝着正确的方向推进会很棒)

已经感谢您的帮助

PS:我还没有任何类型的底层图表,所以我仍然愿意接受任何想法,但当然可以创建一个适用于 dijkstra/A* 的图表

【问题讨论】:

  • 您的环境模型是什么?是网格吗?
  • 你所说的“十字架”到底是什么意思?你的意思是完全脱节,还是说两个代理不能同时在同一个地方?
  • 如果可能的话,我得到的路径应该是完全脱节的。如果需要,两个代理可以同时在同一个地方。

标签: algorithm graph-algorithm


【解决方案1】:

您的问题接近于顶点/边不相交路径问题,通常是 NP-Complete,而且您的受限版本似乎是 NP-Complete 因为shortest disjoint path in grid graph is NP-Hard,这与您的受限版本有关。但是有lots of algorithms 用于网格中的不相交路径(即使你有不同的层),所以我建议的最佳选择是使用精确算法之一,找到顶点不相交路径,然后增加路径的大小(如果需要),通过遍历一些相邻的顶点。

对于网格,您不需要 Dijkstra 来查找两个节点之间的路径(甚至是最短路径或具有特定长度的路径),您可以通过运行 BFS 来简单地做到这一点,并且是 O(n)(从顶点 v 开始 BFS ,并将其相邻的数量设置为1,然后对于每个1的相邻设置新值为2,...见this答案和编号算法部分)。

如果您在动态情况下寻找一些启发式方法,可能是this 问题也有帮助。

【讨论】:

  • 很好的答案,明天我会更深入地了解您包含的链接。非常感谢!
猜你喜欢
  • 1970-01-01
  • 2017-10-14
  • 1970-01-01
  • 2021-02-05
  • 2022-09-23
  • 1970-01-01
  • 2012-06-26
  • 2011-08-16
  • 1970-01-01
相关资源
最近更新 更多