基于改进粒子群算法的多目标分布式电源选址定容规划(附带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/2loc1=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);endpopulation_cross=population_cross(:);%% 种群变异population_mute=repmat(int_tmp_pop,no_of_mut,1);for k=1:no_of_mutlocm=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('目标优化结果')
drawnowend
%% 结果输出
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.mzph.cn/news/899453.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

雨云云应用测评!内测持续进行中!

大家好,时隔一个月,我们又见面了! 最近,雨云推出了新型云应用(RCA,Rainyun Cloud Application)。 通过云应用,你可以快速创建可以外部访问的应用,采用全新的面板和dock…

【研究方向】联邦|自然语言

联邦学习 Federated Learning,FL 分布式学习方案。 通过多个参与方(client) 联邦计算 Federated Computing 联邦计算(Federated Learning)是一种分布式 机器学习 方法,旨在解决数据隐私保护与数据孤岛问题。 图联邦 Graph Neural Networks,GNNs 图联…

【算法day25】 最长有效括号——给你一个只包含 ‘(‘ 和 ‘)‘ 的字符串,找出最长有效(格式正确且连续)括号子串的长度。

32. 最长有效括号 给你一个只包含 ‘(’ 和 ‘)’ 的字符串,找出最长有效(格式正确且连续)括号子串的长度。 https://leetcode.cn/problems/longest-valid-parentheses/ 2.方法二:栈 class Solution { public:int longestValid…

C++编程学习笔记:函数相关特性、引用与编译流程

目录 一、函数的缺省参数 (一)全缺省参数 (二)半缺省参数 二、函数重载 (一)参数类型不同 (二)参数个数不同 (三)参数类型顺序不同 三、引用相关问题…

RPCGC阅读

24年的MM 创新 现有点云压缩工作主要集中在保真度优化上。 而在实际应用中,压缩的目的是促进机器分析。例如,在自动驾驶中,有损压缩会显着丢失户外场景的详细信息。在三维重建中,压缩过程也会导致场景数据中语义信息(Contour)的…

泛目录优化:无极泛目录优化网站,技术解析与风险控制指南

无极泛目录优化网站精简版 一、核心功能 无限层级目录:支持动态创建 5 级以上子目录,形成内容矩阵AI 内容生成:集成 GPT-4 接口,日均生产 10 万 原创度 70% 以上的页面SEO 智能检测:自动优化 TDK、URL 结构、图片属…

归档重做日志archived log (明显) 比redo log重做日志文件小

归档重做日志 (明显) 比重做日志文件小。 (文档 ID 1356604.1) 日志切换将由于以下原因发生: 1. 由于在重做日志文件已满之前强制创建存档而记录和设计的行为 SQL> alter system switch logfile;SQL> alter system archive log current;RMAN> backup ar…

645.错误的集合

import java.util.HashMap; import java.util.Map;/*** program: Test* description: 645 错误的集合* author: gyf* create: 2025-03-23 10:22**/ public class Test {public static void main(String[] args) {}public static int[] findErrorNums(int[] nums) {int[] arr n…

力扣刷题494. 目标和

494. 目标和 - 力扣(LeetCode) 方法一,暴力dfs 直接进行深搜查找出所有的情况,缺点严重超时,只能过20个案例 留一下超时的 class Solution {//首先定义全局变量int[] abs { 1, -1 }; //用来记录当前遍历的数的正…

一周学会Flask3 Python Web开发-SQLAlchemy数据迁移migrate

锋哥原创的Flask3 Python Web开发 Flask3视频教程: 2025版 Flask3 Python web开发 视频教程(无废话版) 玩命更新中~_哔哩哔哩_bilibili 模型类(表)不是一成不变的,当你添加了新的模型类,或是在模型类中添加了新的字段,甚至是修改…

Python练习之抽奖界面

前言 一、代码整体架构分析 1、数据层 (Model) 2、控制层 (Controller) 3、视图层 (View) 二、核心功能实现详解 1、 文件导入功能 1.1、实现逻辑 1.2、代码涉及知识点讲解 1.2.1、wildcard 1.2.2、wx.FileDialog 1.2.3、dlg.ShowModal() 2、抽奖动画控制 1.1、…

【云原生】docker 搭建单机PostgreSQL操作详解

目录 一、前言 二、前置准备 2.1 服务器环境 2.2 docker环境 三、docker安装PostgreSQL过程 3.1 获取PostgreSQL镜像 3.2 启动容器 3.2.1 创建数据卷目录 3.2.2 启动pg容器 3.3 客户端测试连接数据库 四、创建数据库与授权 4.1 进入PG容器 4.2 PG常用操作命令 4.2…

算法为舟 思想为楫:AI时代,创作何为?

在科技浪潮汹涌澎湃的当下,AI技术以前所未有的态势席卷各个领域,创作领域亦未能幸免。当生成式AI展现出在剧本撰写、诗歌创作、图像设计等方面的惊人能力时,人类创作者仿佛置身于文明演化的十字路口,迷茫与困惑交织,兴奋与担忧并存。在AI时代,创作究竟该何去何从?这不仅…

JAVA的内存图理解

目录 一、方法区1、类常量池2、静态常量池3、方法区过程 二、栈三、堆1、字符常量池2、堆内存图的绘制 java中内存可以分为 方法区、 堆、 栈、 程序计数器、 本地方法栈,其中比较中重要的是方法区、堆、栈。 一、方法区 1.方法区(Method Area&…

基于Selenium的IEEE Xplore论文数据爬取实战指南

基于Selenium的IEEE Xplore论文数据爬取实战指南 一、项目背景与目标 IEEE Xplore作为全球知名的学术资源平台,收录了大量高质量科技文献。本教程将演示如何通过Python的Selenium库实现: 自动化获取指定领域论文列表(以"构音障碍"为例)完整提取论文标题、摘要、…

软件工程面试题(十二)

1、文件和目录(i/o)操作,怎么列出某目录下所有文件?某目录下所有子目录,怎么判断文件或目录是否存在?如何读写文件? 列出某目录下所有文件:调用listFile(),然后判断每个File对象是否是文件可以调用 isFile(),判断是否是文件夹可以调用isDirectory(),判断文件或目…

医疗CMS高效管理:简化更新维护流程

内容概要 医疗行业内容管理系统(CMS)的核心价值在于应对医疗信息管理的多维复杂性。面对诊疗指南的动态更新、科研数据的快速迭代以及多机构协作需求,传统管理模式往往面临效率瓶颈与合规风险。现代化医疗CMS通过构建结构化权限管理矩阵&…

谈谈Minor GC、Major GC和Full GC

目录 一、背景 二、三者之间的区分 1、Minor GC 2、Major GC (1)老年代空间不足: (2)晋升(Promotion)失败: (3)空间分配担保失败: &#x…

C盘清理技巧分享:PE Dism++ 空间清理篇

C盘清理技巧分享:PE & Dism 空间清理篇 C盘空间不足是许多用户面临的常见问题,尤其是在使用 Windows 系统时。本文将重点介绍如何使用 PE(Preinstallation Environment)和 Dism 工具高效清理 C盘空间,释放宝贵的存…

低功耗LPWAN模块开发指南:远距离无线通信与边缘计算融合实战‌

在远程资产追踪、野外环境监测等场景中,稳定可靠的长距离通信与超低功耗是系统设计的核心挑战。eFish-SBC-RK3576通过 ‌原生双UART接口 USB OTG扩展能力‌ ,可无缝集成主流LPWAN模组(LoRa/NB-IoT),实现“数据采集-边…