程序名称:基于多目标粒子群算法的电力系统分布式电源选址定容
实现平台:matlab
简介:为更好地解决分布式电源选址定容问题,提出一种改进的多目标粒子群算法。考虑投资成本、网损以及电压稳定性三因素建立了一个三目标的数学模型,并采用上述多目标粒子群算法对模型求解。最后利用 IEEE-69节点系统仿真来验证所提算法在分布式电源选址定容方面的有效性。
具体细节可参考自动化与仪器仪表. 2021,(05)论文《基于多目标规划的分布式电源选址定容研究》
1 含 DG 的配电网优化配置模型
2.基于 AMOPSO 算法的分布式电源优化配置具体步骤
3.选址定容仿真分析
部分代码展示
%% 多目标粒子群算法分布式电源定容选址优化规划
tic %测试时间
format short ;
clc;
clear
close all
%% 算法初始参数设置
pop=90; %种群粒子数目
gen=200; %最大迭代次数
M=4; %目标函数个数(M-1)
V=68; %控制变量个数
Xmax=10; %控制变量约束最大值
Xmin=0; %控制变量约束最小值
g_best=zeros(gen,V); %全局最优存放位置
pop_num=50; %保存的最优前沿
lamda=0.5; %退火常数
%% 初始化种群个体
[pop_x,pop_v]=initial(pop,V,M);
%% 模拟退火粒子群算法
for t=1:gen %进入主要循环,gen迭代次数
clear Gbest_value
clear R
%% 1.寻找全局最优
[pbest,pbest_value,k]=gbest_fitness(pop_x,V,M,pop);
g_best(t,:)=pbest;
g_best_value(t,:)=pbest_value;
%% 1.对各目标函数值进行排序
for j = 1 : M
[Gbest_value(:,j),R(:,j)]=sort(g_best_value(:,j));
end
%% 2.根据个体排序计算其适应度
for i = 1 : t
for j = 1 : M
if R(i,j)>1
ex(i,j)=(pop-R(i,j))^2;
else
ex(i,j)=k*pop;
end
end
end
ex=sum(ex');
%% 3.得到适应度最好的全局最优解
[Fit,index]=sort(ex');
%[y_val,index]=min(g_best_value);
clear Fit;
gbest=g_best(index,:);
%% 2.速度更新
change_v=update_v(t,gen,pop_v,pop_x(:,1:68),g_best,V,pop,pbest);
pop_v=change_v;
%% 2.更新位置
change_x=pop_x(:,1:V)+change_v(:,1:V);
%% 控制变量约束
for i = 1 : pop
for j = 1 : V
if change_x(i,j)>Xmax
change_x(i,j)=randi([0,10],1,1);
else if change_x(i,j)<Xmin
change_x(i,j)=randi([0,10],1,1);
end
end
end
end
%% 粒子群速度限制约束
%% 求出各个体的目标函数值
for i=1:pop
change_x(i,V+1:V+M)=mokuaihanshu(pop_x(i,:),pop,M,V);%求出各个体的目标函数值
end
%% 形成混合种群
[y1,x1]=size(pop_x);
[y2,x2]=size(change_x);%注意:此时x1不等于x2
migle_x(1:y1,:)=pop_x;
migle_x(y1+1:y1+y2,1:x2)=change_x;
%% 进行非支配排序
migle_x = non_domination_sort_mod(migle_x, M, V);
%% 选择下一代种群
pop_x = replace_chromosome(migle_x, M, V, pop);
%% 画图输出
Ploss=pop_x(:,V+1)./(10^9);
Cost=pop_x(:,V+2)./(10^6);
plot3(Ploss,Cost,pop_x(:,V + 3),'b*');
xlabel('网损');ylabel('总投资与运行成本');zlabel('负荷节点电压偏差');
grid on
hold off
title('多目标优化结果')
drawnow
end
pop_x(1:(V+3))