algorithm - 如何向 A* 启发式添加更多参数而不仅仅是距离?

标签 algorithm search artificial-intelligence a-star

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

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

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

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

有什么想法可以实现这一目标吗?

最佳答案

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

关于algorithm - 如何向 A* 启发式添加更多参数而不仅仅是距离?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14668520/

相关文章:

statistics - 受限玻尔兹曼机 - 重建

python - 即使使用显式 cuda() 调用,pytorch 实例张量也不会移动到 GPU

php - 具有数组结构的字符串到数组

java - Tarjan 算法的这种实现有什么问题?

c - 插值搜索程序?

security - 我可以限制 Easy Search 仅返回已发布的数据吗?

java - 当我在 SearchView 中输入内容时,列表的大小没有增加?

java - 在 Java 中搜索子字符串的最快方法是什么?

iphone - 我们如何对 Sequence UIButtons 执行操作?

machine-learning - 激活函数的导数与偏导数。损失函数