【第三篇 实操篇】Demo运行、数据准备与参数配置全景
导读:理解了算法原理后,如何亲自动手跑起来?真实项目中我们需要准备哪些数据?配置文件里的几十个参数分别控制什么?本文手把手带你完成从数据准备、参数配置、命令行运行到结果可视化的完整实操闭环。
1. 运行环境与零依赖设计
该框架在工程设计上坚持了极简主义:完全基于 Python 标准库实现,无需安装任何复杂的重型第三方包(如 TensorFlow、PyTorch、Gurobi 或 Scipy),只要系统装有 Python 3.9 或更高版本即可直接运行。
快速验证环境
打开终端运行:
2. 输入时序数据准备(load.csv)
算法是日前(Day-ahead)调度优化器,它的输入必须是一张包含未来各时段负荷与气象的时序 CSV 表格。
2.1 标准 CSV 格式规范
文件必须包含以下 4 列标准表头:
列名 | 数据类型 | 物理含义 | 常见取值范围 | 说明 |
timestamp | 字符串 | 该时段的开始时间戳 | 如 2026-07-01 00:00:00 | 格式规范为 YYYY-MM-DD HH:MM:SS |
duration_hours | 浮点数 | 本时段持续时长(小时) | 1.0 或 0.25 | 1 小时颗粒度填 1.0;15 分钟颗粒度填 0.25 |
load_kw | 浮点数 | 全站预测制冷负荷需求(kW) | 0.0 ~ 全站额定总冷量 | 零负荷直接填 0.0 |
wet_bulb_c | 浮点数 | 预测室外空气湿球温度(℃) | 通常 15.0 ~ 30.0 | 来自气象预报数据,冷却塔散热极限 |
2.2 样例数据片段(24 小时日前负荷)
3. 全局配置文件深度解析(config/default.json)
系统的一切设备规格、能效曲线与控制约束都在
config/default.json 中声明。我们将其拆分为五大板块:板块 1:冷水机组列表(chillers)
capacity_kw:单台主机额定冷量(kW);
min_plr/max_plr:允许的安全负载率区间(例如 15%~100%),低于min_plr的组合会被 Dispatch 层判定为喘振而剔除;
cop_multiplier:机组老化衰减系数(若该机结垢严重效率下降 5%,可设为 0.95)。
板块 2:主机调度与保护约束(chiller_scheduling)
min_on_hours/min_off_hours:压缩机单次启停后的强制闭锁时长(小时);
initial_on:第 0 时段开始前各机是否处于开机状态;
initial_state_hours:初始状态已连续保持的时长(用于判定进入第 1 时段时是否允许立刻切机);
runtime_hours:现场 SCADA 读取的设备历史累计运行时长;
prefer_shorter_runtime:是否开启“零能耗代价”的设备磨损均衡;
terminal_policy:计划末尾策略(require_complete要求规划结束时无未到期闭锁,carry_over允许未到期闭锁传递给下个日前规划)。
板块 3:遗传算法与物理边界(optimization)
max_temperature_step_c:相邻时段控制温度最大允许变化幅度(默认 1.5℃,防止水温剧变冲击系统);
bounds:各水路供回水温度与逼近度物理上下限。
4. 命令行实操与实验复现
从项目根目录打开终端,支持多种命令行调用模式:
操作 1:默认基准运行
- 行为:使用
examples/load.csv负荷和默认配置执行优化,全流程耗时约 3.5 秒。
操作 2:指定自定义负荷与输出目录
操作 3:传入设备历史累计运行小时(测试磨损均衡)
- 效果:程序会识别 3# 主机(历史仅 450h)累计最短,在同等能耗的候选方案中优先启用 3# 机,而将 1# 机(1200h)排后。
5. 优化产物解读与分析
程序执行完毕后,会在输出目录中生成以下关键文件:
1. schedule.csv —— 下发控制策略表
包含每个时段的终极控制设定值:
chw_supply_c:冷冻供水设定值(℃)
cw_supply_c:冷却供水设定值(℃)
chiller_on:各冷机的开停布尔列表(如[true, true, false, false])
chiller_load_kw:各冷机承担的冷量
chw_pump_frequency_hz/cw_pump_frequency_hz:水泵变频频率
tower_frequency_hz:冷却塔风机变频频率
2. result.json —— 综合指标与末态快照
- 核心能效指标:全站制冷系统综合能效比 $\text{SCOP} = \frac{50384.51}{7570.64} = 6.655$;
terminal_chiller_state:可直接作为下一个周期日前规划的初始状态输入。
- 作者:Tlyer Wang
- 链接:http://tlyer.wang/article/goa-03-operations
- 声明:本文采用 CC BY-NC-SA 4.0 许可协议,转载请注明出处。
相关文章


