3、容量配置核心算法:基于时序仿真的容量优化、线性规划与混合整数规划、启发式算法(PSO/GA)应用

各位同行,今天我们来聊聊容量配置里最硬核的部分——算法。说实话,我刚入行那会儿,觉得容量配置不就是算个数吗?后来被现实狠狠教育了一顿。你想想看,光伏出力飘忽不定,负荷需求忽高忽低,储能电池还有充放电效率、寿命衰减这些破事。光靠拍脑袋或者简单公式,根本搞不定。

我个人习惯把算法分成三类:时序仿真法数学规划法启发式算法。这三类各有各的脾气,咱们一个一个说。

3.1 基于时序仿真的容量优化

时序仿真,说白了就是「跑一遍看看」。你把一年的数据(光伏出力、负荷曲线)按小时甚至分钟级输入进去,然后模拟储能系统怎么充放电,最后看结果满不满意。

我在项目中遇到过这样一个案例:一个工业园区,屋顶光伏装了5MW,但负荷峰值在下午4点以后。按常规算法算出来储能配2MW/4MWh就够了。结果我坚持做了时序仿真,发现夏天下午经常有连续阴雨天,光伏出力只有20%,储能根本撑不住。最后把容量调到了3MW/6MWh,才真正解决问题。

时序仿真的核心步骤其实不复杂:

  1. 数据准备:至少一年的光伏出力曲线(分辨率1小时或15分钟),加上对应的负荷曲线
  2. 运行策略定义:比如「削峰填谷」、「自发自用」、「需量管理」
  3. 仿真计算:逐时段模拟,记录SOC变化、弃光量、购电成本
  4. 结果评估:看IRR、投资回收期、自用率等指标

关键点:时序仿真不是算一次就完事。我习惯把容量从0.5MWh到10MWh,步长0.5MWh,每个容量点都跑一遍全年仿真,然后画出一条「容量-收益」曲线。那个拐点,就是最优解。

嗯,这里要注意:时序仿真的计算量不小。一年8760小时,每个小时都要算功率平衡、SOC约束、效率损失。如果步长设得太细,跑一次可能要几分钟。不过现在计算机快,这点时间还是值得花的。

3.2 线性规划与混合整数规划

时序仿真虽然直观,但它有个毛病——你只能枚举有限的几个容量方案,没法保证找到全局最优。这时候就要请出数学规划了。

线性规划(LP)和混合整数规划(MIP)是运筹学里的老将。它们把容量配置问题建模成一组数学方程,然后让求解器去找最优解。

我举个例子。假设我们要优化储能容量,目标函数可以写成:

min 总成本 = 储能投资成本 + 购电成本 - 售电收益

约束条件:
1. 功率平衡:光伏出力 + 储能放电 + 购电 = 负荷 + 储能充电 + 售电
2. SOC约束:SOC(t+1) = SOC(t) + η_charge * P_charge(t) - P_discharge(t)/η_discharge
3. 容量约束:0 ≤ SOC(t) ≤ 额定容量
4. 功率约束:0 ≤ P_charge(t) ≤ 额定功率
5. 整数约束:储能台数必须是整数(MIP特有)

你看,这个模型把容量(连续变量)和台数(整数变量)都考虑进去了。混合整数规划就是专门处理这种「既有连续变量又有整数变量」的问题。

我的经验:MIP模型写起来不难,难的是求解时间。我曾经有一个项目,模型里包含了8760个时间点、3种储能设备选型、还有分时电价阶梯,结果求解器跑了整整两天还没出结果。后来我把时间分辨率从1小时降到4小时,又把一些非线性约束做了线性化处理,半小时就搞定了。

常用的求解器有:

  • 商业求解器:Gurobi、CPLEX(快,但贵)
  • 开源求解器:CBC、GLPK(免费,但慢一些)
  • Python工具:PuLP、Pyomo(建模方便)

说实话,数学规划法在学术圈很流行,但在工程实践中,我见得更多的是时序仿真+启发式算法的组合。为什么?因为实际项目里,很多约束是非线性的,比如电池寿命随DOP变化、电价有阶梯折扣,这些很难用线性方程精确描述。

3.3 启发式算法:PSO与GA的应用

启发式算法,说白了就是「模仿自然界的智慧」。粒子群算法(PSO)模仿鸟群觅食,遗传算法(GA)模仿生物进化。它们不保证找到全局最优,但能在合理时间内找到「足够好」的解。

我记得第一次用PSO做容量优化时,心里还挺没底的。结果跑出来的结果跟MIP几乎一样,但时间只用了十分之一。从那以后,我对启发式算法就刮目相看了。

PSO的核心思想:每个「粒子」代表一个容量方案(比如储能功率和容量),粒子在解空间里飞,根据自己和同伴的历史最佳位置调整飞行方向。

# 伪代码示例
初始化粒子群(随机生成N个容量方案)
for 迭代次数 in range(最大迭代次数):
    for 每个粒子:
        计算适应度(比如IRR)
        更新个体最优 pBest
        更新全局最优 gBest
        更新速度: v = w*v + c1*r1*(pBest - x) + c2*r2*(gBest - x)
        更新位置: x = x + v
输出 gBest 对应的容量方案

GA的核心思想:把容量方案编码成「染色体」,通过选择、交叉、变异操作,一代代进化出更好的方案。

避坑指南:我曾经用GA优化一个包含3种储能设备选型的项目,结果跑了50代还没收敛。后来发现是交叉概率设得太低,变异概率又太高,导致算法一直在随机搜索。调整参数后,20代就找到了满意解。所以,启发式算法的参数调优真的很重要,别指望默认参数能干活。

两种算法的对比:

特性 PSO GA
收敛速度 较快(早期收敛明显) 较慢(需要较多代数)
全局搜索能力 中等(容易陷入局部最优) 较强(交叉变异保持多样性)
参数数量 少(惯性权重、学习因子) 多(交叉率、变异率、种群大小)
适用场景 连续变量优化(功率、容量) 离散/组合优化(设备选型、台数)

我个人习惯的做法是:先用PSO快速扫一遍,找到几个候选区域,再用GA在这些区域里精细搜索。或者反过来,用GA做全局探索,PSO做局部开发。混合使用往往效果更好。

3.4 三种算法的选择策略

说了这么多,到底该用哪种?我总结了一个简单的选择逻辑:

  • 项目简单、数据完整:时序仿真+枚举法,直观可靠,客户也容易理解
  • 项目复杂、约束明确:MIP建模,用Gurobi或CPLEX求解,精度最高
  • 项目规模大、变量多:PSO或GA,快速出方案,再人工微调
  • 实际工程:我建议先用时序仿真做初步筛选,再用启发式算法做精细优化,最后用MIP验证最优性

核心观点:没有万能算法。我在不同项目里用过不同的组合,关键是要理解每个算法的脾气。时序仿真像老黄牛,踏实但慢;MIP像精密仪器,准但娇贵;PSO/GA像野马,快但需要驯服。选对工具,事半功倍。

最后说一句:算法再牛,也离不开好的数据。我见过太多人把精力花在调算法参数上,却忽略了输入数据的质量。光伏出力曲线是不是典型年?负荷数据有没有剔除异常值?这些基础工作做扎实了,算法才能发挥真正的作用。

容量配置核心算法选择逻辑 输入数据 光伏曲线 / 负荷 / 电价 问题复杂度 简单 中等 复杂 时序仿真 + 枚举法 启发式算法 PSO / GA 混合整数规划 MIP / LP 工程实践:时序仿真 + 启发式算法组合 先用PSO快速搜索,再用GA精细优化,最后MIP验证

我的建议:如果你刚开始做容量配置,别急着上复杂算法。先用时序仿真跑几个典型场景,把问题摸清楚。等你对项目有了感觉,再引入PSO或GA。我曾经带过一个新人,上来就写MIP模型,结果约束条件写错了,跑出来的最优解居然是「不装储能」——因为模型里忘了加自发自用收益项。所以,先理解业务,再谈算法。


公众号:蓝海资料掘金营,微信deep3321