2. 调度优化理论基础:优化问题建模、线性规划与混合整数规划、动态规划在储能调度中的应用

各位好,我是老张。今天咱们聊聊调度优化的理论基础。说实话,这部分内容看着有点枯燥,但它是整个储能调度方案的“地基”。我见过不少项目,算法跑得挺欢,结果一落地就崩,为什么?说白了,就是模型没建对。

咱们先理清一个概念:储能调度,本质上是个“决策问题”。什么时候充?什么时候放?充多少?放多少?这些问题背后,都对应着数学上的优化模型。你想想看,如果连模型都建错了,后面的求解再漂亮也是白搭。

2.1 优化问题建模:从实际问题到数学语言

我个人习惯,拿到一个调度问题,先问自己三个问题:

  • 决策变量是什么?——我要决定什么?比如每小时的充放电功率。
  • 目标函数是什么?——我想达到什么效果?比如收益最大、成本最小。
  • 约束条件是什么?——有哪些限制?比如电池容量、功率上限、SOC范围。

举个例子。假设我们有一个储能电站,要参与电网调峰。目标是在一天内赚最多的钱。决策变量就是每个小时的充放电功率。约束条件包括:电池不能过充过放、功率不能超过逆变器限值、每天的充放电次数有限制等等。

写成数学形式,大概是这样:

目标函数:max Σ (放电收入 - 充电成本)
决策变量:P_charge[t], P_discharge[t]  (t = 1,2,...,24)
约束条件:
  0 ≤ P_charge[t] ≤ P_max
  0 ≤ P_discharge[t] ≤ P_max
  SOC[t+1] = SOC[t] + η_charge * P_charge[t] - P_discharge[t] / η_discharge
  SOC_min ≤ SOC[t] ≤ SOC_max
  SOC[0] = SOC[24]  (日循环约束)

嗯,这里要注意。我在项目中遇到过,很多人把SOC的初始值和终值设成一样的,结果发现实际运行中根本做不到。为什么?因为电池有自放电,还有效率损失。所以,我建议在建模时,把SOC[24]设成一个范围,比如[0.2, 0.8],而不是一个固定值。这样更贴近实际。

核心要点:建模时,一定要把“实际约束”翻译成“数学约束”。少一个约束,结果可能就不可行;多一个约束,可能就找不到最优解。这个度,需要经验来把握。

2.2 线性规划与混合整数规划:两种常用的求解方法

模型建好了,怎么求解?这就涉及到优化算法了。最常用的两类是线性规划(LP)和混合整数规划(MIP)。

线性规划,说白了就是目标函数和约束条件都是线性的。比如上面那个例子,如果充放电功率是连续变量,那就是一个线性规划问题。求解起来很快,几秒钟就能出结果。

但现实往往没那么简单。比如,储能电站不能同时充电和放电。这个约束怎么表达?你可能会想,加一个条件:P_charge[t] * P_discharge[t] = 0。但这是非线性的,求解起来很麻烦。

这时候,就需要引入整数变量。比如,定义一个二进制变量u[t],表示t时刻的状态:1表示充电,0表示放电。然后加上约束:

P_charge[t] ≤ M * u[t]
P_discharge[t] ≤ M * (1 - u[t])

其中M是一个很大的数。这样,当u[t]=1时,只能充电;u[t]=0时,只能放电。这就是混合整数规划。

我曾经在一个项目中,用MIP模型做储能调度,结果求解时间长达几个小时。后来发现,是整数变量太多了。你想想看,如果时间粒度是15分钟,一天就有96个时段,每个时段一个整数变量,求解器会非常吃力。

避坑指南:我曾经犯过一个错误,把所有的约束都写成“硬约束”,结果模型无解。后来改成“软约束”,加上惩罚项,问题就解决了。记住,有时候“差不多”比“精确但无解”要好得多。

下面这张图,展示了线性规划和混合整数规划在储能调度中的适用场景:

储能调度优化方法选择 线性规划 (LP) 连续变量,线性约束 求解速度快,适合实时调度 例如:功率分配、SOC跟踪 缺点:无法处理离散决策 混合整数规划 (MIP) 含整数/二进制变量 可处理启停、状态切换 例如:机组组合、充放电状态 缺点:求解时间较长 选择建议 • 如果只关心功率分配,不涉及状态切换 → 用LP,简单高效 • 如果涉及启停、充放电状态、最小运行时间 → 用MIP • 如果MIP求解太慢 → 考虑分解算法或启发式方法 • 实际项目中,我常用“LP+MIP”混合策略:先用LP粗算,再用MIP微调

2.3 动态规划在储能调度中的应用

说完LP和MIP,咱们再聊聊动态规划(DP)。这个方法,我个人非常喜欢。为什么?因为它特别适合处理“时序决策”问题。储能调度,本质上就是一个多阶段决策问题——每个时刻都要决定充放电,而且当前决策会影响后续状态。

动态规划的核心思想,说白了就是“把大问题拆成小问题”。比如,一天的调度问题,可以拆成24个小时的子问题。每个子问题,只需要考虑当前时刻的决策和下一时刻的状态。

具体到储能调度,动态规划的递推公式是这样的:

V(t, SOC) = max { 当前收益 + V(t+1, SOC') }
其中:
  t: 当前时刻
  SOC: 当前荷电状态
  SOC': 下一时刻的荷电状态(由当前决策决定)
  V(t, SOC): 从t时刻、SOC状态出发,到结束的最大累计收益

你想想看,这个公式是不是很直观?每个时刻,我们只需要考虑“现在做什么,能让未来收益最大”。这就是动态规划的精髓。

我记得有一次,用动态规划做储能调度,效果出奇的好。但有个问题——状态空间太大了。如果SOC的精度是1%,一天24个时段,状态数就是100^24,根本算不过来。

注意事项:动态规划虽然理论优美,但实际应用中要小心“维度灾难”。我建议:

  • 对SOC进行离散化,比如只取0%、10%、20%...100%这11个点
  • 或者用“近似动态规划”,只考虑部分状态
  • 再或者,结合线性规划,先粗算再细调

下面这个表格,对比了三种方法在储能调度中的特点:

方法 适用场景 求解速度 我的经验
线性规划 连续变量,无离散决策 快(秒级) 适合实时调度,但无法处理启停
混合整数规划 含离散决策,如启停、状态切换 中等(分钟级) 模型灵活,但要注意整数变量数量
动态规划 时序决策,状态转移明确 慢(取决于状态数) 理论最优,但状态离散化要谨慎

最后,我想说一句。理论是基础,但实践才是检验真理的唯一标准。我见过太多人,拿着复杂的算法去解决简单的问题,结果得不偿失。记住,最好的算法,不是最复杂的,而是最合适的

本章小结:

  • 优化建模要抓住“变量-目标-约束”三要素
  • 线性规划适合连续问题,混合整数规划处理离散决策
  • 动态规划适合时序问题,但要注意状态空间大小
  • 实际项目中,建议多种方法结合使用
专注资料整理