Javafx 优化极大极小算法

Javafx 优化极大极小算法,javafx,neural-network,artificial-intelligence,minimax,game-theory,Javafx,Neural Network,Artificial Intelligence,Minimax,Game Theory,我用TictaToe和JavaFX制作了游戏,并为每一款游戏实现了AI。对于Nine Men's Morris,我还没有实施移除磨坊,所以现在更像是复杂的Tictatcoe。我使用了带有alpha-beta剪枝的minimax算法,虽然人工智能做了相当不错的移动,但九人莫里斯的移动计算速度非常慢。如果我让AI玩整个游戏,需要几分钟 对于评估函数,我一直在使用评估板上每一行的函数,其中行值为: 3-in-a-line为100 10对于2-in-a-line 1为一列中的1 负(-100,-10,-

我用TictaToe和JavaFX制作了游戏,并为每一款游戏实现了AI。对于Nine Men's Morris,我还没有实施移除磨坊,所以现在更像是复杂的Tictatcoe。我使用了带有alpha-beta剪枝的minimax算法,虽然人工智能做了相当不错的移动,但九人莫里斯的移动计算速度非常慢。如果我让AI玩整个游戏,需要几分钟

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

3-in-a-line为100

10对于2-in-a-line

1为一列中的1

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

否则为0

Minimax算法或多或少是相同的,但对于九人莫里斯来说,有16行需要评估,而Tictaoe中只有8行需要评估,然而对于九人莫里斯来说,人工智能要慢得多

如何进一步提高AI的性能


我一直在做这方面的研究,我发现了一个想法,就是用神经网络来预测。这些解决方案能否提高我的AI的性能

有很多方法可以在不涉及神经网络的情况下通过α-β剪枝来改进minimax。此外,在像“九人莫里斯”这样分支因子相对较低的游戏中,神经网络对AI的伤害可能大于帮助。相反,我会研究不同的方法。 一个有用的选择是使用具有迭代深化的换位表。这种技术对于这种类型的游戏非常有用。下面是一篇关于换位表的文章的链接:

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


我在chess和connect 4中都使用了这种技术,并且发现搜索时间大大缩短。如果您想了解有关如何实施此技术的更多具体信息,请发表评论。

谢谢您提供的信息,我一定会尝试实施您的想法。如果我还可以进一步问一下,有没有迭代深化换位表的工作示例,我可以看一下?我不知道有任何示例专门针对九人莫里斯。然而,我发现这个关于这个主题的国际象棋教程非常有用。它通过编程完成整个国际象棋引擎,包括转置表和迭代深化上的视频。它也是开源的。下面是一个类似的java教程: