前一阵子我在一个园区级综合能源系统的日前经济调度研究里,遇到了一个非常典型的坑:储能电池的模型只写了荷电状态上下限、充放电功率约束,优化跑出来非常漂亮,结果把调度策略放到长期仿真里一推演,不到预期年限电池容量就衰减得很厉害。后来我花了几周时间,把两类电池损耗模型分别嵌入到同一个综合能源系统框架里做对比,一套偏向工程简化的循环损耗,一套偏向电化学经验的半经验老化,才发现不同损耗假设对调度结果的影响比很多人想象中大得多。这篇文章就把这两套模型的原理、Matlab实现思路,以及它们在综合能源系统里的实际应用差异一次性讲清楚。
这篇文章适合正在做综合能源系统优化调度、储能容量配置或者微电网经济性评估的同行。如果你目前的 Matlab 代码里储能还是“只要不过充不过放就不会坏”,那这篇应该能帮你补上一课;如果你已经知道电池要考虑损耗,但不知道选哪种模型更合适,后面的对比结果也能作为参考。
1. 综合能源系统的调度优化里,电池损耗为什么绕不开
1.1 储能电池在综合能源系统中的真实工作方式
综合能源系统里的储能,并不是像独立储能电站那样单纯做电网侧调峰调频。在含热电联产机组、燃气锅炉、光伏、热泵和蓄热罐的系统里,电池通常承担的是“时间错配”的任务:光伏大发时把电存下来,晚上负荷高峰再放出去;燃气轮机白天发电产生余热供给热负荷,如果热负荷不足,电池可以替代一部分机组出力;峰谷电价明显时,还能利用低谷电给电池充电,高峰时段放电套利。
这种多能互补背景下,电池的充放电策略往往比单一电力系统里的储能策略更复杂,因为它要同时跟热负荷、电负荷、燃气成本、购电成本耦合决策。我见过不少调度模型里,储能电池被写成一条简单的能量平衡约束,然后优化程序为了降低购电费用,会让电池每天在 SOC 上下限之间反复满充满放。如果不把损耗放进目标函数,这种“暴力使用”在成本层面是最优的,因为算法认为电池既不会老化,也不需要更换。
1.2 “零损耗假设”诱导出的极端策略
我在跑一个 600kWh 磷酸铁锂电池参与的园区算例时,做了个对照组:一组完全不考虑电池损耗,另一组只加一个很简化的吞吐量损耗成本。第一组的典型调度结果让我印象很深刻——电池几乎每个峰时段都以最大功率放电,从近满电放到 SOC 下限,然后谷时段再充满。单看当日购电成本确实省了不少,但折算下来等效循环次数很高。
这里的关键问题是:综合能源系统的调度周期通常是一天或者几天,而电池寿命是按几年甚至十几年来计的。日调度里一个很小成本差异,放到电池全生命周期里可能变成几十上百万的更换成本。如果优化目标里没有任何损耗项,求解器当然会选择“往死里用电池”,因为从它的视角看,电池放电是零边际成本的,放着不用反而是浪费。
1.3 损耗模型要回答的三个问题
经过这次之后,我自己总结了一个观点:在综合能源系统的调度优化里,电池损耗模型至少需要能回答三个问题:
- 每一次充放电行为对电池寿命的折损是多少?
- 这个折损的成本如何折算进当前时段的优化目标?
- 不同的运行区间、运行深度、充放电倍率和温度,对折损的影响是否得到了合理区分?
要做到这三点,可以选型的损耗模型并不只有一种。下面两节介绍的就是我自己在 Matlab 里实际对比过的两条技术路线,为了描述方便,这里分别记为 Model A 和 Model B。
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. Model A:基于循环次数折算的简化线性损耗模型
2.1 这种模型的工程依据在哪里
Model A 在工程上非常常见,它的出发点是厂家给出的循环寿命曲线。大部分磷酸铁锂电池厂家会标明“在 25℃、1C 充放电、80% DOD 条件下循环寿命 6000 次”,这里的 DOD 是放电深度,SOC 从 90% 放到 10%,放电深度就是 80%。也就是说,如果你每次都把电池从将近满电放到将近没电,理论上能完成 6000 个这样的完整循环,之后容量衰减到初始容量的 80%,电池进入退役状态。
但调度优化过程中,你不可能预测未来每一次充放电的深度再用雨流计数法去数循环,那样问题会变得极其复杂。于是工程上产生了非常经典的简化思路:把“循环寿命 × 放电深度 × 电池容量”折算成电池全生命周期可处理的总吞吐电量,然后认为每一次充放电都在消耗这个总吞吐预算。这就是常用的等效吞吐量损耗模型。
这种模型相当于把电池看成一台有固定加工寿命的机器,所有充放电行为都在消耗它的累计加工时间,无论机器是在轻载还是重载状态下运行,只要加工总能量相同,损耗就相同。
2.2 损耗成本如何进入目标函数
以 600kWh、250kW 的磷酸铁锂电池为例,假设系统单价为 1500 元/kWh,电池总投资约 90 万元。厂家给出 80% DOD 下循环寿命 6000 次,那么整个生命周期可以处理的放电吞吐量为:
600kWh × 0.8 × 6000 = 2,880,000 kWh
如果按照电量和充电量双边吞吐统计,即把充电过程和放电过程都算入吞吐,那么全生命周期吞吐量为 5,760,000 kWh。每吞吐 1kWh 对应的电池损耗成本就是:
900,000 元 ÷ 5,760,000 kWh ≈ 0.156 元/kWh
这个成本系数非常直观,调度里每产生 1kWh 的充电或放电电量,就在目标函数中额外计入 0.156 元的损耗成本。用 Matlab 写出来也极其简洁,下面的目标函数片段可以直接套进 Yalmip 框架:
matlab复制% ===== Model A 线性损耗成本接入示例 =====
% P_ch / P_dis : 优化变量,长度为 T 的充放电功率
% delta_t : 调度时间步长,单位 h
% dep_cost_a : 0.156 元/kWh,标定得到的单位吞吐损耗成本
objective = objective ...
+ sum(dep_cost_a * (P_ch + P_dis) * delta_t);
这里有个容易出错的地方,要提醒一下:如果你没有把充电功率加入吞吐统计,就需要把 dep_cost_a 翻倍,否则损耗成本会少算一半。我最初实现的时候只统计了放电功率,算出来的损耗成本明显偏低,导致优化结果里电池还是偏向于频繁使用。后来统一采用充放双边吞吐口径,并用上述系数,结果才合理。
2.3 Model A 的适用边界和明显短板
Model A 最大的优点是线性、稳定、求解快。在 Yalmip 的 MILP 框架里,它不需要新增任何额外变量,也不需要非线性约束,可以随主问题一起求解,适合做日前调度、滚动优化,甚至多场景随机优化。而且它的物理含义很好向非技术背景的运营人员解释:你多充放一度电,就多消耗电池寿命里的一度电预算。
但它的短板同样明显。第一,它不区分 SOC 工作区间。电池在 SOC 90% 时大功率放电和 SOC 50% 时放电,消耗的吞吐预算是完全一样的,实际情况却不是这样。磷酸铁锂电池长期在 80% 以上的高压区运行,正极材料和电解液界面的副反应会显著加剧。第二,它不区分充放电倍率,250kW 功率下的损耗和 50kW 下的损耗被看成一样。第三,它不区分温度。冬天和夏天的电池老化速率差异很大,但 Model A 对此完全无感。
所以我在实际使用 Model A 的时候,通常把它当作一种“保守的、快速的寿命成本估算方式”,适合在方案对比阶段用,但不适合精细的 SOC 管理策略优化。如果你想把 Model A 做得更完善一点,可以在调度结束后,再用雨流计数法对 SOC 曲线做后评估,按各次循环的实际 DOD 查厂家寿命曲线,得到更真实的寿命折损结果。后评估部分的雨流统计和调度优化解耦,计算量不大,但能显著提高报告的说服力。
3. Model B:基于运行应力的半经验电化学老化模型
3.1 从电池衰减机理出发建模
如果说 Model A 是从“机器加工寿命”的角度看电池,那 Model B 就是从“电化学反应”的角度看电池。锂离子电池的老化本质上是活性锂损失、正负极材料结构退化、电解液分解等一系列电化学反应共同导致的容量衰减。这些反应速率跟温度、SOC 电位、电流密度强相关。
半经验老化模型的核心形式通常是一个包含了 Arrhenius 温度项、SOC 应力项和吞吐项的容量衰减方程。我参考的常见形式大致如下:
Q_loss = B × exp(-Ea / (R × T_abs)) × f(SOC) × g(C_rate) × Ah^z
这里 Q_loss 是容量衰减量,Ea 是活化能,R 是气体常数,T_abs 是电池绝对温度,Ah 是累计安时吞吐量,z 是时间指数。直接把这个方程放进日调度优化里不太现实,因为它是非线性且耦合累计量的。真正用于调度的 Model B,通常需要把老化应力转变成运行成本。
我自己的做法是,将每时段的损耗成本建模成 SOC 水平和充放电深度的二次惩罚函数。以磷酸铁锂电池为例,在 SOC 40%-60% 区间运行的老化速率比较低,SOC 过高或者过低,老化速率都会明显上升;从 SOC 60% 放到 55% 这种浅循环,和从 90% 放到 30% 这种深循环,寿命损耗差异也非常大。于是每时段的瞬时损坏成本可以写成:
r_b(t) = α × (SOC_mid(t) - SOC_opt)^2 + β × ΔSOC(t)^2
其中 SOC_mid(t) 是 t 时段起始和结束 SOC 的平均值,SOC_opt 是老化最优工作点,ΔSOC(t) 是该时段的 SOC 变化量。这个形式不是从某篇论文里直接抄的,而是我根据一组老化实验数据进行拟合后得到的工程化表达。你需要根据自己电池的实测或者文献数据来标定 α 和 β,不要直接照搬任何代码里的数值。
3.2 为什么要在目标里加入 SOC 区间惩罚和变化惩罚
加 SOC 区间惩罚,是为了避免优化结果让电池长期停留在高 SOC 或低 SOC 区间。综合能源系统里有个常见现象:光伏大发时段电池很快充满,但晚间峰段还有好几个小时才到,电池被迫在接近满电
