feat(utils): implement reseed method on PCG32 RNG for dynamic non-stationary state reset
MoonGridWorld 是专为 2026 MoonBit 国产基础软件开源大赛 (OSC 2026) 精心打造的纯 MoonBit 原生强化学习(Reinforcement Learning, RL)环境套件与算法评估基准框架。
项目的设计灵感源自经典的 OpenAI Gym / Gymnasium 以及 Sutton & Barto 的强化学习圣经《Reinforcement Learning: An Introduction》,填补了当前 MoonBit 生态在智能决策模拟、离散动态控制与算法评测环境领域的空白。通过高度抽象的类型擦除接口设计、确定性的 PCG32 随机数生成器、支持 BFS 可解性验证的程序化地图生成器以及表格型基础智能体,MoonGridWorld 为 MoonBit 开发者与研究人员提供了成熟、稳定且具备极强扩展性的仿真实验平台。
mooncakes.io
AnyDiscreteEnv
0 warning
moongridworld/ ├── core/ # 核心抽象层:环境接口定义与状态/动作空间规范 ├── utils/ # 底层工具:PCG32 确定性随机数生成器与统计学/距离计算工具 ├── envs/ # 强化学习标准环境库 (6大核心套件) │ ├── gridworld/ # 经典网格世界:支持障碍物、陷阱、终点及随机滑移风向阻力 │ ├── cliffwalking/# Sutton 悬崖行走:4x12 悬崖惩罚与即时起点重置逻辑 │ ├── frozenlake/ # 冰湖环境:4x4 / 8x8 标准地图,包含 0.66 侧向滑移概率动力学 │ ├── bandit/ # 多臂老虎机:包含伯努利、高斯及非平稳随机游走均值老虎机 │ ├── maze/ # 钥匙-门子目标迷宫:分层强化学习经典测试任务 │ └── multiagent/ # 多智能体环境:支持零和博弈(竞争竞速)与协同合作动力学 ├── generator/ # 程序化环境生成器:基于 BFS 连通性校验与递归回溯 DFS 算法 ├── solvers/ # 基础决策算法库:Tabular Q-Learning、Tabular SARSA 与随机基线 ├── trajectory/ # 轨迹记录与导出模块:支持折扣回报计算及 JSON/CSV 格式化导出 ├── evaluator/ # 自动化基准引擎:自动运行训练轮次并生成标准 Markdown 对比表 └── top/ # 顶级执行入口 (main.mbt):一键执行全套环境评估基准流程
core::AnyDiscreteEnv
reset
step
render
.to_any()
utils::RNG
generator
trajectory
EpisodeRecorder
确保已安装 MoonBit 原生开发工具链(建议版本 0.1.20260703 及以上):
0.1.20260703
moon version
git clone https://github.com/bins-c-language/moongridworld.git cd moongridworld moon check
通过 moon test 自动运行所有包的 28 个自动化单元测试,覆盖全部环境动力学、极值竞争争夺、随机分布与状态转换:
moon test
执行输出结果:
Total tests: 28, passed: 28, failed: 0.
main
借助 moon run top 命令,可以一键驱动多套智能体(Q-Learning, SARSA, Random Baseline)在各大标准环境中展开自动化测评,并在控制台实时渲染对齐的 Markdown 对比数据表:
moon run top
通过对 GridWorld、Sutton CliffWalking、OpenAI FrozenLake、10-Arm Multi-Armed Bandit、Key-Door Maze 以及 6x6 Procedural Grid 的多轮测评,经典表格型强化学习算法在短轮次探索后明显超过随机策略:
[!NOTE] 说明:CliffWalking-v0 中 Q-Learning 虽偶尔探入悬崖导致方差偏大,但到达终点胜率(65%)和寻找最短路径平均步数(287步 vs 随机467步)展现了 off-policy 控制的优势;在分层导航任务 MazeKeyDoor-v0 中,Q-Learning 在 80 轮训练后胜率达到惊人的 91.25%,完全学会了“先取钥匙、开启门锁、抵达终点”的连贯策略。
fn demo_training() -> Unit { // 1. 初始化 5x5 网格世界并转换为 AnyDiscreteEnv let cfg = @gridworld.GridWorldConfig::default() let env = @gridworld.GridWorldEnv::new(cfg).to_any() // 2. 初始化 Q-Learning 智能体 (状态空间: 25, 动作空间: 4) let agent_cfg = @solvers.TabularConfig::default(25, 4) let agent = @solvers.TabularQLearning::new(agent_cfg) // 3. 执行单回合训练并记录轨迹 let mut state = env.reset() let mut done = false let recorder = @trajectory.EpisodeRecorder::new(1, "GridWorld-v0") let mut step_count = 0 while !done && step_count < 100 { step_count = step_count + 1 let action = agent.select_action(state) let res = env.step(action) // 更新 Q 表 let _ = agent.update(state, action, res.reward, res.obs, res.is_done()) // 记录轨迹步骤 recorder.record_step(step_count, res.obs, action, res.reward, res.is_done(), res.info) state = res.obs if res.is_done() { done = true } } // 4. 导出为 CSV 或 JSON 供数据工程及前端回放 let json_trajectory = recorder.to_json() let csv_data = recorder.to_csv() }
本项目严格遵照 moonbit-agent-guide 与 osc2026-guide 规范完成自查自纠与多轮重构完善:
moonbit-agent-guide
osc2026-guide
moon.mod.json
LICENSE
README.md
.gitignore
core
utils
envs/*
solvers
evaluator
top
feat(...)
test(...)
refactor(...)
moon check
.mbt
本项目采用 Apache License 2.0 开源协议。欢迎广大开源爱好者提 Issue、PR 与建议!
MoonGridWorld 是一套专为 MoonBit 生态打造的纯原生强化学习与智能决策基准框架,集成了类型擦除的统一环境抽象 API、广度优先搜索校验的程序化地图生成器、涵盖悬崖行走与冰湖等六大经典的离散/多智能体环境套件,以及自动化 Q-Learning/SARSA 表格型算法测评与标准轨迹序列化导出工具。
版权所有:中国计算机学会技术支持:开源发展技术委员会 京ICP备13000930号-9 京公网安备 11010802047560号
MoonGridWorld: 纯 MoonBit 原生强化学习环境与基准任务套件
MoonGridWorld 是专为 2026 MoonBit 国产基础软件开源大赛 (OSC 2026) 精心打造的纯 MoonBit 原生强化学习(Reinforcement Learning, RL)环境套件与算法评估基准框架。
项目的设计灵感源自经典的 OpenAI Gym / Gymnasium 以及 Sutton & Barto 的强化学习圣经《Reinforcement Learning: An Introduction》,填补了当前 MoonBit 生态在智能决策模拟、离散动态控制与算法评测环境领域的空白。通过高度抽象的类型擦除接口设计、确定性的 PCG32 随机数生成器、支持 BFS 可解性验证的程序化地图生成器以及表格型基础智能体,MoonGridWorld 为 MoonBit 开发者与研究人员提供了成熟、稳定且具备极强扩展性的仿真实验平台。
🌟 为什么选择强化学习环境作为 OSC 2026 选题?
mooncakes.io广泛调研,目前生态中已存在基础的数学库与简单的桌游示例,但缺乏系统化、模块化的标准强化学习基准框架。本项目结合了数值计算、随机仿真、空间图搜索算法(BFS/DFS)以及智能控制决策,具有极高的工程价值和学科交叉深度。AnyDiscreteEnv,无需受限的 trait 虚函数分发即可对任意异构环境进行统一调用。未来可轻松拓展连续状态空间(Box Space)、深度强化学习接口(如接入神经网络库)、以及 WebAssembly 前端实时交互渲染器。0 warning) 与标准规范。🏗️ 系统架构与模块全景
核心设计特性
core::AnyDiscreteEnv)在 MoonBit 当前的版本中,由于结构体默认只读属性及 trait 方法对局部状态更改的约束,本库设计了基于函数闭包包覆的
AnyDiscreteEnv。各个环境只需实现具体的reset、step、render,随后借助.to_any()即可自动转换为标准统一接口,支持各类解耦的 Solver 和 Evaluator 调用。utils::RNG)内置纯 MoonBit 实现的 PCG(Permuted Congruential Generator)64-bit 状态转 32-bit 输出随机引擎,支持均匀分布、伯努利分布、正态分布(基于 12-Uniform 中心极限定理极速采样),确保训练轨迹与评测实验跨平台 100% 可复现。
generator)在随机生成含有高密度障碍物与陷阱的 GridWorld 时,通过 Breadth-First Search (BFS) 自动校验起点至终点的图连通性。如果生成的地图不可达,自动回溯重采样,确保任意程序化生成的迷宫与网格关卡始终可解。
trajectory)EpisodeRecorder不仅支持动态计算累积折扣回报 ∑t=0TγtRt,更能直接导出符合 CSV 表格标准(适用于 Python NumPy / Pandas 离线 RL 训练分析)和 JSON 序列化标准(适用于 Web 前端回放引擎渲染)的完整轨迹。⚡ 快速开始与使用指南
1. 环境准备
确保已安装 MoonBit 原生开发工具链(建议版本
0.1.20260703及以上):2. 获取代码与编译
3. 执行全套基准自动化测试
通过
moon test自动运行所有包的 28 个自动化单元测试,覆盖全部环境动力学、极值竞争争夺、随机分布与状态转换:执行输出结果:
4. 运行全能基准评估套件 (
main入口)借助
moon run top命令,可以一键驱动多套智能体(Q-Learning, SARSA, Random Baseline)在各大标准环境中展开自动化测评,并在控制台实时渲染对齐的 Markdown 对比数据表:📊 基准测评结果与算法对比
通过对 GridWorld、Sutton CliffWalking、OpenAI FrozenLake、10-Arm Multi-Armed Bandit、Key-Door Maze 以及 6x6 Procedural Grid 的多轮测评,经典表格型强化学习算法在短轮次探索后明显超过随机策略:
🛠️ 代码开发与 API 使用示例
自定义并训练一个网格智能体
📋 OSC 2026 参赛项目自查与开源规范
本项目严格遵照
moonbit-agent-guide与osc2026-guide规范完成自查自纠与多轮重构完善:moon.mod.json,且包含完备的LICENSE、README.md、.gitignore。core,utils,envs/*,generator,solvers,trajectory,evaluator,top)相互依赖解耦清晰,不产生任何循环依赖。feat(...),test(...),refactor(...)前缀提交日志,清晰记录了从工具类、核心接口、多环境实现到测试评估完整生命周期。moon check检查项:0 Errors, 0 Warnings。moon test自动化指标:**28/28 tests PASSED (100% 通过率)**。.mbt代码行数规模:2,760 行 原生代码(满足并超越大赛高质量基础库规模要求)。📄 许可证 (License)
本项目采用 Apache License 2.0 开源协议。欢迎广大开源爱好者提 Issue、PR 与建议!