我在一个简单的Winforms应用程序中实现了A * -pathfinding。在哪里也可以定义障碍物 格 </跨度> 所以代理可以在它们周围导航。
问题是我的代理人无法预见的路径; } }
}
} }
这是代码 计算 </跨度> G和H值:
public int calcG(Vector start,Cell cell) { int distance锟
A *不是找到最佳路径的算法 - 如果最佳路径是你必须使用蛮力方法之后。 A *(基于启发式函数的质量)找到接近最优的路径。
Dijkstra算法 有一个类似的问题,虽然他是基于权重。
它可能有助于Peek()的位置,然后评估它从所有位置的Peek()。Peek()移动的能力。与可导航路径相比,任何不能使用的位置都可能具有极高的权重。
但是这些算法可以完全使用递归来解决,然后从那里选择最佳路线。
(我也注意到你在视频中对角线移动了,这实际上是一个有效的移动,因为直接向上移动将具有2个方格的相同净距离)。
如果正确实现A *生成非最佳路径,我认为你有一个不可接受的启发式。允许的启发式方法绝不能过高估计到目标的剩余距离。如果是这样,您在视频中显示的内容就会发生。