我制作了一个Tic Tac Toe(板子尺寸为10x10)的机器人。它的演奏要比普通人好。
电路板尺寸为10x10,而不是3x3。必须连续放置5个O或X,而不是3个。
因此,我使用Minimax +评估板功能+有限的可用动作使该机器人提高了性能。
让我解释一下我的代码。
首先,我单独使用Minimax算法,但意识到了这一点。第一步之后,大约有100种可能的状态,第二步之后是100 * 99,第三步之后是100 * 99 * 98。
可能无法计算所有可能的电路板状态。
因此,我所做的就是创建了评估板功能。
我为董事会评估功能设定了一些规则,无论Bot玩了多少场游戏,它都是一样的。
但是我想做一个评估板功能,以改善自身或给我一些数据,以便我可以用来改善它。我在井字游戏中想不出任何办法,你们可以吗?
谢谢
答案 0 :(得分:2)
一种执行此操作的方法是生成有关板状态的统计信息。使用有效的棋盘状态创建1:1的棋盘哈希函数,并填充所采取动作的字典。记录每个棋盘状态下每个棋局的赢/输,并根据给定选项的赢率对棋局选择施加权重。
这是内存密集型的,但是您可以使用在板上旋转和镜像不变的哈希值将其提高8倍(通常,您可以对当前状态的所有8次旋转和翻转进行哈希处理,并始终返回最小值,例如;可能会有更少的蛮力选择。)
另一个改进是,即使在保证您会赢/输的任何游戏中,都不会在前瞻窗口中记录其移动,尽管这是一个较小的百分比改进。