Artificial intelligence 对启发式函数进行加权*

Artificial intelligence 对启发式函数进行加权*,artificial-intelligence,heuristics,Artificial Intelligence,Heuristics,三个AI新手问题: 为什么a*要找到一条最优路径,启发式方法是可以接受的 如果路上有障碍物,平局制动技术有什么好处 什么算法适合在有障碍物的网格上查找路径?(像吃豆人一样) 对于第一个问题让我们以曼哈顿距离启发式为基础,调用为h(x)。现在,为什么A*要用一个新的启发式方法,即8*h(x)+5,来找到一条非最优路径?(随机数)。据我所知,在A*算法中,决策将根据函数f(x)=g(x)+h(x)进行。因此,如果我放大h,为什么最大值\最小值会发生变化 我读过,在那里他们谈到用一个小的因数乘以系紧制

三个AI新手问题:

  • 为什么a*要找到一条最优路径,启发式方法是可以接受的
  • 如果路上有障碍物,平局制动技术有什么好处
  • 什么算法适合在有障碍物的网格上查找路径?(像吃豆人一样)
  • 对于第一个问题让我们以
    曼哈顿距离
    启发式为基础,调用为h(x)。现在,为什么A*要用一个新的启发式方法,即8*h(x)+5,来找到一条非最优路径?(随机数)。据我所知,在A*算法中,决策将根据函数
    f(x)=g(x)+h(x)
    进行。因此,如果我放大h,为什么最大值\最小值会发生变化

    我读过,在那里他们谈到用一个小的因数乘以系紧制动,这在某种程度上符合我的理论,但他们坚持认为这个因数应该是小的。所以我不知道该怎么想

    对于第二个问题我尝试了链接中解决pacman游戏的技巧。曼哈顿距离启发式的任何变化都会导致更多节点扩展。我甚至“发明”了一种新的加权方案,我更喜欢外壳上的路径——同样的事情。后来,我尝试使用所有函数的最大值(这也应该是允许的),但仍然得到了糟糕的性能。我错过了什么

    第三个问题没有补充。如前所述,我找不到比曼哈顿距离更好的了

  • 如果启发式不可接受,那么您的启发式将(有时)估计达到目标的成本高于可能的最低成本。因此,最终的路径可能是非最优的,因为它可能没有探索到由于“坏”听力障碍而显得过于昂贵的路径。在您的案例中,使用
    8*h(x)+5
    会单调增加所有估计成本,因此虽然所有估计路径的成本都会更大,但它们的排序方式仍然相同(例如,使用启发式B,路径
    A
    用于长度5,路径
    B
    长度3)(成本29)预计仍将比A(成本45)短
  • 如图所示,曼哈顿距离+第一个提到的平局断路器对障碍物效果良好。您是否将估计的最大路径长度保留为1000,或者对于Pac Man的实现,该值是否应该更高
  • 问题3:


    如果你真的在做一个吃豆人游戏,你必须找到每个“幽灵”的路径,你也可以使用,使用吃豆人的位置作为目标,一次计算每个幽灵的最佳路径。由于每个“边缘”(从一个单元格到下一个单元格)的成本始终相同,因此您也可以使用简单的广度优先搜索。最后,您还可以查看如何以不同的方式发送每个重影。

    通常,如果您的启发式函数不可接受,您可以在更短的时间内找到“非最优”解决方案(这是一种“问题松弛”)。如果你对解“最优性”没有严格的约束,你可以使用不可容许的启发式函数。(例如,在游戏AI中,您需要的是快速解决方案,而不是最佳解决方案)

    现在是吃豆人AI的答案在原始的Pac Man AI中,没有A*,没有复杂的路径规划,没有网格空间导航。书中有一个简单的Pac Man AI算法,非常简单但非常有效

  • 幽灵沿直线移动,直到到达一个连接点
  • 在一个路口,他们半随机地选择了下一个移动的方向
  • 停下来。就这些

    对于半随机,我的意思是有两种情况:

  • x/10
    它选择一个随机方向的次数
  • (10-x)/x
    它选择玩家方向的路线的次数(通过玩家和鬼位置之间的简单偏移计算)
  • 您可以为每个鬼魂选择不同的x,以实现每个鬼魂的不同“个性”

    如果你仍然想用*来表示Pac-Man-AI,我的建议是只表示连接点(一个每个节点都是连接点的图形),而不是所有的正方形网格世界。走廊里的广场基本上是无用的

    1)简明扼要的回答是,如果你的启发式不可接受,你(可能)会得到一个非最优结果。我想你知道这一点。对于直觉,回想一下可接受的启发的定义:它是一种从未比现实更悲观的启发。(我们通常说,“它总是乐观的”,因为如果你有一个既不乐观也不悲观的启发式,你基本上已经有了答案。)如果你的启发式在某些地方是悲观的,那么它最终会避免最佳选择

    至于根据您的问题放大和缩小启发式,请记住,您只是放大公式中的启发式部分,而不是公式中的沉没成本部分。如果你能把它们完全放大,你看不到区别,但你不能总是这样做。即使在你的例子中,你加上去的添加剂也会破坏它


    2-3)我不清楚你所说的“解决”吃豆人是什么意思。如果有什么比找到一条最短的路径吃掉一个空网格中的所有点更复杂的话,我认为你已经远远超出了a*的范围。即使这样,A*也不是我选择的工具。

    我的家庭作业是为《吃豆人》制作人工智能,但我必须在几个小时内提交,我不确定我是否能尽快得到答案。。所以我有一个真正的兴趣,但我会根据答案做一个快速测试,然后离开。a*是两个重叠的启发式。Djikstra喜欢靠近原点的节点,Best First喜欢靠近目标的节点。A*就像Djikstra(向各个方向扩展),直到遇到障碍,然后开始向目标直线扩展。如果将距离目标的成本乘以一倍,A*开始关注快速解决方案。两秒钟后,我的A*tr