【免费下载链接】MO-Gymnasium
Multi-objective Gymnasium environments for reinforcement learning
MO-Gymnasium 是一个面向多目标强化学习(MORL)的开源 Python 环境库,提供遵循 Gymnasium 标准 API 的多目标基准环境——step返回向量化的 numpy 奖励数组而非单一标量。它与同作者的 MORL-Baselines 算法仓库配套使用,可以完成"选环境 → 标量化 → 训练 → 基准对比"的完整多目标强化学习基准测试流水线。本文带你走通从安装、选环境、联调算法到可复现性验证的全部环节。
1. 为什么多目标基准测试需要专门的环境库 🎯
传统强化学习只优化一个标量奖励,而现实任务往往同时存在多个相互冲突的目标。以mo-halfcheetah为例:半豹子跑得越快,能量消耗越大。若把两个目标合并成一个奖励,权重取 0.9:0.1 和 0.1:0.9 会得到完全不同的策略——这正是多目标基准测试要量化的东西。
上图展示了mo-halfcheetah-v5在"速度 / 能量效率"两个目标上的权衡:不同权重下的学习结果落在帕累托前沿的不同位置,这就是 MORL 算法需要对比评估的典型场景。
MO-Gymnasium 的设计哲学是:环境保持多目标原貌(返回奖励向量),标量化交给包装器完成,这样同一套环境既能服务多目标算法(如 MO-DQN、Pareto 学习),也能无缝喂给单目标算法库。
2. 一键安装与环境自检 🚀
安装非常简单,一行 pip 命令即可:
pip install mo-gymnasium默认安装不含所有环境族的依赖。如需 MuJoCo 类环境或全部依赖,可分别执行:
pip install "mo-gymnasium[mujoco]" pip install "mo-gymnasium[all]"也可以从源码安装:
git clone https://gitcode.com/gh_mirrors/mo/MO-Gymnasium安装后用三行代码自检环境是否可用(vector_reward是 numpy 数组,这是 MO-Gymnasium 与普通 Gymnasium 的关键区别):
import mo_gymnasium as mo_gym env = mo_gym.make("minecart-v0") obs, info = env.reset() next_obs, vector_reward, terminated, truncated, info = env.step(env.action_space.sample()) print(vector_reward) # 输出如 [0. 0. 0.1] 的奖励向量详细安装说明见 docs/introduction/install.md,完整示例见 README.md 的 API 部分。
3. 基准环境选型:三大环境家族 🗺️
环境按形态分为三类,全部注册在 mo_gymnasium/envs/init.py 中,环境 ID 带有严格的版本号后缀(如-v0)以保证可复现性。
3.1 经典控制环境(Classic Control)
对 Gymnasium 经典环境的多目标改造,适合入门与快速实验:
| 环境 ID | 目标向量 | 说明 |
|---|---|---|
mo-mountaincar-v0 | [time_penalty, reverse_penalty, forward_penalty] | 山车爬坡,增加前进/后退惩罚,源自 Vamplew et al. 2011 |
mo-mountaincarcontinuous-v0 | [time_penalty, fuel_consumption_penalty] | 连续动作版本,增加油耗惩罚 |
mo-lunar-lander-v2 | [landed, shaped_reward, main_engine_fuel, side_engine_fuel] | 月球着陆器,区分主/侧喷油消耗 |
3.2 网格世界(Grid-World)
离散观察空间的经典 MORL 基准,许多环境附带解析已知的帕累托前沿,是做算法正确性验证的首选:
deep-sea-treasure-v0/deep-sea-treasure-concave-v0/deep-sea-treasure-mirrored-v0:[treasure, time_penalty],潜艇在"宝藏价值 vs 时间成本"间权衡,是最常用的 MORL 测试床;fishwood-v0:[fish_amount, wood_amount],钓鱼还是捡柴的经典二选一问题;fruit-tree-v0:[nutri1..nutri6],六营养素的树状采集任务;- 此外还有
resource-gathering-v0、four-room-v0、breakable-bottles-v0等。
3.3 MuJoCo 物理环境
mo-hopper-v5、mo-ant-v5、mo-humanoid-v5等 7 种高维连续控制环境,目标向量通常为"速度 + 能量",是检验多目标算法扩展性的主力(见 mo_gymnasium/envs/mujoco/ 下的各环境实现):
完整环境清单及目标定义见 docs/environments/classical.md、docs/environments/grid-world.md 与 docs/environments/mujoco.md。
4. 与 MORL-Baselines 联调:从环境到训练 🔗
MORL-Baselines 是同一团队实现的多种 MORL 算法库(基于 MO-Gymnasium API),两者配合有两种典型联调方式:
方式一:标量化后喂给单目标算法库。用LinearReward包装器把奖励向量与权重向量做点积,还原成标量奖励后,即可直接复用 Stable-Baselines3 等成熟算法:
import numpy as np import stable_baselines3 as sb3 import mo_gymnasium as mo_gym # 线性标量化:权重决定了关注哪个目标 env = mo_gym.wrappers.LinearReward( mo_gym.make("mo-mountaincar-v0"), weight=np.array([0.9, 0.1, 0.0]), ) agent = sb3.DQN("MlpPolicy", env) agent.learn(10_000)方式二:直接用多目标算法。MORL-Baselines 中的算法原生消费奖励向量,通过扫描权重集训练一族策略,再把每个策略的累积回报点画到帕累托前沿上,与解析前沿(如 DST 环境自带的答案)对比——这就是基准测试的闭环。
官方演示笔记本 mo_gymnasium_demo.ipynb 完整演示了安装、创建环境、查看reward_space、随机策略回放与 DQN 训练六步流程,建议边读边跑。
5. 实战关键:MO 包装器速查表 📦
多目标基准测试中,奖励的处理逻辑基本由 mo_gymnasium/wrappers/wrappers.py 中的包装器承担:
| 包装器 | 作用 | 典型用途 |
|---|---|---|
LinearReward | 奖励向量 × 权重向量 = 标量奖励 | 对接单目标算法;set_weight支持训练后换权重评估 |
MONormalizeReward | 对指定下标的奖励分量做移动平均归一化 | 稳定训练,可多层叠加逐分量归一 |
MOClipReward | 将指定分量裁剪到 [min, max] | 抑制极端奖励值 |
MORecordEpisodeStatistics | 记录每回合向量累积回报、折扣回报与长度 | 基准测试出图(帕累托前沿绘制的数据来源) |
MOMaxAndSkipObservation | 帧跳过 + 双帧取最大 | 面向像素环境(如 Super Mario) |
包装器文档见 docs/wrappers/wrappers.md。注意包装器顺序:MORecordEpisodeStatistics依赖info为 dict,建议放在最外层。
6. 可复现性验证:确定性测试与帕累托前沿校验 ✅
基准测试的价值在于可复现。MO-Gymnasium 的测试套件 tests/test_envs.py 本身就是一套"环境质检清单":
- API 合规:所有环境通过 Gymnasium 官方
check_env校验(先套LinearReward转标量); - 确定性 rollout:同种子双环境 50 步对跑,逐位比对 obs/reward/terminated/info;
- 奖励边界:验证每步
vector_reward都落在reward_space内; - 解析前沿校验:如
test_ccs_dst把deep-sea-treasure-v0的env.unwrapped.pareto_front(gamma=0.99)与已知凸组合解逐点比对(见 tests/test_envs.py#L195-L214)。
做基准测试时,可直接调用pareto_front(gamma)拿到环境的理论答案,用它评估算法学到的策略离最优还有多远——这比单纯看回报曲线更有说服力。
7. 引用与延伸阅读 📚
若在你的研究中使用了本仓库,请参考 CITATION.bib 中的 NeurIPS 2023 论文:
Felten, F., Alegre, L. N., et al. "A Toolkit for Reliable Benchmarking and Research in Multi-Objective Reinforcement Learning." NeurIPS 2023.
- 环境源码:mo_gymnasium/envs/(如 deep_sea_treasure.py、fishwood.py)
- 环境文档:docs/environments/
- 示例与算法联调:docs/examples/morl_baselines.md
一句话总结:MO-Gymnasium 负责提供"标准答案"(多目标环境 + 解析前沿),MORL-Baselines 负责提供"考生"(MORL 算法),两者联调即可构建一套严谨、可复现的多目标强化学习基准测试。
【免费下载链接】MO-Gymnasium
Multi-objective Gymnasium environments for reinforcement learning
相关推荐
Gymnasium中的强化学习基准:标准化实验设置与评估
Gymnasium中的强化学习基准:标准化实验设置与评估 引言:为什么标准化实验设置至关重要? 在强化学习(Reinforcement Learning, RL
人工智能强化学习机器学习最强实战指南:OpenAI Baselines强化学习调优指南
最强实战指南:OpenAI Baselines强化学习调优指南 你是否在训练强化学习模型时遇到这些问题:参数调来调去效果始终不佳?论文里的算法实现起来总是差一口
强化学习人工智能深度学习Campus-iMaoTai:基于Spring Boot的茅台预约自动化系统架构设计与实现
Campus iMaoTai:基于Spring Boot的茅台预约自动化系统架构设计与实现 在当今数字化的商业环境中,茅台酒的稀缺性催生了自动化预约系统的技术需
后端前端任务调度工作流自动化
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考