如何制作一款自我提升的 Tic Tac Toe Mega(10x10 棋盘)游戏
How to make a Self-Improving Tic Tac Toe Mega (10x10 board) game
我制作了一个井字游戏(10x10 棋盘大小)机器人。它比普通人玩得更好。
棋盘尺寸为 10x10 而不是 3x3。必须连续放置 5 个 O 或 X 才能获胜,而不是 3 个。
因此,我使用 Minimax + Board Evaluation Function + Limited Available Moves 制作了该机器人以提高性能。
让我解释一下我的代码。
首先,我单独使用了 Minimax 算法,但意识到了这一点。第一步有大约 100 种可能的状态,第二步有 100*99,第三步有 100*99*98。
并且可能不可能计算出所有可能的棋盘状态。
所以,我所做的是创建了一个董事会评估功能。
我对棋盘评价功能设置了一些规则,无论Bot玩多少局都是一样的。
但我想做一个董事会评估功能,它可以自我改进或给我一些数据,我可以用它来改进它。我想不出井字游戏的任何方法,你们可以吗?
谢谢
执行此操作的一种方法是生成有关棋盘状态的统计信息。创建一个具有有效棋盘状态 1:1 的棋盘哈希函数,并填充所采取动作的字典。记录每个棋盘状态下的每个动作 wins/losses,并根据给定选项的获胜百分比对动作选择应用权重。
这是内存密集型的,但您可以通过使用在板旋转和镜像上不变的散列来将其提高 8 倍(通常,您可以散列当前状态的所有 8 次旋转和翻转,并且始终 return 例如,最小值;可能有一个不那么暴力的选项。)
另一项改进是不记录您在展望 window 中保证 win/lose 的任何游戏的动作,尽管这是一个较小的百分比改进。
我制作了一个井字游戏(10x10 棋盘大小)机器人。它比普通人玩得更好。
棋盘尺寸为 10x10 而不是 3x3。必须连续放置 5 个 O 或 X 才能获胜,而不是 3 个。
因此,我使用 Minimax + Board Evaluation Function + Limited Available Moves 制作了该机器人以提高性能。
让我解释一下我的代码。
首先,我单独使用了 Minimax 算法,但意识到了这一点。第一步有大约 100 种可能的状态,第二步有 100*99,第三步有 100*99*98。
并且可能不可能计算出所有可能的棋盘状态。
所以,我所做的是创建了一个董事会评估功能。
我对棋盘评价功能设置了一些规则,无论Bot玩多少局都是一样的。
但我想做一个董事会评估功能,它可以自我改进或给我一些数据,我可以用它来改进它。我想不出井字游戏的任何方法,你们可以吗?
谢谢
执行此操作的一种方法是生成有关棋盘状态的统计信息。创建一个具有有效棋盘状态 1:1 的棋盘哈希函数,并填充所采取动作的字典。记录每个棋盘状态下的每个动作 wins/losses,并根据给定选项的获胜百分比对动作选择应用权重。
这是内存密集型的,但您可以通过使用在板旋转和镜像上不变的散列来将其提高 8 倍(通常,您可以散列当前状态的所有 8 次旋转和翻转,并且始终 return 例如,最小值;可能有一个不那么暴力的选项。)
另一项改进是不记录您在展望 window 中保证 win/lose 的任何游戏的动作,尽管这是一个较小的百分比改进。