【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代码、数据、文章讲解


相关文章
|
17天前
|
算法 安全 数据安全/隐私保护
基于game-based算法的动态频谱访问matlab仿真
本算法展示了在认知无线电网络中,通过游戏理论优化动态频谱访问,提高频谱利用率和物理层安全性。程序运行效果包括负载因子、传输功率、信噪比对用户效用和保密率的影响分析。软件版本:Matlab 2022a。完整代码包含详细中文注释和操作视频。
|
2天前
|
算法 数据挖掘 数据安全/隐私保护
基于FCM模糊聚类算法的图像分割matlab仿真
本项目展示了基于模糊C均值(FCM)算法的图像分割技术。算法运行效果良好,无水印。使用MATLAB 2022a开发,提供完整代码及中文注释,附带操作步骤视频。FCM算法通过隶属度矩阵和聚类中心矩阵实现图像分割,适用于灰度和彩色图像,广泛应用于医学影像、遥感图像等领域。
|
3天前
|
算法 调度
基于遗传模拟退火混合优化算法的车间作业最优调度matlab仿真,输出甘特图
车间作业调度问题(JSSP)通过遗传算法(GA)和模拟退火算法(SA)优化多个作业在并行工作中心上的加工顺序和时间,以最小化总完成时间和机器闲置时间。MATLAB2022a版本运行测试,展示了有效性和可行性。核心程序采用作业列表表示法,结合遗传操作和模拟退火过程,提高算法性能。
|
4天前
|
存储 算法 决策智能
基于免疫算法的TSP问题求解matlab仿真
旅行商问题(TSP)是一个经典的组合优化问题,目标是寻找经过每个城市恰好一次并返回起点的最短回路。本文介绍了一种基于免疫算法(IA)的解决方案,该算法模拟生物免疫系统的运作机制,通过克隆选择、变异和免疫记忆等步骤,有效解决了TSP问题。程序使用MATLAB 2022a版本运行,展示了良好的优化效果。
|
3天前
|
机器学习/深度学习 算法 芯片
基于GSP工具箱的NILM算法matlab仿真
基于GSP工具箱的NILM算法Matlab仿真,利用图信号处理技术解析家庭或建筑内各电器的独立功耗。GSPBox通过图的节点、边和权重矩阵表示电气系统,实现对未知数据的有效分类。系统使用MATLAB2022a版本,通过滤波或分解技术从全局能耗信号中提取子设备的功耗信息。
|
3天前
|
机器学习/深度学习 算法 5G
基于MIMO系统的SDR-AltMin混合预编码算法matlab性能仿真
基于MIMO系统的SDR-AltMin混合预编码算法通过结合半定松弛和交替最小化技术,优化大规模MIMO系统的预编码矩阵,提高信号质量。Matlab 2022a仿真结果显示,该算法能有效提升系统性能并降低计算复杂度。核心程序包括预编码和接收矩阵的设计,以及不同信噪比下的性能评估。
18 3
|
9天前
|
存储 缓存 算法
分布式缓存有哪些常用的数据分片算法?
【10月更文挑战第25天】在实际应用中,需要根据具体的业务需求、数据特征以及系统的可扩展性要求等因素综合考虑,选择合适的数据分片算法,以实现分布式缓存的高效运行和数据的合理分布。
|
10天前
|
分布式计算 Java 开发工具
阿里云MaxCompute-XGBoost on Spark 极限梯度提升算法的分布式训练与模型持久化oss的实现与代码浅析
本文介绍了XGBoost在MaxCompute+OSS架构下模型持久化遇到的问题及其解决方案。首先简要介绍了XGBoost的特点和应用场景,随后详细描述了客户在将XGBoost on Spark任务从HDFS迁移到OSS时遇到的异常情况。通过分析异常堆栈和源代码,发现使用的`nativeBooster.saveModel`方法不支持OSS路径,而使用`write.overwrite().save`方法则能成功保存模型。最后提供了完整的Scala代码示例、Maven配置和提交命令,帮助用户顺利迁移模型存储路径。
|
14天前
|
人工智能 算法 数据安全/隐私保护
基于遗传优化的SVD水印嵌入提取算法matlab仿真
该算法基于遗传优化的SVD水印嵌入与提取技术,通过遗传算法优化水印嵌入参数,提高水印的鲁棒性和隐蔽性。在MATLAB2022a环境下测试,展示了优化前后的性能对比及不同干扰下的水印提取效果。核心程序实现了SVD分解、遗传算法流程及其参数优化,有效提升了水印技术的应用价值。
|
15天前
|
机器学习/深度学习 算法 数据安全/隐私保护
基于贝叶斯优化CNN-LSTM网络的数据分类识别算法matlab仿真
本项目展示了基于贝叶斯优化(BO)的CNN-LSTM网络在数据分类中的应用。通过MATLAB 2022a实现,优化前后效果对比明显。核心代码附带中文注释和操作视频,涵盖BO、CNN、LSTM理论,特别是BO优化CNN-LSTM网络的batchsize和学习率,显著提升模型性能。
下一篇
无影云桌面