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个时段,每个时段一个整数变量,求解器会非常吃力。
避坑指南:我曾经犯过一个错误,把所有的约束都写成“硬约束”,结果模型无解。后来改成“软约束”,加上惩罚项,问题就解决了。记住,有时候“差不多”比“精确但无解”要好得多。
下面这张图,展示了线性规划和混合整数规划在储能调度中的适用场景:
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个点
- 或者用“近似动态规划”,只考虑部分状态
- 再或者,结合线性规划,先粗算再细调
下面这个表格,对比了三种方法在储能调度中的特点:
| 方法 | 适用场景 | 求解速度 | 我的经验 |
|---|---|---|---|
| 线性规划 | 连续变量,无离散决策 | 快(秒级) | 适合实时调度,但无法处理启停 |
| 混合整数规划 | 含离散决策,如启停、状态切换 | 中等(分钟级) | 模型灵活,但要注意整数变量数量 |
| 动态规划 | 时序决策,状态转移明确 | 慢(取决于状态数) | 理论最优,但状态离散化要谨慎 |
最后,我想说一句。理论是基础,但实践才是检验真理的唯一标准。我见过太多人,拿着复杂的算法去解决简单的问题,结果得不偿失。记住,最好的算法,不是最复杂的,而是最合适的。
本章小结:
- 优化建模要抓住“变量-目标-约束”三要素
- 线性规划适合连续问题,混合整数规划处理离散决策
- 动态规划适合时序问题,但要注意状态空间大小
- 实际项目中,建议多种方法结合使用