Tetris-ai (Python, 2019)

来自俄罗斯方块中文维基
“Tetris AI”意在提供一个易于识别的通称,不代表 AI 是官方的算法或隶属于任何(官方的)俄罗斯方块游戏。

Tetris-ai 是一个 Python 方块 AI。
这个 AI 针对俄罗斯方块的基本玩法做强化学习,自我训练决策提高总消行数,在 GitHub 上获得了较多的星数。
这个 AI 曾被 Beatris (Python, 2019) 沿用推广至敌对方块研究领域。

基本信息

制作者:nuno-faria(第一作者)、Nick Linker
Python 模块需求:Tensorflow、Tensorboard、Keras、Opencv-python、Numpy、Pillow、Tqdm

工作原理

智能体(Agent):由 AI 算法操纵的方块游戏参与者。
关键评分标准[注 1]:当前方块的消行数、洞数[注 2]、总落差[注 3]方块堆高度。
强化学习:先随机取落点,在有限的序列中保存场况和对应的评分,每一轮最后从整个序列当中随机取一段自测。
Q-Learning 训练:只要方块锁定后不致死,方块落点的评分就由锁定前后的两个场况共同算出。[注 4]
折扣系数:锁定后场况的评分计算结果稍作扣除(默认 × 0.95)。
最佳决策:按场况预计所有落块方案的评分,取评分最高的方案。
探索学习:在已经强化学习出最佳决策的前提下,智能体并不总是取最佳决策方案,而是继续做一部分随机落块获取探索性数据。
ε 停止值:用来决定探索学习的长度,随机落块频率均匀递减(默认 N = 2000、ε = 1500)。[注 5]

方块环境配置

由 tetris.py 文件定义,使用标准的 10×20 场地,未锁定的方块是水色,已锁定的方块是粉色。
方块逆时针旋转,O 只有一种朝向,I 两种,其他方块四种:

Tet.pngII
Tet.pngII
Tet.pngTet.pngTet.png
IIII
Tet.pngTet.pngTet.pngTet.png
Tet.pngTet.pngTet.pngTet.png
Tet.pngTet.pngTet.pngTet.png
Tet.pngITet.pngTet.png
Tet.pngITet.pngTet.png
Tet.pngITet.pngTet.png
Tet.pngITet.pngTet.png
Tet.pngITet.png
Tet.pngITet.png
IITet.png
Tet.pngTet.pngTet.png
III
Tet.pngTet.pngI
Tet.pngII
Tet.pngITet.png
Tet.pngITet.png
ITet.pngTet.png
III
Tet.pngTet.pngTet.png
Tet.pngITet.png
Tet.pngITet.png
Tet.pngII
Tet.pngTet.pngI
III
Tet.pngTet.pngTet.png
IITet.png
Tet.pngITet.png
Tet.pngITet.png
Tet.pngTet.pngTet.png
III
ITet.pngTet.png
Tet.pngITet.png
III
Tet.pngTet.pngTet.png
Tet.pngITet.png
IITet.png
Tet.pngITet.png
Tet.pngTet.pngTet.png
III
Tet.pngITet.png
Tet.pngITet.png
Tet.pngII
Tet.pngITet.png
Tet.pngII
IITet.png
Tet.pngTet.pngTet.png
ITet.pngTet.png
IITet.png
Tet.pngITet.png
Tet.pngII
IITet.png
Tet.pngTet.pngTet.png
ITet.pngTet.png
IITet.png
Tet.pngITet.png
IITet.png
Tet.pngII
Tet.pngTet.pngTet.png
Tet.pngITet.png
IITet.png
ITet.pngTet.png
IITet.png
Tet.pngII
Tet.pngTet.pngTet.png
Tet.pngITet.png
IITet.png
ITet.pngTet.png

注释

  1. 共有九个标准,此处取作者多次测试后认定的最重要的四个标准
  2. 在这个学习体系中,“洞”被定义为上方存在砖格的空格
  3. 先按最高砖格决定每一列的高度,再计算 9 处列间落差的和
  4. 典型表现:不立刻消一,凑出消二和消三
  5. 例:假设 N = 120,ε = 100,那么第一局 100% 随机落块,第 40 局 60% 随机落块,最后 20 局只按学习结果落块。

外链