我用java编写了一个游戏。游戏很简单(参考下图)。有4只鸟和1只幼虫。这是一个 2 人游戏(AI 与人类)。
- 幼虫可以斜向前和斜向后移动
- 鸟类只能沿对角线向前移动
- 如果能到达 1 号线(栅栏),则幼虫获胜
- 如果鸟儿没有动作,幼虫也会获胜
- 鸟类不能“吃掉”幼虫。
- 如果幼虫没有向左移动(根本无法移动),鸟类获胜
当游戏开始时,幼虫开始,然后一只鸟可以移动(任何一只),然后是幼虫,等等......
我已经实现了 MiniMax(Alpha Beta Pruning)并且我正在使用以下评估()函数(启发式函数)。
让我们为棋盘上的每个方格给出以下数字。
因此,我们的评价函数为
h(n) = 幼虫位置值 - 鸟 1 位置值 - 鸟 2 位置值 - 鸟 3 位置值 - 鸟 4 位置值
幼虫会尝试最大化启发式价值,而鸟类会尝试最小化它
例子:
然而,这是一种简单而幼稚的启发式方法。它不会以聪明的方式行事。我是 AI 的初学者,我想知道我可以做些什么来改进这个启发式函数?
什么是好的/知情的启发式?