首页 > 解决方案 > 如何制作一个自我提升的井​​字游戏(10x10 棋盘)游戏

问题描述

我制作了一个井字游戏(10x10 棋盘大小)机器人。它比普通人玩得更好。

电路板尺寸为 10x10 而不是 3x3。必须放置连续 5 个 O 或 X 才能获胜,而不是 3。

因此,我使用 Minimax + Board Evaluation Function + Limited Available Moves 制作了该机器人以提高性能。

让我解释一下我的代码。

首先,我单独使用了 Minimax 算法,但我意识到了这一点。第一步后大约有 100 种可能的状态,第二步后有 100*99,第三步后有 100*99*98。

而且可能无法计算所有可能的董事会状态。

所以,我所做的是创建了一个董事会评估功能。

我为棋盘评估功能设置了一些规则,无论Bot玩多少游戏都是一样的。

但我想制作一个板评估功能,它可以自我改进或给我一些数据,我可以用它来改进它。我想不出井字游戏的任何方法,你们可以吗?

谢谢

标签: machine-learningartificial-intelligencetic-tac-toeminimaxalpha-beta-pruning

解决方案


这样做的一种方法是生成有关船上状态的统计数据。创建一个具有有效棋盘状态的 1:1 棋盘散列函数,并填充所采取的动作字典。记录每个棋盘状态下每个动作的赢/输,并根据给定选项的赢率对移动选择应用权重。

这是内存密集型的,但您可以通过使用在板旋转和镜像上不变的散列将其提高 8 倍(通常,您可以散列当前状态的所有 8 个旋转和翻转,并始终返回最小值,例如; 可能有一个不那么蛮力的选项。)

另一个改进是不记录在预测窗口中保证赢/输的任何游戏的移动,尽管这是一个较小的百分比改进。


推荐阅读