4. 优化调度通用数学基础

储能优化调度本质上是一个“在有限时间内,把有限的充放电能力分配到最合适的时段”的数学决策问题。要把它写成计算机能求解的形式,必须先把物理语言翻译成数学语言:哪些量可以自由决定,哪些量必须满足物理与运行规则,最终要最大化或最小化什么。这一节围绕这组翻译规则展开,并说明不同数学形式在储能调度中的实际角色。

一、决策变量:调度方案的自由度在哪里

决策变量是优化模型真正“求解”的对象。储能调度中最核心的决策变量是每个时段的充电功率 P_ch[t] 与放电功率 P_dis[t],以及由它们累积得到的荷电状态 SOC[t]。若调度周期为 24 个时段、步长 1 小时,则 t = 1…24,共 48 个功率变量加 24 个状态变量。

除功率外,还有一类“开关型”决策变量,例如表示第 t 时段是否处于充电状态的 0-1 变量 u_ch[t],以及是否处于放电状态的 u_dis[t]。它们不表示功率大小,而表示“状态是否发生”,这正是混合整数规划出现的原因。若还要决定储能是否参与某类辅助服务、是否启用某一套充放电策略,同样用 0-1 变量表达。

需要强调的是,SOC 通常不作为独立自由变量,而是由功率通过能量平衡关系推导出来:

SOC[t] = SOC[t-1] + (η_ch · P_ch[t] · Δt - P_dis[t] · Δt / η_dis) / E_rated

其中 η_ch、η_dis 分别为充放电效率,E_rated 为额定容量。这样 SOC 就成为功率变量的函数,模型规模更小,物理含义也更清晰。

二、目标函数:调度到底在优化什么

目标函数决定调度结果的“性格”。储能调度常见目标有三类:一是经济性目标,如最小化购电成本或最大化套利收益;二是技术性目标,如最小化弃风弃光、最小化功率波动;三是复合目标,把多项指标加权求和。

以峰谷套利为例,目标函数可写为:

min  Σ_t [ price[t] · (P_load[t] - P_dis[t] + P_ch[t]) · Δt ]

若同时考虑电池老化,可加入循环损耗项,例如按吞吐量折算的衰减成本 c_deg · (P_ch[t] + P_dis[t]) · Δt。此时目标函数从单纯电费最小化,变为“电费 + 寿命成本”的联合最小化,这也是储能寿命约束优化调度区别于普通经济调度的关键。

目标函数中的权重系数直接决定调度偏好。若寿命成本权重过大,储能会趋于保守、少充少放;权重过小,则可能频繁深度循环,短期收益高但寿命损耗快。实际建模时建议先用一组基准权重跑出结果,再根据寿命评估结果反向调整。

三、约束条件:把物理规律和运行规则写进模型

约束条件决定调度方案的可行性。储能调度中最基本的约束包括:

  • 功率上下限:0 ≤ P_ch[t] ≤ P_ch_max,0 ≤ P_dis[t] ≤ P_dis_max;
  • SOC 范围:SOC_min ≤ SOC[t] ≤ SOC_max,通常 SOC_min 取 0.1~0.2,SOC_max 取 0.9~0.95;
  • 充放电互斥:P_ch[t] ≤ M · u_ch[t],P_dis[t] ≤ M · u_dis[t],u_ch[t] + u_dis[t] ≤ 1;
  • 周期首末平衡:SOC[0] = SOC[T],避免调度周期结束后电量被“掏空”或“灌满”;
  • 功率平衡:P_grid[t] = P_load[t] - P_dis[t] + P_ch[t],并满足并网点功率限制。

其中 M 是一个足够大的常数,用于把 0-1 变量与连续功率变量关联起来。若 M 取值过大,松弛会变松、求解变慢;取值过小,则可能误删可行解。工程上常取 M = P_ch_max 或 P_dis_max,而不是随意取一个很大的数。

四、三类数学形式在储能调度中的角色

线性规划(LP)适用于目标与约束均为线性的场景,例如固定电价下的功率分配,求解快、易获得全局最优。混合整数线性规划(MILP)在 LP 基础上引入 0-1 变量,能表达充放电互斥、启停、分段等逻辑,是储能调度最常用的形式。非线性规划(NLP)用于处理效率随功率变化、寿命衰减非线性等情形,但求解难度大、易陷入局部最优。凸优化则介于两者之间:若能把非线性关系转化为凸形式,就能兼顾表达能力和全局最优性。

储能调度数学模型的三层结构 决策变量层 · 求解器真正调整的量 连续变量 P_ch[t] / P_dis[t] 状态变量 SOC[t](由功率导出) 0-1 变量 u_ch[t] / u_dis[t] 辅助决策 参与服务 / 策略选择 目标函数层 · 决定调度偏好 经济性目标 购电成本 / 套利收益 技术性目标 弃风弃光 / 功率波动 寿命成本目标 吞吐量折算衰减 约束条件层 · 决定方案是否可行 功率上下限 0 ≤ P ≤ P_max SOC 范围 SOC_min ≤ SOC ≤ SOC_max 充放电互斥 u_ch + u_dis ≤ 1 周期首末平衡 SOC[0] = SOC[T] 功率平衡:P_grid[t] = P_load[t] − P_dis[t] + P_ch[t],并满足并网点功率限制

图中把模型拆成三层:决策变量层给出自由度,目标函数层给出偏好,约束条件层给出边界。三者共同决定最终调度曲线。实际建模时,建议先写清决策变量,再写目标函数,最后逐条补约束,避免“边写边改”导致变量定义混乱。

五、从数学形式到可执行模型:一个最小示例

假设某储能额定容量 100 kWh,最大充放电功率 50 kW,η_ch = η_dis = 0.95,SOC 范围 0.1~0.9,分时电价在 0.3~1.2 元/kWh 之间波动。若采用 MILP 建模,决策变量为 24 个 P_ch、24 个 P_dis、24 个 u_ch、24 个 u_dis,共 96 个变量;目标函数为 24 项购电成本之和;约束包括上述功率、SOC、互斥和首末平衡。用开源求解器 CBC 或 GLPK 即可在秒级得到结果。

若把效率改为随功率变化的曲线 η(P),模型就从 MILP 变为 NLP。此时可先对效率曲线做分段线性化,把每段斜率作为新的连续变量,再引入 0-1 变量选择分段,从而把 NLP 近似为 MILP。这是工程上处理非线性储能特性的常用手段:用精度换求解稳定性。

凸优化并不等于“简单”。若把 SOC 约束、效率曲线或寿命衰减写成非凸形式,求解器可能给出局部最优解,甚至误判不可行。建模时应优先检查目标函数和约束是否满足凸性;若不满足,可考虑分段线性化、变量替换或松弛后再修正。

六、建模检查清单

检查项常见问题建议做法
决策变量是否完整漏掉 0-1 变量,导致充放电同时发生逐条列出连续变量与整数变量
目标函数量纲是否统一电费与寿命成本直接相加,量纲不一致统一折算为元或统一为归一化权重
M 取值是否合理M 过大导致松弛、求解慢取对应功率上限,避免随意放大
SOC 递推是否闭合首末不平衡,周期结束后电量漂移显式加入 SOC[0] = SOC[T]
非线性是否处理直接写非线性效率,求解器报错或陷入局部最优分段线性化或凸化后再求解