3. 经典调度算法回顾:基于规则的方法、LP与MILP基础

各位同学,今天我们来聊聊储能调度里最经典的几类算法。说实话,很多刚入行的朋友一上来就追着深度学习跑,结果发现落地时连最基本的规则方法都没搞透。我个人习惯是,先把这些“老家伙”吃透,再去碰那些花里胡哨的新东西。

为什么?因为在实际项目中,80%的场景用规则或线性规划就能解决。剩下的20%,才是MILP和强化学习的战场。好,我们一个一个来看。

3.1 基于规则的方法:阈值控制

这是最朴素、也最可靠的方法。说白了,就是“如果…那么…”的逻辑判断。我在早期做家庭储能项目时,用的就是这招。

核心思想:设定几个关键阈值,比如电池SOC(荷电状态)、电价、负载功率。当某个条件触发时,执行预设动作。

典型规则示例

  • 如果SOC < 20%,且电价低于0.3元/kWh,则充电
  • 如果SOC > 80%,且电价高于0.8元/kWh,则放电
  • 如果负载功率 > 额定功率的90%,立即放电支撑
# 伪代码示例:阈值控制调度
def threshold_schedule(soc, price, load):
    if soc < 0.2 and price < 0.3:
        return "CHARGE"
    elif soc > 0.8 and price > 0.8:
        return "DISCHARGE"
    elif load > 0.9 * rated_power:
        return "DISCHARGE"
    else:
        return "IDLE"

我的经验:阈值控制最大的优点是快——毫秒级响应。但缺点也很明显:它不考虑未来。比如你刚放完电,半小时后电价更高了,但SOC已经空了。嗯,这就是“短视”问题。

3.2 线性规划(LP):让数学帮你做决策

阈值控制搞不定的时候,就该LP上场了。你想想看,如果我们能用一个数学公式描述整个调度问题,然后让计算机找到最优解,是不是更靠谱?

LP的三个要素

  • 决策变量:比如每个时段的充放电功率
  • 目标函数:比如最小化总用电成本
  • 约束条件:比如SOC范围、功率限制、能量守恒

我曾经在一个工业园区项目中,用LP帮客户每天省了约15%的电费。当时他们用的是纯规则方法,我换成LP后,效果立竿见影。

# LP模型示例(简化版)
# 决策变量:P_charge[t], P_discharge[t]
# 目标:最小化总成本
minimize sum(price[t] * (P_buy[t] - P_sell[t]))

# 约束
SOC[t] = SOC[t-1] + η_charge * P_charge[t] - P_discharge[t] / η_discharge
0 <= SOC[t] <= SOC_max
0 <= P_charge[t] <= P_charge_max
0 <= P_discharge[t] <= P_discharge_max
P_buy[t] = P_load[t] + P_charge[t] - P_discharge[t] - P_pv[t]

注意:LP要求所有变量都是连续的。但现实中,储能系统往往有“要么充要么放”的互斥约束。这时候LP就无能为力了。我曾经踩过这个坑——用LP算出来的结果,充放电同时为正,物理上根本不可能实现。

3.3 混合整数线性规划(MILP):解决LP搞不定的问题

MILP就是在LP的基础上,加入了整数变量。说白了,就是多了个“开关”。

为什么需要整数变量?

  • 充放电互斥:引入二进制变量 y[t] ∈ {0,1}
  • 启停成本:每次启动有固定成本
  • 设备数量:比如“最多同时运行3台机组”
# MILP模型:充放电互斥约束
# y[t] = 1 表示充电,y[t] = 0 表示放电
P_charge[t] <= P_charge_max * y[t]
P_discharge[t] <= P_discharge_max * (1 - y[t])
y[t] ∈ {0, 1}

关键区别

特性 LP MILP
变量类型 连续 连续 + 整数
求解速度 快(秒级) 慢(分钟级甚至更久)
适用场景 连续调度 离散决策
最优性保证 全局最优 全局最优(但求解时间长)

避坑指南:我曾经在一个48时段的调度问题中,用MILP跑了整整3个小时还没出结果。后来我把时间粒度从15分钟改成1小时,问题规模缩小了4倍,求解时间降到了2分钟。记住:MILP的求解时间随整数变量数量指数增长。能用LP就别用MILP,能用启发式就别用精确算法。

3.4 三种方法的对比与选择

好,我们来总结一下。这三种方法各有各的脾气:

  • 阈值控制:简单、快、但短视。适合小型系统或作为后备策略。
  • LP:能处理连续变量、有全局视野。适合电价预测准确、设备约束简单的场景。
  • MILP:能处理离散决策、精度最高。但求解慢,适合离线优化或小规模问题。

我个人习惯是:先用阈值控制搭个基线,再用LP做精细优化。如果发现LP结果不可行(比如充放电同时出现),再升级到MILP。别一上来就上MILP,否则你可能会像我一样,等结果等到怀疑人生。

经典调度算法知识体系 基于规则的方法 线性规划 (LP) 混合整数线性规划 (MILP) 阈值判断,毫秒级响应 连续变量,全局最优 整数变量,离散决策 缺点:短视,不考虑未来 缺点:无法处理互斥约束 缺点:求解时间长 适用:小型系统、后备策略 适用:连续调度、电价优化 适用:离线优化、小规模问题
专注资料整理