基于 Ray RLlib 的多模型强化学习框架,支持混合动作空间(离散 + 连续)的 PPO 算法实现。
- 🎯 混合动作空间支持 - 同时处理离散动作(模型选择)和连续动作(参数调优)
- 🔧 自定义 Gymnasium 环境 - 提供多种可扩展的自定义环境实现
- 🌉 Bridge Server - FastAPI 桥接服务,支持与外部仿真系统实时通信
- 🚀 Ray 分布式训练 - 利用 Ray Tune 进行超参数搜索和分布式训练
MultiModelRLWrapper/
├── lib/
│ └── real_env.py # 核心仿真环境(MissileEnv)
├── src/
│ ├── agents/
│ │ ├── ppo.py # HybridActionPPO 模块
│ │ ├── ppo1.py # HybridPPOModule 实现
│ │ └── ppo2.py # 简化 PPO 训练脚本
│ ├── env/
│ │ ├── corridorEnv.py # 走廊寻宝环境
│ │ └── MixedActionEnv.py # 混合动作环境封装
│ ├── test/
│ │ ├── rllib_train.py # RLlib 训练脚本
│ │ └── rllib_eval.py # 模型评估脚本
│ └── until/
│ ├── bridge_server.py # FastAPI 桥接服务
│ └── net_type.py # 网络类型定义
└── exp/ # 实验输出和检查点
# 安装依赖
pip install -r requirements.txt- Python >= 3.8
- Ray[rllib] >= 2.0
- PyTorch >= 2.0
- Gymnasium
- FastAPI
- NumPy
cd src
python test/rllib_train.pypython agents/ppo1.py用于连接外部仿真系统:
uvicorn src.until.bridge_server:app --host 0.0.0.0 --port 8001本项目支持同时包含离散和连续动作的混合动作空间:
action_space = Dict({
"model_selection": Discrete(n), # 离散:选择模型
"time_selection": Box(low=0, high=T) # 连续:时间参数
})所有环境均遵循 Gymnasium API:
from env.MixedActionEnv import MixedActionEnv
env = MixedActionEnv(config={})
obs, info = env.reset()
obs, reward, terminated, truncated, info = env.step(action)MIT License
欢迎提交 Issue 和 Pull Request!