1.完整项目描述和程序获取
>面包多安全交易平台:https://mbd.pub/o/bread/Y52Wlp9y
>如果链接失效,可以直接打开本站店铺搜索相关店铺:
>如果链接失效,程序调试报错或者项目合作也可以加微信或者QQ联系。
2.部分仿真图预览
3.算法概述
分布式电源作为一种绿色新能源,由于其具有能源利用率高且对环境污染小等优点,所以得到了广泛的应用研究。目前,分布式电源主要以备用电源的形式应用在工业、农业等领域。集中式供电系统中多个发电系统经过一个或几个变压器的汇集再并入配电网中,分布式供电系统中发电系统相互独立,每个发电系统都可以直接并入配电网。分布式电源和集中式电源最大的区别是安装在负荷点附近和规模较小,所以DG可以根据附近负荷需求量的大小,直接向负荷进或系统进行供电,一般情况下,不论为何种发电形式,只要是安装在用户附近的发电设备都可以定义为分布式电源。电力工业由单纯的集中式发电模式逐渐转型为以大型发电站为主、分布式电源为辅的新型发电模式,使供电方式更加灵活,从而提高了电能的质量、降低系统损耗。
4.部分源码
%%%%%%%给定初始化条件%%%%%%%%%%
%c1 学习因子1
%c2 学习因子2
%w惯性权重
%M最大迭代次数
%D搜索空间维数
%N初始化群体个体数目
clc;
clear;
close all;
warning off;
addpath(genpath(pwd));
rng('default')
tic % 输出程序运行时间
global Vi X Y Z; %定义全局变量Vi
Num=33;
N = 50;
% c1 = 1.5;
% c2 = 2.5;
% c1 = 2;
% c2 = 2;
% c1 = 2.05;
% c2 = 2.05;
% w=0.9;
c1 = 1;
c2 = 1.5;
w =0.65;
M =500;
% M =200;
D = 6;
% D = 4;
%3DG
ub = [33 33 33 3 3 3];
% ub = [33 33 33 2.048 2.048 2.048];
lb = [2 2 2 0 0 0];
% ub = [33 33 33 3 3 3 3 3 3];
% lb = [2 2 2 0 0 0 0 0 0];
%2DG
% ub = [33 33 2 2];
% lb = [2 2 0 0];
%%%%%%%%%%%%%%%%%%初始化种群的个体(可在这里限制位置和速度的范围)%%%%%
for i = 1:N
for j = 1:D
ub_j=ub(j);
lb_j=lb(j);
if j < 4
% if j<3
x(i,j) = round(rand(1,1).*(ub_j-lb_j))+lb_j;
else
x(i,j)=rand(1,1).*(ub_j-lb_j)+lb_j;
end
% x(i,j) = randn; %随机初始化位置
v(i,j) = randn; %随机初始化速度
end
end
%%%%%%%%%%%%先计算各个粒子的适应度值,并初始化pi和pg%%%%%%%%%
for i = 1:N
p(i) = fitness(x(i,:));
y(i,:) = x(i,:);
end
pg = x(N,:); %pg为全局最优
for i = 1:(N-1)
if fitness(x(i,:)) < fitness(pg)
pg = x(i,:);
end
end
%%%%%%%%%%进入主要循环,按照公式依次迭代,直到满足精度要求%%%%%%%%%%%
for t = 1:M
t
for i = 1:N %更新速度 位移
v(i,:) = w*v(i,:)+c1*rand*(y(i,:)-x(i,:)-x(i,:))+c2*rand*(pg-x(i,:));
x(i,:) = x(i,:) + v(i,:);
for j = 1:D
ub_j=ub(j);
lb_j=lb(j);
if j<4
% if j < 3
if x(i,j) > ub(j)
x(i,j) = round(rand(1,1).*(ub_j-lb_j))+lb_j;
elseif x(i,j) < lb(j)
x(i,j) = round(rand(1,1).*(ub_j-lb_j))+lb_j;
end
else
if x(i,j) > ub(j)
x(i,j)=rand(1,1).*(ub_j-lb_j)+lb_j;
elseif x(i,j) < lb(j)
x(i,j)=rand(1,1).*(ub_j-lb_j)+lb_j;
end
end
end
x(i,[1,2,3]) = round(x(i,[1,2,3]));
% x(i,[1,2]) = round(x(i,[1,2]));
if fitness(x(i,:)) < p(i)
p(i) = fitness(x(i,:));
y(i,:) = x(i,:);
end
if p(i) < fitness(pg)
pg = y(i,:);
end
end
Pbest(t) = fitness(pg);
end
%%%%%%%%%%最后给出计算结果%%%%%%%%%%
disp('***************************************************')
disp('目标函数取最小值时的自变量:')
xm = pg
disp('目标函数最小值为:')
fv = fitness(pg)
disp('***************************************************')
% abs(Vi)
toc
figure;
plot(Pbest);
xlabel('迭代次数');
ylabel('有功损耗');
title ('进化曲线图');
[Ploss1,Udg,Idg,Sdg] = DGflow(X,Y,Z);
[Ploss0,Uv,IL,Sij,] = flow(Num);
figure;
plot(Uv,'b-');
hold on;
plot(Udg,'r-');
xlabel('节点编号');
ylabel('节点电压幅值/标幺值');
legend('不加DG','添加DG');
title ('配电网接入DG后各节点电压对比图');
grid on
figure;
plot(IL,'b-');
hold on;
plot(Idg,'r-');
xlabel('支路编号');
ylabel('支路电流值/标幺值');
legend('不加DG','添加DG');
title ('配电网接入DG后各支路电流对比图');
grid on
figure;
plot(Sij,'b-');
hold on;
plot(Sdg,'r-');
xlabel('支路编号');
ylabel('支路损耗幅值/KW');
legend('不加DG','添加DG');
title ('配电网接入DG后各支路损耗对比图');
grid on
02_098m