Reference · 技术栈
技术栈地图
每个组件是什么、装什么版本、谁依赖谁、踩坑点在哪——开工前先看这一页。
一、依赖关系总览
┌─────────────────────────────────────────────────────┐
│ 你的代码层 │
│ ├─ 支柱A 预测 ├─ 支柱B 控制 ├─ 支柱C 门控 │
└──────┬──────────────────┬────────────────┬──────────┘
│ │ │
▼ ▼ │
┌──────────────┐ ┌────────────────┐ │
│ torchdiffeq │ │ Stable │ │
│ (Neural ODE) │ │ Baselines3 SAC │ │
└──────┬───────┘ └───────┬────────┘ │
│ │ │
▼ ▼ │
PyTorch ←──────────────┘ │
│ │ │
│ ▼ │
│ ┌──────────────┐ │
│ │ Gymnasium │←────────┘ (门控包在 env 外)
│ │ (env 接口) │
│ └──────┬───────┘
│ │
│ ▼
│ ┌──────────────┐
│ │ Sinergym │ ← 把 EnergyPlus 包成 gym
│ └──────┬───────┘
│ │ 调用 pyenergyplus
│ ▼
│ ┌──────────────┐
└─────────→│ EnergyPlus │ ← 物理仿真引擎(C 库)
│ 25.1.0 │
└──────────────┘
二、版本矩阵(钉死,别漂)
| 组件 | 版本 | 装法 | 角色 |
|---|---|---|---|
| EnergyPlus | 25.1.0 | energyplus.net 下载(macOS ARM 原生) | 物理仿真引擎 |
| Sinergym | 3.11.0 / 3.12.x | pip install sinergym | EnergyPlus→Gymnasium 封装 |
| Python | 3.12.3 | Sinergym 钉死 | 运行时 |
| Gymnasium | 1.0+ | pip install gymnasium | RL 环境接口标准 |
| Stable Baselines3 | 2.9.0 | pip install stable-baselines3[extra] | SAC/PPO/TD3 |
| torchdiffeq | latest | pip install torchdiffeq | Neural ODE 求解 |
| PyTorch | ≥ 2.8 | pip install torch | 底层数学 |
| eppy | 0.5.69 | pip install eppy | IDF 编辑(可选) |
| d3rlpy | 2.8.1 | pip install d3rlpy | 离线 RL(延伸) |
三、各组件详解
EnergyPlus — 物理仿真引擎
美国能源部出品,C 库,逐时间步算一栋楼的热平衡、冷机 COP、管网、能耗。每个 RL episode = 一次全年仿真。Sinergym 通过它的 Python API(pyenergyplus)在回调里读写传感器/执行器。
- 下载:energyplus.net/downloads(选 25.1.0,macOS ARM 自此版本原生支持)
- API 文档:energyplus.readthedocs.io/…/api
- 何时直接碰它:需要在仿真步里耦合自定义热模型(如把你的 Neural ODE 接进 EnergyPlus)
Sinergym — RL 环境封装(本课主力)
西班牙格拉纳达大学 SAIL 实验室维护,把 EnergyPlus 包成 Gymnasium env。社区首选,2026-07 仍在活跃更新。
- 仓库:github.com/ugr-sail/sinergym · 文档:ugr-sail.github.io/sinergym
- 论文:e-Energy 2021(doi/10.1145/3486611.3488729);arXiv 2412.08293(综述更新)
- 提供:5-zone office 等现成建筑 + 随机天气扰动 + 归一化 wrapper + 日志
Gymnasium — RL 环境接口标准
Farama 基金会维护,OpenAI gym 的继任者。v1.0+ 接口冻结。务必用它,别用旧 gym(step 返回 4 元组已废弃)。
- 接口:
reset()→(obs,info),step()→(obs,reward,terminated,truncated,info) - 关键:
terminated(真终态)vstruncated(时间截断)影响 value bootstrap - 文档:gymnasium.farama.org/api/env
Stable Baselines3 — RL 算法库
德国 DLR 维护,SAC/TD3/PPO 参考实现。连续控制首选 SAC(off-policy、样本高效)。
- 仓库:github.com/DLR-RM/stable-baselines3
- 示例:stable-baselines3.readthedocs.io/…/examples
- 装:
pip install stable-baselines3[extra](含 tensorboard)
torchdiffeq — Neural ODE 求解
Neural ODE 论文一作 Ricky Chen 的参考实现。两个接口:adjoint(省显存)/ 普通(快)。
- 仓库:github.com/rtqichen/torchdiffeq
- 加速替代:torchdyn(更高层)、torchode(并行批)
- 坑:训练慢是正常的(反向多解一次 ODE),回报在数据效率非速度
四、平台与算力
| 任务 | 算力 | 说明 |
|---|---|---|
| Sinergym 跑 episode | CPU 即可 | EnergyPlus 是 CPU 仿真 |
| Neural ODE 训练 | 1×GPU 推荐 | adjoint 法反复调求解器,GPU 明显加速 |
| SAC 训练 | 1×GPU(或强 CPU) | 策略网络小,CPU 也能跑但慢 |
| 推理(部署) | SAC:云端 CPU 即可;Neural ODE:CPU 够 | 控制周期 5–15min,对延迟不敏感 |
五、替代/延伸工具
| 工具 | 何时考虑 | 链接 |
|---|---|---|
| BOPTEST | 想要 IBPSA 官方控制基准 + 规则基线 | ibpsa/project1-boptest |
| BCVTB | 需要 EnergyPlus + Modelica 多领域联合仿真 | LBNL BCVTB |
| eppy / geomeppy | 需要编程式改 IDF 建筑模型 | eppy · geomeppy |
| d3rlpy | 用历史 BMS 日志做离线 RL 预训练 | github.com/takuseno/d3rlpy |
| torchdyn | 想要更高层的 Neural ODE 模板 | github.com/DiffEqML/torchdyn |
完整资料清单见:
RESOURCES.md(含一手论文 arXiv 链接与两处 ID 勘误记录)