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 两种,其他方块四种:
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|