【ADMM、碳排放】基于分布式ADMM算法的考虑碳排放交易的电力系统优化调度研究【IEEE6节点、IEEE30节点、IEEE118节点】(Matlab代码实现)

简介: 【ADMM、碳排放】基于分布式ADMM算法的考虑碳排放交易的电力系统优化调度研究【IEEE6节点、IEEE30节点、IEEE118节点】(Matlab代码实现)

👨‍🎓个人主页

💥💥💞💞欢迎来到本博客❤️❤️💥💥

🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。

⛳️座右铭:行百里者,半于九十。

💥1 概述

image.gif 编辑

摘要:

该文提出一种分布式交变方向乘数法(ADMMs)方法,用于解决含碳排放交易的直流动态最优潮流(dc-DOPF-CET)问题。通常,基于ADMM的分布式方法在相邻子系统之间公开边界总线和分支信息。与这些方法相反,所提出的方法(dc-ADMM-P)采用了一种新的策略,即使用共识ADMM求解dc-DOPF-CET的对偶,同时仅公开相邻子系统之间的边界分支信息。此外,通过减少双乘法器的数量并采用改进的乘法器更新步骤,提高了dc-ADMM-P的收敛性能。DC-ADMM-P 在 6 到 1062 条总线的案例中进行了测试,并与其他分布式/分布式方法进行了比较。仿真结果验证了dc-ADMM-P在解决具有复(非线性)因子的dc-DOPF问题方面的高效率,这些因子可以表述为凸可分函数。同时,通过减少双乘数的数量和采用新的乘法器更新策略,展示了收敛性能的提高。

基于分布式ADMM算法的考虑碳排放交易的电力系统优化调度研究

一、分布式ADMM算法的核心原理与优势

ADMM(交替方向乘子法)是一种分布式优化框架,通过分解原问题为多个子问题并行求解,适用于电力系统的大规模优化场景。其核心步骤包括:

  1. 变量分解与交替更新:将原问题分解为局部变量(如各区域发电计划)和全局变量(如碳排放约束),通过交替更新变量实现协调优化。
  2. 对偶变量调整:引入拉格朗日乘子(对偶变量)处理约束条件(如功率平衡、碳排放配额),通过乘子更新实现全局收敛。
  3. 分布式实现:各节点仅需本地数据和部分全局信息,无需集中式控制,保护隐私并降低通信开销。

优势

  • 可扩展性:适用于多区域、多主体的电力系统(如微网群、交直流混合电网)。
  • 鲁棒性:对噪声和计算误差具有容忍度,适合动态调度场景。
  • 效率:通过并行计算加速大规模问题求解,减少单点计算瓶颈。

二、碳排放交易机制与电力系统调度的融合

  1. 碳排放核算与责任划分
  • 源-网-荷全环节追踪:基于碳流理论动态计算节点碳排放因子,明确发电侧、输配侧、用户侧的碳排放责任。
  • 动态碳排放因子:结合实时潮流和发电类型(火电、风电等),动态调整碳排放成本权重。
  1. 碳交易机制设计
  • 配额分配:根据发电量或历史排放水平分配免费配额,超额部分需购买。
  • 阶梯碳价模型:将碳排放量与配额差值划分为区间,碳价随超额量递增,激励低碳调度。
  • 市场联动:通过“电-碳”协同机制,将碳价与电价动态绑定,引导清洁能源消纳。

三、电力系统优化调度的多目标建模

目标函数

  1. 经济性:最小化发电成本(燃料成本、机组启停)+ 碳排放交易成本。

    image.gif 编辑
  2. 环保性:减少系统总碳排放量,满足配额约束。
  3. 可靠性:保证功率平衡、电压稳定及备用容量。

核心约束

  • 碳排放约束:各区域碳排放量 ≤ 配额 ± 交易量。
  • 设备运行限制:火电机组爬坡速率、储能充放电周期、可再生能源出力波动。
  • 网络约束:线路潮流安全、节点电压范围。

四、ADMM与碳交易结合的调度框架

  1. 问题分解
  • 将电力系统划分为多个子区域(如微网、配电网),每个区域独立优化本地发电计划及碳排放量。
  • 全局协调变量包括碳排放配额分配、跨区域功率交换等。
  1. 迭代流程
  • image.gif 编辑
  • 步骤2(全局协调) :更新碳排放配额交易量及对偶变量,确保跨区域约束(如总碳排放上限)。
  • 终止条件:原始残差(发电计划差异)与对偶残差(碳排放约束偏差)均小于阈值。

案例

  • 多微网协同调度:通过ADMM实现微网间电能共享,碳排放成本降低12%-15%。
  • 配电网优化:在IEEE 118节点系统中,结合阶梯碳价模型,ADMM算法收敛速度较传统方法提升30%。

五、碳排放交易对经济调度的影响机制

  1. 成本驱动:碳价升高迫使高排放机组减少出力,转向低碳机组或储能。
  • 实证结果:碳价从50元/吨增至200元/吨时,火电碳排放强度下降8%-15%。
  1. 技术激励:促进可再生能源消纳与储能调峰,优化系统潮流分布。
  • 储能作用:在峰谷时段充放电替代火电尖峰出力,降低碳交易成本约20%。
  1. 市场响应:碳配额交易与电力市场联动,形成动态电价信号,引导用户侧需求响应。

六、未来研究方向

  1. 算法改进
  • 加速ADMM:引入随机变量更新顺序(RAC-ADMM)或梯度加速,提升收敛速度。
  • 多时间尺度耦合:结合日内滚动调度(15分钟级)与中长期碳配额交易。
  1. 机制创新
  • 区块链技术:实现碳配额的去中心化交易与溯源。
  • 动态责任因子:基于实时碳流追踪优化配额分配。
  1. 跨领域协同
  • 电-气-热多能流联合优化,扩展ADMM应用场景。

七、结论

分布式ADMM算法与碳排放交易机制的结合,为电力系统低碳调度提供了高效解决方案:

  • 技术层面:通过分布式优化降低计算复杂度,适应大规模系统。
  • 经济层面:碳交易内化环境成本,推动能源结构转型。
  • 政策层面:为“双碳”目标下的电力市场设计提供理论支撑。

未来需进一步探索算法鲁棒性、市场机制灵活性及多主体博弈行为,以实现电力系统的安全、经济与环保协同优化。

📚2 运行结果

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

image.gif

%             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

image.gif 编辑

image.gif 编辑

image.gif 编辑

image.gif 编辑

部分代码:

%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);

image.gif

%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)

🎉3 参考文献

部分理论来源于网络,如有侵权请联系删除。

[1]L. Yang, J. Luo, Y. Xu, Z. Zhang and Z. Dong, "A Distributed Dual Consensus ADMM Based on Partition for DC-DOPF With Carbon Emission Trading," in IEEE Transactions on Industrial Informatics, vol. 16, no. 3, pp. 1858-1872, March

相关文章
|
9天前
|
人工智能 运维 安全
|
7天前
|
人工智能 异构计算
敬请锁定《C位面对面》,洞察通用计算如何在AI时代持续赋能企业创新,助力业务发展!
敬请锁定《C位面对面》,洞察通用计算如何在AI时代持续赋能企业创新,助力业务发展!
|
8天前
|
机器学习/深度学习 人工智能 自然语言处理
B站开源IndexTTS2,用极致表现力颠覆听觉体验
在语音合成技术不断演进的背景下,早期版本的IndexTTS虽然在多场景应用中展现出良好的表现,但在情感表达的细腻度与时长控制的精准性方面仍存在提升空间。为了解决这些问题,并进一步推动零样本语音合成在实际场景中的落地能力,B站语音团队对模型架构与训练策略进行了深度优化,推出了全新一代语音合成模型——IndexTTS2 。
683 23
|
8天前
|
人工智能 测试技术 API
智能体(AI Agent)搭建全攻略:从概念到实践的终极指南
在人工智能浪潮中,智能体(AI Agent)正成为变革性技术。它们具备自主决策、环境感知、任务执行等能力,广泛应用于日常任务与商业流程。本文详解智能体概念、架构及七步搭建指南,助你打造专属智能体,迎接智能自动化新时代。
|
14天前
|
人工智能 JavaScript 测试技术
Qwen3-Coder入门教程|10分钟搞定安装配置
Qwen3-Coder 挑战赛简介:无论你是编程小白还是办公达人,都能通过本教程快速上手 Qwen-Code CLI,利用 AI 轻松实现代码编写、文档处理等任务。内容涵盖 API 配置、CLI 安装及多种实用案例,助你提升效率,体验智能编码的乐趣。
1118 110
|
人工智能 数据可视化 数据挖掘
Quick BI 体验&征文有奖!
瓴羊生态推出Quick BI 征文激励计划,鼓励用户分享数据分析实践经验与技术洞察,征集高质量原创文章。内容围绕AI功能体验与BI案例实践,设季奖、年奖及参与奖,优秀作者可获现金奖励、产品内测资格及官方认证形象。投稿截止至2026年3月31日。
Quick BI 体验&征文有奖!