3. 功率预测数据体系
功率预测的精度上限,往往不由模型决定,而由数据体系决定。一个风电场或光伏电站的预测系统,本质上是在做一件事:把来自不同源头、不同时间尺度、不同空间分辨率的数据,映射成未来一段时间内场站并网点的功率曲线。这条映射链的输入端,就是本节要讨论的四类数据——气象数据、场站数据、运行数据、卫星与雷达数据。它们各自回答不同的问题,又必须在时间轴上严格对齐,才能被模型有效使用。
四类数据的角色分工
气象数据回答“未来天气会怎样”。它通常来自数值天气预报(NWP)模式,例如全球模式或区域中尺度模式,输出风速、风向、温度、气压、湿度、辐照度、云量等要素,时间分辨率常见为15分钟到1小时,空间分辨率从几公里到几十公里。对风电而言,轮毂高度风速和风切变是关键;对光伏而言,总辐照度、直射辐照度和云量是核心。NWP是预测的“前瞻信息源”,但它存在系统性偏差,需要后续订正。
场站数据回答“这个场站长什么样”。它包括装机容量、机组或逆变器型号与数量、轮毂高度、机位坐标、地形高程、地表粗糙度、光伏组件倾角与朝向、汇流箱与箱变拓扑等静态信息。这些数据不随时间变化,却决定了气象条件如何转化为功率。例如,同样10 m/s的风速,在不同轮毂高度和功率曲线下,输出功率可能相差数倍。
运行数据回答“场站现在和过去实际发了多少”。它来自SCADA系统,包括有功功率、无功功率、风速、风向、转速、桨距角、组件温度、直流电压电流等,时间分辨率通常为秒级到分钟级。运行数据是模型训练的目标变量来源,也是识别设备状态、限电、停机等异常的依据。
卫星与雷达数据回答“云和天气系统正在如何移动”。卫星云图提供大范围云系分布与演变,雷达回波提供降水粒子和强对流的位置与强度。对光伏而言,卫星云图可用于短临云遮挡预判;对风电而言,雷达和卫星可辅助识别阵风锋、对流单体等快速变化过程。它们的时间分辨率高,但空间覆盖和反演精度需要与地面观测融合。
数据采集:先解决“拿得到、拿得准”
采集环节的核心不是“连上数据库”,而是明确每个数据源的接口方式、采样频率和时标来源。NWP通常通过文件或API按批次下发,时标为预报起报时刻加预报时效;SCADA通过OPC、Modbus或数据库接口读取,时标为设备本地时钟;卫星和雷达数据则常以栅格文件或流式接口到达。三类时标如果不统一,后续对齐就会引入系统性偏差。
实际工程中,建议为每条数据记录保留三个字段:数据时标(该值代表的时间点)、入库时标(系统收到的时间)、质量标记(正常、可疑、缺失、插补)。例如SCADA的1分钟功率,若某分钟通信中断,不应直接补零,而应标记为缺失,避免把“没有数据”误当成“功率为零”。
清洗:把物理上不可能的值挡在门外
清洗要结合物理约束和运行状态。常见规则包括:风速为负或超过切出风速、功率超过装机容量、辐照度夜间非零、组件温度低于环境温度等,均应判为异常。更关键的是识别限电与停机:当调度指令限制出力时,SCADA有功功率会低于理论可发功率,这类样本若直接用于训练,会让模型学到“有风也不发电”的错误关系。处理方式是根据限电标志位、桨距角、转速等辅助变量,将限电时段单独标记,训练时降权或剔除。
对齐:让不同频率的数据说同一件事
对齐包含三个层次:时间对齐、空间对齐和语义对齐。时间对齐是把NWP的15分钟、SCADA的1分钟、卫星的10分钟统一到同一时间网格,常用方法是先聚合到较粗粒度(如15分钟平均),再对NWP做线性插值。空间对齐是把NWP网格点插值到场站机位或场站中心,常用双线性插值或反距离加权。语义对齐则是确认“风速”是轮毂高度还是测风塔高度、“辐照度”是水平面还是倾斜面。
一个容易被忽略的问题是滞后。SCADA风速传感器与功率输出之间存在惯性,NWP的预报时效也存在起报延迟。若不做滞后修正,模型可能把“当前风速”错误地关联到“上一时刻功率”。实践中可通过互相关分析确定最佳滞后步长,再在特征工程中平移对应序列。
质量控制:用指标判断数据能不能用
质量控制需要可量化的判据。常用指标包括:完整率(实际记录数/应记录数)、有效率(通过校验的记录数/实际记录数)、越限率(超出物理范围的记录占比)、一致性(如功率与风速的单调关系是否被破坏)。一般要求单月完整率不低于95%,有效率不低于90%,否则该时段数据不宜直接用于模型训练。
| 检查项 | 判据示例 | 不通过时的处理 |
|---|---|---|
| 功率范围 | 0 ≤ P ≤ 装机容量 | 标记异常,核查是否限电或传感器故障 |
| 风速范围 | 0 ≤ v ≤ 40 m/s | 剔除或插补,记录越限率 |
| 夜间辐照 | 夜间GHI应接近0 | 检查传感器零点漂移 |
| 时标连续性 | 相邻记录间隔等于采样周期 | 标记缺失段,不补零 |
| 限电一致性 | 限电标志与功率下降同步 | 修正标志位或剔除该时段 |
一个可执行的质量检查片段
下面示例对15分钟功率序列做基础质控,输出完整率、越限率和异常时段。参数为教学假设值,实际使用时按场站容量和传感器量程调整。
import pandas as pd
import numpy as np
# df: 索引为时间戳,含 power_kw, wind_ms, limit_flag
CAP = 50000.0 # 装机容量 kW,示例值
V_MAX = 40.0 # 风速上限 m/s,示例值
expected = pd.date_range(df.index.min(), df.index.max(), freq='15min')
completeness = len(df) / len(expected)
mask_power = (df.power_kw < 0) | (df.power_kw > CAP)
mask_wind = (df.wind_ms < 0) | (df.wind_ms > V_MAX)
over_limit_rate = (mask_power | mask_wind).mean()
# 限电时段:标志为1且功率明显低于同风速历史中位数
normal = df[df.limit_flag == 0]
median_curve = normal.groupby(pd.cut(normal.wind_ms, bins=20)).power_kw.median()
curtailed = df[(df.limit_flag == 1) & (df.power_kw < 0.6 * df.wind_ms.map(
lambda v: median_curve.get(pd.IntervalIndex.from_breaks(
np.linspace(0, V_MAX, 21)).get_loc(v), np.nan)))]
print(f"完整率={completeness:.3f}, 越限率={over_limit_rate:.3f}")
print(f"疑似限电时段数={len(curtailed)}")
运行后若完整率低于0.95或越限率高于0.02,应先排查采集链路和传感器,而不是直接进入建模。疑似限电时段应导出清单,与调度记录核对后再决定是否纳入训练集。
四类数据的协同关系
四类数据不是并列堆叠,而是有明确的因果链:气象和卫星雷达提供“未来可能的大气状态”,场站数据定义“这个状态如何转化为功率”,运行数据提供“历史上实际转化成了多少”,质量控制则决定“哪些样本可信”。缺少场站数据,模型无法把NWP风速映射到具体机位;缺少运行数据,模型无法学习真实功率曲线;缺少卫星雷达,短临突变场景的响应会明显变慢。因此,数据体系建设的重点不是追求单一数据源的精度,而是保证四类数据在时间、空间和语义上的一致性与可追溯性。