0

我用 JavaFX 制作了井字游戏和九人莫里斯游戏,并为它们实现了 AI。对于九人莫里斯,我还没有实施删除磨机,所以它现在更像是复杂的井字游戏。我使用了带有 alpha-beta 修剪的 minimax 算法,虽然 AI 的动作相当不错,但计算九人莫里斯的动作却非常缓慢。如果我让 AI 玩整个游戏,需要几分钟。

对于评估函数,我一直在使用评估船上每一行的函数,其中行值为:

100 为 3 合一,

10 个 2 合一,

1 代表 1 列,

对手单元格为负 (-100, -10, -1),

否则为 0。

Minimax 算法或多或少是相同的,但对于九人莫里斯,有 16 行要评估,而井字游戏中有 8 行,但对于九人莫里斯,人工智能要慢得多。

如何进一步提高 AI 的性能?

我一直在研究这个问题,我发现了使用神经网络来关注极小极大搜索用神经网络替换评估函数的想法。这些解决方案能否提高我的 AI 性能?

4

1 回答 1

3

有很多方法可以在不涉及神经网络的情况下通过 alpha beta 剪枝来改进 minimax。此外,在像九人莫里斯这样分支因子相对较低的游戏中,神经网络可能对你的 AI 造成的伤害多于帮助它。相反,我会研究不同的方法。一个有用的选择是使用具有迭代深化的转置表。这种技术对于这种类型的游戏非常有用。这是关于转置表的文章的链接: https ://en.wikipedia.org/wiki/Transposition_table

如果您有涉及实现的更具体的问题,国际象棋编程 wiki 有关于该主题的写得很好的文章。虽然与国际象棋有关,但它应该很容易应用于任何游戏。

https://chessprogramming.wikispaces.com/Transposition+Table

我在国际象棋和连接 4 中都使用了这种技术,并且发现搜索时间显着减少。如果您想了解有关如何实施此技术的更多具体信息,请发表评论。

于 2015-10-26T01:26:43.193 回答