ARTICLE · INTELLIGENCE

战地情报 · 详情页

来自尧图项目组的一线实战观察与深度解析

分布式光伏微电网群共享储能双层规划配置策略与仿真实现

分布式光伏微电网群共享储能双层规划配置策略与仿真实现

做分布式光伏微电网群的项目,每次聊到储能配置,总绕不开一个问题:储能到底装多大?装在哪?如果一句话给这个研究定个性,那就是——用双层规划模型把“装多大”和“怎么用”这两件事一次性算清楚,并且在仿真软件里把整个过程跑通。这个项目研究的是基于仿真软件的分布式光伏微电网群共享储能配置策略与双层规划模型,核心思路是让多个微电网共用一座储能电站,用上层模型决策储能容量和功率,用下层模型安排每个微电网的运行调度,最后通过仿真验证整个方案的可行性。

这段时间我把这条技术路线完整走了一遍,从场景搭建、模型构建到求解器调试,踩了不少坑,也沉淀了不少可以直接复用的经验。今天这篇文章就把整个方案的来龙去脉、模型细节、仿真流程和调试心得一次性讲清楚,适合正在做新能源微电网规划方向研究的工程师、研究生,也适合想从仿真的角度理解共享储能落地机制的从业者。

1. 项目整体设计与思路拆解

1.1 微电网群为什么需要共享储能

单个微电网里装光伏,最大的问题不是发电能力不够,而是“发得多的时候用不完,用得着的时候又发不出来”。以前常规做法是每个微电网各配一套储能,但这很快就暴露了一个尴尬:场地紧张、投资大,而且很多微电网的负荷特性并不一致,有的白天负荷高,有的晚上负荷高,各自配储之后利用率并不高。

把地理位置相邻的几个微电网组成微电网群,共用一个共享储能电站,逻辑上就顺了很多。光伏大发时段,储能吸收多余电量;等负荷高峰来临,储能再向需要电的微电网释放能量。因为各个微电网的负荷曲线和光伏出力曲线存在时间错位,共享储能可以把这些互补特性吃干榨净,用更小的总容量满足全群的需求。

我算例里设了三个微电网,一个偏工业负荷,一个偏商业负荷,一个偏居民负荷。工业微网白天负荷平稳,商业微网傍晚负荷爬升,居民微网晚间用电集中。单独看任何一个,都是“光伏出力跟负荷匹配度一般”的典型场景,但合在一起看,三个网的峰值时段互相错开,共享储能就有非常明显的调节空间。

这里的核心矛盾是:储能容量和功率配置属于投资决策,一旦定了就是长期资产;而每个时刻的充放电安排属于运行调度,逐时滚动变化。把两件事放在一个模型里同时优化,就会碰上“投资决策影响运行、运行结果反馈投资”的循环依赖关系。

1.2 双层规划:投资决策与运行调度分层建模

这个项目最关键的设计决策,就是把容量配置和运行调度拆到两个层里做。

上层模型站在投资方视角,决策共享储能的额定容量和额定功率,目标是最小化“储能投资年值成本+微电网群年运行成本”;下层模型站在调度方视角,在给定储能配置的前提下,安排每个微电网每个时段的购售电功率、与储能交互功率以及弃光决策,目标是最小化整个微电网群的运行成本。

上下层之间形成一个主从博弈:上层先出牌,下层根据上层的牌做最优响应,再把运行成本和实际充放电轨迹反馈给上层,上层据此调整配置方案。一来一回反复迭代,最终收敛到一组稳定的储能容量功率和运行调度结果。

为什么不直接建单层模型一次性优化?原因很简单:单层模型会把“选容量”和“做调度”都混合成一个大规模混合整数优化问题,变量数量爆炸,求解难度成倍增加,而且投资决策和运行决策的经济逻辑混在一起,结果出来了也不太好解释。双层模型在数学形式上更贴合工程实际,虽然求解时要额外处理上下层的信息交互,但每一步的物理意义都非常清晰。

1.3 仿真环境搭建与技术路线

整个研究跑在通用仿真计算平台上,结合优化求解器和数据处理工具完成。整体技术路线分成四个阶段:场景数据准备、双层优化建模、求解迭代计算、结果校验与敏感性分析。

第一阶段的重点是把光伏出力序列、负荷序列、分时电价这些基础数据整理成统一格式的时间序列;第二阶段搭建上下层的数学表达,把目标函数、约束条件、变量边界全部写成程序代码;第三阶段选择外层智能算法和内层求解器联合求解;第四阶段把最优配置结果倒回时序仿真环境里做逐时模拟,验证SOC轨迹、线路交互功率和弃光率是否满足预期。

整套路线的关键决策在第三阶段。双层模型的下层是一个含连续和整数变量的优化问题,直接做KKT转换会让互补约束变得非常难处理,所以我在外层用群体智能算法搜索容量和功率,内层用商用求解器精确求解运行调度。外层每给出一组配置参数,内层就完整算一遍8760小时或者典型日尺度下的最优调度,再把运行成本返回给外层做适应度评价。这样既保证内层结果严格最优,又能让上层在有限次的迭代里找到接近最优的配置解。

2. 核心细节解析与实操要点

2.1 微电网群、共享储能与配电网的边界条件

做共享储能规划,第一步不是建数学公式,而是把系统边界画清楚。我算例里的系统拓扑是:三个微电网分别通过各自的联络线接入配电网,共享储能电站单独接在一面公共母线上,每个微电网与共享储能之间都有一条双向功率通道。这样设置的用意是保留各微电网独立购售电的权利,同时让储能成为全群的公共资源。

边界条件里有几个容易踩坑的地方。第一个是每个微电网与配电网的交互功率上限,这个参数直接决定了下层模型里购售电变量可行域的大小。第二个是共享储能PCS的功率约束,因为多个微电网可能同时向储能充电或放电,所有交互功率求代数和之后必须落在储能功率限值以内。第三个是运行边界,我统一设置了各微电网与共享储能通道的功率上限,避免单条线路过载。

储能本身的边界条件也值得单列出来:电池容量上下限(通常取10%~90%)、充放电效率、SOC连续递推关系、周期始末SOC平衡约束。周期始末平衡这个约束特别重要,如果不约束“一天结束时的SOC要回到初始值附近”,优化结果往往会把储能在一天结束时放空,第二天直接从零开始,这种解在工程上没有实施意义。

2.2 上层规划模型:投资成本年值化

上层模型的决策变量是共享储能的额定能量容量和额定功率。目标函数的第一部分是投资年值化成本,需要使用资金回收系数把一次性投资成本摊到每一年。

资金回收系数的计算方式是:r_cr = i(1+i)^n / ((1+i)^n - 1)。其中i是折现率,n是储能寿命年限。我做这个算例时取了折现率5%、寿命10年,算出来的年值化系数约0.1295,这个值意味着每投资1元到储能系统中,每年要承担约0.13元的等额资金成本。如果不做年值化处理,直接把总投资的十几分之一拿出来和一年运行成本加和比较,就会把投资成本压得过低或过高,导致优化结果偏离实际。

上层目标里的运行成本部分并不是一个独立变量,而是下层模型的最优返回值。我在程序里把“资金年值成本”写成闭式表达式,“年运行成本”通过每次下层求解后返回。上层约束相对简单,主要是储能容量和功率的边界范围,以及储能全生命周期内的预期循环次数折算约束,防止优化结果给出一个寿命期内根本用不完的过配方案。

这里有一个实操心得:储能容量和功率的单位、量纲一定要统一。表格数据里有的是kW,有的是kWh,有的是MW/MWh,如果不先换算干净,优化迭代里经常出现某个约束无解。我在程序开头专门写了一个参数归一化模块,把所有物理量统一折算到kW和kWh之后再进入模型。

2.3 下层运行调度模型:多微网时序经济调度

下层模型是整篇研究的运行核心。它的作用是在给定储能容量和功率的基础上,对三个微电网逐时段的运行方式做经济调度,目标函数是所有微电网的购电成本减去售电收益,再加上弃光惩罚和与储能交互的服务费用(如果考虑转让服务费模式)。

每个微电网在任意时段t都满足功率平衡:光伏出力+购电功率+储能放电功率=负荷功率+售电功率+储能充电功率+弃光功率。其中购电和售电不能同时发生,需要引入0-1变量确保互斥。光伏出力在光照充足但负荷低谷时可能超过负荷,剩余电量可以充入储能,也可以弃掉;弃光功率加上弃光惩罚系数之后,模型会自动在“弃光省事”和“消纳增收”之间做权衡。

共享储能电站的内部规则也要在下层约束中体现:所有微电网对储能的充电功率之和等于储能总充电功率,放电功率之和等于储能总放电功率,而储能总充电功率和总放电功率在同一个时段内也必须是互斥的。SOC动态约束则是把上一时段SOC、充放电功率、充放电效率、时间步长和容量关联在一起,形成完整的时序递推链路。

下层模型的求解规模,如果用全年8760小时逐时建模,会有三万多条时序约束,再加上每个微电网的购售电0-1状态变量,整体规模相当大。我后来做了场景缩减,把全年数据聚类成春、夏、秋、冬四季的典型日,每个典型日取24小时,模型规模缩减到原来的6%左右,求解速度提升非常明显,而配置结果的偏差控制在可接受范围内。

3. 实操过程与核心环节实现

3.1 算例场景与数据准备

我搭的算例场景刻意把三个微电网的负荷曲线做到了最大化互补。微网A是工业型,白天负荷高位运行,夜间降到低谷;微网B是商业型,上午开始爬坡,傍晚达到最高;微网C是居民型,晚间用电集中。各微电网的光伏装机容量也不一样,三者的出力曲线均按典型晴天的归一化出力标幺曲线生成,再乘上各自装机容量。

分时电价则按峰、平、谷三段设置,峰时段设在上午十点到下午两点以及傍晚六点到十点,电价取1.0元/kWh;平时段取0.65元/kWh;谷时段取0.35元/kWh。这个电价结构非常影响储能的充放电策略,因为共享储能本质上就是在低电价时段充电、高电价时段放电,赚取峰谷价差来抵消投资成本。

储能关键参数我取了一个当前工程上相对可参考的量级:电池单位容量投资成本约1200元/kWh,PCS及配套功率变换系统投资约600元/kW,充放电效率95%,SOC上下限为0.1和0.9,寿命周期10年,年维护成本按初始投资的2%计。这个成本量级决定了优化结果更偏向于“够用就好”,因为储能投资在目前阶段仍然不便宜。

3.2 双层求解:外层智能算法与内层精确求解

双层模型求解方案我最终选定了外层粒子群算法+内层优化求解器的组合。外层粒子群负责搜索共享储能的容量和功率两个决策变量;内层求解器负责在给定配置下精确求解全年四个典型日的运行调度问题。

粒子群算法里,每个粒子的位置就是一组储能容量和功率候选解,例如某个粒子可能包含“容量2000kWh,功率800kW”。对每一个粒子,程序调用内层模型计算全年运行成本;运行成本加上储能投资年值成本,构成该粒子的适应度值。整个粒子群按速度更新公式逐代演化,每个粒子记录自身历史最优位置,种群记录全局最优位置,收敛后用全局最优解作为最终的储能配置结果。

这里要说明一下为什么不直接套用KKT条件把双层转化成单层。KKT转换要求下层问题严格凸且可导,但我的下层模型里含有购售电互斥的0-1变量,本质上是混合整数线性规划,不满足KKT转换的强凸性前提。强行转换会导致互补约束处理非常困难,甚至出现伪解。所以外层启发式搜索+内层精确求解是更适合工程实际的做法,代价是计算时间,好处是每一步都有可解释的最优性。

这个方案的伪代码如下:

# 双层优化主循环伪代码 pop_size = 30 max_iter = 50 for iter in range(max_iter): for p in particles: # 取当前粒子的储能容量、功率候选解 C_e = p.position[0] C_p = p.position[1] # 调用内层模型:全年典型日运行调度 run_cost = solve_lower(C_e, C_p) inv_cost = annual_invest_cost(C_e, C_p) fitness[p] = inv_cost + run_cost # 更新个体最优与全局最优 # 更新粒子速度与位置

实际计算中,内层每次求解大约耗时8到15秒,整个粒子群30个粒子迭代50轮,运行时间是三到四个小时。这个耗时对研究阶段完全可接受。如果后续要扩展到更多微电网做群规模增加,还可以对粒子群做并行加速,把粒子分配到多个计算核心上同时求解内层模型。

3.3 结果分析与配置对比

仿真结果最直观的一个对比就是共享储能配置和独立储能配置的差异。同样三个微电网,按各自的负荷特性和光伏装机分别独立配置储能,总容量需求约3200kWh;如果改为共享储能模式,经过双层模型优化得到的配置结果大约为2000kWh,容量减少接近40%,投资成本下降明显。

这个结果背后的逻辑并不玄妙:共享储能利用的是负荷峰值错位和光伏出力互补。工业微网白天光伏多但不需求额外储能,商业微网傍晚负荷尖峰正好可以调用白天充好的电,居民微网的晚间高峰又能跟商业微网的峰值错开。储能在一天内被多次调用,单位容量周转率远高于单微网自配储能的模式。

从运行角度看,共享储能模式下的弃光率也有了明显改善。独立配置条件下,白天光伏大发时受限于自配储能容量,三个微网都不同程度出现弃光;共享模式下储能容量池更大,接纳多余光伏电量的能力更强,全群弃光率从原来的8.4%降到了4.6%左右。综合投资成本和运行成本后,共享储能方案比独立配置方案的综合年成本降低了约18%,这个收益空间正是共享储能模式的核心卖点。

3.4 敏感性分析与方案边界

做完主算例后,我还补充了几组敏感性分析,主要考察储能投资成本变化和峰谷电价差变化对最优配置的影响。

当储能单位容量投资成本从1200元/kWh下降到800元/kWh时,最优配置的储能容量从2000kWh升高到2600kWh,说明投资成本下降会刺激多配储能,以换取更低的运行成本和更高光伏消纳率。反过来,如果峰谷电价差从0.65元缩窄到0.45元,最优配置容量则明显回落,因为储能套利空间变小,投资回收动力不足。这条敏感性分析的结论很实用,说明共享储能的配置规模并不是一个固定值,它会随着电池价格和市场机制的变化而变化。

4. 常见问题与排查技巧实录

4.1 求解速度慢:想办法削减问题规模

我最早用全年8760小时逐时建下层模型,结果内层单次求解就要将近十分钟,外层粒子群迭代几十次根本跑不动。后来把全年数据做了典型日聚类,用四季四个典型日代表全年运行工况,内层求解时间从十分钟降到了几秒。

场景缩减的精度损失需要评估。我把聚类前后的弃光率、运行成本、SOC均值做了比对,偏差在3%以内,对容量配置结果的影响非常小,完全可以接受。如果你也遇到求解耗时问题,优先检查时序分辨率是不是过高,不妨先用典型日做探索性计算,确定大致配置区间后再用完整时序做校验。

4.2 双层迭代不收敛:改进外层搜索策略

粒子群算法在迭代早期非常容易出现适应度值震荡,尤其是储能容量和功率同时参与搜索时,粒子更新步长过大容易跳进局部最优区域。

我的处理方法是给粒子速度加了收缩因子,并把全局最优解的惯性权重从0.9线性递减到0.4。这样可以保证早期全局探索充分,后期邻域精细搜索。另外每次随机初始化多个粒子种群,取多次运行的最优结果作为最终配置方案,比单次种群运行的结果更可靠。

4.3 SOC始终贴着下限:运行约束太松

第一次跑完结果,我发现共享储能几乎全天处于低电量状态,SOC长期趴在0.1附近。原因是下层模型的运行成本没有对期末SOC做额外约束,优化器发现放完电最省钱,就把储能当作“用完即弃”的工具。

解决办法是在下层模型里加两个约束:一个是一天结束时SOC必须回到初始值允许的偏差窗口内,另一个是把SOC运行区间从10%~90%收窄到20%~80%,给储能留出安全裕量。改完之后SOC轨迹呈现明显的日内箱式波动,充放循环节奏合理,结果也变得可解释了。

4.4 单位不一致导致的无效解

这是最尴尬的一类问题。储能容量单位是kWh,而功率单位是kW,SOC动态方程里两者同时出现,稍不留意就会把kWh写成了kW,导致容量与功率数量级完全失衡,优化结果要么是容量巨大但功率太小,要么反过来。

后来我在程序启动阶段加入维度自检,对每个方程做物理量纲检查,确认方程两侧单位一致后才进入求解。这个方法虽然简单,但能拦截大多数低级错误。建议你也养成本量纲验算的习惯,尤其是涉及能量和功率混合的公式时。

4.5 电价参数设置不当导致储能不动作

有时候储能配置算出来接近零,排查到最后往往不是模型问题,而是电价差太小。当峰谷价差不足以覆盖储能充放电损耗和运营成本时,优化器得出的结论就是不装储能或者尽量少装。

这个情况不算bug,反而是模型在说真话。共享储能能不能成立,本质上取决于有没有足够的价格激励。做仿真时,可以先做一组电价灵敏度扫描,找出储能配置从零开始显著跃升的临界电价差,再根据这个临界值和实际峰谷价差判断当前场景是否值得配置储能。

5. 方案扩展与工程落地建议

5.1 从“群内共享”走向“多群协同”

这套双层模型的架构天然支持继续扩展。如果把共享储能的服务范围从单一微电网群扩大到多个微电网群,可以在上层增加储能电站选址变量,让模型同时决策“建在哪”和“建多大”。多个共享储能电站之间还可以形成协同调度,通过配电网联络线互相支援,进一步提升全系统的新能源消纳能力。

我设计时遇到的一个问题是典型运行场景的选择对结果影响很大。如果只用晴天光伏出力曲线,配置结果会偏大;如果只用阴天曲线,配置结果又会偏保守。建议用聚类方法把一年四季、晴阴多云、负荷高低等典型工况都纳入代表性场景集合,而不是拍脑袋选几天。

5.2 储能容量到可研阶段的落地

仿真模型给出的结果是一组“理论最优”容量和功率,真正做工程方案时,还要考虑储能设备的模块化规格、电池舱位布置、消防通道预留、并网接入条件等工程约束。通常做法是把仿真容量圆整到标准储能模块容量的整数倍,比如50kW/100kWh为一个标准模块,然后再做一次带整数约束的校验仿真。

我从这个项目里最大的体会是:配置只是起点,真正决定共享储能能不能落地的,是后续的商业机制和运行规则。模型能把“需要多少储能”算得很漂亮,但“储能给谁用、用多久、怎么收费”才是运行层面的核心问题。做这个方向的研究或者工程实施,一定要把容量配置和运营模式放在同一个框架里思考,否则就是纸上谈兵。

RELATED READING

延伸阅读

更多一线实战笔记与深度复盘,助您持续精进