Lesson 03 · 文件
它吃什么、吐什么:IDF / IDD / EPW / 输出
看懂这几种文件,你就拿到了和 EnergyPlus 打交道的"语法"。
第 2 课讲了 EnergyPlus 内部怎么算。但作为工程师,你日常打交道的是文件——喂给它什么、它吐回什么。这一课把这几类文件讲清楚,其中最重要的是 IDF 和 EPW,它们是方案 §2.2.3 那张"建筑模型从哪来"图的全部主角。
输入侧:三件套
IDF —— 建筑的"简历"
IDF(Input Data File)是纯文本文件,描述这栋楼的一切:几何、围护结构、空调系统、时间表、要输出哪些变量。你可以把它想成一栋楼的简历。它的长这样:
Building, A-Office, !- 名称 30, !- 朝向(度,北向起) ...; Zone, Floor1-Core, !- 区域名 0, !- 方向 0, !- X 原点 0, !- Y 原点 0, !- Z 原点 ...; HVACTemplate:Plant:Chiller, MainChiller, !- 名称 500000, !- 制冷量 (W) ...; Output:Variable, *, !- 对象(*=全部) Zone Air Temperature, !- 想要的变量 timestep; !- 频率
每行以逗号分隔,!- 后是注释。一个对象(如 Building、Zone、HVACTemplate:Plant:Chiller)占一段,以 ; 结尾。
IDD —— IDF 的"字典"
IDD(Input Data Dictionary)定义某个 EnergyPlus 版本里所有合法对象、每个对象有哪些字段、默认值是什么。随安装包附带(Energy+.idd)。你的 IDF 写错了(字段顺序、缺项),EnergyPlus 就是拿 IDD 来校验并报错的。换 EnergyPlus 版本时,IDD 也换——这就是"版本升级可能让旧 IDF 报错"的根因。
除 IDF 外,新版还支持 EpJSON(JSON 形式的同等内容),对脚本化更友好。PoC 阶段用 IDF 即可,知道 EpJSON 存在就行。
EPW —— 一年的天气
EPW(EnergyPlus Weather)是天气文件,本质是一整年逐时的"典型气象年"(TMY):每小时的温湿度、太阳辐射、风速、气压。第 2 课说的"读输入",室外环境数据就从这里来。
- 从哪来:energyplus.net/weather 提供全球城市 TMY 下载,武汉、北京、上海都有。
- 和方案的关系:方案 [§2.2.3] 说天气文件用 EPW 格式,从 EnergyPlus 官网下载中国城市 TMY 数据。
- 关键认识:EPW 是"典型年",不是某一年的真实天气。推理阶段我们会叠加和风天气的预报(方案 [§2.4.4]),但训练用的仿真跑的是 EPW 典型年。
这套文件谁生产?
这是新人最困惑的点。直接给结论——IDF 不是手写的,它有四条来路,方案 [§2.2.3] 全都用到了:
| 路径 | 工具 | 精度/成本 |
|---|---|---|
| 图形化建模 | OpenStudio(最主流) | 精度高、人工成本中 |
| 内置示例改 | EnergyPlus 自带示例 IDF + eppy 批改 | 精度中、快 |
| BIM 转换 | Revit/IFC → IfcOpenShell → eppy | 精度高、链条长 |
| 纯手写/模板 | 文本编辑器 + 模板 | 只适合小模型 |
输出侧:它吐回什么
一次仿真跑完,EnergyPlus 会吐一堆文件,由 OutputControl:Files 对象控制开哪些。RL 训练里我们真正关心的是这几类:
| 输出 | 是什么 | 谁消费 |
|---|---|---|
SQL(sqlite) |
结构化时序数据库,最好解析 | Sinergym / 数据分析脚本(首选) |
.eso → .csv |
逐时变量输出,常转 csv 给人看 | 人工核查 / 校准对比 |
.mtr |
计量表(meter)输出,类比 .eso | 能耗汇总 |
TABLE.HTML |
月度/分箱的报表 HTML | 一眼看全年能耗概览 |
EIO / RDD / MDD |
额外结果 / 可用变量清单 / 可用计量清单 | 调试时查"我能取哪些变量" |
对 RL 来说最关键的是:RL 智能体并不靠读这些文件拿数据——它通过第 4 课的 Python API,在仿真运行时实时拿到每步的变量值。这些文件更多是离线校准、人工核查、调试用。
EnergyPlus 吃三样:IDF(楼的简历,纯文本)、IDD(字典,校验用)、EPW(一整年典型天气)。IDF 有四条生产路径(OpenStudio / 示例改 / BIM / 手写),方案四条都列了。输出侧 RL 训练主要用 SQL,但实时数据走第 4 课的 Python API,不读文件。
RL 训练时,智能体每一步拿到的"房间温度"主要来自哪里?
卡住了就问我:如果你搞不清 IDF 对象那一堆字段怎么填,别纠结——那是暖通工程师/OpenStudio 的活。你只要"看得懂"即可。问我"我作为后端工程师,IDF 这块到底要做到哪一步",我会按方案 §7 的分工回答你。