项目介绍:gym-sokoban
什么是Sokoban
Sokoban,即“仓库管理员”,是一款源自日本的传统益智游戏。在游戏中,玩家需要将房间内的所有箱子推至指定的存储位置或目标点。由于存在可能无可挽回的错误,这些谜题对玩家,尤其是强化学习算法来说,具有很大挑战性,因为这些算法大多缺乏预见未来的能力。
gym-sokoban项目概述
gym-sokoban是根据DeepMind的论文《增强想象力的智能体用于深度强化学习》中的规则来实现Sokoban游戏的开源库。该项目中的房间生成是随机的,因此可以训练深度神经网络,而无需过拟合于预定义的房间集合。
安装方法
使用PIP安装
如果要快速上手,可以使用pip来安装:
pip install gym-sokoban
从仓库安装
如果想要一个本地版本,可以从GitHub克隆库并进行安装:
git clone git@github.com:mpSchrader/gym-sokoban.git
cd gym-sokoban
pip install -e .
游戏环境
房间要素
每个游戏房间由五个主要元素组成:墙壁、地板、箱子、箱子目标点和玩家。这些元素可能存于不同状态,取决于它们是否与目标点重叠。
可执行动作
游戏提供9种动作来与环境交互,包括上下左右的推和移动动作,以及不执行任何操作的“无操作”动作。
动作 | ID |
---|---|
无操作 | 0 |
向上推 | 1 |
向下推 | 2 |
向左推 | 3 |
向右推 | 4 |
向上移动 | 5 |
向下移动 | 6 |
向左移动 | 7 |
向右移动 | 8 |
奖励机制
完成游戏并将所有箱子推到目标点将获得10分的奖励。此外,将箱子推上或推出目标点分别获得1分和-1分的奖励。每执行一步操作,都会产生-0.1的罚分,鼓励玩家使用更短的解法。
关卡生成
每当加载或重置一个Sokoban环境时,房间都会被随机生成,主要经过三个阶段:拓扑结构生成、元素放置以及反向游戏。
游戏配置
Sokoban有多种配置可选,比如房间大小、箱子数量、渲染模式及规则等。
渲染模式
除了常规渲染外,还可以使用TinyWorld模式,在这个模式下,每个像素对应房间内的一个元素。
尺寸变化
玩家可以选择不同大小的房间配置,提供了从小于7x7到大于13x13等多种选择。
其他变化
除此之外,游戏也实现了或者计划实现一些变化形式,比如固定目标、多人玩家、推拉模式等,这些变化可能增加或降低游戏难度。
引用方式
如果您在研究中使用了该仓库,请引用以下信息:
@misc{SchraderSokoban2018,
author = {Schrader, Max-Philipp B.},
title = {gym-sokoban},
year = {2018},
publisher = {GitHub},
journal = {GitHub repository},
howpublished = {https://github.com/mpSchrader/gym-sokoban}
}
联系和贡献
联系方式
如果对这个或其他项目感兴趣,可以通过GitHub问题或LinkedIn联系项目作者。
贡献方式
用户可以通过fork该库并提交他们所需的功能进行贡献。此外,也可以通过提交新issue来请求支持或新功能。