气象数据

两个细则准确率考核怎么过:ERA5回测+德国气象局预报降考核电量实战

· 南京运梦科技算法团队 · 评审 算法负责人

两个细则准确率考核怎么过:ERA5回测+德国气象局预报降考核电量实战 封面

每个月场站结算单上那笔功率预测考核电量,是不少新能源场站运营最肉疼的一块「隐性损失」。装机几十兆瓦的场站,预测准确率每差一个百分点,一年被扣掉的考核电量折算成电费,往往就是几十万量级。问题是,很多团队对国家「两个细则」(《并网运行管理实施细则》与《辅助服务管理实施细则》)的考核口径并没有吃透,预测系统买回来挂着跑,准确率长期卡在合格线边缘,钱就这么一笔笔流走。这篇文章把考核口径、合格率定义、罚款机制讲清楚,再给出一条用 ERA5 历史回测做偏差订正、用德国气象局预报把短期准确率顶上去的可落地路径。

关键要点

  • 「两个细则」把功率预测拆成两条考核线:短期(通常 0-72 小时、每天定时上报)与超短期(0-4 小时、每 15 分钟滚动上报)。
  • 准确率多用均方根误差口径,分母是开机/装机容量而非实测值,因此满发时段(光伏正午、风电大风段)的偏差被放得最大,优化资源应优先压在这里。
  • 罚款是分段的:准确率每低于合格线 1 个百分点按当月上网电量约 0.2% 核定考核电量,所以把准确率从 78% 拉到 82%(跨过合格线)的边际收益远大于从 90% 拉到 92%。
  • 第一步用 ERA5(ECMWF 第五代再分析,0.25° 网格、逐小时、覆盖 1940 年至今)拉过去 2-3 年气象与 SCADA 实测拟合功率特性曲线,统计条件偏差订正表,把系统性偏差先吃掉。
  • 第二步用德国气象局预报(dataSourceId 为 ger,覆盖未来约 7 天)逐日滚动驱动当天短期与超短期,叠加 ERA5 回测的条件订正后输出出力曲线,不依赖更换预测系统。

考核到底考什么:口径先对齐

「两个细则」由各区域/省级电网公司落地,各地阈值略有差异,但骨架一致。功率预测被拆成两条考核线:短期预测(次日 0 时起未来若干天、通常关注 0-72 小时,每天规定时刻前上报)和超短期预测(未来 0-4 小时,每 15 分钟滚动上报一次,常用第 16 个点即未来 4 小时点参与考核)。

准确率的核心指标多用均方根误差准确率,常见形式是:准确率 = 1 − sqrt( mean( ((P_预测 − P_实际) / Cap)^2 ) ),其中 P 是各时刻功率、Cap 是开机容量或装机容量(注意分母用的是容量而不是实测值,这一点直接决定了大出力时段的误差权重)。光伏短期合格线常见在 80%–83%,风电在 80% 左右;超短期门槛更高,光伏常达 85% 以上。各地还会叠加合格率口径:单点误差小于某阈值(如 20% 容量)才算合格点,合格点占比要达标。

关键认知:考核分母是容量,意味着满发时段的预测偏差被放得最大。光伏正午、风电大风过程,恰恰是最难报准又最容易被重罚的时段——优化资源要优先砸在这里,而不是平均用力。

罚款机制:钱是怎么被扣走的

罚款不是按「准确率低多少」线性扣,而是分段的。典型做法是设一条合格线,准确率每低于合格线 1 个百分点,按当月上网电量的某个比例(如 0.2%)核定一笔考核电量,乘以挂牌电价就是真金白银。超短期与短期分别考核、分别计费,未按时上报或上报中断还有独立的「两个细则」考核条目(缺报、零报直接顶格罚)。

这带来两个工程结论:第一,保上报链路的可用性和提准确率同等重要,调度数据中断、接口超时导致的缺报,惩罚比预测差几个点还狠;第二,由于是分段阈值,把准确率从 78% 拉到 82%(跨过合格线)的边际收益,远大于从 90% 拉到 92%。优化排期应当先保合格线,再谈优秀

ERA5 历史回测:把系统性偏差先吃掉

预测做不准,很大一部分不是模型差,而是系统性偏差没订正:NWP 在你这个场站的地形上常年偏高或偏低、辐射在特定云况下系统性高估。要量化并订正它,需要一段长时间、物理一致的「真值近似」——ERA5 正是干这个的。ERA5 是 ECMWF 第五代再分析,0.25° 网格、逐小时、覆盖 1940 年至今,对新能源回测是事实标准。

落地方法分三步。第一步,用 ERA5 拉取场站点位过去 2-3 年的逐小时气象(光伏取 rsds/dni/dhi 辐射,风电取 u100/v100 反算 100m 风速 ws/wd),与同期 SCADA 实测出力对齐,建立「气象→出力」的功率特性映射,这条曲线比厂家铭牌曲线靠谱得多。第二步,把历史预报(或预报代理)与 ERA5 逐时刻比对,统计偏差的条件分布——按月份、按时段、按风向扇区、按辐射区间分桶,得到一张偏差订正表(可以是简单的分桶 bias,也可以是分位数映射 quantile mapping)。第三步,把订正表挂到实时预报后处理上,让明天的预报先减去它在该条件下的历史系统偏差。

工程细节上要注意:ERA5 滞后约 5 天、辐射变量是时段累积语义需换算成 W·m⁻²、复杂地形和城市热岛区偏差会放大,建议保留站点实测做最终校准,不要把 ERA5 当成无偏真值。

德国气象局预报:把短期与超短期顶上去

回测订正解决的是「系统偏差」,但当天的天气过程还得靠预报。预报数据统一使用德国气象局(DWD,dataSourceId 为 ger),覆盖未来约 7 天,足够覆盖短期 0-72 小时与超短期 0-4 小时的输入需求。

用法上有几个能直接换来准确率的做法。其一,逐日滚动取最新预报而不是只取一次:超短期考核要每 15 分钟上报,临近时刻用最新一轮预报误差最小。其二,把德国气象局预报喂进上一节训好的功率特性映射,再叠加 ERA5 回测得到的条件偏差订正,输出场站出力曲线——预报负责趋势,订正负责消除系统性高低估。其三,针对考核权重最大的满发时段(光伏正午、风电大风段)单独评估订正残差,必要时再加一层针对该区间的局部订正。

经验上,先订正再预测这套组合,对常年卡在合格线边缘的场站,把短期 RMSE 准确率抬过合格线、把超短期合格点占比拉上去,是性价比最高的一步;它不依赖更换预测系统,只是在数据与后处理上做扎实。

在运梦气象 API 上手

历史回测用 era5、当天预报用 ger,两个数据源同一套接口,端点为 POST /api/energy-weather/search/weather/action/downloadSync。请求体为 JSON,响应是统一 envelope,用 resp.json() 解析后从 data 里按字段名取等长数组(与 timeList 一一对应)。下面示例先拉 ERA5 历史辐射、再拉德国气象局未来预报:

import os, requests

URL = "https://console.yun-meng.top/api/energy-weather/search/weather/action/downloadSync"
HEADERS = {
    "Authorization": f"Bearer {os.environ['YUNMENG_TOKEN']}",
    "Content-Type": "application/json",
}

def fetch(source, stime, etime, fields):
    body = {
        "dataSourceId": source,        # 历史用 "era5",预报用 "ger"
        "lat": 32.03253, "lon": 117.35184,
        "stime": stime, "etime": etime,
        "timezone": "8",               # 时区偏移,必填
        "fields": fields,
    }
    result = requests.post(URL, headers=HEADERS, json=body, timeout=600).json()
    if not result.get("success"):
        raise RuntimeError(result.get("msg", "查询失败"))
    return result["data"]

# 1) ERA5 历史回测:辐射三件套,做功率映射与偏差订正
hist = fetch("era5", "2023-01-01 00:00", "2024-12-31 23:00",
             ["rsds", "dni", "dhi"])
print("ERA5 样本数:", len(hist["timeList"]), "首点 GHI:", hist["rsds"][0])

# 2) 德国气象局未来 ~7 天预报:实时预测输入
fcst = fetch("ger", "2026-06-08 00:00", "2026-06-14 23:00",
             ["rsds", "ws", "wd"])
print("预报点数:", len(fcst["timeList"]), "首点风速:", fcst["ws"][0])

拿到 hist 与 fcst 后,工程化的闭环是:用 hist 与 SCADA 实测拟合功率特性曲线并统计条件偏差表,把偏差表作用到 fcst 上得到订正后的出力曲线,再按短期/超短期上报频率切片上送调度。响应里不返回 CSV 或 NetCDF,也没有 format 参数,直接拿 JSON 数组转 DataFrame 即可。

收尾

「两个细则」考核的本质,是用容量加权的误差给你的预测系统定价。想少被扣电量,不必一上来就换系统:先用 ERA5 做长周期回测,把藏在地形与气候里的系统偏差量化订正掉;再用德国气象局预报滚动驱动当天的短期与超短期,把资源优先压在满发这类高权重时段。把数据底座和后处理做扎实,准确率跨过合格线带来的边际收益,往往比任何花哨模型都来得实在。

常见问题

两个细则功率预测准确率怎么算?

核心指标多用均方根误差准确率,常见形式是 1 − sqrt( mean( ((P_预测 − P_实际) / Cap)^2 ) ),其中 P 是各时刻功率、Cap 是开机容量或装机容量。分母用的是容量而非实测值,这决定了大出力时段的误差权重最大。

短期和超短期合格率分别是多少?

光伏短期合格线常见在 80%–83%、风电在 80% 左右;超短期门槛更高,光伏常达 85% 以上。各地阈值略有差异,还会叠加合格率口径——单点误差小于某阈值(如 20% 容量)才算合格点,合格点占比要达标。

功率预测考核电量是怎么扣的?

罚款不是线性扣,而是分段的:设一条合格线,准确率每低于合格线 1 个百分点,按当月上网电量的某个比例(如 0.2%)核定一笔考核电量,乘以挂牌电价就是实际损失。超短期与短期分别考核计费,缺报、零报还会直接顶格罚。

为什么用 ERA5 做历史回测来订正偏差?

预测做不准很大一部分来自没订正的系统性偏差。ERA5 是 ECMWF 第五代再分析,0.25° 网格、逐小时、覆盖 1940 年至今,可作为长周期「真值近似」,用它对齐 SCADA 实测拟合功率特性曲线、统计条件偏差订正表,把常年偏高或偏低的系统偏差先吃掉。

用哪个预报源驱动当天的短期与超短期预测?

预报数据统一使用德国气象局(DWD,dataSourceId 为 ger),覆盖未来约 7 天,足够覆盖短期 0-72 小时与超短期 0-4 小时的输入需求;配合逐日滚动取最新预报,临近时刻误差最小。

参考与延伸阅读

  • 国家能源局.《电力并网运行管理规定》(国能发监管规〔2021〕60号)、《电力辅助服务管理办法》(国能发监管规〔2021〕61号). 2021. (各区域电网在此基础上制定"两个细则"——《区域并网运行管理实施细则》《区域并网发电厂辅助服务管理实施细则》)
  • 中华人民共和国国家标准. GB/T 40607—2021《调度侧风电或光伏功率预测系统技术要求》. 全国电网运行与控制标准化技术委员会(TC446), 2021-10-11 发布, 2022-05-01 实施. https://std.samr.gov.cn/gb/search/gbDetailed?id=CE1E6A1DD53258F6E05397BE0A0A68DF
  • Hersbach, H., Bell, B., Berrisford, P., et al. (2020). The ERA5 global reanalysis. Quarterly Journal of the Royal Meteorological Society, 146(730), 1999–2049. https://doi.org/10.1002/qj.3803
  • Zängl, G., Reinert, D., Rípodas, P., & Baldauf, M. (2015). The ICON (ICOsahedral Non-hydrostatic) modelling framework of DWD and MPI-M: Description of the non-hydrostatic dynamical core. Quarterly Journal of the Royal Meteorological Society, 141(687), 563–579. https://doi.org/10.1002/qj.2378