基于alphazero算法的自学习六角棋盘游戏ai

azalea的Python项目详细描述


杜鹃花

playing to learn to play

杜鹃花是对AlphaZero game AI的重新诠释。 用于Hex board game的学习算法。

功能

  • 直接重新实现AlphaZero算法,除了 对于MCTS并行化(见下文)
  • 六角棋盘游戏的预训模型
  • 通过numba jit加速实现快速mcts。
  • 快速十六进制游戏移动生成通过numba实现。
  • 并行自播放,在训练期间使nvidia v100 gpu饱和
  • 通过循环赛进行人工智能政策评估,也可并行化
  • 在ubuntu 16.04上测试
  • 需要python 3.6和pytorch 0.4

与已发布的AlphaZero的差异

  • 仅限单个GPU实现-在NVIDIA V100上测试,具有8个CPU 用于移动生成和MCT,以及用于策略网络的1个GPU。
  • 只实现了十六进制游戏,尽管代码支持添加更多 游戏。新游戏需要两个组件:移动生成器和 策略网络,板输入和移动输出调整为 新游戏。
  • MCT模拟不是在并行线程中运行的,而是, 自玩游戏是在平行的过程中进行的。这是为了避免 仍然需要多线程mcts实现 保持快速的训练速度并使GPU饱和。
  • MCT模拟和电路板评估根据 search_batch_size配置参数。“使用“虚拟损失” 就像在alphazero中一样,增加搜索的多样性。

安装

克隆存储库并使用conda安装依赖项:

git clone https://github.com/jseppanen/azalea.git
conda env create -n azalea
source activate azalea

默认的environment.yml安装GPU包,但您可以选择 environment-cpu.yml在笔记本电脑上测试。

与预先训练的模型比赛

python play.py models/hex11-20180712-3362.policy.pth

这将加载模型并开始播放,请求您移动。这个 列标记为A–K,行标记为1–11。第一个玩家,玩X, 正在尝试绘制通过板的垂直连接路径,而 第二个玩家用O绘制一条水平路径。

O O O O X . . . . . . 
 . . . . . . . . . . . 
  . . . . . . . . . . . 
   . . . . X . . . . . . 
    . . . . . X . . . . . 
     . . . . . . . . . . . 
      . . . . X . . . . . . 
       . . . . . . . . . . . 
        . . . X . . . . . . . 
  x      . . . . . . . . . . . 
 o\\      . . . . . . . . . . . 
last move: e1
Your move? 

模特训练

python train.py --config config/hex11_train_config.yml --rundir runs/train

模型比较

python compare.py --config config/hex11_eval_config.yml --rundir runs/compare <mode1> <model2> [model3] ...

型号选择

python tune.py

参考文献

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java为什么这段代码要打印空字符串?   java未知错误:由于标签页崩溃,会话被删除   布尔型上的java函数if-else   java最佳蚂蚁教程/快速入门?   JAVAutil。java中的扫描程序跳过do while循环中的扫描程序输入   java我们可以在selenium中使用ExpectedConditions和FluentWait来实现通用等待方法吗?   java如何使用gson库解析JSONObject   java GWT模拟Android LinearLayout的布局重量属性?   Java正则表达式重写日期表达式   java MediaPlayer播放我的MP3文件,但非常安静   java背景不显示javaFX   用于CLI的java quarkus开发模式,如何重新启动应用程序   websphere WSJdbcDataSource的java Jar文件   java Spring 4对象不会自动连接变量   java从Dbpedia定制本体/RDF图