【一种新型的最佳电容分配和尺寸调整技术】计算了安装并联电容器的最佳变电站及相应的电容器尺寸,以实现成本降低【IEEE69节点】(Matlab代码实现)

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

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

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

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

目录

 ⛳️赠与读者

💥1 概述

1. 系统建模与数据收集

2. 初始功率流分析

3. 确定候选安装位置

4. 电容器尺寸优化

5. 仿真验证

6. 经济效益分析

7. 报告与决策

📚2 运行结果

🎉3 参考文献

🌈4 Matlab代码实现


 ⛳️赠与读者

👨‍💻做科研,涉及到一个深在的思想系统,需要科研者逻辑缜密,踏实认真,但是不能只是努力,很多时候借力比努力更重要,然后还要有仰望星空的创新点和启发点。当哲学课上老师问你什么是科学,什么是电的时候,不要觉得这些问题搞笑。哲学是科学之母,哲学就是追究终极问题,寻找那些不言自明只有小孩子会问的但是你却回答不出来的问题。建议读者按目录次序逐一浏览,免得骤然跌入幽暗的迷宫找不到来时的路,它不足为你揭示全部问题的答案,但若能让人胸中升起一朵朵疑云,也未尝不会酿成晚霞斑斓的别一番景致,万一它居然给你带来了一场精神世界的苦雨,那就借机洗刷一下原来存放在那儿的“躺平”上的尘埃吧。

     或许,雨过云收,神驰的天地更清朗.......🔎🔎🔎

💥1 概述

本文计算了安装并联电容器的最佳变电站及相应的电容器尺寸,以实现成本降低。

安装电容性无功功率补偿设备(RPCDs),如传统的并联电容器和现代的FACTS控制器(SVC、STATCOM、DSTATCOM),有助于改善电力系统的运行条件,包括提高母线电压(改善)、降低支路电流(减少)和降低支路功率损耗(减少)。

尽管要安装的电容性RPCDs类型有所不同,但必须在考虑固定负载运行状态的情况下确定最佳安装位置和相应的尺寸。此后,还应考虑负载变化,以确定已安装RPCDs的切换步骤大小/无功功率数量。

给定的MATLAB代码计算了在IEEE 69母线径向配电系统中安装RPCDs(以并联电容器形式)的最佳母线及相应的并联电容器尺寸,以实现整体成本降低。
 

本研究致力于优化电容性无功补偿装置的配置,旨在通过精确计算,确定最适宜部署并联电容器的位置及其理想容量,进而有效促进电力系统的经济性和效能双重提升。无功补偿设备,涵盖传统的并联电容器及先进的FACTS技术(如静止无功补偿器SVC、静态同步补偿器STATCOM、分布式静止同步补偿器DSTATCOM),在强化电网运行性能方面发挥着不可或缺的作用,具体表现在:增强母线电压水平、减轻线路电流负担以及显著减少输电损耗,这些改进均为提升电能质量与传输效率奠定了坚实基础。

针对不同的无功补偿方案,选择合理的安装站点及确定与之匹配的电容器规格是优化过程中的关键环节。这一决策需基于固定负荷工况的深入分析,确保补偿装置能在基准状态下发挥最大效益。此外,为适应动态变化的电网需求,还需进一步考虑在不同负荷水平下的调节策略,明确RPCDs(电容性无功补偿设备)的分级投入步骤或无功功率调节范围,以实现灵活且高效的系统响应。

在此背景下,我们开发了一套基于MATLAB的计算程序,专注于在经典的IEEE 69节点 radial 配电网模型中,识别出部署并联电容器最为经济高效的站点,同时精确量化所需电容器的容量,以达成整体成本的最小化。通过该程序的仿真分析,我们不仅能科学指导电容器的安装策略,促进电能损耗的减少和系统运行成本的下降,还为未来电网的智能化升级与优化设计提供了宝贵的数据支撑与理论依据。这一研究成果对于提升电力系统的灵活性、可靠性和经济性具有重要的实践价值与战略意义。

在电力系统中,通过合理安装并联电容器来优化电网的功率因数,减少无功功率传输,从而降低电能损耗和运营成本,是一个重要的技术课题。针对IEEE 69节点测试系统,我们可以采用一种新型的最佳电容分配和尺寸调整技术来实现这一目标。以下是一个概括性的步骤和思路,用于计算安装并联电容器的最佳变电站及相应的电容器尺寸。

1. 系统建模与数据收集

首先,需要获取IEEE 69节点系统的详细数据,包括各节点的负荷、线路阻抗、变压器参数等。这些数据是后续分析和计算的基础。

2. 初始功率流分析

利用电力系统分析软件(如PSASP、ETAP、MATLAB/Simulink中的Power System Toolbox等)对系统进行初始的潮流计算,得到各节点的电压、电流、有功功率、无功功率等参数。

3. 确定候选安装位置

  • 基于负荷分布:选择负荷较重的节点或分支作为候选安装位置,因为这些位置的无功需求较大。
  • 基于电压稳定性:考虑电压偏低的节点,安装电容器可以提升电压水平。
  • 经济性与可行性:评估安装电容器的场地条件、维护成本等因素。

4. 电容器尺寸优化

  • 目标函数:定义优化目标,如最小化系统总损耗、最大化电压稳定性或综合考虑成本效益。
  • 约束条件:包括电压约束(保证电压在合理范围内)、电容器容量约束(不超过设备最大容量)、潮流约束等。
  • 优化算法:采用遗传算法、粒子群优化算法、线性规划或非线性规划等优化算法,根据目标函数和约束条件,计算每个候选位置的最佳电容器尺寸。

5. 仿真验证

将优化后的电容器配置方案应用到IEEE 69节点系统中,再次进行潮流计算,验证优化效果。比较优化前后的系统损耗、电压分布等指标,评估优化方案的可行性和有效性。

6. 经济效益分析

  • 成本计算:包括电容器购置成本、安装成本、维护成本等。
  • 收益分析:计算因减少电能损耗而节省的电费、提高电压稳定性带来的设备寿命延长等间接收益。
  • 投资回报期:评估投资回收期,判断项目的经济可行性。

7. 报告与决策

编写详细的技术报告,包括优化过程、结果分析、经济效益评估等内容,为决策者提供科学依据。根据报告内容,决策者可以决定是否实施该优化方案。

通过以上步骤,可以系统地解决IEEE 69节点系统中并联电容器的最佳分配和尺寸调整问题,实现成本降低和电网性能提升的目标。

📚2 运行结果

主函数代码:

%% ====================================================================================================================


 %% ===================================================================================================================
 clc
 clear all;
 format long
 tic
 % ========================================================================
 
 dim=69;
 nb=dim-1;
 numb=3; %number of buses to be compensated

%% CALCULATION OF THE LOSS SENSITIVITY FACTORS (LSF)

mpc=case69_thomson224;
results=runpf(mpc);
f=zeros(1,dim);
V=results.bus(:,8);
QL=results.bus(:,4);
Q=results.branch(:,15);
R=(results.branch(:,3))/(25/400689);
Vb=results.bus(1,10);
for i=1:nb
    LSF=(2*(Q(i,:)*1e6)*R(i,:))/((V(i,:)*Vb*1e3)^2);
    Loss_Sensitivity_Factors(1,i)=LSF;
    f(1,i+1)=LSF;
    [Sorted_Loss_Sensitivity_Factors, sorted_indexes]=sort(Loss_Sensitivity_Factors,'descend');
    Normalized_Voltage=V/0.95;
end
[Sorted_Loss_Sensitivity_Factors, sorted_indexes]=sort(Loss_Sensitivity_Factors,'descend');
CX=ones(1,nb);
sorted_indexes+CX;

%% CALCULATION OF MLSF AND SELECTION OF CRITICAL BUS

cdc=zeros(1,dim);

for o=2:dim 
    www=QL(o,1)*1e3;
    aaa=f(1,o)*QL(o,1)*1e6;
    cdc(1,o)=aaa;
end
[Sorted_cdc, sorted_indexes]=sort(cdc,'descend');
Loss_Sensitivity_Factors;
abc=sorted_indexes;
abc(abc==1)=[];
wewe=abc(1,1);

%% GENERATION OF POSSIBLE BUS COMBINATIONS FOR SHUNT CAPACITOR PLACEMENT
A=abc;
thom=nchoosek(A,numb); % Generation of a (qxn) matrix of all possible buses for shunt capacitor placement

%% REDUCING THE (qxn) MATRIX GENERATED ABOVE TO AN (mxn) MATRIX

ansala=zeros(length(thom(:,1)),numb);
for i=1:length(thom(:,1))
    a=ismember(thom(i,:),wewe);
    if max(a)==1
       ansala(i,:)=thom(i,:);
    end
end
 ansala(~any(ansala,2),:)=[]; %deletes an any all zeros rows
 ansala=ansala(1:round((length(ansala(:,1))/10)),:);
 % ========================================================================
 
 dim1=numb;
 dimo=numb;
 
 lb = 1;
 ub = length(ansala(:,1));
 
 lb1 = [0.15,0.15,0.15];%,0.15,0.15,0.15];
 ub1 = [4.05,4.05,4.05];%,4.05,4.05,4.05];
 
 %% PARAMETERS OF MVO
 Max_iteration = 200;          % number of iterations
 SearchAgents_no = 50;         % Number of search agents or Universes1
 WEP_Max = 1;                  % Minimum Wormhole Existence Probability (min and max in Eq.(3.3) in the paper
 WEP_Min = 0.2;                % Maximum of Wormhole Existence Probability (min and max in Eq.(3.3) in the paper
 
 mpc=case69_thomson224;
 result = runpf(mpc);
 AEDR =((sum(result.branch(:,14)+result.branch(:,16))*1e3))*168;%+inf;
 
 %% INITIALIZATION

 %Two variables for saving the position and inflation rate (fitness) of the best universe
 Best_universe = zeros(1,dim1);
 Best_universe1 = zeros(1,dim1);
 Best_universe_Inflation_rate = AEDR;
 
 %Initialize the positions of Universes
 Boundary_no= size(ub,2); % numnber of boundaries
 
 % ========================================================================
 
  Xs=round(rand(SearchAgents_no,1).*(ub-lb)+lb);
 
 for i=1:dimo
     ub_i1=ub1(i);
     lb_i1=lb1(i);
     Xs1(:,i)=rand(SearchAgents_no,1).*(ub_i1-lb_i1)+lb_i1;
 end
     
 Universes = (Xs);
 Universes1 = (Xs1);
 
 Saizi = [0.15,0.30,0.45,0.60,0.75,0.90,1.05,1.20,1.35,1.50,1.65,1.80,1.95,2.10,2.25,2.40,2.55,2.70,2.85,3,3.15,3.30,3.45,3.60,3.75,3.90,4.05];
 pos= [1:1:length(ansala(:,1))];
 
 
 for Time = 1:Max_iteration
     
    
    WEP = WEP_Min+Time*((WEP_Max-WEP_Min)/Max_iteration);
    
    %Travelling Distance Rate 
    TDR = 1-((Time)^(1/6)/(Max_iteration)^(1/6));

    %Inflation rates (I) (fitness values)
    Inflation_rates = zeros(1,size(Universes1,1)); % 'size(Universes1,1)' prints out the number of rows in the matrix Universe
 
    for q = 1:size(Universes1,1)
          
        %Boundary checking (to bring back the Universes1 inside search space if they go beyoud the boundaries
        
         [~,idxo]=min(abs(Universes(q,:)-pos.'));
                 Universes(q,:) = pos(idxo);
                 
                 [~,idx]=min(abs(Universes1(q,:)-Saizi.'));
                 Universes1(q,:) = Saizi(idx);
           
             mpc=case69_thomson224;
             reactive_power = mpc.bus(:,4);
             capacitors = (Universes1(q,:))';
             compensated = reactive_power((ansala(Universes(q,:),:))')-capacitors;
             mpc.bus((ansala(Universes(q,:),:))',4) = compensated;
             reactive_power = mpc.bus(:,4);
             result = runpf(mpc);
             gift=result.bus(:,8);
             Vmin=min(gift);
             Vmax=max(gift);    
               
             Voltage_constraint1= Vmax <= 1.1;
             Voltage_constraint2 = Vmin >= 0.9;
          
             costedcapA2023;
             
             if Voltage_constraint2 == 1 & Voltage_constraint1 == 1
                Inflation_rates(1,q) = ((sum(result.branch(:,14)+result.branch(:,16))*1e3))*168+sum(cost1);
             else
                Inflation_rates(1,q) = ((sum(result.branch(:,14)+result.branch(:,16))*1e3))*168+9*1e23;
             end
            
             %Elitism
             if Inflation_rates(1,q) < Best_universe_Inflation_rate
                Best_universe_Inflation_rate = Inflation_rates(1,q);
                Best_universe = Universes(q,:);
                Best_universe1 = Universes1(q,:);
                Real_Power_Losses = sum(result.branch(:,14)+result.branch(:,16))*1e3;
                Vmin1=Vmin;
             end
         end
       
         %%==================================================================
       
         [sorted_Inflation_rates,sorted_indexes]=sort(Inflation_rates);
     
         for newindex=1:length(Universes1(:,1))
             Sorted_Universes(newindex,:)=Universes(sorted_indexes(newindex),:);
             Sorted_Universes1(newindex,:)=Universes1(sorted_indexes(newindex),:);
         end
         Universes = Sorted_Universes;
         Universes1 = Sorted_Universes1;
       
         %Normaized inflation rates (NI in Eq. (3.1) in the paper)
         normalized_sorted_Inflation_rates = normr(sorted_Inflation_rates);
       
         %%==================================================================
       
         %Update the Position of Universes1
         for q = 2:size(Universes1,1) %Starting from 2 since the first one is the elite
             %Best_universe=ansala(Best_universe,:);
             %vcfdd
             Black_hole_index = q;
             for j = 1:size(Universes1,2)
                 r1 = rand();
               
                 if r1 < normalized_sorted_Inflation_rates(q) 
                    A = 2:length(Sorted_Universes1(:,1));
                    White_hole_index = A(randi(numel(A)));
                   
                    Universes(Black_hole_index,1) = Sorted_Universes(White_hole_index,1);
                    Universes1(Black_hole_index,j) = Sorted_Universes1(White_hole_index,j);
                 end
             end
                    
             %====================================================================
      
             for j = 1:size(Universes1,2)
                 r2 = rand();
                
                 if r2 < WEP
                    r3=rand(); 
                    r4=rand();
                  
                    if r3<0.5    
                       Universes(q,1)=round(Best_universe(1,1)+TDR*((ub(1,1)-lb(1,1))*r4+lb(1,1)));
                       Universes1(q,j)=Best_universe1(1,j)+TDR*((ub1(1,j)-lb1(1,j))*r4+lb1(1,j));
                    end
                    
                    if r3>=0.5
                       Universes(q,1)=round(Best_universe(1,1)-TDR*((ub(1,1)-lb(1,1))*r4+lb(1,1)));
                       Universes1(q,j)=Best_universe1(1,j)-TDR*((ub1(1,j)-lb1(1,j))*r4+lb1(1,j));
                    end   
                 end
                 [~,idxo]=min(abs(Universes(q,:)-pos.'));
                 Universes(q,:) = pos(idxo);
                 
                 [~,idx]=min(abs(Universes1(q,:)-Saizi.'));
                 Universes1(q,:) = Saizi(idx);
             end
         end
 end
 
 %% RESULTS
 OPTIMUM_BUS_COMBINATION=ansala(Best_universe,:)
 OPTIMUM_CAPACITOR_SIZES=Best_universe1
 OPTIMUM_OVERALL_COST=Best_universe_Inflation_rate
 OPTIMUM_REAL_POWER_LOSSES=Real_Power_Losses
 
 toc
 

🎉3 参考文献

文章中一些内容引自网络,会注明出处或引用为参考文献,难免有未尽之处,如有不妥,请随时联系删除。

[1]盛小伟,黄梅.谐波条件下并联电容器过电压保护的一种实现方法[C]//电力电容器,无功补偿技术会议.2006.

[2]方春恩,王佳颖,邹积岩.并联电容器组同步关合最佳目标相位的确定[J].电工技术学报, 2006, 21(1):4.DOI:10.3321/j.issn:1000-6753.2006.01.005.

[3]周辉,潘建,高健,等.变电站并联电容器谐波放大及改进措施[J].华中科技大学学报:自然科学版, 2007, 35(6):4.DOI:10.3321/j.issn:1671-4512.2007.06.022.

🌈4 Matlab代码实现

资料获取,更多粉丝福利,MATLAB|Simulink|Python资源获取

                                                           在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值