基于改进粒子群算法的多目标分布式电源选址定容规划(附带Matlab代码)

发布于:2025-04-03 ⋅ 阅读:(26) ⋅ 点赞:(0)

       通过分析分布式电源对配电网的影响,以有功功率损耗、电压质量及分布式电源总容量为优化目标,基于模糊理论建立了分布式电源在配电网中选址定容的多目标优化模型,并提出了一种改进粒子群算法进行求解。在算例仿真中,基于IEEE-14标准节点系统,采用MATLAB仿真工具对所提算法进行了测试,证实了所提算法全局搜索能力较强、收敛速度较快,并通过比较分析验证了该模型和算法的可行性及有效性。

 1.含DG的配电网潮流计算

      连接到配电网的 DG所采用的模型既可简化为 PV节点,也可以是PQ节点。本文将其当成具有恒定功率因数的PQ节点,由于DG 的位置一般靠近负荷中心,因此假设DG的位置就在负荷节点上。DG接入负荷节点的模型如下图所示,只需考虑改变接入DG 节点的负载功率变化即可。

       建立了DG接入配电网模型后,便可以根据相应的节点发电负载功率参数和配电网线路参数进行潮流计算,进而得到配电网中各个节点的电压以及功率分布。本文在算例仿真过程中采用牛顿拉夫逊法进行潮流计算,该方法具有良好的线性收敛性能。

2.基于改进粒子群优化算法多目标优化的DG选址定容的流程

3.仿真代码

clc;
clear;
close all;
nbus=14;
V=without_DG_process(nbus);%初始电压
voltval1=V;
%% 设置种群迭代参数
iter_max=100;        %迭代次数    
no_of_pop=100;       %种群数量 
prop_crsval=0.7;    %交叉概率
no_of_crs=2*round(prop_crsval*no_of_pop/2);  

prop_mutval=0.3;    %突变概率                          
no_of_mut=round(prop_mutval*no_of_pop);   
mu=0.02;   
sigma=2;
% runpf(case14)
% mpc=case14;
% mpc.branch ;

linedt =bus_line_data(14);

%% 初始化种群
int_tmp_pop.Position=[];
int_tmp_pop.Cost=[];
int_tmp_pop.Rank=[];
int_tmp_pop.DominationSet=[];
int_tmp_pop.DominatedCount=[];
int_tmp_pop.CrowdingDistance=[];% 拥挤度
%储存每次迭代结果
population_func_data=repmat(int_tmp_pop,no_of_pop,1);
%B = repmat(A,m,n),将矩阵 A 复制 m×n 块,即把 A 作为 B 的元素,B 由 m×n 个 A 平铺而成。B 的维数是 [size(A,1)*m, size(A,2)*n] 。
%% dg位置与容量约束
minval1=1;     %dg位置
maxval1=nbus;  %dg位置,在1-14节点中
minval2=0;     %dg容量
maxval2=50;    %dg容量
no_of_dg=4;    %dg数量

%% randsrc函数,无参数形式,随机输出
for locm=1:no_of_pop
    %产生变量,随机生成dg位置与容量,
    population_func_data(locm).Position=[randsrc(1,no_of_dg,minval1:maxval1) randsrc(1,no_of_dg,minval2:maxval2)];
    %计算出随机生成对应位置与容量情况下的目标函数值
    population_func_data(locm).Cost=feed_power(nbus,population_func_data(locm).Position);
    
end
[population_func_data, rankval]=non_dominate_sorting_process(population_func_data);%% 非支配种群排序过程
population_func_data=cal_crown_dist(population_func_data,rankval);%% 计算种群拥挤度
[population_func_data, rankval]=sort_process(population_func_data);%% 排序过程
%% 迭代
for iter=1:iter_max
       %% 种群交叉
    population_cross=repmat(int_tmp_pop,no_of_crs/2,2);%B = repmat(A,m,n),将矩阵 A 复制 m×n 块,即把 A 作为 B 的元素,B 由 m×n 个 A 平铺而成。B 的维数是 [size(A,1)*m, size(A,2)*n] 。
    for k=1:no_of_crs/2
        loc1=randi([1 no_of_pop]);
        loc1_data=population_func_data(loc1);
        
        loc2=randi([1 no_of_pop]);
        loc2_data=population_func_data(loc2);
        [population_cross(k,1).Position, population_cross(k,2).Position]=cross_over_process(loc1_data.Position,loc2_data.Position,minval1,maxval1,minval2,maxval2);
        
        population_cross(k,1).Cost=feed_power(nbus,population_cross(k,1).Position);
        population_cross(k,2).Cost=feed_power(nbus,population_cross(k,2).Position);
        
    end
    population_cross=population_cross(:);
    %% 种群变异
    population_mute=repmat(int_tmp_pop,no_of_mut,1);
    for k=1:no_of_mut
        locm=randi([1 no_of_pop]);
        data_locm=population_func_data(locm);
        population_mute(k).Position=mutation_process(data_locm.Position,mu,sigma,minval1,maxval1,minval2,maxval2);
        population_mute(k).Cost=feed_power(nbus,population_mute(k).Position);
        
    end
    
   %% 完成筛选
    population_func_data=[population_func_data;population_cross;population_mute]; 
    [population_func_data, rankval]=non_dominate_sorting_process(population_func_data);
    population_func_data=cal_crown_dist(population_func_data,rankval);
    population_func_data=sort_process(population_func_data);
    population_func_data=population_func_data(1:no_of_pop);
   [population_func_data, rankval]=non_dominate_sorting_process(population_func_data);
    population_func_data=cal_crown_dist(population_func_data,rankval);
    [population_func_data, rankval]=sort_process(population_func_data);
    resout_final=population_func_data(rankval{1});
    
    res1=[resout_final.Cost];
    

 plot3(res1(1,:),res1(2,:), res1(3,:),'b*')
xlabel('1网损')
ylabel('2电压稳定性')
zlabel('3容量和')
grid on
hold off
title('目标优化结果')
drawnow

      
end
%% 结果输出
datart=resout_final(end).Position;
%最优变量,位置和容量
DG_LOCATION=datart(1:4)
DG_UNIT_SIZE=datart(5:8)
load resg.mat 
POWER_LOSSES_WITH_DG=POWER_LOSSES
STABILITY_INDEX_WITH_DG=STABILITY_INDEX;%稳定性指数
voltval2=V;
EIGEN_VALUE=diag(d1).';%特征值
%% 画图
figure,plot(1:nbus,voltval1,'p-s','linewidth',2);
hold on,
plot(1:nbus,voltval2,'b-s','linewidth',2);
grid on;
legend('无DG时电压分布','有DG时电压分布');
xlabel('节点');
ylabel('电压幅值/pu');

4.仿真算例与结果分析仿真

      在算例仿真中,基于IEEE-14标准节点系统,采用MATLAB仿真工具对所提算法进行了测试,证实了所提算法全局搜索能力较强、收敛速度较快,并通过比较分析验证了该模型和算法的可行性及有效性。

代码地址:

基于改进粒子群算法的多目标分布式电源选址定容规划

参考论文:

基于改进粒子群算法的多目标分布式电源选址定容规划