储能调度遇见气象:用风光功率预测优化充放电与现货套利

做储能的人迟早会发现一件事:电池本身的物理特性是确定的,真正难的是"未来"。明天哪几个小时光照足、风出力大,现货价格在哪几个时段会塌、会尖,决定了这块电池今天该满充还是该留空。而"未来"这件事,本质上是一个气象问题。本文从一线工程视角,讲清如何用短期气象预报驱动风光功率预测,再把预测结果灌进储能的充放电优化里,做削峰填谷和现货套利;更重要的是,讲清预测不是一个点而是一条带分布的曲线,这条曲线的宽度(不确定度)如何反过来重塑你的 SOC 策略与最终收益。
关键要点
- 储能调度的真实链路是「气象预报 → 风光功率预测 → 价格/负荷预测 → 调度优化 → 充放电指令」,最上游的气象输入质量决定整条链路的收益天花板。
- 历史与预报要分两套数据源:历史回测、容量配置、套利调参用 ERA5 再分析(dataSourceId 取 era5),日前与日内实际调度用覆盖未来约 7 天的德国气象局预报(dataSourceId 取 ger),两者 CF 字段口径一致可无缝衔接。
- 转换链路里组件温度修正不能省(每升温 1℃ 晶硅效率约掉 0.35–0.45%),风电功率与风速近似三次方关系且切出风速附近存在「悬崖」,误差结构高度状态依赖。
- 日前光伏功率预测 NRMSE 常在 8%–15%、风电可达 15%–25%,把期望值当真值做确定性优化会得到对误差极其脆弱的计划;不确定度通过留裕量、避免不可逆边界动作、从点预测转向分布决策三处重塑 SOC 策略。
- 降低预测不确定度带来的收益往往大于把预测均值精度再提升一点,因为套利收益高度依赖「敢不敢在边界附近动作」,而这取决于对预测的信任度。
为什么储能调度的上游是气象,而不是电池
一个常见误区是把储能调度当成纯优化问题:给定电价曲线和出力曲线,求一个充放电序列让收益最大。这在事后复盘里成立,但在 D-1(日前)真实决策时,电价曲线和出力曲线都还不存在,你手里只有预测。其中风光出力的预测,几乎完全由未来的辐照和风速决定。
所以调度链路真实的形状是:气象预报 → 风光功率预测 → 价格/负荷预测 → 调度优化 → 充放电指令。最上游的输入质量,决定了整条链路的天花板。如果辐照预报系统性偏高 10%,那么下游再精巧的混合整数规划也只是在错误的曲线上求最优解,结果是把电池在该留电的时候放空。
历史与预报要分两套数据源处理,不能混用。历史回测、容量配置、套利策略调参用再分析数据,ERA5 是事实标准(ECMWF 第五代再分析,0.25° 网格、逐小时、1940 年至今)。日前与日内的实际调度则必须用预报数据,覆盖未来约 7 天的德国气象局(DWD)数值预报,对应运梦气象 API 的 dataSourceId 取 ger。两者的字段口径(CF 命名)一致,这让"用历史训练、用预报推理"的工程链路得以无缝衔接,避免在两套命名之间反复换名。
从气象要素到风光功率:转换链路里的工程细节
拿到气象要素只是第一步,要落到功率还有几个容易踩坑的环节。
光伏侧,关键输入是 rsds(地表水平短波,GHI)、dni(法向直接辐射)、dhi(散射水平辐射),以及 tas(气温,影响组件效率)。从 GHI 到组件平面辐照(POA)需要做倾斜面转换,再经过组件温度修正、逆变器效率、入射角与灰尘损耗。一个实战要点:组件温度修正不能省。夏季正午组件背板温度可能比气温高 25–30℃,每升高 1℃ 晶硅效率约掉 0.35–0.45%,忽略温度修正会在高温高辐照时段系统性高估出力,而那往往正是你计划放电套利的时段。
风电侧,核心是把 10m 风(uas/vas)外推到轮毂高度,或直接使用 100m 风分量(u100/v100)。运梦气象 API 直接提供派生的 ws/wd,省去自己合成的步骤。从风速到功率走机组功率曲线,这里有两个非线性放大效应:一是功率与风速近似三次方关系,风速预报 1 m/s 的误差在切入段会被放大成可观的功率误差;二是切出风速附近的"悬崖",风速预报跨过 25 m/s 一线,出力可能从满发瞬间归零。所以风电功率预测的误差结构是高度状态依赖的,均匀的误差假设会害死调度。
把预测灌进调度:削峰填谷与现货套利的优化骨架
有了出力曲线和价格曲线,调度优化的骨架是一个带时序耦合约束的线性/混合整数规划。决策变量是各时段充放电功率,目标依场景而定。
削峰填谷场景,目标是压平关口负荷或规避需量/分时电价的尖峰:低谷电价时段充电,尖峰时段放电覆盖负荷。约束包括 SOC 递推(下一时刻 SOC = 当前 SOC + 充电×效率 − 放电÷效率,乘以步长)、SOC 上下限、充放电功率上限、以及同一时段不能同时充放电。
现货套利场景,目标直接是 sum(放电功率 × 卖出价 − 充电功率 × 买入价 × 损耗系数)。这里的隐性成本必须显式建模:循环老化。如果不给每次充放电赋一个等效度电衰减成本,优化器会为了几分钱的价差疯狂浅充浅放,把电池循环寿命提前耗尽。实务上把单位吞吐的老化成本(元/kWh)加进目标函数做惩罚项,能显著改变最优解的"激进程度"。
两个场景常常叠加:一块电池既要满足容量租赁/需量管理的硬约束,又要在剩余容量里做套利,这时调度退化为一个分层问题——先锁定保供与合规义务,再用剩余 SOC 空间做收益最大化。国家"两个细则"对并网主体的考核与辅助服务结算,也会把预测准确度直接折算成真金白银,这进一步抬高了上游气象输入的价值。
不确定度才是主角:预测的宽度如何重塑 SOC 策略
到这里为止讲的都是"假装预测是准的"。真实世界里,日前光伏功率预测的 NRMSE 常在 8%–15%,风电更高,可达 15%–25%,且越往预报时效的后段误差越大。如果你拿预测的期望值当真值去做确定性优化,会得到一个对误差极其脆弱的调度计划。
不确定度对 SOC 策略的影响是结构性的,体现在三处。
第一,留裕量。当某时段出力预测的离散度大(比如对流性天气、风速在切出阈值附近),就不该把 SOC 顶到极限。给充电留上边界裕量、给放电留下边界裕量,本质是为预测误差买保险。预报越不确定,裕量越大。
第二,避免不可逆的边界动作。SOC 触到 0% 或 100% 是不可逆的——一旦放空再发现价格继续上涨,你已经没有牌可打。所以在高不确定度时段,优化目标里应当对"逼近边界"加额外惩罚,保留双向调节能力。
第三,从点预测转向分布决策。把日前预测做成多分位数(如 P10/P50/P90)或多情景集合,调度从确定性 LP 升级为鲁棒优化或随机规划:在 P90 低出力情景下仍能履约,在 P10 高出力情景下不弃电。一个低成本的工程近似是"情景缩减 + 滚动重优化"——用德国气象局预报生成几条代表性出力情景,求一个对所有情景都不太差的折中解,再随着实测数据到来每 15 分钟滚动重算,用日内的新信息持续纠偏日前的偏差。
收益侧的直觉很反直觉:降低预测不确定度带来的收益,往往大于把预测均值精度再提升一点。因为套利收益对"敢不敢在边界附近动作"高度敏感,而敢不敢动作取决于你对预测的信任度,也就是不确定度的窄与宽。这也是为什么把可靠的预报源(ger)接进来、把不确定度量化做扎实,比单纯调模型超参更值钱。
在运梦气象 API 上手
下面这段是可直接运行的最小示例:用 dataSourceId 取 ger 拉未来约 7 天的德国气象局预报,取辐照与风速字段,作为下游功率预测与调度优化的输入。响应是统一 JSON envelope,用 resp.json() 解析,data.timeList 与各字段数组按下标一一对应。
import os
import requests
API = "https://console.yun-meng.top/api/energy-weather/search/weather/action/downloadSync"
TOKEN = os.environ["YUNMENG_TOKEN"]
payload = {
"dataSourceId": "ger", # 德国气象局预报,未来约 7 天
"lat": 32.03253, "lon": 117.35184, # 站址经纬度(WGS84)
"stime": "2026-06-08 00:00",
"etime": "2026-06-14 23:00",
"fields": ["rsds", "dni", "dhi", "tas", "ws", "wd", "u100", "v100"],
"timezone": "8", # 东八区,必填
}
resp = requests.post(
API,
headers={"Authorization": f"Bearer {TOKEN}",
"Content-Type": "application/json"},
json=payload,
timeout=600,
)
resp.raise_for_status()
result = resp.json()
if not result.get("success"):
raise RuntimeError(result.get("msg", "查询失败"))
data = result["data"]
times = data["timeList"]
ghi = data["rsds"] # 地表短波辐射 W/m^2
ws = data["ws"] # 派生风速 m/s
print(f"预报点位拿到 {len(times)} 个时次")
for t, g, w in list(zip(times, ghi, ws))[:5]:
print(f"{t} GHI={g:.1f} W/m^2 风速={w:.2f} m/s")
拿到这些数组后,下一步就是把 GHI/风速喂进你的功率预测模型得到 P50 出力,再用历史 ERA5(dataSourceId 取 era5)做偏差订正与误差分布估计,得到 P10/P90,最后把多分位出力曲线连同电价曲线一起送进调度优化器。生产里建议把日前的一次性求解,配合日内每 15 分钟用最新预报滚动重优化,让 SOC 轨迹始终跟着最新的天气信息走。
常见问题
储能调度做现货套利,气象预报和电池本身哪个更重要?
气象预报是上游决定项。电池物理特性是确定的,真正难的是预测未来哪些时段光照足、风出力大、现货价格会塌或尖。整条链路是「气象预报 → 风光功率预测 → 价格/负荷预测 → 调度优化 → 充放电指令」,最上游的输入质量决定整条链路的天花板。
储能套利的历史回测和日前调度,应该用哪种气象数据源?
要分两套。历史回测、容量配置、套利策略调参用 ERA5 再分析(dataSourceId 取 era5,0.25° 网格、逐小时、1940 年至今);日前与日内的实际调度用覆盖未来约 7 天的德国气象局数值预报(dataSourceId 取 ger)。两者 CF 字段命名口径一致,可以做到「用历史训练、用预报推理」无缝衔接。
光伏功率预测为什么必须做组件温度修正?
因为忽略温度修正会在高温高辐照时段系统性高估出力,而那往往正是计划放电套利的时段。夏季正午组件背板温度可能比气温高 25–30℃,每升高 1℃ 晶硅效率约掉 0.35–0.45%,不修正就会在最关键的时段把出力算高,误导调度。
日前功率预测的误差有多大,对储能调度意味着什么?
日前光伏功率预测的 NRMSE 常在 8%–15%,风电更高、可达 15%–25%,且越往预报后段误差越大。如果拿预测期望值当真值做确定性优化,会得到一个对误差极其脆弱的调度计划,因此需要把不确定度显式带进 SOC 策略,例如留裕量、避免不可逆的边界动作、从点预测转向分位数/情景的分布决策。
为什么降低预测不确定度比提升预测均值精度更值钱?
因为套利收益对「敢不敢在边界附近动作」高度敏感,而敢不敢动作取决于对预测的信任度,也就是不确定度的窄与宽。所以把可靠的预报源接进来、把不确定度量化做扎实,往往比单纯调模型超参带来更大的收益提升。
收尾
储能套利不是"低买高卖"那么简单,它是一个在气象不确定性下做时序决策的问题。把链路理顺:用德国气象局预报驱动风光功率预测、用 ERA5 做训练与偏差订正、把不确定度显式带进调度优化,再叠加循环老化成本与边界留裕——这套组合拳带来的收益提升,通常远大于在单一模型上反复堆参数。从今天起,先把上游那条带分布的预测曲线做扎实,剩下的优化才有意义。
参考与延伸阅读
- Hersbach, H., Bell, B., Berrisford, P., Hirahara, S., Horányi, A., Muñoz-Sabater, J., 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
- Eaton, B., Gregory, J., Drach, B., Taylor, K., Hankin, S., et al. NetCDF Climate and Forecast (CF) Metadata Conventions. CF Conventions Community. https://cfconventions.org/cf-conventions/cf-conventions.html
- Antonanzas, J., Osorio, N., Escobar, R., Urraca, R., Martinez-de-Pison, F. J., & Antonanzas-Torres, F. (2016). Review of photovoltaic power forecasting. Solar Energy, 136, 78–111. https://doi.org/10.1016/j.solener.2016.06.069
- 国家能源局.《电力辅助服务管理办法》(国能发监管规〔2021〕61号). 2021年12月发布(与《电力并网运行管理规定》国能发监管规〔2021〕60号配套,各区域据此制定『两个细则』)。