更好的游戏启发式函数(AI 极小极大算法)

我用Java编写了一个游戏。这个游戏很简单(请参考下图)。游戏中有4只鸟和1只幼虫。这是2人游戏(AI对人)。

enter image description here

  • 幼虫可以向前和向后斜向移动
  • 鸟只能向前斜向移动
  • 如果幼虫能到达第1行(围栏),幼虫获胜
  • 如果鸟没有可移动的步数,幼虫也获胜
  • 鸟不能“吃掉”幼虫
  • 如果幼虫没有可移动的步数(完全无法移动),鸟获胜

enter image description here

游戏开始时,幼虫先移动,然后一只鸟可以移动(任意一只),然后是幼虫,依此类推…


我已经实现了极小极大算法(Alpha-Beta剪枝),并使用了以下evaluate()函数(启发式函数)。

让我们为棋盘上的每个方格赋予以下数字。

enter image description here

因此,我们的评估函数将是

h(n) = 幼虫位置的价值 – 鸟1位置的价值 – 鸟2位置的价值 – 鸟3位置的价值 – 鸟4位置的价值

幼虫会试图最大化启发式值,而鸟会试图最小化它

示例:

enter image description here

然而,这是一个简单且幼稚的启发式函数。它没有以智能的方式行动。我是AI的初学者,我想知道我可以做些什么来改进这个启发式函数?

什么样的启发式函数会更好、更有信息量?


回答:

考虑这样做:

最大化:幼虫

最小化:鸟

H(t)=max_distance(larva,line_8)+Σmin_distance(bird_n,larva)

或者

H(t)=Σmin_distance(bird_n,larva) - min_distance(larva,line_1)

max_distance(larva,line_8):反映幼虫更接近第1行的条件。

Σmin_distance(bird_n,larva):反映鸟更接近幼虫(以阻挡它)的条件。

我相信还有很多其他因素可以考虑,例如,最接近幼虫的鸟应该优先选择移动,但上述函数的方向是有意义的,许多细节可以很容易地进行改进。

Related Posts

使用LSTM在Python中预测未来值

这段代码可以预测指定股票的当前日期之前的值,但不能预测…

如何在gensim的word2vec模型中查找双词组的相似性

我有一个word2vec模型,假设我使用的是googl…

dask_xgboost.predict 可以工作但无法显示 – 数据必须是一维的

我试图使用 XGBoost 创建模型。 看起来我成功地…

ML Tuning – Cross Validation in Spark

我在https://spark.apache.org/…

如何在React JS中使用fetch从REST API获取预测

我正在开发一个应用程序,其中Flask REST AP…

如何分析ML.NET中多类分类预测得分数组?

我在ML.NET中创建了一个多类分类项目。该项目可以对…

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注