我已经用JavaFX制作了TicTacToe和Nine Men's Morris的游戏,并为每个游戏实现了AI。对于Nine Men's Morris,我还没有实现移除工厂,所以现在它更像是复杂的TicTacToe。我已经使用了带有alpha-beta剪枝的极小极大算法,虽然AI做了相当不错的移动,但Nine Men's Morris的计算移动非常慢。如果我让AI玩整个游戏,需要几分钟。
对于评估函数,我一直在使用评估板上每条线路的函数,其中线路值是:
三合一的话是100,
10对于2合1线路,
1行1合1,
负(-100,-10,-1)为对方细胞,
否则为0。
Minimax算法大致相同,但对于九人莫里斯来说,有16行需要评估,而TicTacToe中只有8行,而人工智能对于九人莫里斯来说要慢得多。
如何进一步提高我的AI性能?
我一直在研究这个问题,我发现了将神经网络用于focus minimax search或replace evaluation function with neural network的想法。这些解决方案能提高我的AI性能吗?
发布于 2015-10-26 09:26:43
有许多方法可以在不涉及神经网络的情况下使用alpha beta剪枝来改进极大极小。此外,在像九人莫里斯这样分支因子相对较低的游戏中,神经网络可能会对你的人工智能造成更大的伤害而不是帮助。相反,我会研究不同的方法。一个有用的选择是使用带有迭代加深的转置表。这种技术对于这种类型的游戏非常有用。下面是一篇关于转换表的文章的链接:https://en.wikipedia.org/wiki/Transposition_table
如果你有更多涉及实现的具体问题,国际象棋编程维基有关于这个主题的写得很好的文章。虽然与国际象棋有关,但它应该很容易应用于任何游戏。
https://chessprogramming.wikispaces.com/Transposition+Table
我在国际象棋和Connect4中都使用了这种技术,并看到了搜索时间的惊人减少。如果你想要更多关于如何实现这项技术的具体信息,请发表评论。
https://stackoverflow.com/questions/33331253
复制相似问题