Machine learning 如何制作一款自我完善的Tic Tac Toe Mega(10x10板)游戏

Machine learning 如何制作一款自我完善的Tic Tac Toe Mega(10x10板)游戏,machine-learning,artificial-intelligence,tic-tac-toe,minimax,alpha-beta-pruning,Machine Learning,Artificial Intelligence,Tic Tac Toe,Minimax,Alpha Beta Pruning,我做了一个Tic-Tac-Toe(10x10板大小)机器人。它比一般人演奏得好 电路板尺寸为10x10,而不是3x3。必须连续5个O或X才能获胜,而不是3个 因此,我使用Minimax+董事会评估功能+有限的可用移动来提高性能 让我解释一下我的代码 首先,我单独使用了极大极小算法,但意识到了这一点。第一步后有大约100种可能的状态,第二步后有100*99,第三步后有100*99*98 而且可能不可能统计所有可能的董事会成员国 所以,我所做的是创建了一个董事会评估功能 我为board评估功能设置了

我做了一个Tic-Tac-Toe(10x10板大小)机器人。它比一般人演奏得好

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

因此,我使用Minimax+董事会评估功能+有限的可用移动来提高性能

让我解释一下我的代码

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

而且可能不可能统计所有可能的董事会成员国

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

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

但我想做一个董事会评估函数,它可以自我改进,或者给我一些数据,我可以用它来改进它。我想不出有什么办法,你们可以吗


谢谢

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

这是内存密集型的,但您可以通过使用板上旋转和镜像不变的散列将其提高8倍(简单地说,您可以对当前状态的所有8次旋转和翻转进行散列,并始终返回最小值,例如,可能有一个较少的暴力选项)


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

欢迎使用StackOverflow。请按照您创建此帐户时的建议,阅读并遵循帮助文档中的发布指南,在这里申请。StackOverflow不是一个设计、编码、研究或教程服务。如果你在谷歌上搜索短语“Go Moku”,你会找到比我们在这里的答案更好的资源来解释它。我不知道到底有多少个板状态,但至少有10^20多个板状态,以及有多少个板状态移动,我可以存储在max吗?10万?如果我使用一个我不想使用的数据库,那么我仍然可以存储有限的可用板状态,也许10亿?记住,我需要在几秒钟内采取行动,否则,玩起来会很无聊。你所说的“哈希函数”是什么意思,对不起,但我是新手。很抱歉反应太晚了。哈希函数是为任何电路板状态返回唯一值的任何函数。它提供了通过州词典的快速查找。就可伸缩性而言,电路板状态概率分布几乎肯定是帕累托分布或类似分布,因此90%的增益可用于学习电路板空间的一小部分。试着描述最频繁的位置(可能是棋盘占满的百分比?我想大多数游戏都会在40%之前结束),并且只存储符合这些标准的统计数据。