Artificial intelligence 更好的游戏启发式函数(AI Minimax)

Artificial intelligence 更好的游戏启发式函数(AI Minimax),artificial-intelligence,heuristics,minimax,alpha-beta-pruning,evaluation-function,Artificial Intelligence,Heuristics,Minimax,Alpha Beta Pruning,Evaluation Function,有一个我用java编写的游戏。游戏很简单(参考下图)。有4只鸟和1只幼虫。这是一个2人游戏(人工智能对人类) 幼虫可以对角向前和对角向后移动 鸟类只能沿对角线向前移动 如果幼虫能到达1号线(栅栏),它将获胜 如果小鸟没有剩余的动作,幼虫也会获胜 鸟类不能“吃”幼虫 如果幼虫没有移动,鸟类获胜(完全不能移动) 当游戏开始,幼虫开始,然后一只鸟可以移动(任何一只),然后幼虫,等等 我已经实现了一个MiniMax(Alpha-Beta剪枝),我正在使用下面的evaluate()函数(启发式函

有一个我用java编写的游戏。游戏很简单(参考下图)。有4只鸟和1只幼虫。这是一个2人游戏(人工智能对人类)

  • 幼虫可以对角向前和对角向后移动
  • 鸟类只能沿对角线向前移动
  • 如果幼虫能到达1号线(栅栏),它将获胜
  • 如果小鸟没有剩余的动作,幼虫也会获胜
  • 鸟类不能“吃”幼虫
  • 如果幼虫没有移动,鸟类获胜(完全不能移动)

当游戏开始,幼虫开始,然后一只鸟可以移动(任何一只),然后幼虫,等等


我已经实现了一个MiniMax(Alpha-Beta剪枝),我正在使用下面的evaluate()函数(启发式函数)

让我们给黑板上的每一个方块打以下数字

因此,我们的评价职能将是:

h(n)=幼虫位置值-鸟位置值1-鸟位置值2-鸟位置值3-鸟位置值4

幼虫会尝试最大化启发值,而鸟类会尝试最小化启发值

例如:

然而,这是一个简单而天真的启发。它的行为并不明智。我是人工智能的初学者,我想知道我能做些什么来改进这个启发式函数

什么是好的/明智的启发式方法?

这个怎么样:

最大值:幼虫

最低限额:禽鸟

H(t)=最大距离(幼虫,线8)+∑最小距离(鸟类,幼虫)

H(t)=∑最小距离(鸟n,幼虫)-最小距离(幼虫,线1)

最大距离(幼虫,第8行):反映幼虫靠近第1行的情况

最小距离(鸟类,幼虫):反映鸟类靠近幼虫的情况(阻止幼虫)


我相信还有很多事情可以考虑,比如说,离幼虫最近的鸟应该优先选择移动,但是上面功能的方向是有意义的,许多细节可以很容易地加以改进。

你可以考虑这样一个事实,即当幼虫在板的侧面时,鸟类比幼虫具有位置优势,因此,如果“幼虫”是最大值,则将电路板的侧瓷砖值更改为较小值。

有一种简单的方法可以显著提高启发式。在当前的启发式中,正方形A1的值比正方形A8的值小8。这使得鸟类倾向于向游戏板的左侧移动,因为向左移动总是高于向右移动。这不准确。第1行上的所有正方形应具有相同的值。因此,在第1行a 1、第2行a 2中分配所有方块,以此类推。这样,鸟类和幼虫就不会倾向于向左移动,而是可以专注于做出一个好的移动。

您给出的评估函数没有意义(有点…).考虑鸟类与幼虫的相对位置如何?@你是指欧几里得距离吗?在这种情况下,幼虫会尽量远离鸟类,而不会试图到达栅栏(这是一个优先事项)不,而是像曼哈顿距离一样呈对角线形式。关于曼哈顿距离:你说“一只鸟可以移动”-它必须移动吗?或者“通过”对任何一方都是一个选项?这确实是一个很好的启发。然而,这个游戏可以作为幼虫(AI)对鸟类(人类)和鸟类(AI)对幼虫(人类)的游戏。这个评估函数是否考虑了游戏中鸟类的一面?(例如,如果鸟类扮演AI)同样,在这种情况下,评估函数将随着幼虫接近1号线而降低。。。幼虫正在努力使价值最大化。。或者我遗漏了什么?我想是的,在最大最小博弈树中,一个必须最大化分数,另一个必须最小化分数。考虑到鸟类的获胜规则,在你的案例中:如果幼虫没有移动,鸟类获胜,鸟类必须试图通过靠近幼虫来阻挡幼虫。只需将
最小距离(幼虫,线1)
更改为
最大距离(幼虫,线8)
-1*最小距离(幼虫,线1)
即可满足最大要求。通过
最大距离(幼虫,第8行)
,你的确切意思是什么。假设幼虫在D2,那么最大距离是6,对吗?我的意思是你只要数一数幼虫离第8行有多远(垂直方向)?我试过了。效果更好。谢谢。但它没有那么聪明…我提出的启发式方法非常幼稚。。