第四节:储能参与现货市场
现货市场,说白了就是「今天定明天怎么跑」的游戏。我做了这么多年储能项目,发现很多同行把精力都放在容量市场和辅助服务上,反而忽略了现货市场这块肉。其实,现货市场才是检验储能真功夫的地方。
4.1 日前市场报价策略
日前市场,就是提前一天报出第二天的充放电计划。你想想看,这跟股票交易有点像——你得预测明天的电价走势,然后决定什么时候买(充电)、什么时候卖(放电)。
我个人习惯用「价格阈值法」来做基础报价。核心逻辑很简单:
- 当预测电价低于某个阈值时,我报充电价,准备吃电
- 当预测电价高于某个阈值时,我报放电价,准备吐电
- 中间区域,我选择不动作,或者做备用
但这里有个坑——我记得有一次在西北某项目,我们按历史数据设了阈值,结果第二天光伏大发,中午电价直接跌到负值。嗯,那次我们亏了不少。后来我总结了一个经验:阈值不能是固定的,得动态调整。
动态阈值调整公式(我常用的简化版):
充电阈值 = 历史均价 × 0.7 - 新能源预测出力系数
放电阈值 = 历史均价 × 1.3 + 负荷预测系数
这个公式虽然粗糙,但在实际项目中跑起来效果还不错。你可以在自己的模型里试试看。
报价策略的另一个关键点是「分段报价」。我建议把一天的充放电计划分成4-6个时段,每个时段独立报价。这样做的好处是:
- 可以灵活应对不同时段的电价波动
- 降低整体风险——一个时段报错了,其他时段还能补回来
- 符合大多数现货市场的规则要求
4.2 实时市场优化调度
实时市场,就是「现在就要决定现在怎么跑」。这跟日前市场完全不同——日前你可以慢慢算,实时市场你得秒级响应。
我在项目中遇到过最头疼的事:实时市场电价突然飙升,但我们的储能系统还在按日前计划慢悠悠地充电。你说气不气人?
所以,实时优化调度的核心是「滚动优化」。具体做法:
- 每5-15分钟重新计算一次最优策略
- 把最新的电价信号、SOC状态、设备健康度都考虑进去
- 只执行当前时段的最优动作,下一时段重新算
我的一个小技巧:实时优化时,别追求全局最优。你想想看,电价变化那么快,等你算完全局最优,电价早变了。我一般用「贪婪算法」——只看未来1-2个时段,快速出结果。虽然理论上有损失,但实际跑下来,比那些算半天的模型赚得还多。
实时市场还有一个容易被忽略的点:响应速度。我曾经见过一个项目,优化算法写得很好,但系统响应延迟超过30秒。结果呢?等指令发下去,电价窗口已经过了。所以,我建议在代码层面做优化:
# 伪代码示例:实时优化调度核心逻辑
while True:
price = get_realtime_price() # 获取实时电价
soc = get_battery_soc() # 获取当前SOC
health = get_battery_health() # 获取电池健康度
# 快速决策(不超过5秒)
if price > discharge_threshold and soc > 20%:
action = 'discharge'
elif price < charge_threshold and soc < 90%:
action = 'charge'
else:
action = 'idle'
execute_action(action)
sleep(300) # 5分钟后再算
4.3 充放电策略的数学建模
说到数学建模,很多工程师就头大。其实没那么复杂,我把它拆成三个核心约束:
| 约束类型 | 数学表达 | 实际含义 |
|---|---|---|
| SOC约束 | 20% ≤ SOC(t) ≤ 90% | 别把电池放空,也别充满 |
| 功率约束 | |P(t)| ≤ P_max | 充放电功率不能超过设备极限 |
| 能量平衡 | ΔSOC = η·P(t)·Δt | 充进去的电和放出来的电要守恒 |
嗯,这里要注意:效率系数η不是常数。我实测过,不同SOC区间、不同充放电倍率下,η能差5-8个百分点。所以,我建议在模型里用分段线性函数来拟合η。
避坑指南:我曾经在一个项目中直接用固定η=0.9建模,结果实际运行发现收益比预期少了12%。后来一查,是高温环境下效率下降导致的。从那以后,我建模时一定会加上温度修正项。
完整的充放电策略模型,我一般写成这样:
目标函数:max ∑(放电收入 - 充电成本 - 折旧成本)
约束条件:
1. SOC(t+1) = SOC(t) + η_charge·P_charge(t)·Δt - P_discharge(t)·Δt/η_discharge
2. 0.2 ≤ SOC(t) ≤ 0.9
3. 0 ≤ P_charge(t) ≤ P_max
4. 0 ≤ P_discharge(t) ≤ P_max
5. P_charge(t)·P_discharge(t) = 0 // 不能同时充放电
这个模型看着简单,但实际求解时有个坑:约束5是非线性的。我一般用「二进制变量法」来处理:引入一个0-1变量,表示充放电状态,把非线性约束转成线性约束。这样就能用标准的线性规划求解器来算了。
4.4 知识体系总览
说了这么多,我画张图帮你理一理思路:
这张图把三个核心模块串起来了。你想想看,日前市场是「计划」,实时市场是「执行」,数学建模是「底线」。三者缺一不可。
最后说一句:别把模型搞得太复杂。我见过有人用深度学习做现货市场预测,结果模型还没跑完,电价已经变了三回。有时候,简单的线性规划加上经验修正,反而更实用。