资讯动态

MATLAB双层优化模型:共享储能服务冷热电多微网配置调度

发布时间:2026/10/15 12:00:24 来源:尧图企业网站定制
做综合能源优化这些年我越来越觉得“多微网配储能”这件事特别拧巴。大家一看微网多第一反应就是每个微网配一套储能结果跑完优化一看要么储能利用率低得没法看要么投资回收期长得不敢报。直到我认真做了“基于MATLAB的共享储能电站服务冷热电多微网系统双层优化配置模型”这个题目才发现思路完全被打开了——共享储能电站把储能从“各微网自建”变成“集中建、多家用”再用双层优化把“配置多大”和“怎么调度”两个问题绑在一起解。这个模型解决的问题很明确一个共享储能电站该建多大容量、多大功率向多个冷热电联供微网收多少服务费才能让储能电站投资者有收益、各微网运行成本又下降它适合做园区综合能源规划、微网能量管理、储能商业模式研究的工程师和研究生参考。下面我把整个模型的思路、推导、MATLAB实现和踩过的坑一次讲清楚。1. 项目全景共享储能、冷热电多微网和双层优化分别解决什么问题1.1 为什么每个微网单独配储能常常划不来先说痛点。一个微网单独配储能最直接的问题是储能利用率不高。比如某个工业微网白天负荷高、晚上负荷低储能主要在白天放电、晚上充电一天有效充放电次数很有限而微网负荷曲线又不是完全平滑的为了满足最高峰储能容量必须往大了配结果大部分时间储能都在“晒太阳”。再加上储能初始投资高电池仓、PCS、消防、土建算下来一个兆瓦级储能电站动辄上千万单微网消化这笔投入非常吃力。共享储能的思路就是把“每家买一辆车”改成“几家合租一辆车队”。多个微网的电负荷峰值在时间上往往错开工业园白天用电猛住宅区晚上负荷高商业区中午和傍晚都有一个小高峰。共享储能电站从全局协调角度统一充放电可以用更小的总容量服务更多的微网每度电的服务成本显著下降。从商业模式上看共享储能电站扮演的是“服务商”角色投资方建站按容量或电量向微网收费。微网不必自建储能资产相当于把一次性投资变成了可变的运营成本风险小、门槛低。这个模式和共享充电宝的逻辑一样关键在于“服务价格怎么定、容量怎么配”定高了微网不租定低了电站不赚钱。所以模型里不能只看技术容量还得考虑市场互动。1.2 冷热电多微网系统的能量流燃气轮机、余热锅炉、吸收式制冷冷热电多微网和普通微网不一样的地方在于它内部不是只有“电”一种能量。一个典型的冷热电联供微网里燃气轮机烧天然气发电发电产生的烟气余热进入余热锅炉回收变成蒸汽或热水冬季这部分热直接供热夏季则驱动吸收式制冷机产生冷冻水供冷。这样一来天然气的一次能源就被梯级利用了先发电再供热/供冷综合能源利用效率可以比单纯发电高不少。把这个场景放大到多个微网问题就复杂了。微网A是工业负荷主要用电压缩机和工艺设备微网B是商业办公空调冷负荷集中在白天微网C是酒店医院热水和冷负荷全天都有。每个微网内部的燃气轮机容量有限多发的电可以卖给电网缺电时也可以从电网买但电网购售电价往往有峰谷差异热和冷因为管网输送损耗大一般只在微网内部平衡跨微网交易很少。所以冷热电多微网系统的核心是每个微网独立决策“燃气轮机发多少电、余热分配给供热还是供冷、缺额从电网买还是从共享储能买”同时多个微网共用同一个储能电站。这个“共用”不是简单接一根线而是共享储能电站的充放电功率在不同时段要分配给不同的微网谁租得多、谁在低谷充电都需要精细协调。1.3 为什么这个问题必须用“双层优化”而不是把容量和调度放一起有人可能问把储能容量和所有微网的调度变量放到一个大优化模型里一次求解不是更简单吗理论上可行但工程上有一个致命问题容量配置和运行调度的时间尺度、决策主体完全不同。共享储能电站的容量、功率属于规划层决策是“年/季度级别”的长期投资各微网燃气轮机出力、储能充放电、购售电功率属于运行层决策是“小时/15分钟级别”的短期调度。这两类变量如果放在同一个单层模型里你实际上是假设同一个主体同时决定投资和运行忽略了储能电站和微网之间“报价-响应”的市场关系。现实里储能电站不知道微网愿意租多少微网也不知道储能电站会把价格定多高双方只能来回博弈。双层优化恰好刻画了这种主从关系。上层是储能电站投资者先定游戏规则——储能容量、功率、租赁价格下层是各微网在给定了这套规则之后各自优化自己的运行方式目标是成本最小。下层优化完成后反馈给上层“租了多少容量、产生了多少服务费收入”上层根据这个反馈再调整配置和价格直到双方都接受为止。这种结构就是典型的斯塔克尔伯格博弈下层微网的决策是上层决策的反应函数。2. 数学模型拆解容量配置与运行调度是怎么耦合的2.1 双层模型的总体框架上层管“生意”下层管“运营”整个模型用表格看会更清楚。上层是储能电站视角下层是各微网视角两层通过共享储能的服务价格和出租容量连接起来层级决策主体典型决策变量优化目标典型约束上层共享储能电站额定功率、额定容量、容量租赁费、电量服务费年净收益最大化投资上限、储能SOC约束、功率/容量比例下层各冷热电微网燃气轮机出力、余热分配、吸收式制冷机组出力、自建储能若有、与共享储能交互功率自身年运行成本最小化电/热/冷功率平衡、设备上下限、爬坡约束、交互上限上层决策变量里额定功率和额定容量直接决定储能电站能提供多大的“壳”容量租赁费和电量服务费决定微网使用储能的成本。下层决策变量里最关键的是每个微网在每个时段从共享储能电站购买或返还的功率因为这部分功率直接决定了共享储能电站的“营业收入”。两层模型不是各自独立求解的。上层把容量和价格传给下层下层据此算出最优调度并把从共享储能电站租用的功率曲线、支付的总服务费返回给上层上层用这些返回值计算收益修正容量和价格再传给下层。如此循环直到收敛。2.2 上层目标函数共享储能电站的投资收益怎么刻画储能电站的年净收益我习惯写成收益 各微网支付的容量租赁费 电量服务费 - 储能等年值投资成本 - 年运行维护成本容量租赁费是“基础套餐费”只要微网租用了共享储能的容量不管用多少电都要按租用容量乘以容量单价付费电量服务费是“用多少付多少”按微网实际从共享储能获取或返回的电量结算。这样设计的好处是微网有了一块保底储能容量同时又不鼓励乱用。投资成本要做等年值处理不能把一次性投资直接算在某一年的收益里。常用的做法是资金回收系数CRFCRF r × (1 r)^n / ((1 r)^n - 1)其中 r 是折现率n 是储能寿命年数。储能电站的投资成本 单位功率成本 × 额定功率 单位容量成本 × 额定容量再乘以 CRF 摊到每年运行维护成本也按年计算。上层约束里最容易被忽略的是SOC上下限约束。SOC是储能荷电状态0.1到0.9之间比较常见不能充满也不能放空太满或太空都会影响电池寿命。另外额定功率和额定容量之间一般有推荐比例比如容量是功率的2到4倍超过这个范围要么PCS容量浪费要么电池容量不够支撑功率输出。2.3 下层目标函数微网在给定储能价格下怎么省钱每个微网的运行成本主要包括天然气费用、从电网购电费用、共享储能服务费减去向电网卖电的收入。目标是最小化这个总成本。下层约束里能量平衡是核心。电平衡表示各时段燃气轮机发电量 电网购电 共享储能放电 微网电负荷 向电网售电 储能充电热平衡表示余热锅炉供热量 辅助锅炉供热量 热负荷冷平衡类似。除此之外还有燃气轮机出力上下限、爬坡约束、储热罐SOC约束、吸收式制冷机COP关系等。这里有个小细节经常有人栽跟头燃气轮机的“以热定电”或“以电定热”到底怎么体现。很多资料把这两个模式当成运行策略去指定但在优化模型里不用人为指定只需要把余热分配关系写成约束——发电量决定了可回收的余热量上限余热可以进入供热或制冷由优化器根据负荷和价格自动分配。这样模型是“让数据说话”而不是预设行为。下层模型因为是给定了储能电站容量和价格之后求最优调度本质是一个线性或混合整数线性规划问题。24小时时段、几个微网规模的模型用商业求解器几秒钟就能解完。2.4 上下层之间的反馈机制价格与租用量的博弈关系上下层是怎么互相反馈的我举个简化例子。储能电站先把容量定在5 MW/20 MWh容量租赁费定为每天每千瓦0.5元电量服务费每千瓦时0.2元。下层各微网拿到这个报价后各自优化发现A微网白天电费太贵租了2 MW容量每天充放电电量约8 MWhB微网夜间负荷高租了1.5 MWC微网觉得电量服务费偏高只租了0.8 MW。这些租用信息汇总后储能电站发现总租用量只有4.3 MW远低于5 MW“预算”容量闲置多收益不理想。于是它会把容量租赁费降到0.4元刺激各微网多租。下一次迭代微网租用需求上升可能达到4.8 MW。随着价格逐步压低租用量上升但单位收益下降储能电站的年净收益呈现先增后减的趋势最终在某个价格和容量组合上收敛。这个收敛点就是上下层的均衡。实际模型中反馈机制可能更加复杂微网报给上层的不是租用容量一个数而是每个时段的功率需求和付费意愿储能电站也可能根据微网负荷预测动态调整可租用的剩余容量。但无论多复杂双层迭代的基本逻辑都是“上层定参数下层求响应上层更新参数”。3. 基于MATLAB的求解实现从建模到收敛的完整流程3.1 求解方法选型为什么推荐“启发式上层 嵌套规划”双层优化严格意义上可以用KKT条件把下层问题转换成上层约束变成一个单层MPEC问题。但MPEC处理起来非常麻烦互补约束非凸非光滑MATLAB自带求解器基本啃不动需要专门的求解器或大量线性化处理对大多数工程场景性价比很低。我更推荐“启发式算法 嵌套下层规划”的迭代结构上层用粒子群或遗传算法搜索储能容量、功率、价格对每个候选方案把参数传给下层用YALMIP调用Gurobi或CPLEX求解各微网的运行优化下层解完返回目标值和租用信息作为上层适应度评估的依据。两种方案对比一下方案优点缺点适用场景KKT单层化理论最优性有保证互补约束处理困难、实现复杂小规模理想情况、论文方法论展示启发式嵌套下层优化实现直观、易调试、对初值不敏感只能得到近优解、计算量偏大工程实际规划、多微网规模化场景我在实际项目中一直用后者。上层粒子群40个粒子迭代50次每次下层要解多个微网各自的24小时调度问题总耗时大约几十分钟到两个小时完全可以接受而且调试过程中能直观看到每一代容量和价格的变化过程发现问题时直接断点检查即可。3.2 数据准备典型日怎么选、设备参数怎么定冷热电负荷数据是整个模型的地基。直接拿全年8760小时去优化计算量太大一般工程做法是先做典型日聚类把一年缩成几张“代表日”。比如冬季、夏季、过渡季各取一个典型日再用季节天数做权重折算到全年。这样既保留了季节差异又把计算量控制住。典型日的选取建议用K-means聚类特征向量用24小时的电、热、冷负荷曲线。聚类前先把负荷归一化避免某一类负荷数值太大主导聚类结果。设备参数需要提前整理成表包括设备/参数典型取值说明燃气轮机效率0.35~0.42发电效率余热锅炉效率0.75~0.85烟气余热回收效率吸收式制冷机COP1.1~1.4每单位热量对应冷量储能单位功率成本800~1500元/kW含PCS、并网储能单位容量成本1000~2000元/kWh含电芯、电池仓、消防电网购电价峰0.9/谷0.3元/kWh分时电价天然气价格2.5~3.5元/m³折算热值后使用这里特别提醒单位必须是统一的。功率用kW能量用kWh热值折算时注意天然气热值通常按kWh/m³算别把立方米和千瓦时直接混着加减。3.3 MATLAB代码框架上层粒子群循环 下层YALMIP求解MATLAB实现上我核心依赖两个工具箱全局优化工具箱里的particleswarm作为上层迭代器YALMIP作为下层建模语言。求解器可以装Gurobi也可以用MATLAB自带的linprog/gurobi不装也能跑但商业求解器在大型线性规划上快很多。下层单微网优化的YALMIP建模核心片段大概是这样的% 输入: 典型日类型 day_type, 共享储能参数 E_ess_max, P_ess_max, price_cap, price_energy % 决策变量 P_gt sdpvar(1, 24); % 燃气轮机发电功率 P_buy sdpvar(1, 24); % 电网购电 P_sell sdpvar(1, 24); % 向电网售电 P_ess_m sdpvar(1, 24); % 与共享储能交互功率正为充电/购电服务负为放电/售电服务 P_hx sdpvar(1, 24); % 余热分配至供热功率 P_ac sdpvar(1, 24); % 余热驱动吸收式制冷功率 SOC_hs sdpvar(1, 24); % 蓄热罐SOC % 约束 Constraints []; % 电平衡: 燃气轮机发电购电-售电储能放电 负荷 Constraints [Constraints, P_gt P_buy - P_sell - P_ess_m P_e_load]; % 热平衡 Constraints [Constraints, P_hx P_boiler_heat P_h_load]; % 冷平衡 Constraints [Constraints, P_ac * COP_ac P_c_load]; % 燃气轮机出力上下限与爬坡 Constraints [Constraints, P_gt_min P_gt P_gt_max]; Constraints [Constraints, -ramp_rate diff([P_gt(1) P_gt]) ramp_rate]; % 共享储能交互功率上限与SOC Constraints [Constraints, -P_ess_max P_ess_m P_ess_max]; % 目标函数: 购电费燃气费储能服务费-售电收入 Objective sum(P_buy .* price_grid) gas_cost ... sum(P_ess_m .* price_energy) price_cap; ops sdpsettings(solver, gurobi, verbose, 0); optimize(Constraints, Objective, ops);上层的粒子群循环负责把储能容量和价格喂给下层并收集收益。核心结构是nvars 3; % 粒子: [E_ess_max, P_ess_max, price_cap] lb [2000, 500, 0.1]; ub [20000, 5000, 1.0]; options optimoptions(particleswarm, SwarmSize, 40, MaxIterations, 50, ... Display, iter, UseParallel, true); [x_opt, fval_opt] particleswarm((x)obj_upper(x, system_data, scenario_data), nvars, lb, ub, options);适应度函数obj_upper内部做的事情是把容量和价格传给每个微网调用下层优化得到各微网租用功率和费用然后相加得到储能年净收益。因为粒子群默认找最小值适应度函数返回负的年净收益或者取倒数。3.4 收敛判据与结果输出不要只看容量还要看利用率双层迭代什么时候算收敛我的做法是双条件满足其一即可一是达到最大迭代次数二是连续5代最优适应度值变化小于1%。注意别只盯目标值还要观察下层传回来的储能功率曲线是否稳定如果电价和容量没变但下层功率曲线跳来跳去说明模型病态优化算法再迭代也没意义。结果输出至少需要包括几样东西最优储能额定容量、额定功率、容量租赁价格、电量服务价格、各微网租用容量、储能年充放电量、年循环次数、储能电站年净收益、各微网年运行成本对比。其中储能利用率这个指标特别关键我通常用“年累计充放电量 / (额定容量 × 365 × 2×0.9)”计算等效每天满充放次数低于0.5次说明容量配大了高于2次说明配小了电池寿命会受影响。4. 典型场景与结果分析一个三微网园区的优化过程4.1 场景设置三个不同负荷特征的微网为了把模型讲透我设计一个虚拟三微网园区做演示。微网A是机械加工园电负荷从早上8点开始爬升下午5点回落夜间很低冷负荷集中在夏季白天微网B是写字楼加商场白天电负荷高、夜间几乎为零供热空调负荷明显微网C是酒店加医院全天负荷比较平稳热水负荷很高。三个微网都配置燃气轮机、余热锅炉、吸收式制冷机但容量不同。典型日设置上夏季典型日权重90天、冬季典型日权重100天、过渡季典型日权重175天权重加起来正好365天。每个典型日从凌晨1点到晚上24点一共24个时段时间步长1小时。电价按峰谷平三段设置峰段9:00-12:00和18:00-22:00最贵谷段23:00-次日7:00最便宜。4.2 对比方案设计无储能、独立储能、共享储能为了验证共享储能的价值我做三个情景。情景一无储能微网只能靠燃气轮机和电网交互情景二每个微网自建一套独立储能各自优化容量和调度情景三建设一个共享储能电站用双层模型优化容量和服务价格。三种情景对比的核心指标如下表指标无储能独立储能共享储能总储能容量(MWh)09.65.4总储能功率(MW)03.21.9储能年等效满充放次数-0.651.18微网年总运行成本(万元)126011901140储能投资等年值(万元)0210118系统综合年成本(万元)126014001258从结果可以看出共享储能方案总储能容量只有独立储能的56%左右但等效满充放次数更高说明储能被用得更狠、更值微网年运行成本下降幅度也最大。综合年成本虽然和无储能差不多但这里还没算碳减排收益和可靠性收益如果把电力中断损失算进去共享储能的优势会更明显。4.3 敏感性分析哪些参数一变配置结果就大变做工程分析不能只给一组结果至少要跑敏感性分析。我重点看三个参数储能单位容量成本、天然气价格、容量租赁价格上限。储能单位容量成本下降时最优配置容量会明显上升因为电池便宜了多用一点蓄电以峰谷套利更划算天然气价格上涨时燃气轮机发电成本上升微网更倾向于低谷从电网充电、高峰用储能放电储能需求的功率曲线变大容量租赁价格上限提高时储能电站倾向于服务少量高付费微网总收益上升但总租用容量下降本质上是一个“薄利多销”和“厚利少销”的权衡。这些敏感性分析的实际用途很大。比如做投资决策时你可以看储能成本在什么范围以下项目可行做价格设计时你可以反推容量租赁费不能高于微网自建储能的等效成本否则微网根本不会租。5. 踩坑记录与实用调试建议5.1 高频问题速查表这类模型我做了好几次总结了一张问题速查表基本覆盖了大家会遇到的大部分坑现象可能原因排查与解决双层迭代不收敛、容量价格震荡上层价格变化太剧烈下层响应跳变加入平滑系数新价格旧价格×(1-α)新价格×α下层微网优化提示Infeasible problem约束过强某时段能量无法平衡先不加共享储能跑通添加松弛变量并设惩罚系数结果对上层初始值特别敏感粒子群初始种群覆盖不足增大种群规模用拉丁超立方初始化粒子位置求解速度太慢单次下层就要几十秒求解器设置不当或模型规模过大关闭求解器verbose换Gurobi去掉冗余约束储能利用率长期低于0.5次/天容量配置偏大或服务价格偏高检查容量价格适当下调容量出租门槛SOC一直卡在边界储能始终放不满电量服务费设置不合理比较放电收益与充电成本调整峰谷价差设计5.2 实操心得调试顺序、模型简化与扩展方向最后分享一点个人经验。第一次做的时候憋着把模型写得非常复杂结果双层迭代一周都收敛不了。后来被逼着简化反而发现工程问题的核心往往没那么难。我的调试顺序是先做一个微网、固定储能容量和价格跑通下层再把多个微网加进来还是固定上层参数看下层结果是否正确最后才放开上层容量和价格联合寻优。每一步都验证通过再进行下一步能省一半以上的排错时间。模型本身也已经留好了扩展口子。实际工程中可以在上层加入碳交易价格把碳排放权购买成本加到总成本里可以将微网负荷改成不确定区间用鲁棒优化或场景随机优化处理也可以把上层从年规划细化到月度为单位优化每个月的可出租容量与价格调整策略。我自己的体会是双层优化模型真正难的不是数学推导而是能不能把两层之间的反馈关系设计得符合实际业务逻辑。共享储能电站“收多少费、配多大站”和微网“租多少、怎么充放”本来就是一对供需博弈用双层模型去刻画它比拍脑袋定容量、按平均负荷配储要靠谱得多。希望这篇拆解能帮你少走弯路。

读完文章,也想定制专属网站?

尧图设计师 24 小时内与您沟通定制方案

免费获取报价 →
↑