小P学长
小P学长

微电网负荷、光伏、风电合成数据:从字段设计到可复现实验的验收指南

一份可直接执行的数据工程指南:定义时间轴、单位与符号,生成有关联的负荷和风光序列,注入可解释异常,并用结构、物理、统计和泄漏检查完成验收。

先判断:你的任务到底需不需要合成数据

合成数据最适合解决“真实数据还没拿到,但代码和实验流程要先跑通”的问题。它可以用于读取接口、特征工程、预测管线、微电网调度、需求响应、异常检测和可视化的联调,也适合构造边界场景测试程序是否会报错。它不能替代真实地区、园区、电站、设备或用户的测量,更不能据此宣称真实系统的预测精度、经济收益或安全水平。

如果你的研究问题依赖当地天气、用户行为、设备效率、电价规则或网络约束,正确路线是:先用明确标注的合成数据把流程做通,再换成有授权、有版本记录的真实数据复验。不要把“曲线看起来合理”当成“数据代表现实”。

第一步:在写生成器前先写数据合同

数据合同决定后续代码如何解释每一列。至少要固定以下内容:

  • 时间轴:起止时间、时区、是否包含末端、采样间隔,以及夏令时或缺测导致的不规则间隔如何处理。
  • 单位:功率使用 kW 还是 MW,能量使用 kWh 还是 MWh,电价是元/kWh 还是其他口径。
  • 符号:负荷和发电是否都记录为非负量;购电、售电、充电、放电采用什么正负方向。
  • 边界:光伏和风电装机上限、负荷非负、夜间光伏为零、储能 SOC 和功率的范围。
  • 追溯字段:场景名、随机种子、生成器版本、配置版本以及 is_synthetic 标记。

一个常见错误是把功率逐行相加后直接称为电量。若序列每 15 分钟记录一次平均功率,则电量应按 E = Σ(P × 0.25 h) 计算。若间隔不规则,应逐段使用真实时间差积分,不能统一乘 0.25。

第二步:让变量有关联,而不是每列独立抽随机数

最小可用的合成序列应同时具有确定性骨架和随机扰动。电负荷可以由日内基线、工作日或周末因子、温度响应和有界噪声组成;光伏应受昼夜窗口、天气衰减和装机容量约束;风电可以从有时间连续性的风速代理映射到简化功率曲线。随机噪声只负责制造差异,不能代替日周期、天气关联和物理上限。

建议先分别生成天气代理、负荷和可再生出力,再计算派生量。例如在不考虑储能、可调负荷和网络损耗的简化接口里,可以定义:

  • net_kw = electric_load_kw - pv_power_kw - wind_power_kw
  • grid_import_kw = max(net_kw, 0)
  • curtailed_power_kw = max(-net_kw, 0)

这只是接口代理,不是潮流或结算结果。加入储能后,还必须写清 SOC 递推、充放电效率、功率上限、容量上限、初末 SOC 和禁止同时充放电等约束;加入配电网后,还需另行验证电压、支路容量与网损。

第三步:把场景配置和随机种子当成实验输入

不要把“阴天”“强风”“尖峰负荷”等场景写死在代码分支里。把装机容量、负荷倍数、天气衰减、噪声幅度、起止时间和随机种子放进独立配置文件,输出中保存场景名和版本。这样才能知道某个结果由哪组输入生成,也便于只改变一个因素做对照实验。

Python 官方文档说明,复用相同种子可以在相同条件下重现伪随机序列;但算法与播种方法可能随 Python 版本演进。因此,仅记录种子还不够,还应保存 Python 和依赖版本。需要安全令牌时不能使用普通伪随机生成器,但科研合成序列的复现和安全令牌是两个不同用途。

第四步:异常注入必须对应具体故障

“给全部数据加大噪声”无法充分测试数据清洗。建议将以下异常分开开关、分开计数:

  1. 随机缺失与连续缺失:分别测试插值和长时间断档处理。
  2. 重复时间戳、乱序和不规则间隔:测试索引去重、排序及重采样。
  3. 尖峰、负值和容量越界:测试边界检查与异常告警。
  4. 传感器卡死:连续多行完全相同,测试变化率和滚动方差规则。
  5. 缓慢漂移:测试仅靠固定阈值无法发现的偏移。

异常数据仍须保留 is_synthetic=True,并单独输出异常类型或注入日志。训练异常检测模型时,不能把异常答案列误放进输入特征。

第五步:用四层检查验收,不要只看折线图

1. 结构检查

  • 必需列齐全、类型可解析、时间戳唯一且递增。
  • 正常场景的时间间隔固定;异常场景的断点数量与配置一致。
  • 合成标记、场景名和版本信息没有缺失。

2. 物理与业务边界

  • 负荷、光伏和风电功率不为负,出力不超过配置容量。
  • 夜间光伏为零或接近明确设定的数值容差。
  • 简化购电与弃电代理满足定义;若有储能,则逐时功率平衡与 SOC 递推误差在容差内。

3. 时间与统计特征

  • 检查日内峰谷、工作日差异、爬坡率、分位数和自相关,不只比较均值。
  • 检查温度与负荷、风速与风电、日照窗口与光伏之间的方向性关系。
  • 多次更换种子后,重要统计量不应无解释地剧烈漂移。

4. 实验泄漏检查

  • 按时间切分训练、验证和测试集,不要随机打散后让未来信息进入过去。
  • 标准化、缺失填补和特征选择只在训练集拟合,再应用到验证和测试集。
  • 若多个场景由相同基础曲线派生,按基础曲线分组切分,避免近乎重复的样本跨集合。

一个可执行的最小验收清单

  1. 用固定配置和种子生成两次,逐值比较结果是否一致。
  2. 验证行数:天数 × 24 × 60 ÷ 分钟间隔,并核对起止端点定义。
  3. 统计重复、缺失、负值、容量越界和时间断点数量。
  4. 把 kW 按实际时间差转换为 kWh,对购电、发电和负荷做能量级对账。
  5. 画 24 小时叠图,同时检查负荷峰谷、夜间光伏和风电连续性。
  6. 运行至少三个不同种子,比较均值、P05、P50、P95、最大爬坡率和关键相关性。
  7. 在 README、图题和导出文件里明确写“合成数据”,记录生成日期、代码版本、配置和限制。

公开样例和付费生成包的边界

本站公开的 7 天样例有 672 行、15 分钟粒度,足够你检查字段、单位和接口是否匹配。它不是真实测量,也不包含付费源码。只有当你确实需要修改生成规则、切换五类配置、注入异常并运行自动验收时,才需要考虑生成与验收包。购买的不是“神秘数据”,而是可修改的生成器、配置、字段字典、验收脚本和测试。

进一步校准时优先参考官方数据说明

如果要让研究场景更贴近特定可再生能源特性,应从权利清晰的官方数据和文档了解字段、时间分辨率和适用范围,而不是复制来历不明的网盘文件。以下资料可作为方法和字段设计参考;引用它们不表示本站样例源自这些数据:

最后的判断标准很朴素:如果别人拿到你的配置、版本、种子和验收结果,能否重现同一份数据,并清楚知道它能说明什么、不能说明什么。能做到这一点,合成数据才是可审计的实验资产,而不是一张看起来像真的曲线图。