ARTICLE · INTELLIGENCE

战地情报 · 详情页

来自尧图项目组的一线实战观察与深度解析

风电-光热-生物质混合电站鲁棒优化调度模型解析

风电-光热-生物质混合电站鲁棒优化调度模型解析

1. 混合电站优化调度背景与挑战

在碳中和目标下,风电-光热-生物质混合电站正成为电力系统的新宠。这种组合可不是简单拼凑,而是有讲究的——风电和光热出力互补(风大时光照弱,反之亦然),生物质发电则提供稳定基荷。但实际运营时,调度人员天天都在和三类不确定性斗智斗勇:

  1. 电源侧波动:风电预测误差普遍在15-20%,光热发电虽可通过储热调节,但多云天气仍会导致出力骤降
  2. 市场侧风险:电力现货市场价格可能半小时内波动超50%,直接影响收益
  3. 政策约束:弃风率超过5%就要面临罚款,碳交易价格又随时调整

去年青海某电站就吃过亏——为追求高电价时段多发,结果下午突然刮大风导致弃风率飙升,不仅被罚了80万,还浪费了30%的环保补贴资格。这就是我们需要鲁棒优化模型的根本原因:让系统在最坏情况下也能守住底线收益。

2. 模型核心架构解析

2.1 目标函数设计

模型的核心目标是最大化"综合收益",这个收益计算有讲究:

def calculate_profit(self): # 电力销售收入(考虑双边合约+现货市场) market_revenue = sum( self.contract_power[t] * self.contract_price[t] + (self.power_sold[t] - self.contract_power[t]) * self.spot_price[t] for t in self.T ) # 环境效益(碳交易+绿证) carbon_income = self.co2_reduction * self.carbon_price green_certificate = self.renewable_ratio * self.total_power * 0.03 # 每度电3分钱补贴 # 惩罚项(分级惩罚机制) penalty = 0 for t in self.T: if self.wind_curtailment[t] > 0.05 * self.forecast_wind[t]: # 超过5%部分重罚 penalty += 50 * self.wind_curtailment[t] + 200 * max( 0, self.wind_curtailment[t] - 0.05*self.forecast_wind[t] ) return market_revenue + carbon_income + green_certificate - penalty - self.maintenance_cost

这里有几个精妙设计:

  1. 电力销售分合约和现货:合约部分锁定基础收益,现货部分捕捉价格高峰
  2. 惩罚分级:5%以内的弃风按标准罚,超出的部分惩罚系数翻4倍
  3. 环境收益多元化:同时计算碳减排和绿证收益

2.2 鲁棒优化实现

处理不确定性用的是改进版的预算鲁棒优化(Budget Robust Optimization),相比传统鲁棒优化能减少30%以上的保守性:

# 定义不确定集 wind_uncertainty = NormUncertaintySet( forecast=self.forecast_wind, deviation=0.2, # 20%波动 budget=3.0 # 最大总偏差不超过3倍标准差 ) price_uncertainty = BoxUncertaintySet( lb=0.7*self.forecast_price, ub=1.3*self.forecast_price ) # 构建鲁棒约束 for t in self.T: model.add_robust_constraint( self.power_sold[t] <= self.wind_power[t] * wind_uncertainty[t] + self.solar_power[t] + self.biomass_power[t] ) model.add_robust_constraint( self.revenue[t] >= 0.8 * self.forecast_revenue[t], # 保证80%的基础收益 uncertainty=[price_uncertainty[t]] )

关键创新点:

  1. 混合不确定集:风电用正态分布+预算约束,电价用箱型不确定集
  2. 分层保护:电源侧保供电能力,市场侧保基础收益
  3. 自适应预算:根据历史数据动态调整budget参数

3. 各子系统建模细节

3.1 光热储热系统

熔盐储热的动态特性用状态空间模型描述:

# 储热系统状态方程 def heat_storage_dynamics(): for t in range(1, 25): # 光热场集热量(考虑镜面清洁度衰减) solar_heat = (self.dni[t] * self.mirror_area * 0.78 * (1 - 0.001*self.dust_accumulation))**1.2 # 储热罐能量平衡 self.heat[t] = (self.heat[t-1] * (1 - 0.02/24) + # 每小时损耗 solar_heat * 0.85 - # 光热转换 self.power_sold[t] / 3.6) # 发电耗热 # 安全约束 model.add_constraint(self.heat[t] >= 0.3 * self.max_heat) # 防凝固 model.add_constraint(self.heat[t] <= 0.95 * self.max_heat) # 防过热

特别注意:

  • 镜面清洁度影响:沙尘会使集热效率每天下降0.1%
  • 非线性效应:集热量与DNI(直射辐照度)的1.2次方成正比
  • 安全运行区间:熔盐温度需保持在290-565℃之间

3.2 生物质机组调节

生物质机组的灵活调节通过三级备用实现:

# 调节能力配置 for t in self.T: # 主出力 model.add_variable(f'biomass_{t}', lb=0.3*rated, ub=rated) # 三级备用(10分钟/30分钟/60分钟) model.add_variable(f'reserve1_{t}', lb=0, ub=0.15*rated) model.add_variable(f'reserve2_{t}', lb=0, ub=0.3*rated) model.add_variable(f'reserve3_{t}', lb=0, ub=0.5*rated) # 总出力限制 model.add_constraint( self.biomass_power[t] + self.reserve1[t] + self.reserve2[t] + self.reserve3[t] <= rated ) # 爬坡关联约束 if t > 0: model.add_constraint( self.biomass_power[t] - self.biomass_power[t-1] <= 0.1*self.reserve1[t] + 0.05*self.reserve2[t] + 0.02*self.reserve3[t] )

这种设计使得:

  • 10分钟内可提升15%出力应对风电骤降
  • 1小时内最大可调节50%出力
  • 爬坡速率与备用容量自动匹配

4. 实际应用案例分析

内蒙古某50MW混合电站的运行数据对比:

指标传统调度鲁棒优化改进幅度
年均弃风率18.7%6.3%↓66.3%
度电成本(元/kWh)0.420.37↓11.9%
收益波动率35%22%↓37.1%
环保补贴利用率72%95%↑31.9%

关键提升来自:

  1. 储热系统智能预充:在电价低谷时段提前储热,高峰时段放电
  2. 生物质备用协同:当预测风电出力可能波动时,自动预留备用容量
  3. 风险自适应调节:市场价格波动大时自动增加合约电量比例

5. 实操注意事项

  1. 参数校准要点:

    • 风电预测误差分布需用当地历史数据拟合,西北地区通常服从韦伯分布
    • 熔盐储热损耗率与风速相关,需现场实测修正(风速每增加1m/s,损耗增加0.3%)
    • 生物质燃料热值要每日检测,波动范围通常在14-18MJ/kg
  2. 模型加速技巧:

    # 采用Benders分解加速求解 solver = SolverFactory('gurobi_persistent') solver.set_instance(model) solver.set_benders_options( cut_type='lazy', max_iter=100, tolerance=1e-4 ) results = solver.solve()
  3. 典型问题排查:

    • 问题:模型总是过度保守

      • 检查:不确定集budget参数是否过大
      • 调整:用历史回溯测试校准budget值
    • 问题:生物质机组频繁启停

      • 检查:备用容量定价是否合理
      • 调整:在目标函数中增加机组磨损成本项
  4. 政策适配建议:

    • 当碳价高于200元/吨时,可适当提高生物质发电比例
    • 新出台的"两个细则"考核要求需转化为模型中的惩罚项
    • 绿证交易时段差异应体现在目标函数中

这个模型在实际部署时,建议先用历史数据做反向测试(backtesting),逐步调整风险偏好参数。某电站的经验是:先把弃��率约束设在8%运行一个月,再根据实际情况逐步收紧到5%。

RELATED READING

延伸阅读

更多一线实战笔记与深度复盘,助您持续精进