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

本文涉及的产品
视频直播,500GB 1个月
简介: 【ADMM、碳排放】基于分布式ADMM算法的考虑碳排放交易的电力系统优化调度研究【IEEE6节点、IEEE30节点、IEEE118节点】(Matlab代码实现)

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


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


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


📋📋📋本文目录如下:🎁🎁🎁


目录


💥1 概述


📚2 运行结果


🎉3 参考文献


🌈4 Matlab代码、数据、文章讲解


💥1 概述

文献来源:


f1d07409d05142498d5a5b1db54cc657.png


摘要:


该文提出一种分布式交变方向乘数法(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问题方面的高效率,这些因子可以表述为凸可分函数。同时,通过减少双乘数的数量和采用新的乘法器更新策略,展示了收敛性能的提高。


原文摘要:


Abstract:


This article presents a distributed alternating direction method of multipliers (ADMMs) approach for solving the direct current dynamic optimal power flow with carbon emission trading (dc-DOPF-CET) problem. Generally, the ADMM-based distributed approaches disclose boundary buses and branches information among adjacent subsystems. As opposed to these methods, the proposed method (dc-ADMM-P) adopts a novel strategy which uses consensus ADMM to solve the dual of dc-DOPF-CET while only discloses boundary branches information among adjacent subsystems. Moreover, the convergence performance of dc-ADMM-P is improved by reducing the number of dual multipliers and employing an improved update step of the multiplier. DC-ADMM-P is tested on cases ranging from 6 to 1062 buses, with comparison with other distributed/decentralized methods. The simulation results verify the high efficiency of dc-ADMM-P in solving the dc-DOPF problem with complex (nonlinear) factors which can be formulated as convex separable functions. Meanwhile, it also shows the improvement of convergence performance by reducing the number of dual multipliers and employing a new update strategy for the multiplier.


ADMM非常适合分布式凸优化,特别是对于OPF [22],[23]等大规模问题。这种方法是在1970年代开发的,起源于1950年代[24]。它可以被视为尝试将双重分解和增强拉格朗日方法的优点混合在一起,以实现约束优化。有趣的是,在没有调谐的情况下,ADMM可以在某些问题上与最知名的方法竞争。在[13]中,ADMM的一般形式被引入,并从两块ADMM扩展到N块ADMM。此外,本文还重点介绍了两种基于ADMM的分布式并行优化算法:共识ADMM(C-ADMM)和雅可比近端ADMM(JP-ADMM)。C-ADMM和JP-ADMM在DC-OPF中的数值结果表明,ADMM作为电网分布式并行算法是有效的。[7]中提出了一种没有中央控制器的完全分布式基于共识的ADMM,用于具有需求响应(DR)的dc-OPF。该方法采用一种新的通信策略,通过全局共识变量进行协调,即相邻子系统边界总线上的相位角。在[14]中,提出了基于ADMM结合顺序凸近似的D-OPF。集中式OPF被分解为对应于每个总线的子问题,其中子问题的解决方案与总线之间的光通信协议进行协调。在 [15] 中,基于 ADMM 的算法已应用于 OPF。


📚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


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

1dcc0d69961c4e82b81fbea05f4695fa.pngc63e49a9970d4aa8a7298ea8118b6831.pngdf0171c716e14b0ab177eb8fd2c41c7c.pnga9b83ec5c8c347fd8d15a73a8e37f839.png


部分代码:

%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);
            %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 2020, doi: 10.1109/TII.2019.2937513.


🌈4 Matlab代码、数据、文章讲解


相关文章
|
2月前
|
缓存 算法 物联网
基于AODV和leach协议的自组网络平台matlab仿真,对比吞吐量,负荷,丢包率,剩余节点个数,节点消耗能量
本系统基于MATLAB 2017b,对AODV与LEACH自组网进行了升级仿真,新增运动节点路由测试,修正丢包率统计。AODV是一种按需路由协议,结合DSDV和DSR,支持动态路由。程序包含参数设置、消息收发等功能模块,通过GUI界面配置节点数量、仿真时间和路由协议等参数,并计算网络性能指标。 该代码实现了节点能量管理、簇头选举、路由发现等功能,并统计了网络性能指标。
164 73
|
1月前
|
安全 调度
电力系统的负荷损失和潮流计算matlab仿真,对比最高度数,最高介数以及最高关键度等节点攻击
本课题研究节点攻击对电力系统稳定性的影响,通过模拟最高度数、最高介数和最高关键度攻击,对比不同攻击方式下的停电规模。采用MATLAB 2022a 进行系统仿真,核心程序实现线路断开、潮流计算及优化。研究表明,节点攻击会导致负荷损失和系统瘫痪,对电力系统的安全构成严重威胁。通过分析负荷损失率和潮流计算,提出减少负荷损失的方法,以提升电力系统的稳定性和安全性。
|
1月前
|
传感器 算法 C语言
基于无线传感器网络的节点分簇算法matlab仿真
该程序对传感器网络进行分簇,考虑节点能量状态、拓扑位置及孤立节点等因素。相较于LEACH算法,本程序评估网络持续时间、节点死亡趋势及能量消耗。使用MATLAB 2022a版本运行,展示了节点能量管理优化及网络生命周期延长的效果。通过簇头管理和数据融合,实现了能量高效和网络可扩展性。
|
3月前
|
Kubernetes 算法 调度
在k8S中,Scheduler使用哪两种算法将Pod绑定到worker节点?
在k8S中,Scheduler使用哪两种算法将Pod绑定到worker节点?
|
4月前
|
安全 C++
基于MATLAB的电力线路参数计算仿真
*1. 课题概述** - 电力线路分为输电与配电,计算关键参数至关重要 - 本项目开发基于MATLAB的软件,用于计算电力线路的重要参数 *2. 系统仿真结果** - 实现了工频电场、电力系统潮流等参数的计算。 - 包括MATLAB界面设计与计算功能实现。 *3. 系统原理简介** - **额定电压**: 设备最佳工作电压,保障性能稳定及延长使用寿命。 - **输变电设施**: 运行时产生工频电场和磁场,需符合国家标准限值。 - **线径计算**: 依据电流密度和趋肤效应确定导线截面积。 - **电力系统潮流计算**: 基于牛顿-拉夫逊法求解电力系统稳态运行状态,用于检查系统过负荷及电压质量。
|
4月前
|
传感器 机器学习/深度学习 算法
基于GA遗传算法的WSN网络节点覆盖优化matlab仿真
本研究应用遗传优化算法于无线传感器网络(WSN),优化节点布局与数量,以最小化节点使用而最大化网络覆盖率。MATLAB2022a环境下,算法通过选择、交叉与变异操作,逐步改进节点配置,最终输出收敛曲线展现覆盖率、节点数及适应度值变化。无线传感器网络覆盖优化问题通过数学建模,结合遗传算法,实现目标区域有效覆盖与网络寿命延长。算法设计中,采用二进制编码表示节点状态,适应度函数考量覆盖率与连通性,通过选择、交叉和变异策略迭代优化,直至满足终止条件。
|
25天前
|
算法 安全 数据安全/隐私保护
基于game-based算法的动态频谱访问matlab仿真
本算法展示了在认知无线电网络中,通过游戏理论优化动态频谱访问,提高频谱利用率和物理层安全性。程序运行效果包括负载因子、传输功率、信噪比对用户效用和保密率的影响分析。软件版本:Matlab 2022a。完整代码包含详细中文注释和操作视频。
|
10天前
|
算法 数据挖掘 数据安全/隐私保护
基于FCM模糊聚类算法的图像分割matlab仿真
本项目展示了基于模糊C均值(FCM)算法的图像分割技术。算法运行效果良好,无水印。使用MATLAB 2022a开发,提供完整代码及中文注释,附带操作步骤视频。FCM算法通过隶属度矩阵和聚类中心矩阵实现图像分割,适用于灰度和彩色图像,广泛应用于医学影像、遥感图像等领域。
|
11天前
|
算法 调度
基于遗传模拟退火混合优化算法的车间作业最优调度matlab仿真,输出甘特图
车间作业调度问题(JSSP)通过遗传算法(GA)和模拟退火算法(SA)优化多个作业在并行工作中心上的加工顺序和时间,以最小化总完成时间和机器闲置时间。MATLAB2022a版本运行测试,展示了有效性和可行性。核心程序采用作业列表表示法,结合遗传操作和模拟退火过程,提高算法性能。
|
12天前
|
存储 算法 决策智能
基于免疫算法的TSP问题求解matlab仿真
旅行商问题(TSP)是一个经典的组合优化问题,目标是寻找经过每个城市恰好一次并返回起点的最短回路。本文介绍了一种基于免疫算法(IA)的解决方案,该算法模拟生物免疫系统的运作机制,通过克隆选择、变异和免疫记忆等步骤,有效解决了TSP问题。程序使用MATLAB 2022a版本运行,展示了良好的优化效果。