【问题标题】:How to add more parameters to A* heuristic than only distance?如何向 A* 启发式添加更多参数,而不仅仅是距离?
【发布时间】:2013-01-18 01:51:00
【问题描述】:

对于小型 2D 游戏中的寻路,我使用 A* 算法,现在基于简单的欧几里德距离启发式算法。我的游戏世界被表示为一个单元格,要么被障碍物占据,要么没有。必须使用 A* 计算路径的角色可以向任何方向移动(如果没有被阻挡),而不仅仅是 N/E/S/W。

好的,这样基本上可以正常工作。现在我需要向 A* 启发式函数添加另一个参数,即与每个网格单元相关的成本值。这个成本值越高,我们的角色就越应该尽量避开那个单元格。

但是,我不能将启发式函数更改为仅使用每个网格单元的这个成本值,因为单元到 A* 目标位置的距离仍然很重要。角色应尽量避开任何高成本单元,但同时也不能离目标位置太远。因此,我需要在单元格的距离与其成本值之间进行某种“权衡”。

理想情况下,我想找到一个解决方案,让我可以轻松调整/优化单元格距离与其成本值之间的这种关系,以便我可以微调启发式方法。

任何想法如何实现这一目标?

【问题讨论】:

  • 似乎您应该能够将成本添加到距离中。如果您需要更多权重,您可以将成本平方,或将其乘以一个常数因子。您可能还需要考虑将成本乘以距离。这假设成本 > 1.0。
  • @MC:谢谢,您的评论对我帮助很大。没想到会这么简单:)

标签: algorithm search artificial-intelligence a-star


【解决方案1】:

您需要使用权重(0 到 1 之间的值),假设 w 是距离权重,1-w 是成本权重,因此您的新 huristic 将类似于: H= w*距离+(1-w)*成本

现在您需要根据您的领域优化 W - 积极地。

【讨论】:

    【解决方案2】:

    当您使用任何最短路径算法(A* 或 Dijkstrs)时,您需要为每个节点设置一个成本值。
    因此,您必须认为自己是如何将距离(您的单元格)与障碍成本相结合的公式。
    您可以创建一个 cost() 函数,它采用长度成本加上障碍成本。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-09-22
      • 2013-02-15
      • 1970-01-01
      • 2020-06-17
      • 2018-08-23
      • 1970-01-01
      • 1970-01-01
      • 2015-01-30
      相关资源
      最近更新 更多