如何测试我的井字游戏A.I.是否完美?

我制作了一个井字游戏的A.I. 对于每一个棋盘状态,我的A.I.会返回一个确切的位置来移动。(即使有多个正确的位置,它每次都会选择同一个位置,而不是随机选择)

我还制作了一个函数来循环遍历所有可能的A.I.的移动方式。

这是一个递归函数,它让A.I.在给定的棋盘上移动,然后让另一个玩家进行所有可能的移动,并在每个可能的移动中调用自身的递归函数,生成新的棋盘。

我对A.I.先手和对方先手的情况都进行了这样的操作,并将结果相加。最终得到418种可能的胜利,115种可能的平局,以及0种可能的失败。

但现在我的问题是,如何最大化胜利的数量?我需要将这个统计数据与某些东西进行比较,但我不知道该与什么进行比较。


回答:

你读过维基百科上的文章了吗? 链接

终止位置的数量

仅考虑棋盘状态,并考虑棋盘对称性(即旋转和反射)后,只有138个终止棋盘位置。假设X每次都先走:

  • 91个独特的位置由(X)赢得
  • 44个独特的位置由(O)赢得
  • 3个独特的位置为平局

可能游戏的数量

不考虑对称性,可能游戏的数量可以通过手动计算得出,具体公式可以得出255,168种可能的游戏。假设X每次都先走:

  • 131,184个完成的游戏由(X)赢得
  • 77,904个完成的游戏由(O)赢得
  • 46,080个完成的游戏为平局

你可以从第一段生成138个终止棋盘位置

或者

你可以在随机字段上运行足够的测试,并将你的结果与此处的统计数据进行比较 链接

5步内获胜    1440     0.6%
6步内获胜    5328     2.1%
7步内获胜    47952   18.8%
8步内获胜    72576   28.4%
9步内获胜    81792   32.1%
平局          46080   18.1%
总计          255168 100.0%

Related Posts

L1-L2正则化的不同系数

我想对网络的权重同时应用L1和L2正则化。然而,我找不…

使用scikit-learn的无监督方法将列表分类成不同组别,有没有办法?

我有一系列实例,每个实例都有一份列表,代表它所遵循的不…

f1_score metric in lightgbm

我想使用自定义指标f1_score来训练一个lgb模型…

通过相关系数矩阵进行特征选择

我在测试不同的算法时,如逻辑回归、高斯朴素贝叶斯、随机…

可以将机器学习库用于流式输入和输出吗?

已关闭。此问题需要更加聚焦。目前不接受回答。 想要改进…

在TensorFlow中,queue.dequeue_up_to()方法的用途是什么?

我对这个方法感到非常困惑,特别是当我发现这个令人费解的…

发表回复

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