用于更改图形(D *,D * -Lite,LPA *等)的最新路径查找算法有何不同?


96

近年来,已经开发了许多寻路算法,它们可以比A *更快地响应图形变化来计算最佳路径-它们是什么,它们之间有什么不同?他们是针对不同的情况,还是有些过时?


这些是我到目前为止能够找到的:

我不确定其中哪一个适用于我的特定问题-如有必要,我将全部阅读,但是如果有人可以编写摘要,这将为我节省很多时间。


我的特定问题:我有一个带有起点,终点和一些墙的网格。我目前正在使用A *从头到尾查找最佳路径。

图片2

然后,用户将移动一堵墙,而我必须再次重新计算整个路径。在“移动墙/重新计算路径”的步骤发生在连续很多次,所以我在寻找一种算法,将能够快速重新计算最佳路径,而无需运行A *的一个完整的迭代。

不过,我不一定要寻找对A *的更改-它可以是完全独立的算法。


3
您看过D *吗?这是一种增量算法,如果我没记错的话,应该完全按照这种方式处理。我曾经见过一个机器人,用它来寻路,环境中有随机的步行者。
Juho 2012年

7
@Kaveh:为什么不要求对“研究级”动态寻路算法的最新技术进行概述?现场d *小于5岁,和LEARCH小于3 ..
BlueRaja -丹尼Pflughoeft

7
我不确定为什么这不是该论坛的适当问题。这绝不是一个固定的老话题
Suresh Venkat 2012年

5
@ BlueRaja-DannyPflughoeft我也认为这是一个很好的研究级问题。我将基于我的评论添加答案,并将其扩展一点。
2012年

4
@ BlueRaja-DannyPflughoeft在reddit上链接了。
U2EF1

Answers:


77

因此,我浏览了论文,这就是我闪闪发光的东西。如果在主题方面还有其他知识可言,请在我错了的情况下纠正我(或添加您自己的答案,而我会接受!)

可以在上方的问题栏中找到每篇论文的链接。

  • 简单的重新计算
    • D * (又名Dynamic A *(1994年):在最初的运行中,D *的运行与A *非常相似,因此可以非常迅速地找到从头到尾的最佳路径。但是,随着单元从头到尾移动,如果图形发生变化,D *能够非常快速地重新计算从该单元位置到终点的最佳路径,这比再次从该单元位置简单地运行A *快得多。但是,D *以极其复杂而著称,而更简单的D * -Lite已完全淘汰了D *。
    • 聚焦D *(1995年):对D *的改进,使其更快/“更实时”。我找不到与D * -Lite的任何比较,但是鉴于它比较老,并且D * -Lite的讨论更多,我认为D * -Lite更好。
    • DynamicSWSF-FP(1996):存储从每个节点到完成节点的距离。具有较大的初始设置以计算所有距离。更改图形后,它只能更新距离已更改的节点。与A *和D *无关。当您要查找每次更改后从多个节点到终点的距离时很有用;否则,LPA *或D * -Lite通常更有用。
    • LPA * / Incremental A *(2001):LPA * (终身计划A *),也称为Incremental A * (有时令人困惑,也称为“ LPA”,尽管它与其他名为LPA的算法无关)是DynamicSWSF-FP和A *的组合。在第一次运行时,它与A *完全相同。但是,在对图形进行较小的更改后,与A *相比,从同一开始/完成对中进行后续搜索就可以使用先前运行中的信息来大大减少需要检查的节点数量。这正是我的问题,所以听起来LPA *将是我的最佳选择。LPA *与D *的不同之处在于,它总是找到从同一起点到同一终点的最佳路径。起点移动时不使用(例如沿初始最佳路径移动的单位)。然而...
    • D * -Lite(2002):此算法使用LPA *模仿D *;也就是说,当它沿着初始最佳路径移动并且图形发生变化时,它会使用LPA *查找该单元的新最佳路径。D * -Lite被认为比D *简单得多,并且由于它始终至少与D *一样快地运行,因此它已经完全废弃了D *。因此,从没有任何理由使用D *。改用D * -Lite。
  • 任何角度的运动
    • 字段D *(2007年):D * -Lite的一种变体,不限制移动到网格;也就是说,最佳路径可以使单位沿任意角度移动,而不仅仅是网格点之间的45度(或90度)。被美国国家航空航天局(NASA)用来寻找火星探测器。
    • Theta *(2007):A *的一种变体,比Field D *提供更好(更短)的路径。但是,由于它基于A *而不是D * -Lite,因此它没有Field D *所具有的快速重新计划功能。 另请参阅
    • Incremental Phi *(2009):两全其美。Theta *的一个增量版本(又名允许快速重新计划)
  • 移动目标点
    • GAA *(2008年):GAA * (广义自适应A *)A *的一种变体,用于处理运动目标点。这是甚至更早的算法“运动目标自适应A *”的概括
    • GRFA *(2010):GFRA * (广义边缘检索A *)似乎是(GA)* ,它是使用另一种称为FRA *的算法将GAA *概括为任意图形(即,不限于2D)的图
    • MTD * -Lite(2010):MTD * -Lite (移动目标D * -Lite)是“ D * Lite的扩展,它使用广义边缘检索A *背后的原理”来进行快速重新计划的移动目标搜索。
    • Tree-AA *(2011):(???)似乎是一种用于搜索未知地形的算法,但与本节中的所有其他算法一样,它也是基于Adaptive A *的,因此在此将其放在此处。不确定与本节中的其他内容相比。
  • 快速/次优
    • 随时D *(2005):这是D * -Lite 的“随时”变体,通过将D * -Lite与称为Anytime Repairing A *的算法结合使用来完成。“随时”算法是一种可以在任何时间限制下运行的算法-它会非常快地找到一条非常不理想的路径作为起点,然后在给出更多时间的情况下对该路径进行改进。
    • HPA *(2004年):HPA * (分级路径查找A *)用于在大型图形上查找大量单位,例如RTS (实时策略)视频游戏。它们都将具有不同的开始位置,并且可能具有不同的结束位置。HPA *将图分成层次结构,以便快速找到所有这些单元的“接近最佳”路径,比在每个单元上单独运行A *要快得多。 也可以看看
    • PRA *(2005年):据我了解,PRA * (部分优化A *)解决了与HPA *相同的问题,但是方式不同。它们都具有“相似的性能特征”。
    • HAA *(2008):HAA * (分层注释A *)是HPA *的概括,它允许在某些地形上限制某些单元的穿越(例如,某些单元可以穿过而较小的通道则无法通过;或只有飞行单位可以穿过的孔;等等)
  • 其他/未知
    • LPA(1997):LPA (无环路路​​径查找算法)似乎是一种路由算法,仅与此处其他算法解决的问题略相关。我之所以仅提及它,是因为该论文在介绍LPA *的论文中在Internet上的多个地方被混淆(并且错误地)引用,而并非如此。
    • LEARCH(2009):LEARCH是机器学习算法的组合,用于教机器人如何自行寻找接近最佳的路径。作者建议将LEARCH与Field D *结合使用以获得更好的结果。
    • BDDD *(2009):??? 我无法获取论文。
    • SetA *(2002):??? 显然,这是A *的一种变体,可以搜索“二进制决策图”(BDD)模型?他们声称它在某些情况下的运行“比A *快几个数量级”。但是,如果我理解正确,那么这些情况是图上的每个节点都有很多边吗?

考虑到所有这些,LPA *似乎最适合我的问题。


嗯..我也发现了@lhrios撰写的这篇论文,它比较了一些算法。
mg007

我知道这很老了,但是我认为值得注意的是您对Field D *的描述存在一个小缺陷。规则D *不限于“网格”,而限于离散图形。本文要说明的一点是,要使A *,D *等起作用,您必须将连续的空间离散成块,这限制了可以移动的角度。字段D *消除了这种限制,并允许您以连续而不是离散的方式处理后继状态(或多或少地涉及欺骗)。它仅以2D网格为例,D * / A *等绝不限于网格。
LinearZoetrope

我应该提到Field D *仅限于网格,尽管该论文提到它们确实适用于3D版本。这是由于它使用了插值。仍然表明A *和D *在具有任意数量的后继状态的图上工作,字段D *只是D *使用基于网格的计划的场景的改进。
LinearZoetrope

字段D *和Theta * / Incremental Phi *之间的重要区别在于,字段D *对于每个正方形都可以具有唯一的权重,而Theta *和Incremental Phi *只能对所有可访问的正方形具有相同的权重。因此,增量Phi *并不优于Field D *。
HelloGoodbye 2015年

1
@Jsor:这是Field D *的3D版本:3D Field D-JPL Robotics
HelloGoodbye 2015年

16

使用D *,D * -Lite或此类中的任何增量算法时,都有一个很大的警告(值得注意的是,该警告在文献中很少提及)。这些类型的算法使用反向搜索。也就是说,它们从目标节点向外计算成本,就像向外扩散的涟漪一样。当边缘的成本发生变化(例如,在示例中添加或移除墙)时,它们都有各种有效的策略,仅用于更新受更改影响的已探查(也称为“已访问”)节点的子集。

最大的警告是,这些变化相对于目标位置的位置对算法的效率产生了巨大的影响。我在各种论文和论文中都表明,这些增量算法中最坏的情况下,完全有可能比丢掉所有信息并重新以非增量形式(如普通的旧A *)重新开始更糟糕

当更改的成本信息接近扩展的搜索范围(“访问”区域)的边界时,几乎不需要更改任何路径,并且增量更新很快。一个相关的例子是一个移动机器人,其身体上装有传感器。传感器仅看到机器人附近的世界,因此变化在该区域中。该区域是搜索的起点,而不是目标,因此一切工作都很好,算法在更新最佳路径以纠正更改方面非常有效。

当更改的成本信息接近搜索目标时(或者您的方案看到了目标更改位置,而不仅仅是开始),这些算法将遭受灾难性的减速。在这种情况下,几乎所有保存的信息都需要更新,因为更改的区域非常接近目标,几乎所有预先计算的路径都通过更改,因此必须重新评估。由于存储额外信息和进行增量更新的计算会产生开销,因此在这种规模上进行重新评估要比重新开始要慢。

由于您的示例场景似乎使用户可以移动他们想要的任何墙,因此,如果您使用D *,D * -Lite,LPA *等,则将遭受此问题。算法的时间性能将是可变的,具体取决于用户输入。一般来说,“这是一件坏事” ...

例如,CMU的Alonzo Kelly小组有一个名为PerceptOR的出色程序,该程序试图将地面机器人与空中机器人相结合,所有这些机器人都实时共享感知信息。当他们尝试使用直升机为地面车辆的计划系统提供实时成本更新时,他们遇到了这个问题,因为直升机可以在地面车辆之前飞行,看到成本变化接近目标,从而减慢了速度降低他们的算法。他们讨论了这个有趣的发现吗?最终,他们设法做到的最好的办法是使直升机直接在地面车辆上方飞行,这使其成为世界上最昂贵的传感器桅杆。当然,我很小气。但这是一个大问题,没人愿意谈论-他们应该,

很少有论文讨论这一问题,大部分是由我自己撰写的。在本问题列出的原始论文的作者或作者的学生所写的论文中,我只能想到实际上提到这一问题的论文。Likhachev和Ferguson建议尝试估算所需的更新规模,如果估算的增量更新花费的时间比重新开始要长,则刷新存储的信息。这是一个非常明智的解决方法,但也有其他解决方法。我的博士针对广泛的计算问题推广了一种类似的方法,并且超出了此问题的范围,但是您可能会发现参考文献有用,因为它对大多数这些算法以及更多算法进行了全面概述。参见http://db.acfr.usyd.edu.au/download.php/Allen2011_Thesis.pdf?id=2364 有关详细信息。


1
感谢您添加这些详细信息:)在我的应用程序中,隔离墙朝着开始移动的频率与结束向着移动的频率相同。我实现了BFS,A *和LPA *;A *实际上比BFS慢一些(我的空间往往受到限制,因此A *仅搜索比BFS少一些的节点;同时BFS只需要一个队列,可以实现比优先级队列更快的队列),但是使用LPA *的速度平均要快两倍。
BlueRaja-Danny Pflughoeft13年

9

主要思想是使用增量算法,当初始计算的路线被阻塞时,该算法能够利用先前的计算。通常在机器人,导航和计划的背景下对此进行调查。

Koenig&Likkachev,《未知地形中导航的快速重新规划》,IEEE机器人交易,第1卷。2005年6月21日第3期引入了D * Lite。可以肯定地说,D *已过时,因为D * Lite总是和D *一样快。此外,D *非常复杂,难以理解,分析和扩展。图9给出了D * Lite的伪代码,表1显示了与BFS,Backward A *,Forward A *,DynamicSWSF-P和D *相比,D * Lite的实验结果。

我不知道您列出的较新算法(任何时间D *,字段D *,LEARCH)。最近,我看到了一个使用D * Lite进行自动规划的机器人。从这个意义上说,我认为D * Lite绝不是过时的。对于您的实际问题,我认为尝试通常的工程方法没有什么害处:采用某种方法,如果不符合您的需求,则尝试其他方法(更复杂)。


4

我想添加一些有关快速探索的随机树或RRT的信息。这个基本想法在整个互联网上都有很好的讨论,但是从Wikipedia页面上的链接以及Kuffner和LaValle关于该主题的原始论文开始可能是安全的。

RRTS的最重要的特征是,它们可以处理的实值空间非常高维无窒息。它们可以处理动态问题,不是最优的,而是概率完整的(如果计算时间达到无穷大,则保证可以成功),并且能够处理移动目标。有一些扩展使它们可以在非静态空间中工作,其中最好的扩展是我在下面链接的Multipartite RRT工作。


0

称为距离预言的数据结构可解决此类问题。但是,大多数研究结果仅用于静态图。

如果图形是网格(因此是平面的),则存在一些动态数据结构(不清楚常量对于所涉及的应用程序是否足够小):

确切的最短路径:

Satish Rao的Jittat Fakcharoenphol:平面图,负重量边,最短路径和接近线性时间。J.计算机 Syst。科学 72(5):868-889(2006)

近似最短路径:

Philip N. Klein,Sairam Subramanian:平面图中最短路径的全动态逼近方案。Algorithmica 22(3):235-249(1998)

Ittai Abraham,Shiri Chechik,Cyril Gavoille:通过禁止设置的距离标签对平面图进行全动态的近似距离预言。STOC 2012:1199-1218


抱歉,但是如果它们仅适用于静态图,那么“它们处理此类问题”是什么意思?所问的问题特别是关于非静态图的。
BlueRaja-Danny Pflughoeft13年

让我改变重点: 大多数结果仅用于静态图。存在一些动态数据结构。然后是这些动态数据结构的列表。
Christian Sommer 2013年

0

在学校里,我涉足了蚁群优化。在某些文本中,它被吹捧为用于不断变化的图形,路由网络等的解决方案。它不是经过设计的解决方案,而是对蚂蚁如何通过传播信息素来标记障碍路径进行适应的标记。我不知道它是否可以解决您的问题,但是我认为这是一个有趣的观点。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.