您现在的位置:首页 >> 智能优化 >> 内容

m基于粒子群算法的分布式电源DG的优化配置

时间:2022/12/12 20:11:55 点击:

  核心提示:02_098m,包括程序操作录像+说明文档+参考文献...

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

作者:我爱C编程 来源:我爱C编程
本站最新成功开发工程项目案例
相关文章
相关评论
发表我的评论
  • 大名:
  • 内容:
本类固顶
  • 没有
  • FPGA/MATLAB商业/科研类项目合作(www.store718.com) © 2025 版权所有 All Rights Reserved.
  • Email:1480526168@qq.com 站长QQ: 1480526168