三个AI新手问题:
对于第一个问题让我们以Manhattan distance
启发式为基础,并且调用是h(x)。现在为什么A *应该找到一个非最优路径,新的启发式算法是8 * h(x)+ 5? (随机数)。据我所知,在A *算法中,将根据函数f(x) = g(x) + h(x)
做出决定,因此,如果我按比例放大h,为什么最大\最小值会发生变化?
我读过this article,在那里他们谈到了乘法制动的一个小因素,这在某种程度上适用于我的理论,但他们坚持认为这个因素应该很小。所以我不知道该怎么想。
对于第二个问题我尝试了解决pacman游戏的链接中的技巧。曼哈顿距离启发式的任何变化都会导致更多节点扩展。我甚至“发明了”一种新的加权方案,我更喜欢外壳上的路径 - 同样的事情。后来我试图占用所有功能的最大值(也应该是可接受的),但仍然表现不佳。我错过了什么?
第三个问题没有补充。如上所述 - 我找不到比曼哈顿距离更好的东西。
答案 0 :(得分:1)
1)简洁的答案是,如果您的启发式不可接受,您将(可能)获得非最佳结果。我想你知道这一点。对于直觉,回想一下可接受启发式的定义:它是一种启发式,它永远不会比现实更悲观。 (我们通常说,“它总是乐观的”,因为如果你有一个既不乐观又不悲观的启发式,你基本上已经得到了你的答案。)如果你的启发式在某些地方是悲观的,那么它最终会避免最佳选择。
至于根据你的问题按比例放大和缩小启发式算法,请记住,你只是扩展公式的启发式部分,而不是公式的沉没成本部分。如果你可以完全相同地缩放它们,你就看不出差异,但你不能总是这样做。即使在你的例子中,你添加的添加剂也会破坏它。
2-3)我不清楚“解决”pacman是什么意思。如果它比找到最简单的路径来吃空网格中的所有点更复杂,我认为你已经远远超出了A *的范围。即便如此,A *也不会成为我的首选工具。
答案 1 :(得分:0)
8*h(x) + 5
单调增加所有估算成本,因此虽然所有估算路径的成本都会更大,但仍然会以相同的方式排序(例如,路径A
曾经是长度5和路径B
长度3,使用启发式B(成本29)仍将估计比A(成本45)短。)答案 2 :(得分:0)
问题3:
如果你实际上正在制作一个Pac Man游戏,你必须找到每个的'幽灵'的路径,你也可以使用Dijkstra's Algorithm,使用Pac Man的位置目标并一次计算每个鬼魂的最佳路径。而且由于每个“边缘”(从一个单元格到另一个单元格)的成本总是相同的,所以您也可以使用简单的广度优先搜索。最后,您可能还会看一下Collaborative Diffusion以不同的方式发送每个幽灵。
答案 3 :(得分:0)
通常,如果您的启发式功能不被允许,您可以在更短的时间内找到“非最佳”解决方案(是一种“问题放松”)。如果您对解决方案“最优性”没有严格限制,则可以使用不允许的启发式功能。 (例如,在游戏AI中,你想要一个快速解决方案而不是最佳解决方案。)
现在是Pac-Man AI的答案。 在最初的Pac-Man AI中没有A * ,没有复杂的路径规划,没有网格空间导航。书Artificial Intelligence for Games by Iann Millington中有一个简单的吃豆人工智能算法非常简单但非常有效。
停止。就是这样。
对于半随机,我的意思是有两种情况:
x/10
次选择随机方向。(10-x)/x
次选择沿玩家方向的路线(通过玩家和鬼位置之间的简单偏移计算)。您可以为每个幽灵选择不同的x,以便为每个幽灵实现不同的“个性”。
如果您仍想使用A *到Pac-Man AI,我的建议是仅表示连接点(每个节点都是连接点的图形)而不是所有方形网格世界。走廊里的广场基本没用。 ;)