💥💥💞💞欢迎来到本博客❤️❤️💥💥
🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。
🎁完整资源、论文复现、期刊合作、论文辅导及科研仿真定制事宜点击:
👉👉👉本文完整资源下载
⛳️座右铭:行百里者,半于九十。
⛳️赠与读者
👨💻做科研,涉及到一个深在的思想系统,需要科研者逻辑缜密,踏实认真,但是不能只是努力,很多时候借力比努力更重要,然后还要有仰望星空的创新点和启发点。建议读者按目录次序逐一浏览,免得骤然跌入幽暗的迷宫找不到来时的路,它不足为你揭示全部问题的答案,但若能解答你胸中升起的一朵朵疑云,也未尝不会酿成晚霞斑斓的别一番景致,万一它给你带来了一场精神世界的苦雨,那就借机洗刷一下原来存放在那儿的“躺平”上的尘埃吧。
或许,雨过云收,神驰的天地更清朗.......🔎🔎🔎
💥第一部分——内容介绍
基于分布式 ADMM 算法的考虑碳排放交易的电力系统优化调度研究
摘要
在 “双碳” 目标持续推进的背景下,碳市场机制逐步与电力系统运行深度耦合,传统集中式电力调度模式在多区域互联电网场景下存在信息隐私保护不足、计算负担过重、单点故障风险突出等现实问题。本文引入交替方向乘子法(ADMM)构建分布式调度框架,将碳排放交易成本纳入电力系统优化调度目标函数,兼顾系统发电经济性、碳减排约束与区域间功率交互平衡。以 IEEE 6 节点、IEEE 30 节点与 IEEE 118 节点测试系统开展仿真验证,对比集中式优化方案与传统分布式算法的调度结果。研究表明,分布式 ADMM 能够在仅交换边界耦合信息、保留各子区域内部数据隐私的前提下,快速收敛至全局最优解;碳交易机制可有效引导电源侧发电结构调整,促进低碳机组优先出力,降低系统整体碳排放水平。同时,随着电网规模由 6 节点扩展至 118 节点,该分布式框架仍具备稳定的收敛性能,验证了所提方法在不同规模互联电力系统中的适用性与工程潜力。
关键词:电力系统优化调度;分布式优化;交替方向乘子法;碳排放交易;互联电网
1 引言
1.1 研究背景与意义
能源低碳转型是我国能源领域发展的核心方向,碳排放权交易市场作为市场化减排工具,将碳排放成本转化为机组运行成本,深刻改变电力系统的出力分配逻辑。互联大电网由多个地理分区组成,各区域电网分属不同运营主体,区域内部机组参数、负荷数据、碳配额信息属于敏感运营数据,难以直接上传至统一调度中心进行集中优化。集中式调度方案在面对大规模电网时,还会面临维度爆炸、求解耗时增加、系统可靠性差等缺陷。
分布式优化策略将完整的调度问题拆解为多个子区域独立优化子问题,区域之间仅传递少量边界变量,无需共享内部全部信息,契合多主体互联电网的数据隐私需求。ADMM 算法兼具分解协调特性与良好的收敛特性,适用于带耦合约束的大规模凸优化问题,已广泛应用于电力系统分布式调度领域。因此,构建融合碳排放交易机制的分布式 ADMM 调度模型,在保障区域信息安全的前提下实现经济与低碳协同调度,对低碳互联电网运行具有重要理论价值与现实意义。
1.2 国内外研究现状
现有电力系统低碳调度研究大多以集中式模型为主,将碳排放量作为约束项或者将碳交易成本计入目标函数,实现发电成本与碳成本联合优化。这类方法求解精度较高,但对调度中心的数据采集与算力要求高,不适用于多主体分区运营场景。
在分布式调度方向,多数研究采用 ADMM 处理电网分区后的功率耦合约束,解决多区域经济调度、虚拟电厂协同优化等问题。但部分文献未充分考虑碳交易市场对机组出力的调节作用,碳约束形式简单,缺少碳价波动、碳配额抵扣等市场要素;还有部分研究仅在小规模节点系统验证算法性能,缺少在中小规模与大规模电网下的对比测试,难以证明算法对不同维度电网的适配能力。
综合现有研究不足,本文将碳排放交易机制嵌入分布式 ADMM 调度框架,分别在 IEEE 6 节点、IEEE 30 节点、IEEE 118 节点系统开展算例分析,探究碳交易对系统出力、碳排放、区域交互功率的影响,同时验证分布式 ADMM 在不同电网规模下的收敛特性。
1.3 论文主要工作
- 建立计及碳排放交易的电力系统优化调度基本模型,目标综合考虑机组发电成本与碳交易成本,约束包含机组出力上下限、功率平衡、线路传输容量、区域边界功率耦合约束以及碳排放相关约束。
- 基于 ADMM 对原集中优化模型进行解耦,将互联电网划分为多个子区域,形成分布式调度框架,确定区域间交互信息类型与迭代协调机制,实现各子区域独立优化。
- 选取 IEEE 6 节点、IEEE 30 节点、IEEE 118 节点三个不同规模测试系统进行仿真,设置多组碳价情景,对比集中式优化结果,分析分布式 ADMM 的收敛效果、系统总运行成本、碳排放以及机组出力变化规律。
- 总结碳交易机制对电力调度的调控效果,讨论电网规模扩大对分布式 ADMM 收敛特性的影响,指出模型存在的局限以及后续研究方向。
2 计及碳排放交易的电力系统调度模型
2.1 目标函数
调度优化目标为最小化系统综合运行成本,综合运行成本由机组发电成本与碳排放交易成本两部分构成。碳排放交易成本根据区域内机组实际碳排放量与免费碳配额的差值计算:当实际碳排放高于免费配额时,需要在碳市场购买额外配额产生支出;当实际碳排放低于配额时,可以出售富余配额获得收益。模型在优化过程中,碳价作为市场信号,直接影响各类电源的边际运行成本,引导低碳机组增加出力、高碳机组压缩发电。
2.2 约束条件
模型约束涵盖电力系统常规运行约束与碳排放约束。电力运行约束包括各子区域有功功率平衡约束、发电机组出力上下限约束、输电线路功率传输极限约束;互联电网被划分为多个子区域,相邻子区域共享边界节点,存在区域间交互功率耦合约束,该耦合约束是分布式解耦的核心。碳排放约束主要包含机组碳排放计算关系,规定系统碳排放核算规则,可根据研究需要设置碳排放总量上限约束。
2.3 模型特征说明
该优化模型属于带耦合等式约束的凸优化问题,适合采用 ADMM 进行分布式求解。原集中式模型需要收集全网所有机组、负荷、线路数据;经过 ADMM 解耦之后,每个子区域仅需要求解自身区域内的局部优化问题,在迭代过程中只和相邻区域交换边界功率相关信息,内部机组参数、负荷、碳配额等敏感数据保留在本地,满足多运营主体的数据隐私保护需求。
3 基于 ADMM 的分布式调度求解框架
3.1 电网分区处理
将互联电网按照地理边界或者管理主体划分为若干子区域,不同子区域之间通过联络线相连,联络线上的交互功率为区域耦合变量。分区完成后,原全网统一优化问题被拆分为多个子区域子问题,耦合约束仅存在于相邻区域的边界联络线变量上。IEEE 6 节点系统规模较小,可划分为 2 个子区域;IEEE 30 节点系统可划分为 3~4 个子区域;IEEE 118 节点规模大,可划分为更多子区域,以此检验电网分区数量与系统规模对分布式迭代过程的影响。
3.2 ADMM 解耦与迭代协调机制
ADMM 算法引入增广拉格朗日函数处理耦合约束,将原问题分解为子区域局部优化更新步骤与拉格朗日乘子更新步骤。在每一轮迭代中,各个子区域并行求解自身优化问题,得到本地决策变量与边界交互功率预估数值;各区域完成本地计算后,相邻区域交换边界变量信息,更新拉格朗日乘子,进入下一轮迭代。迭代持续进行,直到边界变量的残差满足预设收敛精度,此时分布式求解结果逼近集中式全局最优解。
在整个迭代流程中,各子区域独立完成本地优化计算,调度主体之间不需要共享内部机组成本、碳排放数据等隐私信息,仅交换边界联络线功率信息,兼顾优化求解精度与信息安全。
3.3 迭代终止条件
设置原始残差与对偶残差作为收敛判断指标,当两项残差均小于预设阈值时,判定算法收敛,停止迭代。残差阈值可以根据不同节点系统的规模进行微调,小规模 IEEE 6 节点系统收敛速度更快,大规模 IEEE 118 节点系统变量更多,达到收敛精度所需迭代次数会相应增加。
4 算例分析
4.1 算例基础设置
分别采用 IEEE 6 节点、IEEE 30 节点、IEEE 118 节点标准测试系统开展仿真。系统内包含燃煤等高碳机组与燃气、新能源等低碳机组,各机组设置对应的发电成本系数与碳排放强度参数。设置多组碳价场景,对比无碳交易、低碳价、中碳价、高碳价四种情景下的调度结果。将分布式 ADMM 计算结果和集中式优化结果进行对比,从目标成本、碳排放量、联络线功率、迭代性能等维度开展分析。
4.2 IEEE 6 节点系统算例结果分析
IEEE 6 节点系统规模小,分区数量少,ADMM 算法迭代收敛速度快,分布式求解结果与集中式优化结果偏差极小。在引入碳交易机制后,随着碳价升高,高碳机组出力被逐步压缩,低碳机组出力提升,系统总碳排放量下降,但碳采购成本上升,系统综合运行成本呈现上升趋势。区域联络线功率随碳价变化发生调整,子区域之间通过功率互济,实现低碳资源的跨区域利用。小规模算例验证了分布式 ADMM 模型与碳交易机制结合的基础有效性。
4.3 IEEE 30 节点系统算例结果分析
IEEE 30 节点电网结构更加复杂,机组数量、线路数量多于 6 节点系统,分区数目增加,耦合变量数量上升。ADMM 依旧可以稳定收敛,相比 6 节点系统,迭代次数略有增加。碳价提升带来的减排效应更加明显:高碳机组出力空间被进一步挤压,系统碳排放持续降低。对比集中式方案,分布式方案的全局综合成本、碳排放指标误差很小,证明在中等规模电网下,该分布式框架可以在保护区域内部信息的前提下获得高质量调度方案。同时可以观察到,碳价达到一定水平后,继续提高碳价,碳减排边际收益降低,系统综合成本增速加快。
4.4 IEEE 118 节点系统算例结果分析
IEEE 118 节点属于大规模电力系统,机组、负荷、输电线路数量显著增多,分区数量多,区域耦合关系复杂。仿真结果表明,分布式 ADMM 仍然能够完成迭代收敛,只是相比 6 节点与 30 节点系统,需要更多迭代轮次才能满足收敛精度。在高碳价场景下,全网发电资源重新分配,低碳电源在全网范围内优先被调用,互联区域之间联络线功率充分利用,实现跨区域碳减排协同。虽然系统规模增大带来迭代次数上升,但各子区域并行计算,单轮迭代耗时可控,相比集中式求解,分布式方案降低了中心节点的计算压力。同时,分布式模式下各区域数据本地留存,隐私优势在大规模多分区电网中更加突出。
4.5 算法对比与敏感性分析
对比集中式优化结果,三个测试系统下分布式 ADMM 求解得到的综合成本、碳排放指标误差均处于可接受范围。在相同收敛精度条件下,电网规模越大,所需迭代次数越多;碳价变化会改变机组边际成本,进而影响迭代过程中边界功率的波动特征。若碳价过高,会造成系统运行成本大幅抬升,部分高碳机组持续停机;碳价过低则碳交易机制对出力调节作用微弱,系统碳排放几乎没有下降。
5 结论与展望
5.1 结论
本文构建了计及碳排放交易的电力系统分布式 ADMM 优化调度模型,在 IEEE 6、30、118 节点不同规模系统中完成仿真研究,得到主要结论如下:
- 基于 ADMM 的分布式调度框架能够将全网低碳调度问题分解为多个子区域独立优化子问题,区域间仅交换边界联络线信息,有效保护各运营主体内部数据隐私,分布式求解结果能够逼近集中式全局最优解。
- 碳排放交易机制能够通过碳成本信号引导电源出力结构优化,碳价提升可以有效降低系统总碳排放量,但会增加系统综合运行成本;碳价水平较低时,减排激励效果有限。
- 分布式 ADMM 适用于不同规模的互联电网。小规模 IEEE 6 节点系统收敛迅速;随着电网规模扩大至 IEEE 118 节点,迭代次数有所增加,但算法仍具备稳定收敛能力,并行计算的优势在大规模电网中更为显著。
5.2 展望
本研究尚有拓展空间,后续研究可以从以下方向开展:
- 在模型中引入风电、光伏等不确定性新能源出力,构建考虑源侧随机波动的分布式低碳调度模型,研究不确定性对 ADMM 收敛性以及碳减排效果的影响。
- 完善碳市场机制,引入碳配额动态分配、碳价阶梯机制、碳捕集机组等新型低碳设备,丰富低碳调度模型。
- 改进 ADMM 算法,采用自适应罚因子策略,降低大规模电网下的迭代次数,进一步提升分布式求解效率。
- 考虑需求响应、储能资源参与调度,挖掘负荷侧与储能的碳减排潜力,实现源荷储协同的分布式低碳优化。
📚第二部分——运行结果
2.1 数据来源:
% FileName = 'SCUC_dat/SCUC6.txt'; %Corresponding to the 6-bus System;对应文中6bus例子 % FileName = 'SCUC_dat/SCUC30.txt'; %Corresponding to the 30-bus System;对应文中30bus例子 % FileName = 'SCUC_dat/SCUC6-2.txt'; %Corresponding to the 6-bus System in literature [7];对应文献[7]中的6-bus system % FileName = 'SCUC_dat/SCUC1062-2.txt'; %Corresponding to the 1062-bus System;对应文中1062-bus例子 % FileName = 'SCUC_dat/RTS48.txt'; %Corresponding to the RTS-48 bus system.The test system can obtain from [44];对应文中RTS0-48 bus例子 FileName = 'SCUC_dat/DDOPF118.txt'; %Corresponding to the 118-bus system in literature [7];对应文献[7]中的118-bus system% FileName = 'SCUC_dat/SCUC6.txt'; %Corresponding to the 6-bus System;对应文中6bus例子
% FileName = 'SCUC_dat/SCUC30.txt'; %Corresponding to the 30-bus System;对应文中30bus例子
% FileName = 'SCUC_dat/SCUC6-2.txt'; %Corresponding to the 6-bus System in literature [7];对应文献[7]中的6-bus system
% FileName = 'SCUC_dat/SCUC1062-2.txt'; %Corresponding to the 1062-bus System;对应文中1062-bus例子
% FileName = 'SCUC_dat/RTS48.txt'; %Corresponding to the RTS-48 bus system.The test system can obtain from [44];对应文中RTS0-48 bus例子
FileName = 'SCUC_dat/DDOPF118.txt'; %Corresponding to the 118-bus system in literature [7];对应文献[7]中的118-bus system
部分代码:
%Read datas FileIndex = strfind(FileName,'/'); if isequal(FileName(FileIndex+1:FileIndex+5),'DDOPF') %Corresponding to the 'SCUC_dat/DDOPF.......txt' files;DDOPF数据不考虑CET,但考虑DR;;不存在一个节点上有多个机组的情况 isRTS = 'no'; %默认值,default value is 'no' includeDR = 'yes'; %默认值,default value is 'yes' includeCet = 'no'; %默认值,default value is 'no' parameter.includeDR = includeDR; parameter.includeCet = includeCet; parameter.isRTS = isRTS; SCUC_data = ReadDataDCDOPF(FileName,parameter); elseif isequal(FileName(FileIndex+1:FileIndex+3),'RTS') %%Corresponding to the 'SCUC_dat/RTS.......txt' files;RTS数据不考虑CET和DR;存在一个节点上有多个机组的情况 isRTS = 'yes'; %是否使用RTS数据,'yes'为使用RTS数据,'no'为不适用RTS数据。,default value is 'yes' includeDR = 'no'; %默认值,default value is 'no' includeCet = 'no'; %默认值,default value is 'no' parameter.isRTS = isRTS; parameter.includeDR = includeDR; parameter.includeCet = includeCet; SCUC_data = ReadDataDCDOPF(FileName,parameter); elseif isequal(FileName(FileIndex+1:FileIndex+4),'SCUC')%SCUC数据 %%Corresponding to the 'SCUC_dat/SCUC.......txt' files;本文SCUC数据,不考虑DR;不存在一个节点上有多个机组的情况 isRTS = 'no'; %默认值,default value is 'no' includeDR = 'no'; %默认值,default value is 'no' parameter.includeDR = includeDR; parameter.includeCet = includeCet; SCUC_data = ReadDataSCUC(FileName,parameter); end T = SCUC_data.totalLoad.T; % The number of time periods. 时段数T G = SCUC_data.units.N; % The total number of units.发电机数 N = SCUC_data.baseparameters.busN; % The total number of buses.节点总数 %The partition in test system; 下面的代码生成{1,...,N}的一个划分 PI best_partition = 1; % Default value is 1;=1 直接按照最好的划分方式划分 =0,则按照给定n来划分 [PI, allNode,PINumber] = partitionNode(SCUC_data.baseparameters.busN,N,best_partition,partionMethod); n = size(PI,1); %The number of partition set; 划分的子集个数 %Calculate the network admittance matrix;获取潮流节点导纳矩阵B Y = SCUC_nodeY(SCUC_data, type_of_pf); B = -Y.B; %Corresponding to the section III-C. Identifying "real" coupling constraints. 识别耦合节点 和耦合支路,片区改进 [partitionData] = partitionDataPI(SCUC_data, PI ,PINumber,useImprovedPratition,includeDR,isRTS); %Corresponding to (17). 形成系数矩阵A A_ii 潮流方程中可分离的那部分 A_wan是DC潮流中所有的耦合约束 A_wan_0是A_wan 中对应排放变量x0的系数矩阵 [A_wan_0, A_wan_i, A_ii, b_A_ii, b_A_wan_i] = formMatrixA(SCUC_data, partitionData,n ,B,includeDR,isRTS); %Corresponding to (18) in final manuscript. 下面形成系数矩阵M [M_wan_0, M_wan_i, M_ii, b_M_ii, b_M_wan_i] = formMatrixM(SCUC_data, partitionData,n ,B,includeDR,isRTS); %Corresponding to (19). 下面形成排放二次约束 QC4Emission = formQC4Emission(SCUC_data, partitionData,n,includeCet,includeDR,isRTS); %Solving test system with Cplex;集中式让Cplex求,Cplex计算结果作为参照值,参数意义见函数yanZheng内的说明 [ eb,es,xx,st,dr,hr,fval,pf,pf_t,fd_t,output ] = yanZheng( A_wan_i, A_ii, b_A_ii, b_A_wan_i, M_wan_i, M_ii, b_M_ii, b_M_wan_i, partitionData, SCUC_data ,B,includeCet,includeDR,isRTS,QC4Emission); p_index = find(~ismember(xx(:,1),0)==1); %RP用到了 disp(output.cplexstatusstring);%Read datas
FileIndex = strfind(FileName,'/');
if isequal(FileName(FileIndex+1:FileIndex+5),'DDOPF')
%Corresponding to the 'SCUC_dat/DDOPF.......txt' files;DDOPF数据不考虑CET,但考虑DR;;不存在一个节点上有多个机组的情况
isRTS = 'no'; %默认值,default value is 'no'
includeDR = 'yes'; %默认值,default value is 'yes'
includeCet = 'no'; %默认值,default value is 'no'
parameter.includeDR = includeDR;
parameter.includeCet = includeCet;
parameter.isRTS = isRTS;
SCUC_data = ReadDataDCDOPF(FileName,parameter);
elseif isequal(FileName(FileIndex+1:FileIndex+3),'RTS')
%%Corresponding to the 'SCUC_dat/RTS.......txt' files;RTS数据不考虑CET和DR;存在一个节点上有多个机组的情况
isRTS = 'yes'; %是否使用RTS数据,'yes'为使用RTS数据,'no'为不适用RTS数据。,default value is 'yes'
includeDR = 'no'; %默认值,default value is 'no'
includeCet = 'no'; %默认值,default value is 'no'
parameter.isRTS = isRTS;
parameter.includeDR = includeDR;
parameter.includeCet = includeCet;
SCUC_data = ReadDataDCDOPF(FileName,parameter);
elseif isequal(FileName(FileIndex+1:FileIndex+4),'SCUC')%SCUC数据
%%Corresponding to the 'SCUC_dat/SCUC.......txt' files;本文SCUC数据,不考虑DR;不存在一个节点上有多个机组的情况
isRTS = 'no'; %默认值,default value is 'no'
includeDR = 'no'; %默认值,default value is 'no'
parameter.includeDR = includeDR;
parameter.includeCet = includeCet;
SCUC_data = ReadDataSCUC(FileName,parameter);
end
T = SCUC_data.totalLoad.T; % The number of time periods. 时段数T
G = SCUC_data.units.N; % The total number of units.发电机数
N = SCUC_data.baseparameters.busN; % The total number of buses.节点总数
%The partition in test system; 下面的代码生成{1,...,N}的一个划分 PI
best_partition = 1; % Default value is 1;=1 直接按照最好的划分方式划分 =0,则按照给定n来划分
[PI, allNode,PINumber] = partitionNode(SCUC_data.baseparameters.busN,N,best_partition,partionMethod);
n = size(PI,1); %The number of partition set; 划分的子集个数
%Calculate the network admittance matrix;获取潮流节点导纳矩阵B
Y = SCUC_nodeY(SCUC_data, type_of_pf);
B = -Y.B;
%Corresponding to the section III-C. Identifying "real" coupling constraints. 识别耦合节点 和耦合支路,片区改进
[partitionData] = partitionDataPI(SCUC_data, PI ,PINumber,useImprovedPratition,includeDR,isRTS);
🎉第三部分——参考文献
文章中一些内容引自网络,会注明出处或引用为参考文献,难免有未尽之处,如有不妥,请随时联系删除。(文章内容仅供参考,具体效果以运行结果为准)
🌈第四部分——本文完整资源下载
资料获取,更多粉丝福利,MATLAB|Simulink|Python|数据|文档等完整资源获取
本文完整资源下载