当前位置: 首页 > news >正文

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

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

代码地址:

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

参考论文:

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

http://www.dtcms.com/a/98141.html

相关文章:

  • 【区块链安全 | 第十篇】智能合约概述
  • Unity编辑器功能及拓展(1) —特殊的Editor文件夹
  • Linux 一键安装 Docker 的万能脚本
  • python和c中作用域的差异
  • Windows 系统中使用 fnm 安装 Node.js 的完整指南
  • 为什么idea显示数据库连接成功,但操作数据库时,两边数据不同步
  • Vite 开发服务器存在任意文件读取漏洞
  • Selenium文件上传
  • 使用 Avada 主题创建动态内容展示的技术指南
  • 尚硅谷面向对象篇笔记记录
  • 密文搜索 | 第六届蓝桥杯国赛C++B组
  • GMP调度模型
  • GAMMA数据处理(十)
  • RabbitMQ高级特性--发送方确认
  • AIOHTTP
  • 2025年3月电子学会c++五级真题
  • GOF23种设计模式
  • 树莓派5智能家居中控:HomeAssistant全配置指南
  • 笔记:基于环境语义的通感融合技术,将传统通信由“被动接收”转为“主动感知”
  • synchronized锁与lock锁的区别
  • 实变函数:集合与子集合一例(20250329)
  • JavaFX基础- Button 的基本使用
  • Linux进程管理之子进程的创建(fork函数)、子进程与线程的区别、fork函数的简单使用例子、子进程的典型应用场景
  • 【19期获取股票数据API接口】如何用Python、Java等五种主流语言实例演示获取股票行情api接口之沪深A股实时交易数据及接口API说明文档
  • 参加李继刚线下活动启发:未来提示词还会存在吗?
  • 【初阶数据结构】线性表之双链表
  • 【数电】半导体存储电路
  • 基于Linux平台安装部署Redis全教程
  • 生物化学笔记:医学免疫学原理09 白细胞分化抗原+黏附分子
  • Supplements of My Research Proposal: My Perspectives on the RAG