Skip to content

Latest commit

 

History

History
239 lines (150 loc) · 9.58 KB

README.zh-cn.md

File metadata and controls

239 lines (150 loc) · 9.58 KB

Starkidstory

Header

Omega_Gomoku_AI

Omega_Gomoku_AI 是一个基于蒙特卡洛树搜索 (MCTS) 算法的五子棋 AI 游戏,用 Python 铸造,神经网络部分使用 Keras 框架。


Omega_Gomoku_AI 不仅用于五子棋游戏,你还可以自定义棋盘大小,以及几子连珠这样的游戏规则。例如井字棋,就是个 3 * 3 大小的棋盘,三子连珠。

此仓库提供可视化游戏界面,易用的训练过程,以及易于理解的代码。

玩得愉快~~

💥 现已可用 💥

web

使用 web 服务器 进行可视化游戏现已可用!

版本 1.3 已经推出。

👣 开发路程

✅ 蒙特卡洛树搜索 -> ✅ 神经网络训练 -> ✅ 游戏可视化 -> 自定义博弈。

📖 参考文献和感谢

关于算法,Omega_Gomoku_AI 参考于这篇文章:Monte Carlo Tree Search – beginners guide,作者是 int8

Omega_Gomoku_AI 受启发于 AlphaZero_Gomokutictactoe_mcts.

🏠 代码结构

用法

你可以自己尝试 Omega_Gomoku_AI,方法如下:

使用 Docker

如果你安装了 Docker,那么执行如下命令:

$ docker pull clox/omega_gomoku_ai:latest

然后,执行:

$ docker run -it clox/omega_gomoku_ai:latest

-it 后添加 --rm 可以在容器退出后自动删除容器。

以上是最简单版本的 Docker 容器配置方式,

如果你想要使用 web 服务器渲染可视化游戏,记得开启端口映射:

$ docker run -it -p 5000:5000 clox/omega_gomoku_ai:latest

除了映射到 5000 端口外,你还可以更改冒号前的 '5000' 为其他值。

如果你想要训练网络且希望将模型保存到本地,那么需要添加 -v 参数来挂载本地目录。

$ docker run -it -v [Path]:/home/Model clox/omega_gomoku_ai:latest

这里的 [Path] 需要填写你想要挂载的本地目录,切记不可以是相对路径。

PS:

使用 Docker 运行最简单版本的示例

配置:

config

运行:

running

使用 PC/Mac/Linux

确保你的电脑安装了 Keras 的后端环境(Tensorflow),在获取这个仓库之后,运行:

$ pip install -r requirements.txt

必要时,命令 'pip' 可改为 'pip3'。

使用 Mac/Linux,只需运行:

$ bash game.sh

就够了。使用 PC 运行文件 game.sh

或者,分开运行:

配置游戏脚本:

$ python configure.py

运行开始游戏脚本:

$ python start.py

运行训练网络脚本:

$ python train.py

运行使用 web 服务器渲染可视化游戏脚本:

$ python start_from_web.py

无论何种方式都相当简单。

关于 'train.py' 的参数

如果你想要在某些云平台等需要便捷快速且不允许用户输入的情况下训练,那么你可能需要运行带参数的 train.py。

$ python train.py 1 my_model 1000

第一个参数 '1' 表示使用第 '1' 个神经网络,它必须是神经网络的序号。

第二个参数 'my_model' 表示训练名为 'my_model' 的模型。如有,则自动训练 'latest.h5' 记录,如无,则自动创建模型。

第三个参数 '1000' 表示自我对局数为 '1000' 局。如果这个值小于等于 0,则为无限对局。它必须是整数。

开始。。。

默认地,游戏会在 8 * 8 的棋盘上进行五子连珠游戏,并且纯蒙特卡洛树的 AI 玩家会进行每回合 2,000 次的搜索。

AI thinking

AI_moves

有时,纯蒙特卡洛树的 AI 玩家会执行一些诡异的落子,这是因为每回合 2,000 次的搜索对于五子连珠游戏太少了。所以你可以将棋盘大小设为 3 * 3,或是 6 * 6,设为三子连珠或是四子连珠,就像井字棋。

当然,把 2,000 次每回合的搜索次数改得更多也是个好主意,不过这样会牺牲时间。

现在,我们开放了贪婪值 (greedy value),可以自行调节来改变蒙特卡洛树搜索的探索程度。

10000_times

例如上图,我将蒙特卡洛树搜索次数调至 10,000,在 6 * 6 的棋盘进行 4 子连珠游戏,可以在 AI 分析中看出蒙特卡洛树几乎已经遍历了全部棋盘。

带有神经网络的蒙特卡洛树搜索的 AI 玩家会解决这个问题。

训练已经开放。

training

在 web 上开启可视化棋盘

在打开 web 服务器运行游戏之后,你可以在浏览器的地址栏输入 http://127.0.0.1:5000http://0.0.0.0:5000 进行游戏。

ChromeSafari 通过了浏览器支持测试。

许可

Omega_Gomoku_AI 已获得 MIT 许可,详见 LICENSE

未完待续。。。